Ir para conteúdo

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


Newtonnotwen

Posts Recomendados

Primeiramente, obrigado pela contribuição, continue a estudar a linguagem Lua e melhorar seus scripts.

 

Mas, sinceramente, você não fez nada aí, simplesmente se utilizou de um "bug", ou melhor, de uma verificação interna dos servidores relacionado ao sistema de promotion. Quando você configura duas vocações X e Y, onde o fromvoc de Y é X e usa a função doPlayerSetVocation(cid, Y), ao sair do jogo, o sistema verifica outra variável do jogador, o promotionLevel, se esse é menor que o necessário para ser a vocação Y, então ele automaticamente retorna a vocação para X.

 

Para exemplificar melhor, tomaremos como exemplo, Sorcerer e Master Sorcerer

 



   <vocation id="1" name="Sorcerer" description="a sorcerer" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="12" gainhpamount="1" gainmanaticks="3" gainmanaamount="2" manamultiplier="1.1" attackspeed="2000" soulmax="100" gainsoulticks="120" fromvoc="1">
       <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
       <skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/>
   </vocation>



   <vocation id="5" name="Master Sorcerer" description="a master sorcerer" needpremium="1" gaincap="10" gainhp="5" gainmana="30" gainhpticks="12" gainhpamount="1" gainmanaticks="2" gainmanaamount="2" manamultiplier="1.1" attackspeed="2000" soulmax="200" gainsoulticks="15" fromvoc="1" lessloss="30">
       <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>
       <skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/>
   </vocation>

 

Veja, como dito anteriormente, o fromvoc da vocação Master Sorcerer (ID 5) é o Sorcerer (ID 1).

 

Ao, equivocadamente, usar a função doPlayerSetVocation(cid, 5) sem usar antes doPlayerSetPromotionLevel(cid, 1), você está "bugando" o sistema, fazendo com que a vocação não seja permanente.

 

Mas, mesmo assim, belo artifício usado.

 

Abraços.

Link para o comentário
Compartilhar em outros sites

Inicialmente obrigado, na verdade isso foi verdadeiramente na sorte, eu tava editando ai percebi que perdia. :)

 

Obrigado pelo conhecimento transmitido, excelente tutorial.

 

Só não dou REP+ porque to devendo 3.

 

Mas lá pra frente eu posso dar.

 

Att: Newtonnotwen

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...