Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Помощь по скриптам для PtokaX _ Как упорядочить пункты меню хаба?

Автор: SoRnYaK 4.7.2009, 16:17

Есть список команд с скрипте:

RegCmds = {
cmd1 = function()
end,
cmd2 = function()
end,
...
}

Согласно ему создается меню пользователя:

for i,v in pairs(RegCmds) do
local desc,arg1,arg2 = RegCmds[i]()
Core.SendToNick(user.sNick,"$UserCommand 1 1 "..SubMenu.."\\"..desc.."$<%[mynick]> "..Pfx..i..arg1.."|")
end

Проблема в том, что я не могу понять по какому принципу упорядочивается конечное меню хаба.
В итоге пользователь видит пунты меню в какой угодно последовательности, кроме как попорядку cmd1, cmd2, cmd3 ...
Как вообще такая проблема реашается? Не откажите новичку в помощи.

Автор: Setuper 4.7.2009, 17:05

Код
RegCmds = {
  function()
    return cmd, desc, arg1, arg2
  end,
  function()
  end,
  ...
}

for _, v in ipairs(RegCmds) do
  local cmd, desc, arg1, arg2 = v()
  Core.SendToNick(user.sNick, "$UserCommand 1 1 "..SubMenu.."\\"..desc.."$<%[mynick]> "..Pfx..cmd..arg1.."&#124;")
end

Автор: Wariner 4.7.2009, 17:12

Порядок следования индексов неопределен для функции pairs не определён, поэтому можно таблицу делать так:

Код
RegCmds = {
[1] = { [1] = "Команда",
            [2] = function()
end,},
[2] = { [1] = "Команда",
            [2] = function()
end,},
...
}

и использовать функцию ipairs

Автор: SoRnYaK 5.7.2009, 12:44

Спасибо Вам.

Setuper - по твоему методу меню встали по порядку, но перестали работать команды. Буду думать.
Wariner - твой метод я не совсем понял. Может позже дойдет.

Автор: Setuper 5.7.2009, 12:52

Обрати внимание, что каждая функция теперь должна возвращать не 3 значения, а четыре

Код
return cmd, desc, arg1, arg2

первым из этих значений является команда.

И, соответственно, в конце функции SendToNick присутствует эта самая переменная cmd.