DE

[CreatureEvents] Resolvendo Bug Das Vocations

Por Demonbholder, 14 de ago. de 2009 em Globalevents e Spells

otserv
tibia
script
15
4.2k
14 de agosto de 2009 às 07:28

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 Julho 27 por Demonbholder

2 meses depois...
nyaricastroN
22 de outubro de 2009 às 23:53

Mtu Bom Demonbholder...muitas pessoas estavam com esse problema...ajudará bastante

E...tbm se deixar o tópico mais colorido ficará mais chamativo...Parabéns

 

Aprovado

Editado Outubro 22 por caldo quinor

4 meses depois...
00000
01 de fevereiro de 2010 às 10:12

Infelizmente Isso não funcionou no meu OT

OneshotO
06 de fevereiro de 2010 às 21:33

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?

11 de fevereiro de 2010 às 00:44

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

 

Mudando de assunto, melhorei a explicação.

Editado Janeiro 15 por Demonbholder

1 ano depois...
EskyloE
11 de fevereiro de 2011 às 18:36

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:

11 de fevereiro de 2011 às 21:07

Não é o caso, mas pode ser adaptado, é só pedir que eu adapto, fora que a função que ele passou, esta dando o mesmo bug. Não precisava reviver o tópico pra isso né cara, mas dessa vez, deixa.

1 mês depois...
TibizeiroT
04 de março de 2011 às 21:15

nao quero ser chato nem tirar o mérito do script, que achei muito bom, mas isso eu faço na fromvoc da voc.xml

04 de março de 2011 às 21:42

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.

HudsinH
05 de março de 2011 às 22:44

É verdade, em alguns ots antigos tem esse bug mesmo,obrigado por compartilhar!

Editado Março 5 por Hudsin

4 meses depois...
Aragorn100A
19 de julho de 2011 às 17:50

eu to com 1 problemaço no meu servidor de poketibia preciso mudar da de 1 voc pra outra sem promot mas n vai de geito nenhum alguem da uma luz ai

2 semanas depois...
CoLoRaDoC
28 de julho de 2011 às 18:16

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")

 

 

?????

28 de julho de 2011 às 21:08

Nossa, meu primeiro script postado no XTibia. Que lixo aeuhoehaouhaeohoae.

 

@ADM_Forever

 

Não precisa colocar pra registrar tag em eventos de login e logout.

CoLoRaDoC
28 de julho de 2011 às 22:54

ok vlw será que ta adicionando cada vez 4 vocations id a mais porque eu coloquei no login.lua para registrar???

1 ano depois...
eickhoffE
17 de outubro de 2012 às 15:40

Acho q uma coisa q faltou ai é avisar pros outros q tem tbm q colocar no creaturescript.xml ... né? e.e'''

bem, mas otimo script me ajudou bastante