Bom gente, eu já iniciei um tópico aqui mais ou menos sobre o que eu irei tratar aqui agora, porem ele não foi "totalmente" resolvido, na verdade quase não foi rsrsrs, é assim..
Eu tenho um script de reset de classe, que ao utilizar, você troca de classe, ou seja, se transforma em uma nova vocação, e outro script que é o sistema de resets e para trocar de classe tem que ter uma certa quantidade de resets;
O que eu queria é que ao usar o comando para mudar de classe, a quantidade de resets do player volte para 0, para que ele possa estar na classe nova, com 0 resets;
Outro problema que eu também venho tendo é que quando ao utilizar o comando, e estar na nova vocação, o player continua com o mesmo HP/MP de antes, isso é um problema, pois ele ficara com o HP/MP muito "cabuloso".. Portanto eu gostaria que ele ao usar o comando, volte para o Level configurado com o HP/MP de acordo com o Level que ele esta..
Vamos aos Script:
O Script de Mudança de Classe é:
function onSay(cid, words, param, channel)
function getPlayerReset(cid)local check = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid))return check:getDataInt("reset") <= 0 and 0 or check:getDataInt("reset") endif (param ~= "dark" and param ~= "hellborn" and param ~= "supreme") thendoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce digitou errado o nome da classe")return TRUEendlocal config = {darklvl = 20, -- level para resetar darkhellbornlvl = 30, -- level para resetar hellbornsupremelvl = 50, -- level para resetar supremevocationDark = 15, -- id vocação darkvocationHellborn = 16, -- id vocação hellbornvocationSupreme = 17, -- id vocação supremelvlreset = 250, -- level apos resetar primeiras vocaçõeslvlHellborn = 250, -- level apos resetar vocação sacredplayer = getPlayerGUID(cid), -- não mexa!reset = 50,pz = "yes", -- players precisam estar em protection zone para usar? ("yes" or "no").battle = "yes", -- players deve estar sem battle ("yes" or "no")premium = "no" -- se precisa ser premium account ("yes" or "no")}if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) thendoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa estar em Protection Zone para usar este comando.")return TRUEendif(config.premium == "yes") and (not isPremium(cid)) thendoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Only players with premium account can use.")return TRUEendif(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) thendoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce nao pode usar com battle.")return TRUEendif (param == "dark") thenif (getPlayerReset(cid) >= 50) thenif (getPlayerVocation(cid) == 5 or getPlayerVocation(cid) == 6 or getPlayerVocation(cid) == 7 or getPlayerVocation(cid) == 8 or getPlayerVocation(cid) == 14) thenif (getPlayerLevel(cid) >= config.darklvl) thendoPlayerSetVocation(cid, config.vocationDark)setPlayerStorageValue(cid, 897979, config.vocationDark)doRemoveCreature(cid)db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = 0 WHERE `id` = "..config.player)return TRUEelsedoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.darklvl..".")return TRUEendelsedoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ter promotion.")return TRUEendelsedoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 50 resets ou mais para poder mudar de classe.")return TRUEendreturn trueendif (param == "hellborn") thenif (getPlayerReset(cid) >= 75) thenif (getPlayerVocation(cid) == 15) thenif (getPlayerLevel(cid) >= config.hellbornlvl) thendoPlayerSetVocation(cid, config.vocationHellborn)setPlayerStorageValue(cid, 897979, config.vocationHellborn)doRemoveCreature(cid)db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = 0 WHERE `id` = "..config.player)return TRUEelsedoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.hellbornlvl..".")return TRUEendelsedoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser Dark Hero.")return TRUEendelsedoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 75 resets ou mais para poder mudar de classe.")return TRUEendreturn trueendif (param == "supreme") thenif (getPlayerReset(cid) >= 100) thenif (getPlayerVocation(cid) == 16) thenif (getPlayerLevel(cid) >= config.supremelvl) thendoPlayerSetVocation(cid, config.vocationSupreme)setPlayerStorageValue(cid, 897979, config.vocationSupreme)doRemoveCreature(cid)db.executeQuery("UPDATE `players` SET `level` = "..config.lvlreset..", `experience` = 0 WHERE `id` = "..config.player)return TRUEelsedoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser level "..config.Supremelvl..".")return TRUEendelsedoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Voce precisa ser Hellborn Deathbringer.")return TRUEendelsedoPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Voce precisa ter 100 resets ou mais para poder mudar de classe.")return TRUEendreturn trueendend
A função que checa a quantidade de Resets que o player tem é:
function getPlayerReset(cid) local check = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid)) return check:getDataInt("reset") <= 0 and 0 or check:getDataInt("reset") end
Essa função já ta no Script de Mudança de Classe..
OBS: Os Resets não são armazenados em Storage !! acho que já deu pra perceber xD
Por favor, me ajudem, só falta isso para eu terminar meu servidor, e deixa-lo Online, conto com a ajuda de vocês;