giovanerox 3 Postado Julho 22, 2010 Share Postado Julho 22, 2010 Olá, este é meu primeiro NPC, a idéia é obter um item por outro, se você ajudar o NPC, o NPC pode ajudá-lo. NPC Missão 1.0 Começando, vai em data/npc/scripts cópia de qualquer arquivo e renomeá para "fox.lua" e colocar isso no arquivo: --------------------------------- ------- NPC Missão 1.0 --------- --- by Fox - xtibia.com/forum --- --------------------------------- -------------- --- Config --- -------------- -- item necessário para fazer a busca local i_required = 2268 -- contagem de item necessário para fazer a busca local i_required_count = 1 -- recompensa padrão id item (crystal coins) local i_reward = 2160 -- contagem de recompensa id padrão (10) local i_reward_count = 10 -- -- local storage = 60307 -- -- local questname = "fox quest" -- NPC Messages -- local npc_message ={ "I need some item to complete this mission, procced?", "You dont have any items to this mission.", "Thank You for Help me, {take it.}", "You have Already done this {mission}.", "The Mission {"..questname.."} is, really serius, i need your help to complete it, if you help me i can give some items to you?" } ------------------- --- End Confing --- ------------------- 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, 'mission')) then selfSay(npc_message[5], cid) end if(msgcontains(msg, questname)) then selfSay(npc_message[1], cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if (getPlayerStorageValue(cid,storage) > 0) then selfSay(npc_message[4], cid) else if(doPlayerRemoveItem(cid,i_required,i_required_count)) then setPlayerStorageValue(cid,storage,1) doPlayerAddItem(cid,i_reward,i_reward_count) selfSay(npc_message[3], cid) doSendMagicEffect(getCreaturePosition(cid), 10) doCreatureSay(cid, "Quest Completada!", TALKTYPE_ORANGE_1) else selfSay(npc_message[2], cid) end end return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora vai para a data/npcs e criar novo arquivo XML e renomeá-lo com "fox.xml" <?xml version="1.0" encoding="UTF-8"?><npc name="Fox" script="data/npc/scripts/fox.lua" walkinterval="5000" floorchange="0"> <health now="100" max="100"/> <look type="266" head="1" body="1" legs="1" feet="1" addons="3"/> <parameters> <parameter key="message_greet" value="Welcome |PLAYERNAME| Are your ready for this {mission}?" /> </parameters> </npc> Pronto, agora você pode colocar o npc em qualquer lugar de seu mapa e deixar seus players se aventurar. Atenciosamente, Fox Link para o comentário Compartilhar em outros sites More sharing options...
Churijo 10 Postado Julho 22, 2010 Share Postado Julho 22, 2010 Olá Fox1 Achei bem interessante para colocar em Ot que tem bastante RPG's Só uma duvida , voçê fala pro Npc = mission e ele te manda buscar o item para depois continuar a conversa entre o player? Duvida: serve para versão 8.55? Abraços. :tongue2: Att Tibinux Link para o comentário Compartilhar em outros sites More sharing options...
giovanerox 3 Postado Julho 22, 2010 Autor Share Postado Julho 22, 2010 Olá Fox1 Achei bem interessante para colocar em Ot que tem bastante RPG's Só uma duvida , voçê fala pro Npc = mission e ele te manda buscar o item para depois continuar a conversa entre o player? Duvida: serve para versão 8.55? Abraços. :tongue2: Att Tibinux Quando vc falar mission, vc ja estara com a missão, ai você tera que procurar o item que ele pedir e vir trocar pela recompensa. Deve pegar na versão 8.55 sim. Link para o comentário Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Julho 22, 2010 Share Postado Julho 22, 2010 (editado) Por que não usar uma única linha de tabela para simbolizar essas linhas de configuração aqui? -- item necessário para fazer a busca local i_required = 2268 -- contagem de item necessário para fazer a busca local i_required_count = 1 -- recompensa padrão id item (crystal coins) local i_reward = 2160 -- contagem de recompensa id padrão (10) local i_reward_count = 10 Podendo ficar assim: local item = {required = {2268, 1}, reward = {2160, 10}} De modo que na hora que o NPC faz a verificação, podemos usar, if(doPlayerRemoveItem(cid, item.required[1], item.required[2])) then doPlayerAddItem(cid, item.reward[1], item.reward[2]) end Economiza algumas linhas, haha! Bom script Editado Julho 22, 2010 por Oneshot Link para o comentário Compartilhar em outros sites More sharing options...
giovanerox 3 Postado Julho 22, 2010 Autor Share Postado Julho 22, 2010 Por que não usar uma única linha de tabela para simbolizar essas linhas de configuração aqui? -- item necessário para fazer a busca local i_required = 2268 -- contagem de item necessário para fazer a busca local i_required_count = 1 -- recompensa padrão id item (crystal coins) local i_reward = 2160 -- contagem de recompensa id padrão (10) local i_reward_count = 10 Podendo ficar assim: local item = {required = {2268, 1}, reward = {2160, 10}} De modo que na hora que o NPC faz a verificação, podemos usar, if(doPlayerRemoveItem(cid, item.required[1], item.required[2])) then doPlayerAddItem(cid, item.reward[1], item.reward[2]) end Economiza algumas linhas, haha! Bom script Obrigado pela sugestão, é que sou iniciante ainda em scripter Link para o comentário Compartilhar em outros sites More sharing options...
masquente 15 Postado Julho 26, 2010 Share Postado Julho 26, 2010 (editado) Muito bom, ja esta no meu ot. @Edit Tem como dar mais de uma recompensa? @Edit não funfo na v. 8.54 ;/ Editado Julho 26, 2010 por masquente Link para o comentário Compartilhar em outros sites More sharing options...
Diorgs 0 Postado Julho 26, 2010 Share Postado Julho 26, 2010 muito legal ja ta no meu ot Link para o comentário Compartilhar em outros sites More sharing options...
TheSlayer 22 Postado Junho 20, 2012 Share Postado Junho 20, 2012 vo testa dps vo fala Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados