Postado Junho 5, 2017 7 anos Ok, então vejamos. Fiz um aqui sem testar. Vejamos como fica. Começando com o NPC: Ana.xml <?xml version="1.0"?> <npc name="Ana" script="Ana.lua" walkinterval="2000"> <health now="200" max="200" /> <look type="136" head="113" body="65" legs="0" feet="96" addons="2"/> <parameters> <parameter key="message_greet" value="Ola, sou a vendedora de benção desta cidade, você gostaria de verificar minhas lista de {Bless} ou comprar o Comando !bless full?. Diga {Trade}." /> </parameters> </npc> Ana.lua 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 if(msgcontains(msg, 'Trade') or msgcontains(msg, 'trade')) then selfSay('Vejamos, posso vender pra você agora o Comando {!bless full} ou {Blessing} e também {Bless PvP}, o que deseja?', cid) talkState[talkUser] = 1 elseif((msgcontains(msg, '!bless full') or msgcontains(msg, 'bless full')) and talkState[talkUser] == 1) then selfSay('O comando "!bless full" custa {10.000 gold coin}. Deseja comprar?', cid) talkState[talkUser] = 0 talkState[talkUser] = 2 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then if getPlayerStorageValue(cid,834005) == 1 then selfSay('Você já comprou esse comando.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 10000) == TRUE then selfSay('Pronto! Agora você pode usar o comando {!bless full}', cid) doSendMagicEffect(getPlayerPosition(cid), 49) setPlayerStorageValue(cid, 834005, 1) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) talkState[talkUser] = 0 end end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora o comando. Talkaction.xml <talkaction words="!Bless Full;!bless full" script="Bless.lua"/> Bless.lua local bless = {1, 2, 3, 4, 5} function onSay(cid, words, param) for i = 1, table.maxn(bless) do if(getPlayerBlessing(cid, bless[i])) then doPlayerSendCancel(cid, "Você já possui todas as Benções.") return TRUE end end if getPlayerStorageValue(cid,834005) == 1 then for i = 1, table.maxn(bless) do doPlayerAddBlessing(cid, bless[i]) end doCreatureSay(cid, "Você recebeu as Benções dos Deuses!" ,19) doSendMagicEffect(getPlayerPosition(cid), 49) else doPlayerSendCancel(cid, "Você não tem o comando, compre na npc X.") end return TRUE end Editado Junho 5, 2017 7 anos por Frenesy (veja o histórico de edições)
Postado Junho 5, 2017 7 anos Autor 53 minutos atrás, Frenesy disse: Ok, então vejamos. Fiz um aqui sem testar. Vejamos como fica. Começando com o NPC: Ana.xml <?xml version="1.0"?> <npc name="Ana" script="Ana.lua" walkinterval="2000"> <health now="200" max="200" /> <look type="136" head="113" body="65" legs="0" feet="96" addons="2"/> <parameters> <parameter key="message_greet" value="Ola, sou a vendedora de benção desta cidade, você gostaria de verificar minhas lista de {Bless} ou comprar o Comando !bless full?. Diga {Trade}." /> </parameters> </npc> Ana.lua 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 if(msgcontains(msg, 'Trade') or msgcontains(msg, 'trade')) then selfSay('Vejamos, posso vender pra você agora o Comando {!bless full} ou {Blessing} e também {Bless PvP}, o que deseja?', cid) talkState[talkUser] = 1 elseif((msgcontains(msg, '!bless full') or msgcontains(msg, 'bless full')) and talkState[talkUser] == 1) then selfSay('O comando "!bless full" custa {10.000 gold coin}. Deseja comprar?', cid) talkState[talkUser] = 0 talkState[talkUser] = 2 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then if getPlayerStorageValue(cid,834005) == 1 then selfSay('Você já comprou esse comando.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 10000) == TRUE then selfSay('Pronto! Agora você pode usar o comando {!bless full}', cid) doSendMagicEffect(getPlayerPosition(cid), 49) setPlayerStorageValue(cid, 834005, 1) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) talkState[talkUser] = 0 end end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora o comando. Talkaction.xml <talkaction words="!Bless Full;!bless full" script="Bless.lua"/> Bless.lua local bless = {1, 2, 3, 4, 5} function onSay(cid, words, param) for i = 1, table.maxn(bless) do if(getPlayerBlessing(cid, bless[i])) then doPlayerSendCancel(cid, "Você já possui todas as Benções.") return TRUE end end if getPlayerStorageValue(cid,834005) == 1 then for i = 1, table.maxn(bless) do doPlayerAddBlessing(cid, bless[i]) end doCreatureSay(cid, "Você recebeu as Benções dos Deuses!" ,19) doSendMagicEffect(getPlayerPosition(cid), 49) else doPlayerSendCancel(cid, "Você não tem o comando, compre na npc X.") end return TRUE end 1°- Quando loguei um Player Teste, falei !Bless Full ou !bless full, e não aconteceu nada, saiu como mensagem normal! 2°- Quando falo com o npc, ele pede pra dizer Bless ou Trade, se der pra modificar, colocar Bless e Comando, como fala chave do npc, até porque quando eu falo Trade aparece esse erro: Spoiler 3°- Spoiler 12:44 Ana: Vejamos, posso vender pra você agora o Comando !bless full ou Blessing e também Bless PvP, o que deseja? Nesta ultima parte, mesmo que você fale !bless full, Blessing ou Bless PvP não acontece nada... Sendo que o !bless full é pra dar o comando para o player e o Blessing é para adicionar as 5 bless no player normal, e a Bless PvP é uma bless que faz o player perde menos 15% de exp também... Editado Junho 5, 2017 7 anos por Digoshow (veja o histórico de edições)
Postado Junho 5, 2017 7 anos 34 minutos atrás, Digoshow disse: 1°- Quando loguei um Player Teste, falei !Bless Full ou !bless full, e não aconteceu nada, saiu como mensagem normal! Tem que ver se você instalou a talkaction corretamente. Eu testei aqui essa parte e deu certo. Refaça os passos e veja como fica. Se mesmo assim não der certo, avise aqui. 35 minutos atrás, Digoshow disse: 2°- Quando falo com o npc, ele pede pra dizer Bless ou Trade, se der pra modificar, colocar Bless e Comando, como fala chave do npc, até porque quando eu falo Trade aparece esse erro: Veja se dar certo. Dialogo: Hi > Comando > bless full > yes 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 if(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando')) then selfSay('Vejamos, posso vender pra você agora o Comando {bless full} ou {Blessing} e também {Bless PvP}, o que deseja?', cid) talkState[talkUser] = 1 elseif((msgcontains(msg, 'Bless Full') or msgcontains(msg, 'bless full')) and talkState[talkUser] == 1) then selfSay('O comando "!bless full" custa {10.000 gold coin}. Deseja comprar?', cid) talkState[talkUser] = 2 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then if getPlayerStorageValue(cid,834005) == 1 then selfSay('Você já comprou esse comando.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 10000) == TRUE then selfSay('Pronto! Agora você pode usar o comando {!bless full}', cid) doSendMagicEffect(getPlayerPosition(cid), 49) setPlayerStorageValue(cid, 834005, 1) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) talkState[talkUser] = 0 end end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 2) then selfSay('Sem problemas.', cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) 40 minutos atrás, Digoshow disse: Nesta ultima parte, mesmo que você fale !bless full, Blessing ou Bless PvP não acontece nada... Sendo que o !bless full é pra dar o comando para o player e o Blessing é para adicionar as 5 bless no player normal, e a Bless PvP é uma bless que faz o player perde menos 15% de exp também... É o seguinte, não acontece nada porque eu não adicionei. To focando apenas no comando. Instale a Talkaction corretamente, instale o script do NPC que passei ai em cima e tenta usar o diálogo que mandei logo acima também e veja se da certo. Dando certo, a gente passa pra essas Blessing e Bless PvP aí. Vamos uma coisa de cada vez.
Postado Junho 5, 2017 7 anos Autor 17 minutos atrás, Frenesy disse: Tem que ver se você instalou a talkaction corretamente. Eu testei aqui essa parte e deu certo. Refaça os passos e veja como fica. Se mesmo assim não der certo, avise aqui. Veja se dar certo. Dialogo: Hi > Comando > bless full > yes 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 if(msgcontains(msg, 'Comando') or msgcontains(msg, 'comando')) then selfSay('Vejamos, posso vender pra você agora o Comando {bless full} ou {Blessing} e também {Bless PvP}, o que deseja?', cid) talkState[talkUser] = 1 elseif((msgcontains(msg, 'Bless Full') or msgcontains(msg, 'bless full')) and talkState[talkUser] == 1) then selfSay('O comando "!bless full" custa {10.000 gold coin}. Deseja comprar?', cid) talkState[talkUser] = 2 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then if getPlayerStorageValue(cid,834005) == 1 then selfSay('Você já comprou esse comando.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 10000) == TRUE then selfSay('Pronto! Agora você pode usar o comando {!bless full}', cid) doSendMagicEffect(getPlayerPosition(cid), 49) setPlayerStorageValue(cid, 834005, 1) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) talkState[talkUser] = 0 end end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 2) then selfSay('Sem problemas.', cid) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) É o seguinte, não acontece nada porque eu não adicionei. To focando apenas no comando. Instale a Talkaction corretamente, instale o script do NPC que passei ai em cima e tenta usar o diálogo que mandei logo acima também e veja se da certo. Dando certo, a gente passa pra essas Blessing e Bless PvP aí. Vamos uma coisa de cada vez. Não, o mesmo erro permanece na imagem que mandei a cima, você está testando em TFS 0.4? Falo Hi > Comando > bless full..e o npc não responde não fala mais nada e da o erro que citei a cima Editado Junho 5, 2017 7 anos por Digoshow (veja o histórico de edições)
Postado Junho 5, 2017 7 anos 4 minutos atrás, Digoshow disse: Não, o mesmo erro permanece na imagem que mandei a cima, você está testando em TFS 0.4? Sim. 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 doCreatureSayWithDelay(cid,text,type,delay,e) if delay<=0 then doCreatureSay(cid,text,type) else local func=function(pars) doCreatureSay(pars.cid,pars.text,pars.type) pars.e.done=TRUE end e.done=FALSE e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e}) end end function cancelNPCTalk(events) local ret=1 for aux=1,table.getn(events) do if events[aux].done==FALSE then stopEvent(events[aux].event) else ret=ret+1 end end events=nil return(ret) end function doNPCTalkALot(msgs,interval) local e={} local ret={} if interval==nil then interval=3000 end --3 seconds is default time between messages for aux=1,table.getn(msgs) do e[aux]={} doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux]) table.insert(ret,e[aux]) end return(ret) 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, 'Comando') or msgcontains(msg, 'comando')) then selfSay('Vejamos, posso vender pra você agora o Comando {bless full} ou {Blessing} e também {Bless PvP}, o que deseja?', cid) talkState[talkUser] = 1 elseif((msgcontains(msg, 'Bless Full') or msgcontains(msg, 'bless full')) and talkState[talkUser] == 1) then selfSay('O comando "!bless full" custa {10.000 gold coin}. Deseja comprar?', cid) talkState[talkUser] = 2 elseif((msgcontains(msg, 'Yes') or msgcontains(msg, 'yes')) and talkState[talkUser] == 2) then if getPlayerStorageValue(cid,834005) == 1 then selfSay('Você já comprou esse comando.', cid) talkState[talkUser] = 0 else if doPlayerRemoveMoney(cid, 10000) == TRUE then selfSay('Pronto! Agora você pode usar o comando {!bless full}', cid) doSendMagicEffect(getPlayerPosition(cid), 49) setPlayerStorageValue(cid, 834005, 1) talkState[talkUser] = 0 else selfSay('Você não tem o dinheiro necessário.', cid) talkState[talkUser] = 0 end end elseif((msgcontains(msg, 'No') or msgcontains(msg, 'no')) and talkState[talkUser] == 2) then selfSay('Sem problemas.', cid) talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
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.