Заполнение массива через команду

Статус
В этой теме нельзя размещать новые ответы.

FunTan

Известный
Автор темы
31
0
Не кидайте гнилыми помидорами, вопрос, возможно, тупой как бордюр, но не могу допереть.
Столкнулся с ситуацией, когда нужно заполнить массив через команду. То есть /command 10 20 30 40 50, а выдать должно массив m{10 20 30 40 50}

Валиден ли такой вариант?
Lua:
function main()
sampRegisterChatCommand("command", cmd)
wait(-1)
end

function cmd(param[])
  if #param == 0 then
   print("Syntax: /command [values with spaces]")
  else
   print("Command: input = " .. param[])
end
 
Последнее редактирование:

ufdhbi

Известный
Проверенный
1,455
861
Больше всего интересует не вывод, а заполнение массива из команды, т.к. что-то я уперся и не могу догнать.
Lua:
function cmd(param)
    if #param == 0 then
        print("Syntax: /command [values with spaces]")
    else
        m = {}
        for item in param:gmatch('(.+) ') do
            table.insert(m, item)
        end
        return m
    end
end
 

FunTan

Известный
Автор темы
31
0
Lua:
function cmd(param)
    if #param == 0 then
        print("Syntax: /command [values with spaces]")
    else
        m = {}
        for item in param:gmatch('(.+) ') do
            table.insert(m, item)
        end
        return m
    end
end
Спасибо, попробовал. Но при такой схеме заполняет только первый элемент массива.
Возможно, я как-то не так понял вот этот кусок кода:
Lua:
for item in param:gmatch('(.+) ') do
Но при запуске скрипта строкой "/mass 1 2 3 4 5" выдет значение результат "1 2 3 4 nil nil nil"

Код представлен ниже.
Lua:
require 'lib.moonloader'
require 'lib.sampfuncs'

function main()
    if not isSampLoaded() or not isCleoLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand("mass", skill)
    wait(-1)
end

function skill(param)
    if #param == 0 then
        print("Syntax: /massive [values with spaces]")
    else
    m = {}
        for item in param:gmatch('(.+) ') do
            table.insert(m, item)
        end
           print(m[1], m[2], m[3], m[4])
    end
end
 

trefa

Известный
Всефорумный модератор
2,097
1,231
Давно этот код валяется в полезных сниппнетах и функциях, сразу возвращает таблицу с заполнеными данными.
Lua:
function stringToArray(str)
local t = {}
for i = 1, #str do
  t[i] = str:sub(i, i)
end
return t
end

Lua:
function skill(param)
if #param ~= 0 then
tbl = stringToArray(param)
else
print("Syntax: /massive [values with spaces]")
end
end

https://blast.hk/threads/13380/page-2#post-210408
 
Статус
В этой теме нельзя размещать новые ответы.