• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Sistema] Reset System (Mysql)

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1default [Sistema] Reset System (Mysql) el Miér Nov 11, 2020 11:09 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Hola usuarios de tibiface

    Bueno aqui les vengo a dejar un sistema de reset completo, como ya sabran como dice el titulo reset usted llegan a un level determinado y podran resetear su personaje.

    el sistema es automatico al llegar al nivel resetea automatico

    bueno vamos a la instalacion:

    ejecutar esta tabla en su base de datos phpadmin

    Código:
    ALTER TABLE `players` ADD `reborn` int(11) NOT NULL DEFAULT 0;

    ahora no vamos y agregamos esto en lib/050-functions al final de ese archivo

    Código:

    function getPlayerReborn(cid)
        local Info = db.getResult("SELECT `value` FROM `reborn` WHERE `player_id` = " .. getPlayerGUID(cid) .. " LIMIT 1")
            if Info:getID() ~= LUA_ERROR then
            local amount= Info:getDataInt("reborn")
            Info:free()
            return amount
        end
        return LUA_ERROR
    end
    function setPlayerReborn(cid, value)
        db.executeQuery("UPDATE `players` SET `reborn` = " .. value .. " WHERE `id` = " .. getPlayerGUID(cid) .. ";")
    end


    ahora en creaturescript/creaturescript.xml agregamos esto

    Código:

    <event type="login" name="reborn_register" event="script" value="rebornlook.lua"/>
          <event type="look" name="rebornlook" event="script" value="rebornlook.lua"/>
     <event type="advance" name="reset" event="script" value="reset.lua"/>

    en creaturescript/script creamos 2 archivos con los nombre de que se encuentran mas abajo y pegamos su siguiente contenido

    reset.lua

    Código:

    local config =
    {
       levelLimit = 400, --limit of course
       kickTime = 60000, --(in miliseconds) time before player gets kicked
       removeInventory = true, --remove items from inventory after reset? (to prevent players using items with level required after reset)
       newLevel = 20, --new level after reset
       newExp = 4500, --new exp after reset
       resetSkills = true, --reset skills?
       skillLevel = 11, --new skills level after reset
       resetMagic = true, --reset magic level?
       newMagic = 2, --new magic level after reset
       resetHealth = true, --reset health?
       newHealth = 180, --new player health/healthmax after reset
       resetMana = true, --reset mana?
       newMana = 240, --new player mana/manamax after reset
       resetVocation = true --delete promotion?
    }
     
    local displayMessage, message = true, "You have reached the level limit, you will be kicked in " .. config.kickTime / 1000 .. " seconds."
     
    function onAdvance(cid, skill, oldlevel, newLevel)
     
       if(skill == SKILL__LEVEL and isPlayer(cid)) then
          if newLevel >= config.levelLimit then
             local queries = {}
             local id = getPlayerGUID(cid)   
     
             if displayMessage then
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, message)
             end
             if config.removeInventory then
                table.insert(queries, "delete from player_items where player_id = " .. id .. ";")
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Save your items on the depot or will be deleted after the reset.")
             end
             if config.resetSkills then
                for i = 1, 6 do
                   table.insert(queries, "update player_skills set value = " .. config.skillLevel .. ", count = 0 where skillid = " .. i - 1 .. " and player_id = " .. id .. ";")
                end
             end
             setPlayerReborn(cid,getPlayerReborn(cid)+1)
             table.insert(queries, "update players set level = " .. config.newLevel .. ", experience = " .. config.newExp .. "" .. (config.resetMagic and ", maglevel = " .. config.newMagic .. "" or "") .. (config.resetHealth and ", health = " .. config.newHealth .. ", healthmax = " .. config.newHealth .. "" or "") .. (config.resetMana and ", mana = " .. config.newMana .. ", manamax = " .. config.newMana .. "" or "") .. (config.resetVocation and ", promotion = 0" or "") .. ";")
             addEvent(reset, config.kickTime, getCreatureName(cid), queries)
          else
             if config.levelLimit - newLevel <= 10 then
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You need " .. config.levelLimit - newLevel .. " levels more to reach the limit".. (config.removeInventory and ", remember to save your items at the depot" or "") .. ".")
             end
          end
       end
       return true
    end
     
    function reset(p, queries)
       if getPlayerByName(p) ~= nil then
          doRemoveCreature(getCreatureByName(p))
          db.executeQuery("update players set online = 0 where id = " .. getPlayerGUIDByName(p) .. ";")
       end
       for i = 1, table.maxn(queries) do
          if not db.executeQuery(queries[i]) then
             print("[RESET] Unable to execute query: " .. queries[i])
          end
       end
       return true
    end


    rebornlook.lua

    Código:

    function onLogin(cid)
        registerCreatureEvent(cid, "rebornlook")
        doPlayerSendTextMessage(cid, 19, "You have ".. getPlayerReborn(cid) .." reborn's.")
        return true
    end
    function onLook(cid, thing, position, lookDistance)
        if isPlayer(thing.uid) and thing.uid ~= cid then
          doPlayerSetSpecialDescription(cid,'[Reborny: '..getPlayerReborn(cid)..']')
            return true
        elseif thing.uid == cid then
          doPlayerSetSpecialDescription(cid,'[Reborny: '..getPlayerReborn(cid)..']')
            local string = 'You see yourself.'
            if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then
                string = string..' You are '.. getPlayerGroupName(cid) ..'.'
            elseif getPlayerVocation(cid) ~= 0 then
                string = string..' You are '.. getPlayerVocationName(cid) ..'.'
            else
                string = string..' You have no vocation.'
            end
            string = string..getPlayerSpecialDescription(cid)..''
            if getPlayerNameByGUID(getPlayerPartner(cid), false, false) ~= nil then
                string = string..' You are '.. (getPlayerSex(cid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(cid)) ..'.'
            end
            if getPlayerGuildId(cid) > 0 then
                string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid)
                string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.'
            end
            if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then
                string = string..'nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].'
                string = string..'nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.'
            end
            if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then
                string = string..'nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].'
            end
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) 
            return false
        end
        return true
    end




    [Sistema] Reset System (Mysql) YNU5B25
    https://www.tibiaface.com

    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).