Добавить значение переменной в таблицу в lua для скрипта ptokax
Недавно я обновил свой ptokax до 0.5.3, и с тех пор мой скрипт voicekick перестал работать, так как в моем скрипте входные данные других пользователей в сети равны 1 или 2, так как они принимают или запрещают пнуть пользователя или нет, но теперь, когда пользователь вводит 1 или 2 сценарий перестал принимать входные данные и вставлять их в таблицу, я подозреваю, что это возможно из-за некоторого изменения синтаксиса. пожалуйста, посмотрите на мой сценарий и предложите.
data = " <Nick> 2" -- this is the way script takes input frm dc chat
s,e,vote= string.find(data,"%b<>%s(.+)")
if vote == "1" then
table.insert(votesPlus,user.sNick)
Core.SendToAll("*--"..user.sNick.." accepts--")
if #votesPlus == votes or # votesMinus == votes then
stop(nTimerId)
end
return true
elseif vote == "2" then
table.insert(votesMinus,user.sNick)
Core.SendToAll("*--"..user.sNick.." denies--")
if #votesPlus == votes or # votesMinus == votes then
stop(nTimerId)
end
return true
else
-- the user is not voting even when poll active
end
1 ответ
- Пожалуйста, укажите, используете ли вы PtokaX, выпущенный для Lua 5.3.0 или 5.1.5.
Протоколы концентратора NMDC определяют, что сообщения чата отправляются в следующем формате:
<Nick> the message|
где
|
действует как разделитель.
Кроме того, я не вижу никаких проблем с вашим сценарием. Вы можете оптимизировать производительность:
local vote = data:match "%b<>%s(%d)"
-- since you only want a single digit to be matched
-- also, use local variable whenever possible
if vote == "1" then
table.insert(votesPlus, user.sNick)
Core.SendToAll( "*--"..user.sNick.." accepts--" )
if #votesPlus == votes or #votesMinus == votes then
stop( nTimerId )
end
return true
elseif vote == "2" then
table.insert(votesMinus, user.sNick)
Core.SendToAll( "*--"..user.sNick.." denies--" )
if #votesPlus == votes or #votesMinus == votes then
stop( nTimerId )
end
return true
else
-- the user is not voting even when poll active
-- return false so that further scripts might be able to process it
return false
end
PS: я думаю, вам также следует проверить, голосует ли один и тот же пользователь дважды! Также вы можете поставить следующий код:
if #votesPlus == votes or #votesMinus == votes then
stop( nTimerId )
end
в призыве к OnTimer
функция.