function onSay(cid, words, param)
-- Configurações gerais
local config = {
needPa = true, -- Necessita ser uma conta premium?
needPz = true, -- Precisa estar em uma área de proteção (Protection Zone)?
battle = true, -- Precisa estar fora de combate para resetar?
withe = false, -- Jogadores com PK "Branco" podem resetar?
red = false, -- Jogadores com PK "Vermelho" podem resetar?
tp = false, -- Teleportar para o templo após o reset?
look = true, -- Mostrar o reset no status do jogador?
addLimite = true, -- Ativar limite de resets?
setClasse = false, -- Mudar a vocação do jogador ao resetar?
storage = 54676, -- Valor de armazenamento para contagem de resets
}
-- Configurações específicas para o reset
local resetStatus = {
lvl = 717217, -- Nível necessário para resetar
lvlreset = 150, -- Nível que o jogador terá após o reset
limite = 100, -- Máximo de resets permitidos
newClasse = 0, -- Nova vocação após o reset (0 significa que não muda)
tempo = 0, -- Tempo em segundos antes do reset acontecer
}
local player = getPlayerGUID(cid) -- Obtém o GUID (identificador único) do jogador
local resets = getPlayerStorageValue(cid, config.storage) -- Obtém o número de resets do jogador
local needLvl = "Você precisa de " .. resetStatus.lvl - getPlayerLevel(cid) .. " níveis para resetar."
local msg = "~~[Reset: " .. resets .. "]~~ Sucesso ao resetar! Você será desconectado em " .. resetStatus.tempo .. " segundos."
-- Verificações de condições antes do reset
if not isPremium(cid) and config.needPa then
doPlayerSendTextMessage(cid, 22, "Você precisa ser uma conta Premium para resetar.")
elseif config.needPz and not getTilePzInfo(getCreaturePosition(cid)) then
doPlayerSendTextMessage(cid, 22, "Você precisa estar em uma área de proteção para resetar.")
elseif config.addLimite and resets == resetStatus.limite then
doPlayerSendTextMessage(cid, 22, "Você já atingiu o limite de resets permitidos.")
elseif not config.withe and getCreatureSkullType(cid) == SKULL_WHITE then
doPlayerSendTextMessage(cid, 22, "Você está com PK 'Branco', por isso não pode resetar.")
elseif not config.red and getCreatureSkullType(cid) == SKULL_RED then
doPlayerSendTextMessage(cid, 22, "Você está com PK 'Vermelho', por isso não pode resetar.")
elseif config.battle and getCreatureCondition(cid, CONDITION_INFIGHT) then
doPlayerSendTextMessage(cid, 22, "Você precisa estar fora de combate para resetar.")
elseif getPlayerLevel(cid) < resetStatus.lvl then
doPlayerSendCancel(cid, needLvl)
else
-- Função para realizar o reset
local function performReset()
resets = getPlayerStorageValue(cid, config.storage) + 1
setPlayerStorageValue(cid, config.storage, resets)
if config.tp then
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
end
if config.setClasse then
doPlayerSetVocation(cid, resetStatus.newClasse)
end
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = " .. resetStatus.lvlreset .. ", `experience` = 0 WHERE `id` = " .. player)
db.executeQuery("UPDATE `players` SET `description` = ' [Reset " .. resets .. "]' WHERE `players`.`id` = " .. player)
if config.look then
db.executeQuery("UPDATE `players` SET `description` = ' [Reset " .. resets .. "]' WHERE `players`.`id` = " .. player)
else
db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = " .. player)
end
doPlayerPopupFYI(cid, msg)
end
-- Adiciona um evento para realizar o reset após um determinado tempo
addEvent(performReset, resetStatus.tempo * 1000)
end return true
end