Ir para conteúdo
  • Cadastre-se

Posts Recomendados

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 :P

Link para o post
Compartilhar em outros sites
  • 4 months later...

É 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+ :D

2nkmexk.png

Link para o post
Compartilhar em outros sites

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  !?!?

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo