Ir para conteúdo

[Npc] Vende Vocação Que Só Dura Até Deslogar


Newtonnotwen

Posts Recomendados

Esse npc da uma vocação que só dura até o player deslogar.

 

Pode ser usado como uma vocação especial ou seja se o player deslogar perde ela e terá que comprar novamente.

 

Em data/npc crie um arquivo.xml nomeie para newvoc e adicione:

 

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Newvoc" script="data/npc/scripts/newvoc.lua" walkinterval="1000" floorchange="1">

<health now="100" max="100"/>

<look type="302" head="114" body="114" legs="200" feet="114" addons="3"/>

<parameters>

<parameter key="message_greet" value="Deseja virar nova prof? "/>

</parameters>

</npc>

Em data/npc/scripts crie um arquivo.lua nomeie para newvoc e adicione:

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, 'yes') or msgcontains(msg, 'sim')) then

selfSay('Diga newvoc.', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'newvoc') and talkState[talkUser] == 1) then

if(getPlayerItemCount(cid, 2160) >= 100) then

doPlayerRemoveItem(cid, 2160, 100)

doPlayerSetVocation(cid, 10)

selfSay('Agora você possui a nova vocação!', cid)

else

selfSay('Você não tem dinheiro!', cid)

end

talkState[talkUser] = 0

end

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Editando:

 

-Roxo: Looktype

-Verde escuro: Mensagem após falar hi

-Dourado: Mensagem que o player precisara dizer para o npc continuar

​-Vermelho: Próxima mensagem do npc

​-Verde claro: Próxima mensagem do player

-Marrom: Id do item a ser removido

-Violeta: Quantidade do item a ser removido

-Cinza: Id da vocação

-Azul Turco: Mensagem de confirmação

-Teal: Mensagem de cancelamento

 

arrow.gifObs: Autor desconhecido (pelo menos por mim)

 

​Créditos:

 

Autor desconhecido ----- Pelo script

Newtonnotwen ----- Pela edição e pelo tutorial button_ok.png

 

Imagens:

51351616.png

35220542.png

56281455.png

25132157.png

 

-------------------Ouça uma musica enquanto instala o npc music.gif

Editado por Newtonnotwen
Link para o comentário
Compartilhar em outros sites

Hmm.Muito interessante este npc.

 

Eu gosto mais da função que ele fala por private é mais legal e organizado.rsrs

 

Abraços.

Ele fala pelos 2, tipo:

 

Player (private): Hi

 

Npc (Private): Hello

 

Npc (defaut): Hello

 

Ao mesmo tempo...

Link para o comentário
Compartilhar em outros sites

@Newtonnotwen

 

Pelo que eu vi, esse NPC não é exatamente um NPC que dá vocation só até o player deslogar. Isso só funcionaria se a vocation possuísse o fromvoc diferente do ID dela mesma. Por exemplo, se colocar pra virar Druid, a vocation continuaria mesmo deslogando. Para seu NPC ficar 100% igual você diz, teria que usar uma storage e um creaturescript. Gostaria que eu fizesse para você?

 

E dica, esse trecho:

 

if(getPlayerItemCount(cid, 2160) >= 100) then
doPlayerRemoveItem(cid, 2160, 100)

 

Poderia ser reduzido para isso:

 

if doPlayerRemoveMoney(cid, 1000000) then

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

@Newtonnotwen

 

Pelo que eu vi, esse NPC não é exatamente um NPC que dá vocation só até o player deslogar. Isso só funcionaria se a vocation possuísse o fromvoc diferente do ID dela mesma. Por exemplo, se colocar pra virar Druid, a vocation continuaria mesmo deslogando. Para seu NPC ficar 100% igual você diz, teria que usar uma storage e um creaturescript. Gostaria que eu fizesse para você?

 

E dica, esse trecho:

 

if(getPlayerItemCount(cid, 2160) >= 100) then
doPlayerRemoveItem(cid, 2160, 100)

 

Poderia ser reduzido para isso:

 

if doPlayerRemoveMoney(cid, 1000000) then

 

eu qria ver vc fazer sim

se puder posta aqui mesmo

Link para o comentário
Compartilhar em outros sites

@Vodkart

 

Não sei por quê, mas to com impressão de que falei alguma bobeira e você vai usar isso para me zoar .-.

Please, se falei algo errado apenas me corrija, não me maltrate haehuaeh

 

Mas ok, vou tentar fazer aqui. Se falei algo sem sentido, edito depois.

 

NPC:

 

 

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, 'yes') or msgcontains(msg, 'sim')) then

selfSay('Diga newvoc.', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'newvoc') and talkState[talkUser] == 1) then

if doPlayerRemoveMoney(cid, 1000000) then

voc = getPlayerVocation(cid)

setPlayerStorageValue(cid, 7123, voc)

doPlayerSetVocation(cid, 10)

selfSay('Agora você possui a nova vocação!', cid)

else

selfSay('Você não tem dinheiro!', cid)

end

talkState[talkUser] = 0

end

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

voclogin.lua:

 

 

function onLogin(cid)

voc = getPlayerStorageValue(cid, 7123)

if voc ~= -1 then

doPlayerSetVocation(cid, voc)

end

return true

end

 

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

@Vodkart

 

Não sei por quê, mas to com impressão de que falei alguma bobeira e você vai usar isso contra mim .-.

Please, se falei algo errado apenas me corrija, não me maltrate haehuaeh

 

Mas ok, vou tentar fazer aqui. Se falei algo sem sentido, edito depois.

 

NPC:

 

 

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, 'yes') or msgcontains(msg, 'sim')) then

selfSay('Diga newvoc.', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'newvoc') and talkState[talkUser] == 1) then

if doPlayerRemoveMoney(cid, 1000000) then

voc = getPlayerVocation(cid)

setPlayerStorageValue(cid, 7123, voc)

doPlayerSetVocation(cid, 10)

selfSay('Agora você possui a nova vocação!', cid)

else

selfSay('Você não tem dinheiro!', cid)

end

talkState[talkUser] = 0

end

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

voclogin.lua:

 

 

function onLogin(cid)

voc = getPlayerStorageValue(cid, 7123)

if voc ~= -1 then

doPlayerSetVocation(cid, voc)

end

return true

end

 

 

 

como eu imaginei, usou o mesmo método que eu, salvou a voc em uma storage e deu qndo logou

é isso ai cara

parabens

n tenho rep agr pra te da

Link para o comentário
Compartilhar em outros sites

@Vodkart

 

Ui, me senti especial. Um Deus dos scripts me elogiando ou me zoando através de palavras com sentido subentendido

 

@Newtonnotwen

 

Tenta usar as vocations originais do Tibia (Druid, Knight, Pally, Sorc).

Link para o comentário
Compartilhar em outros sites

@Newtonnotwen

 

Hm... Estranho. Bom, no fim isso não importa muito. Ai sumiu, aqui não, ok, cada server é diferente. Mas pra quem tiver o problema da vocation não sumir, igual eu, basta usar o fix que postei ali em cima.

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...