Ir para conteúdo
Entre para seguir isso  
Luck Oake

talkaction Reset System

Recommended Posts

Luck Oake    16
Luck Oake

Olá pessoal, adivinha quem voltou :)

 

Então, vou recomeçar minha vida nesse mundo de scripting em Lua depois de quase 6 meses praticamente parado. E o primeiro script a ser postado será meu Reset System. Fiz ele porque quase todos os outros que tem por aí na net são porcarias bugadas.

 

Vamos lá:

 

Talkactions.xml:

<talkaction words="/reset;!reset" script="reset.lua"/>
<talkaction log="yes" access="5" words="/addresets" script="reset.lua"/>

data/talkactions/reset.lua:

 

-- CONFIGS --
local prem = false -- Premium Account necessária para resetar? (true / false)
local pz = true -- É preciso estar em Protection Zone para resetar? (true / false)
local white = false -- Players com White Skull podem resetar? (true / false)
local red = false -- Players com Red Skull podem resetar? (true / false)
local black = false  -- Players com Black Skull podem resetar? (true / false)
local battle = false -- Players com battle podem resetar? (true / false)
local teleport = true -- Teleportar o player para o templo após o reset? (true / false)
local look = true -- Aparecer resets no look? (true / false)
 
local level = 350 -- Level necessário para resetar
local nlevel = 8 -- Level que o player ficará após o reset
local time = 3 -- Tempo para o player deslogar ao resetar (segundos)
local limite = 100 -- Limite de resets (Caso não queira limite, coloque false)
 
local system = "storage" -- Modo do sistema (database / storage)
local storage = 39650 -- Storage dos resets
local group = 5 -- ID do Group que tem permissão para adicionar resets (6 = god, 5 = cm, 4 = gm, 3 = senior tutor, 2 = tutor)
local exhastor = 17138
-- CONFIGS --
------------------------------------------------------------------------------------------------------------------------------------
function getPlayerResets(cid)
    if system == "database" then
        local a = db.getResult("SELECT `resets` FROM `players` WHERE `id`= "..getPlayerGUIDByName(getCreatureName(cid))..";")
        return a:getDataInt("resets", getPlayerGUIDByName(getCreatureName(cid)))
    elseif system == "storage" then
        return getPlayerStorageValue(cid, storage) < 0 and 0 or getPlayerStorageValue(cid, storage)
    else
        return error("Configuração da variável 'system' no sistema de resets incorreta.")
    end
end
 
function doPlayerAddResets(cid, count)
    if system == "database" then
        return db.executeQuery("UPDATE `players` SET `resets` = '"..(getPlayerResets(cid)+(count == nil and 1 or count)).."' WHERE `id` = '"..getPlayerGUIDByName(getCreatureName(cid)).."';")
    elseif system == "storage" then
        return setPlayerStorageValue(cid, storage, getPlayerResets(cid)+(count == nil and 1 or count))
    else
        return error("Configuração da variável 'system' no sistema de resets incorreta.")
    end
end
 
function doPlayerReset(cid, count)
    if teleport then
        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
    end
    local resets = getPlayerResets(cid)
    local function setResetsInLook()
        return db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..(resets+(count == nil and 1 or count)).."]' WHERE `id` = '"..getPlayerGUIDByName(getCreatureName(cid)).."';")
    end
    if system == "database" then
        doRemoveCreature(cid)
        doPlayerAddResets(cid, count == nil and 1 or count)
    elseif system == "storage" then
        doPlayerAddResets(cid, count == nil and 1 or count)
        doRemoveCreature(cid)
    else
        return error("Configuração da variável 'system' no sistema de resets incorreta.")
    end
    db.executeQuery("UPDATE `players` SET `level` = '"..nlevel.."' WHERE `id` = '"..getPlayerGUIDByName(getCreatureName(cid)).."';")
    if look then
        setResetsInLook()
    end
end
------------------------------------------------------------------------------------------------------------------------------------
function onSay(cid, words, param)
    if words == "!reset" or words == "/reset" then
        if prem and not isPremium(cid) then
            doPlayerSendCancel(cid, "Você precisa ser Premium Account para resetar.") return true
        elseif pz and not getTilePzInfo(getCreaturePosition(cid)) then
            doPlayerSendCancel(cid, "Você precisa estar em Protection Zone para resetar.") return true
        elseif white and getCreatureSkullType(cid) == SKULL_WHITE then
            doPlayerSendCancel(cid, "Você precisa estar sem White Skull para resetar.") return true
        elseif red and getCreatureSkullType(cid) == SKULL_RED then
            doPlayerSendCancel(cid, "Você precisa estar sem Red Skull para resetar.") return true
        elseif black and getCreatureSkullType(cid) == SKULL_BLACK then
            doPlayerSendCancel(cid, "Você precisa estar sem Black Skull para resetar.") return true
        elseif battle and hasCondition(cid, CONDITION_INFIGHT) then
            doPlayerSendCancel(cid, "Você precisa estar sem battle para resetar.") return true
        elseif getPlayerLevel(cid) < level then
            doPlayerSendCancel(cid, "Você precisa ter level "..level.." para resetar.") return true
        elseif limite and getPlayerResets(cid) == limite then
            doPlayerSendCancel(cid, "Você já está no limite de resets ("..limite..").") return true
        elseif exhaustion.check(cid, exhastor) then
            doPlayerSendCancel(cid, "Espere "..exhaustion.get(cid, exhastor).." segundos para usar o comando novamente.") return true
        end
        addEvent(doPlayerReset, time*1000, cid)
        doPlayerPopupFYI(cid, "Você resetou com sucesso. Você agora tem "..(getPlayerResets(cid)+1).." resets. Você será deslogad"..(getPlayerSex(cid) >= 1 and "o" or "a").." em "..time.." segundos.")
        exhaustion.set(cid, exhastor, time)
    elseif words == "/addresets" then
        local t = string.explode(param, ",")
        if getPlayerGroupId(cid) < group then return false
        elseif not t then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Parâmetros incorretos. Especifique o nome do player e opcionalmente a quantidade de resets.") return true
        elseif not getPlayerByName(t[1]) then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Player "..t[1].." não encontrado.") return true
        elseif t[3] then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Parâmetros incorretos. Especifique apenas o nome do player e opcionalmente a quantidade de resets.") return true
        end
        addEvent(doPlayerReset, time*1000, getPlayerByName(t[1]), t[2] == nil and "1" or t[2])
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..(t[2] == nil and "1" or t[2]).." resets no player "..getCreatureName(getPlayerByName(t[1]))..". Agora el"..(getPlayerSex(getPlayerByName(t[1])) >= 1 and "e" or "a").." possui "..(getPlayerResets(getPlayerByName(t[1]))+(t[2] == nil and "1" or t[2])).." resets.")
        doPlayerPopupFYI(getPlayerByName(t[1]), ""..getCreatureName(cid).." adicionou "..(t[2] == nil and "1" or t[2]).." resets em seu character. Você agora tem "..(getPlayerResets(getPlayerByName(t[1]))+(t[2] == nil and "1" or t[2])).." resets. Você será deslogad"..(getPlayerSex(getPlayerByName(t[1])) >= 1 and "o" or "a").." em "..time.." segundos.")
    end
return true
end

 

 

 

Configurações:

 

-- CONFIGS --
local prem = false -- Premium Account necessária para resetar? (true / false)
local pz = true -- É preciso estar em Protection Zone para resetar? (true / false)
local white = false -- Players com White Skull podem resetar? (true / false)
local red = false -- Players com Red Skull podem resetar? (true / false)
local black = false  -- Players com Black Skull podem resetar? (true / false)
local battle = false -- Players com battle podem resetar? (true / false)
local teleport = true -- Teleportar o player para o templo após o reset? (true / false)
local look = true -- Aparecer resets no look? (true / false)
 
local level = 350 -- Level necessário para resetar
local nlevel = 8 -- Level que o player ficará após o reset
local time = 3 -- Tempo para o player deslogar ao resetar (segundos)
local limite = 100 -- Limite de resets (Caso não queira limite, coloque false)
 
local system = "storage" -- Modo do sistema (database / storage)
local storage = 39650 -- Storage dos resets
local group = 5 -- ID do Group que tem permissão para adicionar resets (6 = god, 5 = cm, 4 = gm, 3 = senior tutor, 2 = tutor)
local exhastor = 17138
-- CONFIGS --

 

 

 

Sim, sei que o script tá gambiarrado, mas como tô com preguiça de fazer uma v2 dele agora, vai ficar assim mesmo por enquanto.

 

Comandos:

/reset
!reset
/addresets nome,quantidade

O comando /addresets é só para staff, e a quantidade é opcional.

 

Bom uso, até.

Editado por Luck Oake

Compartilhar este post


Link para o post
zikaotserv    0
zikaotserv

zika

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×