Ir para conteúdo

Featured Replies

Postado

Meu servidor foca no RPG, e as classes tem evoluções...
Como no Global - Knight para Elite Knight.

Mas queria que transformasse sem pagar, e sim por level... Quando pegar nível 50, ir para a segunda forma e nível 100 para terceira, e ultima!
 Obs: Classes 3 --> 4 --> 5.
Obrigado desde já!

Editado por Str00per
Erro de concordancia (veja o histórico de edições)

  • Respostas 9
  • Visualizações 493
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Em data/creaturescripts/creaturescripts.xml add essa tag: Em data/creaturescripts/scripts crie um arquivo evolveclass.lua, e adicione o seguinte: function onAdvance(cid, skill, oldLevel, ne

  • Teste com este script então... OBS: crie novo char, para nao bugar as storage. function onAdvance(cid, skill, oldLevel, newLevel) local level = getPlayerLevel(cid) local vocatual = getPlayer

  • Agora funcionou, muito bom. REPUTADO

Postado
7 horas atrás, Str00per disse:

Meu servidor foca no RPG, e as classes tem evoluções...
Como no Global - Knight para Elite Knight.

Mas queria que transformasse sem pagar, e sim por level... Quando pegar nível 50, ir para a segunda forma e nível 100 para terceira, e ultima!
 Obs: Classes 3 --> 4 --> 5.
Obrigado desde já!

 

Em data/creaturescripts/creaturescripts.xml add essa tag:

Citar

<event type="advance" name="EvolutionClass" event="script" value="evolveclass.lua"/>

Em data/creaturescripts/scripts crie um arquivo evolveclass.lua, e adicione o seguinte:

function onAdvance(cid, skill, oldLevel, newLevel)

local level = getPlayerLevel(cid)
local vocatual = getPlayerVocation(cid)
local newvoc = vocatual + 1

          if level >= 50 and getPlayerStorageValue(cid, 88888) <= 0 then
                  doPlayerSetVocation(cid, newvoc)
                  setPlayerStorageValue(cid, 88888, 1)   
                  doPlayerSendTextMessage(cid, 22, "Congratz! You get "..level.." or more, and evolved to "..(getVocationInfo(newvoc).description).."!")
          return true
		  end
		  if level >= 100 and getPlayerStorageValue(cid, 88889) <= 0 then
                  doPlayerSetVocation(cid, newvoc)
                  setPlayerStorageValue(cid, 88889, 1)   
                  doPlayerSendTextMessage(cid, 22, "Congratz! You get "..level.." or more, and evolved to "..(getVocationInfo(newvoc).description).."!")
          return true
		  end
end

Ainda em data/creaturescripts/scripts, abra o arquivo login.lua e Procure por qualquer linha que contenha registerCreatureEvent, e adicione isso embaixo:

Citar

registerCreatureEvent(cid, "EvolutionClass")

 

Obs: O sistema evolui sendo que as evoluções, estejam com ID em ordem. Tipo > vocation 1 >> vocation 2 >> vocation 3

Editado por luangop
Correção do script. (veja o histórico de edições)

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

Postado
  • Autor
3 minutos atrás, luangop disse:

 

Em data/creaturescripts/creaturescripts.xml add essa tag:

Em data/creaturescripts/scripts crie um arquivo evolveclass.lua, e adicione o seguinte:


local leveis = {
[1] = {lvl = 50, sto = 88888},
[2] = {lvl = 100, sto = 88889}
}

function onAdvance(cid, skill, oldLevel, newLevel)

local level = getPlayerLevel(cid)
local vocatual = getPlayerVocation(cid)

       for i = 1, #leveis do
          if level >= leveis[i].lvl and getPlayerStorageValue(cid, leveis[i].sto) <= 0 then
                  doPlayerAddItem(cid, leveis[i].item, leveis[i].quant)
				  doPlayerSetVocation(cid, vocatual + 4)
                  setPlayerStorageValue(cid, leveis[i].sto, 1)   
                  doPlayerSendTextMessage(cid, 22, "Você upou level "..level.." ou mais, e evoluiu para "..(getVocationInfo(4).name).."!")
          end
       end
  
 return true
end

Ainda em data/creaturescripts/scripts, abra o arquivo login.lua e Procure por qualquer linha que contenha registerCreatureEvent, e adicione isso embaixo:

 

Obs:

Coloquei imaginando que seu servidor, as vocações pulem de 4 em 4 números, caso não esteja assim poste seu vocations.xml para que eu arrume o script.

Então... Queria fazer com essas

Spoiler


<vocation id="2" name="Swordsman" description="a novice swordsman" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="25" gainmanaticks="3" gainmanaamount="35" 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.1" magDefense="1.0" armor="1.0"/>
<skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.1" shielding="1.1" fishing="1.1" experience="1.0"/>
</vocation>

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

<vocation id="4" name="Swordsman" description="a professional swordsman" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="25" gainmanaticks="3" gainmanaamount="35" manamultiplier="1.1" attackspeed="2000" soulmax="100" gainsoulticks="120" fromvoc="3">
<formula meleeDamage="2.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.3" magDefense="1.0" armor="1.0"/>
<skill fist="1.6" club="

Mas ainda terão mais vocations... Mas se eu entender o script eu faço para cada uma, apenas alterando o numero da voc e o storage, cada vocation terá esses três ranks de evolução

Postado

Entendi!

no evolveclass.lua, coloque assim:

local leveis = {
[1] = {lvl = 50, sto = 88888},
[2] = {lvl = 100, sto = 88889}
}

function onAdvance(cid, skill, oldLevel, newLevel)

local level = getPlayerLevel(cid)
local vocatual = getPlayerVocation(cid)
local newvoc = vocatual + 1

       for i = 1, #leveis do
          if level >= leveis[i].lvl and getPlayerStorageValue(cid, leveis[i].sto) <= 0 then
                  doPlayerSetVocation(cid, newvoc)
                  setPlayerStorageValue(cid, leveis[i].sto, 1)   
                  doPlayerSendTextMessage(cid, 22, "Congratz! You get "..level.." or more, and evolved to "..(getVocationInfo(newvoc).description).."!")
          end
       end
  
 return true
end

Vou explicar, esse script quando você atinge o level 50, ele pega o ID da sua vocação, altera para seu id+1 e registra a alteração. O mesmo ocorre quando atinge level 100. Ou seja, assim não precisa criar novos scripts, este fará a função de todos... a única coisa que precisa fazer, é certificar-se que as evoluções tenham Vocation ID seguidos, por exemplo, sua classe Swordsman já está assim, ID's 2, 3 e 4.. Você não pode criar uma vocação diferente no meio das evoluções de uma.. entendeu?

Por garantia, teste o sistema!

Editado por luangop
erro meu (veja o histórico de edições)

Te ajudei? Clique em  Gostei ! 

²²²d¬¬b²²²

 

 

"She's got a smile that it seems to me...."  ♪♪

Postado
  • Autor
56 minutos atrás, luangop disse:

Entendi!

no evolveclass.lua, coloque assim:


local leveis = {
[1] = {lvl = 50, sto = 88888},
[2] = {lvl = 100, sto = 88889}
}

function onAdvance(cid, skill, oldLevel, newLevel)

local level = getPlayerLevel(cid)
local vocatual = getPlayerVocation(cid)
local newvoc = vocatual + 1

       for i = 1, #leveis do
          if level >= leveis[i].lvl and getPlayerStorageValue(cid, leveis[i].sto) <= 0 then
                  doPlayerSetVocation(cid, newvoc)
                  setPlayerStorageValue(cid, leveis[i].sto, 1)   
                  doPlayerSendTextMessage(cid, 22, "Congratz! You get "..level.." or more, and evolved to "..(getVocationInfo(newvoc).description).."!")
          end
       end
  
 return true
end

Vou explicar, esse script quando você atinge o level 50, ele pega o ID da sua vocação, altera para seu id+1 e registra a alteração. O mesmo ocorre quando atinge level 100. Ou seja, assim não precisa criar novos scripts, este fará a função de todos... a única coisa que precisa fazer, é certificar-se que as evoluções tenham Vocation ID seguidos, por exemplo, sua classe Swordsman já está assim, ID's 2, 3 e 4.. Você não pode criar uma vocação diferente no meio das evoluções de uma.. entendeu?

Por garantia, teste o sistema!

Ocorreu apenas um unico erro... Criei um character, dei a vocation Novice Swordsman para ele e quando chegou ao 50 foi para Novice novamente, e no 100 foi para Amateur, Devia ser do 50 para Amateur e do 100 para Professional

 

20:34 Congratz! You get 50 or more, and evolved to a novice swordsman!
20:35 Congratz! You get 101 or more, and evolved to a amateur swordsman!

Editado por Str00per (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo