Помогите с аргументами и id || lua

tneviil

Новичок
Автор темы
13
1
Версия MoonLoader
Другое
Привет. Мне нужно, чтоб при написании команды в чат, из неё доставался id, первый аргумент и второй аргумент.
1693562240463.png

И в дальнейшем в чате должна появиться подобная строка:
/me передал (ник человека из полученного іd) (первый предмет)[arg1], (второй предмет)[arg2]
Подскажите пожалуйста как это сделать
 

RedHolms

Известный
Проверенный
617
360
Lua:
function string:split(sep, reallen)
   local result = {}

   local len = reallen or #sep

   local substring_start_index = 1

   for i = 1, #self do
---@diagnostic disable-next-line: param-type-mismatch
      if self:sub(i, i + len):match('^' .. sep) then
---@diagnostic disable-next-line: param-type-mismatch
         local substr = self:sub(substring_start_index, i - 1)
         if #substr > 0 then
            table.insert(result, substr)
         end
         substring_start_index = i + len
      end
   end

---@diagnostic disable-next-line: param-type-mismatch
   local last_substr = self:sub(substring_start_index, #self)
   if #last_substr > 0 then
      table.insert(result, last_substr)
   end

   return result
end
Lua:
-- arg - аргумнент команды
local args = arg:split(" ")

local id = tonumber(args[1])
local arg1, arg2 = args[2], args[3]
 

tneviil

Новичок
Автор темы
13
1
Lua:
function string:split(sep, reallen)
   local result = {}

   local len = reallen or #sep

   local substring_start_index = 1

   for i = 1, #self do
---@diagnostic disable-next-line: param-type-mismatch
      if self:sub(i, i + len):match('^' .. sep) then
---@diagnostic disable-next-line: param-type-mismatch
         local substr = self:sub(substring_start_index, i - 1)
         if #substr > 0 then
            table.insert(result, substr)
         end
         substring_start_index = i + len
      end
   end

---@diagnostic disable-next-line: param-type-mismatch
   local last_substr = self:sub(substring_start_index, #self)
   if #last_substr > 0 then
      table.insert(result, last_substr)
   end

   return result
end
Lua:
-- arg - аргумнент команды
local args = arg:split(" ")

local id = tonumber(args[1])
local arg1, arg2 = args[2], args[3]
А можешь пожалуйста показать как оно в коде будет? А то я не особо понял
 

хромиус)

спокойно, это всего лишь слива
Друг
4,952
3,221
соответственно в твоём случае будет if arg:find('(%d+) (.+) (.+)') then...
 
  • Нравится
Реакции: tneviil

qdIbp

Автор темы
Проверенный
1,388
1,146
Lua:
    sampRegisterChatCommand('ac', function(arg)
        local id, arg1, arg2 = string.match(arg,'(%d+) (.+) (.+)')
        id = tonumber( id )
        if not(id and arg1 and arg2) then
            return sampAddChatMessage('/ac [id] [arg1] [arg]', 0xFF0000) end
        sampSendChat(('/me передал %s %s %s'):format(sampGetPlayerNickname( id ), arg1, arg2))   
    end)
Код: