Postado Agosto 16, 2014 10 anos Primeiramente, gostaria de dizer que eu estava procurando um npc similar a este por ai.. mas infelizmente não encontrei, então decidi pegar algum parecido e editar a meu gosto No final do tópico vou explicar mais algumas coisas.. enfim, vamos lá Essa é a parte que você irá colocar dentro do XML. <npc name="Max" script="data/npc/scripts/max.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="132" head="94" body="114" legs="86" feet="0" addons="3"/> <parameters> <parameter key="message_greet" value="Seja bem vindo |PLAYERNAME|, estaria interessado em adquirir uma {premium}?"/> <parameter key="message_walkaway" value="Cuide-se, |PLAYERNAME|."/> <parameter key="message_farewell" value="Tenha cuidado, |PLAYERNAME|."/> </parameters> </npc> E isso aqui você irá jogar dentro do arquivo .lua que você irá criar. 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 -- Conversa Jogador/NPC if(msgcontains(msg, 'valor')) then selfSay('Eu posso lhe dar 3 dias de premium por 100,000 gold coins.', cid) elseif(msgcontains(msg, 'premium') or msgcontains(msg, 'Premium')) then selfSay('Você gostaria de comprar 3 dias de premium?', cid) talkState[talkUser] = 1 -- Confirmação da Compra elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if(doPlayerRemoveItem(cid, 2160, 10) == true) then selfSay('Muito bem! Aproveite!', cid) doPlayerAddPremiumDays(cid, 3) talkState[talkUser] = 0 elseif(doPlayerRemoveItem(cid, 2152, 1000) == true) then selfSay('Muito bem! Aproveite!', cid) doPlayerAddPremiumDays(cid, 3) talkState[talkUser] = 0 elseif(doPlayerRemoveItem(cid, 2148, 100000) == true) then selfSay('Muito bem! Aproveite!', cid) doPlayerAddPremiumDays(cid, 3) talkState[talkUser] = 0 else selfSay('Desculpe, você não tem o {valor} necessário parar comprar uma premium.', cid) talkState[talkUser] = 0 end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora vamos as explicações.. Esse código em si eu peguei aqui no próprio TK de um outro usuário não me recordo qual pois fechei a página .. então os créditos vão para ele.. se quiser se manifestar aqui na página, sinta-se livre Mas o código não fazia exatamente o que eu queria.. pois era necessário que o player tive-se APENAS crystal coins com ele.. caso ele tive-se o valor da premium em platinum coins ou gold que fosse, o NPC não aceitava.. então eu editei o NPC para checar se o jogador tem o valor necessário em qualquer um dos 3 tipos de dinheiro (crystal/platinum/gold) Agora.. isso é um script tão simples.. mas porque se preocupar com algo assim? Depende do tipo de servidor que você está fazendo.. eu estou criando um OT voltando para o RPG, onde não será possivel trocar gold para platinum e talz.. quero fazer algo diferente.. e se o jogador esqueçer de trocar o dinheiro no banco por exemplo? Ele iria ter que andar um monte denovo para poder apenas trocar.. esse é o intuito do meu NPC, fazer com que problemas como esse não venham a aconteçer Fora isso.. eu adicionei uma fala de Bye para o nome (detesto a fala padrão deles) que pode ser editada, e uma fala para quando o player andar para longe do npc. No mais mesmo é só isso, algo simples.. pode ser inútil para muitos, ainda mais que hoje em dia ninguem se interessa em fazer um ot que venda premium pelo NPC ao invés do comando !buypremium.. mas se houver alguem que se interesse, espero que esse tópico seja de grande ajuda
Postado Janeiro 9, 2015 10 anos É de grande ajuda sim, OT's de tibia atualmente não levam mais em conta o RPG que é a base do tibia. Parabéns, muito bom NPC Te ajudei ?? Me da um REP+
Postado Janeiro 9, 2015 10 anos o fera se sabe como fazer um comando que faça um char compra no maximo 15 dias , tipo n pode compra mais que quinze , tipo se vc tem 13 vc só pode compra mais dois dias e fica renovando ela !?!?
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.