Postado Julho 10, 2015 9 anos Nao sei como, mas meu post criado sobre pedido de um QuestLog, ja nao consigo mais acessar, da page not found ... Pois bem, vou criar de novo o post. A ideia e um Grizzly Adams de somenta uma quest, o player fala hi, task ou quest sei la, yes, e a quest assim sendo adicionada ao QuestLog contentando assim as informações, Cada monstro que ele matar, atualizara o QuestLog e apareca tambem uma mensagem no default de quantas ainda faltam, apos ter completado matando o monstro pedido na quest, o player retorna ao npc, entrega a quest, ganha a recompensa que sera experiencia e golds, e o seu QuestLog ficara com a mensagem de Completed, para o player ver que ja acabou por ali. Obrigado seus lindos Conheça agora os planos e preços da TKS Host. Qualidade e Preço Justo! www.tkshost.com
Postado Julho 10, 2015 9 anos É que tinha bugado, eu ja tinha respondido, vou fazer a resposta denovo aqui. Script do npc: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local quest = 76669 --storage local reward = 70000 local recompensa = 2160 -- id da recompensa local recompensaqtd = 1 -- quantidade de itens que vai ganhar local xpganha = 20000 -- xp q o jogador vai ganha 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) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(not npcHandler:isFocused(cid)) then return false elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then npcHandler:say("Ótimo! Vou recompensar você bem, {ok}?.", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then npcHandler:say("Okay, vamos!", cid) setPlayerStorageValue(cid, quest, 2) talkState[talkUser] = 0 elseif msgcontains(msg, "missao") then local str = getPlayerStorageValue(cid, quest) if(str < 2) then npcHandler:say("Eu preciso de você. Pode matar 20 dragoes pra mim?", cid) talkState[talkUser] = 1 return true elseif(str == 2) then npcHandler:say("Por favor volte para uma recompensa.", cid) elseif(str == 3) then npcHandler:say("20 dragões, já? Você é realmente um matador de dragões! Como o prometido, ta aqui sua recompensa.", cid) doPlayerAddItem(cid, recompensa, recompensaqtd) doPlayerAddExp(cid, xpganha) setPlayerStorageValue(cid, quest, 4) elseif(str == 4) then npcHandler:say("Você ja me ajudou!", cid) end talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) data/creaturescripts/scripts monsterkill.lua local monsters = { --nome = storage ["dragon"] = 55004, ["dragon lord"] = 55004 } function onKill(cid, target) local monster = monsters[getCreatureName(target):lower()] if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76669) == 2) then if getPlayerStorageValue(cid, monster) < 20 then local killedMonsters = getPlayerStorageValue(cid, monster) if(killedMonsters == -1) then killedMonsters = 1 end setPlayerStorageValue(cid, monster, killedMonsters + 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce matou " .. killedMonsters .. " de 20 dragões.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você matou dragões suficientes.") setPlayerStorageValue(cid, 76669, 3) end end return TRUE end creaturescripts.xml <event type="kill" name="monsterkill" script="monsterkill.lua"/> Registra o evento monsterkill no login.lua na pasta creaturescripts/scripts ou creaturescripts/scripts/data vai ter vários eventos é só copiar o molde de um e trocar o nome. data/xml/quests.xml <quest name="Tasks" startstorageid="76669" startstoragevalue="1"> <mission name="Task Dragoes" storageid="76669" startvalue="1" endvalue="4"> <missionstate id="1" description="Fale com o npc tal para aceitar a missao"/> <missionstate id="2" description="Mate 20 dragoes em tal montanha"/> <missionstate id="3" description="Volte ao npc tal para receber sua recompensa"/> <missionstate id="3" description="Voce ja fez a task dos dragoes"/> </mission> </quest> Editado Julho 10, 2015 9 anos por rogaforyn2 (veja o histórico de edições) Life is so meaningless, there is nothing worth a smile So goodbye, I'll miss you sugestões?
Postado Julho 10, 2015 9 anos Autor Editado Julho 10, 2015 9 anos por Tryaron (veja o histórico de edições) Conheça agora os planos e preços da TKS Host. Qualidade e Preço Justo! www.tkshost.com
Postado Julho 10, 2015 9 anos Solução Beleza, a começar pelo quest log. A tag quests fecha por último: <?xml version="1.0" encoding="UTF-8"?> <quests> <quest name="Example Quest I" startstorageid="1001" startstoragevalue="1"> <mission name="Example Mission 1" storageid="1001" startvalue="1" endvalue="3"> <missionstate id="1" description="Example description 1"/> <missionstate id="2" description="Example description 2"/> <missionstate id="3" description="Example description 3"/> </mission> <mission name="Example Mission 2" storageid="1001" startvalue="4" endvalue="5"> <missionstate id="4" description="Example description 1"/> <missionstate id="5" description="Example description 2"/> </mission> </quest> <quest name="Tasks" startstorageid="76669" startstoragevalue="1"> <mission name="Task Dragoes" storageid="76669" startvalue="1" endvalue="4"> <missionstate id="1" description="Fale com o npc tal para aceitar a missao"/> <missionstate id="2" description="Mate 20 dragoes em tal montanha"/> <missionstate id="3" description="Volte ao npc tal para receber sua recompensa"/> <missionstate id="3" description="Voce ja fez a task dos dragoes"/> </mission> </quest> </quests> Bom, no login.lua o nome ta errado, mas vamos corrigir no creaturescripts.xml: <event type="kill" name="MonsterKill" script="monsterkill.lua"/> Bem, e o NPC ta sem dialogo inicial: <?xml version="1.0" encoding="UTF-8"?><npc name="Adam" script="task1.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100" /> <look type="132" head="115" body="0" legs="114" feet="0" addons="3" corpse="2212"/> <parameters> <parameter key="message_greet" value="Oi, você pode me ajudar? Se puder, me avise que eu lhe falo sobre a {missao}. "/> </parameters> </npc> Pra mudar esse {missao}, que é a mensagem em azul, mude essa linha: elseif msgcontains(msg, "missao") then No script do npc Qualquer erro ou mal funcionamento é só postar. Life is so meaningless, there is nothing worth a smile So goodbye, I'll miss you sugestões?
Postado Julho 10, 2015 9 anos Autor Perfeito cara, simplesmente perfeito ... Posso pedir um adicional? Se no caso essa task ai sao 20 dragoes, sendo eles dragons ou dragons lord, eu gostaria de uma mais especifica por exemplo, que sejam 20 dragoes e 20 dragons lord, tipo assim mate 20 dragoes e 20 dragons lords para mim ... sacou? TE AMO CARA, como que da repu aqui mais de 1 vez >.< Conheça agora os planos e preços da TKS Host. Qualidade e Preço Justo! www.tkshost.com
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.