Postado Novembro 6, 2014 10 anos Olá queria que alguém fizesse uma modificação nesse NPC, ele funciona assim; o player fala hi/torneio/yes e é teleportado para uma sala, até ai tudo bem mais eu queria que alguém colocasse uma função que se o player tivesse um desses items >> 12343, 12345, 12348, 12347, 12346, 12349, 12344 se o player tivesse um desses items acima, ai o NPC não teleportava npc 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 if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then selfSay('Voce quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then selfSay('As inscricoes para o torneio terminaram, volte Amanha as '..torneio.startHour..' para nova inscricao.', cid) return true end if doPlayerRemoveMoney(cid, torneio.price) then doTeleportThing(cid, torneio.waitPlace) setPlayerStorageValue(cid,130130,1) doPlayerSendTextMessage(cid, 21, "Bem-vindo(a), esta e a sala de espera, voce espera aqui enquanto o torneio nao comeca. hora de inicio: {"..torneio.endHour.."}.") else selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid) end else selfSay('Voce nao quer participar do Torneio? Venha no proximo dia ~~ Todos os Dias as '..torneio.startHour..'.', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) up
Postado Novembro 6, 2014 10 anos Teste assim: 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 items = {12343, 12345, 12348, 12347, 12346, 12349, 12344} if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then selfSay('Voce quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then selfSay('As inscricoes para o torneio terminaram, volte Amanha as '..torneio.startHour..' para nova inscricao.', cid) return true end for x = 1, #items do if getPlayerItemCount(cid, items[x]) >= 1 then doPlayerSendCancel(cid, "Você não pode ir carregando uma "..getItemNameById(items[x])..".") return true end if doPlayerRemoveMoney(cid, torneio.price) then doTeleportThing(cid, torneio.waitPlace) setPlayerStorageValue(cid,130130,1) doPlayerSendTextMessage(cid, 21, "Bem-vindo(a), esta e a sala de espera, voce espera aqui enquanto o torneio nao comeca. hora de inicio: {"..torneio.endHour.."}.") else selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid) end else selfSay('Voce nao quer participar do Torneio? Venha no proximo dia ~~ Todos os Dias as '..torneio.startHour..'.', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Não sou bom com "FOR" e se eu fosse criar para verificar um por um iria ficar muito grande o script. Espero que funcione. Boa sorte. Editado Novembro 6, 2014 10 anos por Adriano SwaTT (veja o histórico de edições) Gosta do meu trabalho? Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs. Atenciosamente,Adriano Swatt' Para ver meus tutoriais acesse meu perfil.
Postado Novembro 6, 2014 10 anos Autor Teste assim: 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 items = {12343, 12345, 12348, 12347, 12346, 12349, 12344} if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then selfSay('Voce quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then selfSay('As inscricoes para o torneio terminaram, volte Amanha as '..torneio.startHour..' para nova inscricao.', cid) return true end for x = 1, #items do if getPlayerItemCount(cid, items[x]) >= 1 then doPlayerSendCancel(cid, "Você não pode ir carregando uma "..getItemNameById(items[x])..".") return true end if doPlayerRemoveMoney(cid, torneio.price) then doTeleportThing(cid, torneio.waitPlace) setPlayerStorageValue(cid,130130,1) doPlayerSendTextMessage(cid, 21, "Bem-vindo(a), esta e a sala de espera, voce espera aqui enquanto o torneio nao comeca. hora de inicio: {"..torneio.endHour.."}.") else selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid) end else selfSay('Voce nao quer participar do Torneio? Venha no proximo dia ~~ Todos os Dias as '..torneio.startHour..'.', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Não sou bom com "FOR" e se eu fosse criar para verificar um por um iria ficar muito grande o script. Espero que funcione. Boa sorte. deu esse erro no NPC; [06/11/2014 17:16:36] [Error - LuaScriptInterface::loadFile] data/npc/scripts/Torneio.lua:46: 'end' expected (to close 'for' at line 32) near 'else' [06/11/2014 17:16:36] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/Torneio.lua [06/11/2014 17:16:36] data/npc/scripts/Torneio.lua:46: 'end' expected (to close 'for' at line 32) near 'else'
Postado Novembro 6, 2014 10 anos Solução Desculpe-me, desatenção, ficou faltando um END. 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 items = {12343, 12345, 12348, 12347, 12346, 12349, 12344} if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then selfSay('Voce quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then selfSay('As inscricoes para o torneio terminaram, volte Amanha as '..torneio.startHour..' para nova inscricao.', cid) return true end for x = 1, #items do if getPlayerItemCount(cid, items[x]) >= 1 then doPlayerSendCancel(cid, "Você não pode ir carregando uma "..getItemNameById(items[x])..".") return true end end if doPlayerRemoveMoney(cid, torneio.price) then doTeleportThing(cid, torneio.waitPlace) setPlayerStorageValue(cid,130130,1) doPlayerSendTextMessage(cid, 21, "Bem-vindo(a), esta e a sala de espera, voce espera aqui enquanto o torneio nao comeca. hora de inicio: {"..torneio.endHour.."}.") else selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid) end else selfSay('Voce nao quer participar do Torneio? Venha no proximo dia ~~ Todos os Dias as '..torneio.startHour..'.', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Boa sorte. Gosta do meu trabalho? Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs. Atenciosamente,Adriano Swatt' Para ver meus tutoriais acesse meu perfil.
Postado Novembro 6, 2014 10 anos Autor Desculpe-me, desatenção, ficou faltando um END. 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 items = {12343, 12345, 12348, 12347, 12346, 12349, 12344} if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then selfSay('Voce quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then selfSay('As inscricoes para o torneio terminaram, volte Amanha as '..torneio.startHour..' para nova inscricao.', cid) return true end for x = 1, #items do if getPlayerItemCount(cid, items[x]) >= 1 then doPlayerSendCancel(cid, "Você não pode ir carregando uma "..getItemNameById(items[x])..".") return true end end if doPlayerRemoveMoney(cid, torneio.price) then doTeleportThing(cid, torneio.waitPlace) setPlayerStorageValue(cid,130130,1) doPlayerSendTextMessage(cid, 21, "Bem-vindo(a), esta e a sala de espera, voce espera aqui enquanto o torneio nao comeca. hora de inicio: {"..torneio.endHour.."}.") else selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid) end else selfSay('Voce nao quer participar do Torneio? Venha no proximo dia ~~ Todos os Dias as '..torneio.startHour..'.', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Boa sorte. Resolvido obrigado
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.