Postado Janeiro 11, 2015 10 anos local mensagem = "" 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 trophy = { ["ouro"] = {3, 5805}, --{Quantidade de items aleatórios, ID do troféu}, ["prata"] = {2, 5806}, ["bronze"] = {1, 5807}, } local items = {2154, 2156, 2158} if msgcontains(msg:lower(), "trophy") or msgcontains(msg:lower(), "trofeu") then selfSay("Acho que você pretende trocar algum troféu por gemas. Qual troféu você pretende trocar comigo: {ouro}, {prata} ou {bronze}?", cid) talkState[talkUser] = 1 return true elseif talkState[talkUser] == 1 then if trophy[msg:lower()] then selfSay("Você tem certeza que quer trocar 1 troféu de "..msg:lower().." por "..trophy[msg:lower()][1].." gema"..(trophy[msg:lower()][1] > 1 and "s" or "").." aleatória"..(trophy[msg:lower()][1] > 1 and "s" or "").."?", cid) mensagem = msg:lower() talkState[talkUser] = 2 return true else selfSay("Este troféu não existe.", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg:lower(), "yes") or msgcontains(msg:lower(), "sim") and talkState[talkUser] == 2 then local trofeu = trophy[mensagem] local id = trofeu[2] if getPlayerItemCount(cid, id) > 0 then for i = 1, trofeu[1] do doPlayerAddItem(cid, items[math.random(#items)], 1) end doPlayerRemoveItem(cid, id, 1) selfSay("Obrigado, aqui estão suas gemas.", cid) talkState[talkUser] = 0 return true else selfSay("Você não possui este troféu.", cid) talkState[talkUser] = 0 return true end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Editado Abril 24, 2015 10 anos por zipter98 (veja o histórico de edições)
Postado Janeiro 12, 2015 10 anos Autor as mensagem está aparecendo, só que o NPC não está trocando o troféu pela gema... pf arruma ae! está dando esse erro: [12/01/2015 16:14:15] [Error - Npc interface] [12/01/2015 16:14:15] data/npc/scripts/trofeu.lua:onCreatureSay [12/01/2015 16:14:15] Description: [12/01/2015 16:14:15] data/npc/scripts/trofeu.lua:39: attempt to index local 'trofeu' (a nil value) [12/01/2015 16:14:15] stack traceback: [12/01/2015 16:14:15] data/npc/scripts/trofeu.lua:39: in function 'callback' [12/01/2015 16:14:16] data/lib/npchandler.lua:390: in function 'onCreatureSay' [12/01/2015 16:14:16] data/npc/scripts/trofeu.lua:7: in function <data/npc/scripts/trofeu.lua:7> Editado Janeiro 12, 2015 10 anos por williamcgv (veja o histórico de edições)
Postado Janeiro 12, 2015 10 anos Autor porra muito obrigado lesk ajudo d+ se possível ajudar no 2 problema agradeceria mais ainda! Editado Janeiro 12, 2015 10 anos por williamcgv (veja o histórico de edições)
Postado Janeiro 12, 2015 10 anos Sobre o segundo problema, provavelmente é algum onThink que esteja causando isso (dã). Se mesmo com o código que passei isso continua acontecendo, dá uma olhada no código desse NPC que você citou (Mary) e veja se há alguma coisa relacionada a essas mensagens (tanto no XML quanto no lua). Se tiver, poste os códigos. Se não, hm, vai ser um pouco mais complicado. Editado Janeiro 12, 2015 10 anos por zipter98 (veja o histórico de edições)
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.