Ir para conteúdo
  • 0

Rank de resete (por storage)


Pergunta

Coloquei um sistema de resete em meu servidor por npc, e gostaria que tive-se um rank dos players que resetaram, por exemplo o player usa o comando !resete e aparece todos os players que resetaram, e quantos resetes eles tem... 

 

 

O script que uso:

Citar

--[[script made 100% by Nogard and Night Wolf.
   You can feel free to edit anything you want, but don't remove the credits]] 


local config = {
minlevel = 4200, --- level inical para resetar
price = 10, --- preço inicial para resetar
newlevel = 200, --- level após reset
priceByReset = 0, --- preço acrescentado por reset
percent = 5, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total)
maxresets = 100,
levelbyreset = 0 --- quanto de level vai precisar a mais no próximo reset
}
--- end config

function getResets(uid)
resets = getPlayerStorageValue(uid, 378378)
  if resets < 0 then
            resets = 0
          end
return resets
end

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink()                  npcHandler:onThink()                  end
 
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid


 function addReset(cid)
    if(npcHandler:isFocused(cid)) then
        npcHandler:releaseFocus(cid)
    end        
    talkState[talkUser] = 0
    resets = getResets(cid)
    setPlayerStorageValue(cid, 378378, resets+1) 
    doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    local hp = getCreatureMaxHealth(cid)
    local resethp = hp*(config.percent/100)
    setCreatureMaxHealth(cid, resethp)
    local differencehp = (hp - resethp)
    doCreatureAddHealth(cid, -differencehp)
    local mana = getCreatureMaxMana(cid)
    local resetmana = mana*(config.percent/100)
    setCreatureMaxMana(cid, resetmana)
    local differencemana = (mana - resetmana)
    doCreatureAddMana(cid, -differencemana)
    doRemoveCreature(cid)        
    local description = resets+1
    db.executeQuery("UPDATE `players` SET `description` = ' [Reset: "..description.."]' WHERE `players`.`id`= ".. playerid .."")
    db.executeQuery("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."")
    return true
end


local newPrice = config.price + (getResets(cid) * config.priceByReset)
local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset)

if msgcontains(msg, 'reset') then
    if getResets(cid) < config.maxresets then
        selfSay('You want to reset your character? It will cost '..newPrice..' gp\'s!', cid)
        talkState[talkUser] = 1
    else
        selfSay('You already reached the maximum reset level!', cid)
    end
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
    if getPlayerMoney(cid) < newPrice then
        selfSay('Its necessary to have at least '..newPrice..' gp\'s for reseting!', cid)
    elseif getPlayerLevel(cid) < newminlevel then
        selfSay('The minimum level for reseting is '..newminlevel..'!', cid)
    else
        doPlayerRemoveMoney(cid,newPrice)
        playerid = getPlayerGUID(cid)
        addEvent(function()
            if isPlayer(cid) then
                addReset(cid)
            end
        end, 3000)
        local number = getResets(cid)+1
        setPlayerStorageValue(cid, 19492, 0)
        setPlayerStorageValue(cid, 19493, 0) 
        setPlayerStorageValue(cid, 19497, 0) 
        setPlayerStorageValue(cid, 19504, 0) 
        setPlayerStorageValue(cid, 19511, 0)
        setPlayerStorageValue(cid, 19518, 0) 
        setPlayerStorageValue(cid, 19522, 0) 
        setPlayerStorageValue(cid, 19526, 0)
        setPlayerStorageValue(cid, 19531, 0)
        setPlayerStorageValue(cid, 19534, 0) 
        setPlayerStorageValue(cid, 19537, 0) 
        setPlayerStorageValue(cid, 19543, 0) 
        setPlayerStorageValue(cid, 19551, 0)
        setPlayerStorageValue(cid, 19559, 0) 
        setPlayerStorageValue(cid, 181610, 1) 
        doBroadcastMessage("O Jogador "..getCreatureName(cid).." Resetou e foi para o Reset "..number.." !")
        local msg ="---[Reset: "..number.."]-- You have reseted!  You'll be disconnected in 3 seconds."
        doPlayerPopupFYI(cid, msg) 
        doPlayerAddItem(cid,2151,1)
        talkState[talkUser] = 0
        npcHandler:releaseFocus(cid)
    end
talkState[talkUser] = 0
elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then
    talkState[talkUser] = 0
    npcHandler:releaseFocus(cid)
    selfSay('Ok.', cid)
elseif msgcontains(msg, 'quantity') then
    selfSay('You have a total of '..getResets(cid)..' reset(s).', cid)
    talkState[talkUser] = 0
end

return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Editado por Hisoka Fail2
Link para o comentário
https://xtibia.com/forum/topic/243787-rank-de-resete-por-storage/
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

×
×
  • Criar Novo...