Olá pessoal! Eu desenvolvi um script simples que irá resolver um problema bem grande.
Quando um player troca de vocação de alguma maneira, a sua vida e mana continua a mesma. Então, um player cria um sorcerer ou druid, pega nível MUITO alto e troca para knight. Após pegar muitos níveis mais, dando spam com sua mana pool imensa, vira paladin, com vida e mana de knight e sorcerer respectivamente.
O script pode ser alterado como quiserem, ele funciona por talkaction.
Em data/talkactions/talkactions.xml, adicione:
<!-- Vocação --><talkaction words="!changeknight" script="knight.lua"/>
<talkaction words="!changepaladin" script="paladin.lua"/>
<talkaction words="!changedruid" script="druid.lua"/>
<talkaction words="!changesorcerer" script="sorcerer.lua"/>
Em data/talkactions/scripts, crie quatro scripts. knight.lua, paladin.lua, druid.lua e sorcerer.lua.
Respectivamente:
knight:
function onSay(cid,words,params)level = getPlayerLevel(cid)
newhp = (level-8)*VIDA+100
newmana = (level-8)*MANA
doPlayerSetVocation(cid, 4)
playerid = getPlayerGUID(cid)
db.executeQuery("UPDATE `players` SET `healthmax`="..newhp..",`health`="..newhp..",`manamax`="..newmana..",`mana`="..newmana.." WHERE `players`.`id`= ".. playerid .."")
doRemoveCreature(cid)
end
Em vermelho a vida que o knight ganha por nível, e em azul a mana que ele ganha.
Paladin:
function onSay(cid,words,params)level = getPlayerLevel(cid)
newhp = (level-8)*VIDA+100
newmana = (level-8)*MANA
doPlayerSetVocation(cid, 3)
playerid = getPlayerGUID(cid)
db.executeQuery("UPDATE `players` SET `healthmax`="..newhp..",`health`="..newhp..",`manamax`="..newmana..",`mana`="..newmana.." WHERE `players`.`id`= ".. playerid .."")
doRemoveCreature(cid)
end
Mesma coisa das cores.
Druid:
function onSay(cid,words,params)level = getPlayerLevel(cid)
newhp = (level-8)*VIDA+100
newmana = (level-8)*MANA
doPlayerSetVocation(cid, 2)
playerid = getPlayerGUID(cid)
db.executeQuery("UPDATE `players` SET `healthmax`="..newhp..",`health`="..newhp..",`manamax`="..newmana..",`mana`="..newmana.." WHERE `players`.`id`= ".. playerid .."")
doRemoveCreature(cid)
end
E sorcerer:
function onSay(cid,words,params)level = getPlayerLevel(cid)
newhp = (level-8)*VIDA+100
newmana = (level-8)*MANA
doPlayerSetVocation(cid, 1)
playerid = getPlayerGUID(cid)
db.executeQuery("UPDATE `players` SET `healthmax`="..newhp..",`health`="..newhp..",`manamax`="..newmana..",`mana`="..newmana.." WHERE `players`.`id`= ".. playerid .."")
doRemoveCreature(cid)
end
E é só isso.
Preciso de algumas sugestões de vocês para melhorar o script. Primeiro, algo que o player tem que dar em troca, talvez dias de premium, dinheiro, item, vocês que sabem. Segundo, algum bug que encontrarem, algo que os players estejam fazendo para "apelar" usando esse sistema, poste aqui que eu dou um jeito. Espero ter ajudado vocês, os créditos são todos meus.