2015-04-29 6 views
1

Недавно я обновил свой ptokax до 0,5,3, и с тех пор мой скрипт голосующего перестает работать, так как в моем скрипте принимаются данные от других пользователей онлайн как 1 или 2, так как принимают или отклоняют пользователя, которого нужно пнуть или нет, но теперь, когда пользователь вводит 1 или 2, сценарий прекратил принимать ввод и вставлял его в таблицу, я подозреваю, что это возможно из-за некоторого изменения синтаксиса. пожалуйста, посмотрите мой сценарий и предложите.добавить значение переменной в таблицу в lua для скрипта ptokax

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 
+0

Пожалуйста, уточните, что вы хотите получить, что изменилось с момента последнего его работы и каких проблем у вас сейчас. – meneldal

+0

перед обновлением ptokax этот скрипт работал нормально, но после этого эта часть почему-то перестала работать, поскольку она должна была принимать входные данные как 1 или 2, но теперь по какой-то причине она не принимает входные данные. – warl0ck

ответ

0
  1. Просьба указать, что вы используете PtokaX выпущенный для использования с Lua 5.3.0 или 5.1.5.
  2. The NMDC hub protocols определить, что сообщения чата отправляются в следующем формате:

    <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.

+0

Я использую ptokax для lua 5.1.5 только – warl0ck

+0

, но если сценарий кажется прекрасным, то я не могу понять, почему он не берет вход пользователя, чтобы пнуть игрока или нет. – warl0ck

+0

@ warl0ck Можете ли вы поставить весь сценарий в свой вопрос? – hjpotter92