Ir para conteúdo

[CreatureEvents] Resolvendo Bug Das Vocations


Demonbholder

Posts Recomendados

Olá pessoal do XTibia. A algum tempo atrás, eu estava com um problema clássico de segunda promoção; felizmente consegui arrumar, e posto agora para quem tinha duvidas.

 

Este bug acontece quando o jogador tem sua vocação mudada para segunda (ou mais) promoção e então ao sair do jogo e entrar mais uma vez, ele fica sem vocação.

 

Entao eu achei um jeito de resolver esse bug. Vou mostrar o jeito q eu fiz para trocar o vocação, eu fiz por talkaction mas voces podem fazer pelo que vcs quiserem:

 

function onSay(cid,words,params)

 

local vocstatus = getPlayerStorageValue(cid, 1593)

if vocstatus == -1 then

if doPlayerRemoveMoney(cid, 10000) == TRUE then

if getPlayerVocation(cid) >= 5 and getPlayerVocation(cid) <= 8 then

if getPlayerLevel(cid) >= 8 then

doPlayerSetVocation(cid, getPlayerVocation(cid) + 4)

setPlayerStorageValue(cid, 1593, 1)

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations, now you are second promoted.")

else

return doPlayerSendCancel(cid,"You are not strong enought to become a second promoted.")

end

else

return doPlayerSendCancel(cid,"Only first promoteds can become second promoteds.")

end

else

return doPlayerSendCancel(cid,"You dont't have money to promote yourself.")

end

else

return doPlayerSendCancel(cid,"You have already used this talkaction.")

end

end

 

Agora va em data/creaturescripts/scripts, crie um arquivo lua, nomeie para loginvoc e cole isto nele:

 

function onLogin(cid)

local vocstatus = getPlayerStorageValue(cid, 1593)

 

if vocstatus == 1 then

doPlayerSetVocation(cid, getPlayerVocation(cid) + 4)

return TRUE

else

return TRUE

end

end

 

Azul: Selecione o Storage que você quiser (um que ainda não tenha sido usado).

Vermelho: Selecione a quantidade de moedas necessárias.

Laranja: Escolha o level mínimo para executar a talkaction.

Rosa: Selecione a mensagem de sucesso.

Verde: Escolha as mensagens de erro (siga a ordem que eu usei).

 

Entao é isso, até a próxima.

 

Edit: Reformulação do script, e melhoramento do mesmo. Script funcionando se os ids das vocações da segunda promoção forem 9,10,11,12.

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

  • 2 months later...
  • 3 months later...

Função A

 

doPlayerSetPromotionLevel(cid, level)

 

Função B

 

doPlayerSetVocation(cid, vocation)

 

O comum erro de voltar a vocação é por causa que scripters dos servidores 8.5x usam a função B ao invés da função A.

Ou seja ao invés de dar toda essa volta com um CreatureScript, por que não usar a função A em um NPC de Promotion?

Link para o comentário
Compartilhar em outros sites

  • 1 year later...

Função A

 

doPlayerSetPromotionLevel(cid, level)

 

Função B

 

doPlayerSetVocation(cid, vocation)

 

O comum erro de voltar a vocação é por causa que scripters dos servidores 8.5x usam a função B ao invés da função A.

Ou seja ao invés de dar toda essa volta com um CreatureScript, por que não usar a função A em um NPC de Promotion?

 

Oneshot, q bom t ver d volta =D eu lembro de ter aprendido sobre a func A com vc em um outro post seu ^^

 

É, pode ser, mas digamos que ele queira mudar de um druida prum master sorc?

 

Mudando de assunto, melhorei a explicação.

 

n é o caso D:

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

Parceiro, tem scripts feitos em ots antigos, que necessitam deste scritp para que não de bug no Ot. Outra coisa, isso eu fiz a uns dois anos, quando eu tinha apenas noção de lua. Por favor, não revivam o tópico, não infrinjam as regras.

Link para o comentário
Compartilhar em outros sites

  • 4 months later...
  • 2 weeks later...

ae gente me dêm uma luz...

 

cada vez que eu logo depois de comprar isso vai dando 4 vocations a +....

 

 

e não teria que colocar no login.lua o:

 

registerCreatureEvent(cid, "VocLogin")

 

 

?????

Link para o comentário
Compartilhar em outros sites

  • 1 year later...
×
×
  • Criar Novo...