Postado Setembro 12, 2016 8 anos 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 Setembro 12, 2016 8 anos por Str00per Erro de concordancia (veja o histórico de edições)
Postado Setembro 12, 2016 8 anos 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 Setembro 13, 2016 8 anos 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 Setembro 12, 2016 8 anos 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 Setembro 12, 2016 8 anos 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 Setembro 12, 2016 8 anos 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 Setembro 12, 2016 8 anos 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 Setembro 12, 2016 8 anos 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.