Olá galerinha, vim trazer um reset system com stages/ou sem, você escolhe, é fácil configurar ele.
/data/talkactions/scripts/resetSystem.lua adicione o seguinte conteúdo dentro:
local _MAIN_CONFIG = { toLevel = 8, teleport = true needProtection = true, needBattle = true, stages = false, resetMainLevel = 5000, maxResets = 20 } local _RESETS_CONFIG = { -- only if you use stages mode [{1, 5}] = {level = 5000}, [{6, 8}] = {level = 6500} } local function getResets(uid) local resets = getPlayerStorageValue(uid, 83921) return resets < 0 and 0 or resets end function onSay(cid, words, param, channel) local M = _MAIN_CONFIG local level = nil --don't change if(M.needProtection and not getTileInfo(getThingPos(cid)).protection) then return doPlayerSendCancel(cid, "Só pode usar em protection zone.") elseif(M.needBattle and getCreatureCondition(cid, CONDITION_INFIGHT)) then return doPlayerSendCancel(cid, "Só pode usar se não estiver com battle.") end if(M.stages) then for resets, info in pairs(_RESETS_CONFIG) do if(getResets(cid) >= resets[1] and getResets(cid) <= resets[2]) then level = info.level end end else level = M.resetMainLevel end local toPosition = M.teleport and getTownTemplePosition(getPlayerTown(cid)) or getThingPos(cid) if(getResets(cid) < M.maxResets) then if(getPlayerLevel(cid) >= level) then setPlayerStorageValue(cid, 83921, getResets(cid) + 1) doPlayerSendTextMessage(cid, 27, "Agora você tem " .. getResets(cid) .. " resets.") doTeleportThing(cid, toPosition, false) db.executeQuery("UPDATE `players` SET `level` = " .. M.toLevel .. ", `experience` = " .. getExperienceForLevel(M.toLevel) .. " WHERE `id` = " .. getPlayerGUID(cid)) addEvent(doRemoveCreature, 2000, cid) else doPlayerSendTextMessage(cid, 27, "Você não tem o level necessário[" .. level .. "].") end else doPlayerSendTextMessage(cid, 27, "Você já atingiu o máximo de resets permitidos.") end return true end
TAG:
<talkaction words="!reset" event="script" value="resetSystem.lua"/>
/data/creaturescripts/scripts/resetRank.lua:
function getPlayerNameByGUID2(n) local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";") if c:getID() == -1 then return "SQL_ERROR["..n.."]" end return c:getDataString("name") end function onSay(cid, words, param) if (param == "") then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você possui "..getPlayerStorageValue(cid, 83921).." resets.") return TRUE end if (param == "rank") then local max = 50 local letters_to_next = 50 local name_now local name = "Highscore for Resets\n" local rkn = 0 local no_break = 0 name = name.."\n" name = name.."Rank. Resets | Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 83921 ORDER BY cast(value as INTEGER) DESC;") local kk = 0 repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." | "..name_now..space.." \n" until v:next() == false if name ~= "Highscore\n" then doPlayerPopupFYI(cid, name) end return TRUE else doPlayerSendCancel(cid, "Command valid: !resets, !resets rank.") return TRUE end end
TAG:
<talkaction words="!resets" event="script" value="resetRank.lua"/>
/data/creaturescripts/scripts/resetLook.lua:
local function getResets(uid) local resets = getPlayerStorageValue(uid, 83921) return resets < 0 and 0 or resets end function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) then doPlayerSetSpecialDescription(thing.uid, "\n[Resets: " .. getResets(thing.uid) .."]") end return true end
TAG:
<event type="look" name="showResets" event="script" value="resetLook.lua"/>
login.lua:
registerCreatureEvent(cid, "showResets")
Qualquer erro postei ai galerinha galerosa.
O rank é um script antigo do Jhon922 para o Simple Reputation System dele, eu só peguei e modifiquei as mensagens e storages.