Postado Julho 21, 2017 7 anos local coins = 25 -- quantidade de coins local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if not npcHandler:isFocused(cid) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local price = 3000000 --Preço das coins em GOLD. if msgcontains(msg:lower(), "coins") then selfSay("Deseja comprar 25 tibia coins por 300 {crystal coins}?", cid) talkState[talkUser] = 1 return true elseif msgcontains(msg:lower(), "yes") and talkState[talkUser] == 1 then if doPlayerRemoveMoney(cid, price) then db.query("UPDATE `accounts` SET `coins` = `coins` + '" ..coins.. "' WHERE `id` = '" .. player:getAccountId() .. "';") selfSay("Você recebeu 25 tibia coins.", cid) talkState[talkUser] = 0 return true else selfSay("Você não tem dinheiro suficiente.", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg:lower(), "no") and talkState[talkUser] == 1 then selfSay("Ok, até logo.", cid) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Editado Agosto 19, 2019 5 anos por pereirinha (veja o histórico de edições)
Postado Julho 22, 2017 7 anos A meu ver, apenas um return onde não deve. Teste: local coins = 25 -- quantidade de coins local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if not npcHandler:isFocused(cid) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local price = 3000000 --Preço das coins em GOLD. if msgcontains(msg:lower(), "coins") then selfSay("Deseja comprar 25 tibia coins por 300 {crystal coins}?", cid) talkState[talkUser] = 1 elseif msgcontains(msg:lower(), "yes") and talkState[talkUser] == 1 then if doPlayerRemoveMoney(cid, price) then db.query("UPDATE `accounts` SET `coins` = `coins` + '" ..coins.. "' WHERE `id` = '" .. player:getAccountId() .. "';") selfSay("Você recebeu 25 tibia coins.", cid) talkState[talkUser] = 0 return true else selfSay("Você não tem dinheiro suficiente.", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg:lower(), "no") and talkState[talkUser] == 1 then selfSay("Ok, até logo.", cid) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Explicação: O return se usa no final de uma ação, como você botou 'return true' logo depois do player falar coins, o TFS já encerrou o script. Te ajudei? Clique em Gostei ! ²²²d¬¬b²²² "She's got a smile that it seems to me...." ♪♪
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.