сокращение команд

goosik

Участник
Автор темы
57
3
Версия MoonLoader
.027.0-preview
как сократить команды /invite [ID игрока] до /inv и /giverank до /gr [ID игрока]?
 

MLycoris

Режим чтения
Проверенный
1,820
1,860
так удобнее, если команд много
Lua:
local sampev = require('lib.samp.events')
local cmds = {
    ['inv'] = 'invite',
    ['gr'] = 'giverank',
}
function sampev.onSendCommand(cmd)
    for k, v in pairs(cmds) do
        if cmd:find(k) then
            local newCmd = cmd:gsub(k, v)
            return {newCmd}
        end
    end
end
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,771
11,214
так удобнее, если команд много
Lua:
local sampev = require('lib.samp.events')
local cmds = {
    ['inv'] = 'invite',
    ['gr'] = 'giverank',
}
function sampev.onSendCommand(cmd)
    for k, v in pairs(cmds) do
        if cmd:find(k) then
            local newCmd = cmd:gsub(k, v)
            return {newCmd}
        end
    end
end
в данном случае лучше
if cmd:match('^/' .. k .. '%s*') then
 
  • Нравится
Реакции: MLycoris

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,634
2,484
в данном случае лучше
if cmd:match('^/' .. k .. '%s*') then
и /invite заменит на /inviteite
Lua:
local sampev = require('lib.samp.events')
local cmds = {
    ['inv'] = 'invite',
    ['gr'] = 'giverank',
}
function sampev.onSendCommand(text)
    local cmd, params = text:match('^/(%S+)%s*(.*)')
    if cmd then
        cmd = cmd:lower()
        for k, v in pairs(cmds) do
            if k == cmd then
                return {"/"..v.." "..params}
            end
        end
    end
end
 

Дядя Энрик.

Активный
319
75
Lua:
sampRegisterChatCommand('inv', function(arg) sampSendChat('/invite '..arg) end)
sampRegisterChatCommand('gv', function(arg) sampSendChat('/giverank '..arg) end)

local cmds = {
    ['inv'] = 'invite',
    ['gr'] = 'giverank',
}
for k, v in ipairs(cmds) do
sampRegisterChatCommand(v, function(arg) sampSendChat(v..arg) end)
end --мб так ещё, не тестил в мейн ебануть
 
Последнее редактирование:
  • Клоун
Реакции: MLycoris

wojciech?

Известный
212
125
и /invite заменит на /inviteite
Lua:
local sampev = require('lib.samp.events')
local cmds = {
    ['inv'] = 'invite',
    ['gr'] = 'giverank',
}
function sampev.onSendCommand(text)
    local cmd, params = text:match('^/(%S+)%s*(.*)')
    if cmd then
        cmd = cmd:lower()
        for k, v in pairs(cmds) do
            if k == cmd then
                return {"/"..v.." "..params}
            end
        end
    end
end
зачем парсить таблицу, если можно по ключу получить полную команду?

Lua:
local sampev = require('lib.samp.events')

local cmds = {
  ['inv'] = 'invite',
  ['gr'] = 'giverank',
}

function sampev.onSendCommand(text)
  local cmd, params = text:match('^/(%S+)%s*(.*)')
  if cmd then
      local v = cmds[cmd:lower()]
      if v then
          return {"/"..v.." "..params}
      end
  end
end