• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [GlobalEvents] Globalsave New (god maya) (Tfs 0.3.7-0.4.0 and Otx)

    Compartir:

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

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Hola Usuarios de Tibiaface


    Bueno aqui le dejo un scripts que hace un globalsave en el servidor pero este globalsave no derrumba el servidor o mejor dicho no lo tumba, hace un closed server en un minuto y despues de 2 minutos lo volvera abrir ustedes pueden configurar a que hora quieren que se ejecute el global save.


    nos vamos a:

    data\globalevents\scripts

    copiamos cualquier archivo y renombramos por saveglobal.lua y pegamos esto dentro.

    Código:

      local config = {

        timetodel = 180,  ----> 3 minutos para que el servidor se ponga on
        timetodell = 60    ------> 1 minuto para que el servidor cierre

                  }
           
            local function maya1()
            doSetGameState(GAMESTATE_NORMAL)
            return true
            end
           
            local function maya2()
            doSetGameState(GAMESTATE_CLOSED)
            return true
            end
           
            function onTime()
           
            addEvent(maya2, config.timetodell * 1000)
            doBroadcastMessage("[Global server save] EL server se reiniciara en 1 minuto. Volvemos en 2 minutos")
            addEvent(maya1, config.timetodel * 1000)
            return true
            end




    Ahora añadimos esta tag en:

    data\globalevents\globalevents


    Código:
    <globalevent name="SaveAndClose" time="04:55" event="script" value="saveglobal.lua"/>

    El script fue testeado en OTx 8.60


    Creditos: 100% God Maya



    [GlobalEvents] Globalsave New (god maya) (Tfs 0.3.7-0.4.0 and Otx) YNU5B25
    3 participantes
    http://www.tibiaface.com

    tonygm

    tonygm
    Nuevo Miembro
    Nuevo Miembro
    buen scrip lastima que no lo tengas para versiones mas actualizadas como 10 x..

    3 participantes

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] ok test



    [GlobalEvents] Globalsave New (god maya) (Tfs 0.3.7-0.4.0 and Otx) YNU5B25
    3 participantes
    http://www.tibiaface.com

    Dfsuno

    Dfsuno
    Miembro
    Miembro
    Maya, no me funciono ahora cierra sin mandar notificación.

    3 participantes

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Dfsuno escribió:Maya, no me funciono ahora cierra sin mandar notificación.

    cque versionde servidor esta usando



    [GlobalEvents] Globalsave New (god maya) (Tfs 0.3.7-0.4.0 and Otx) YNU5B25
    3 participantes
    http://www.tibiaface.com

    Dfsuno

    Dfsuno
    Miembro
    Miembro
    Estoy utilizando el otxtibiafacev4 8.6

    3 participantes

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Dfsuno escribió:Estoy utilizando el otxtibiafacev4 8.6

    pues con esa fue probado el sistema



    [GlobalEvents] Globalsave New (god maya) (Tfs 0.3.7-0.4.0 and Otx) YNU5B25
    3 participantes
    http://www.tibiaface.com

    Dfsuno

    Dfsuno
    Miembro
    Miembro
    [Admin] God Maya escribió:
    Dfsuno escribió:Estoy utilizando el otxtibiafacev4 8.6

    pues con esa fue probado el sistema

    God maya desactive el script deje solo el save normal pero sigue cerrando la consola creo que es este script

    Código:
    local config = {
       creationTime = 7 * 86400,
       checkTime = 7 * 86400,
       viceCount = 4,
       memberCount = 10
    }

    function onStartup()
       local data, time, result = {}, os.time(), db.getResult("SELECT `id`, `ownerid`, `creationdata`, `checkdata` FROM `guilds` WHERE `world_id` = " .. getConfigValue('worldId') .. ";")
       if(result:getID() ~= -1) then
          repeat
             data[result:getDataInt("id")] = {result:getDataInt("ownerid"), result:getDataInt("creationdata"), result:getDataInt("checkdata")}
          until not(result:next())
          result:free()
       end

       for id, v in ipairs(data) do
          local owner, created, check = v[1], v[2], v[3]
          if(created < (time - config.creationTime)) then
             result = db.getResult("SELECT `id`, `level` FROM `guild_ranks` WHERE `guild_id` = " .. id .. ";")
             if(result:getID() ~= -1) then
                local rank, ranks = 0, {}
                repeat
                   ranks[result:getDataInt("id")] = result:getDataInt("level")
                   if(result:getDataInt("level") == 1) then
                      rank = result:getDataInt("id")
                   end
                until not(result:next())
                result:free()

                local members = {0, 0, 0, 0}
                for k, v in ipairs(ranks) do
                   result = db.getResult("SELECT COUNT(`id`) AS `count` FROM `players` WHERE `rank_id` = " .. k .. ";")
                   if(result:getID() ~= -1) then
                      members[v] = members[v] + result:getDataInt("count")
                      result:free()
                   end

                   if(v == 2) then
                      result = db.getResult("SELECT `p`.`id` FROM `players` p LEFT JOIN `accounts` a ON `p`.`account_id` = `a`.`id` WHERE `p`.`rank_id` = " .. k .. " AND (`a`.`premdays` = 0 OR (`a`.`lastday` + (`a`.`premdays` * 86400) <= 0));")
                      if(result:getID() ~= -1) then
                         local demote = ""
                         repeat
                            demote = demote .. result:getDataInt("id") .. ","
                            members[2] = members[2] - 1
                            members[1] = members[1] + 1
                         until not(result:next())
                         result:free()

                         if(demote ~= "" and rank ~= 0) then
                            db.executeQuery("UPDATE `players` SET `rank_id` = " .. rank .. " WHERE `id` IN (" .. demote:sub(1, -2) .. ");")
                         end
                      end
                   end
                end

                for i = 1, 3 do
                   members[4] = members[4] + members[i]
                end

                if(members[2] < config.viceCount or members[4] < config.memberCount) then
                   if(check == 0) then
                      db.executeQuery("UPDATE `guilds` SET `checkdata` = " .. (time + config.checkTime) .. " WHERE `id` = " .. id .. ";")
                   elseif(check < time) then
                      local tmp = ""
                      for rank, _ in ipairs(ranks) do
                         tmp = tmp .. rank .. ","
                      end

                      db.executeQuery("UPDATE `players` SET `rank_id` = 0, `guildnick` = '', `guildjoin` = 0 WHERE `rank_id` IN (" .. tmp:sub(1, -2) .. ");")
                      db.executeQuery("DELETE FROM `guilds` WHERE `id` = " .. id .. ";")
                   end
                end
             end
          end
       end

       db.executeQuery("UPDATE `players` SET `online` = 0 WHERE `world_id` = " .. getConfigValue('worldId') .. " AND `online` > 0;")
       db.executeQuery("UPDATE `bans` SET `active` = 0 WHERE `expires` <= " .. time .. " AND `expires` >= 0 AND `active` = 1")
       db.executeQuery("DELETE FROM `guild_wars` WHERE `status` = 0 AND `begin` < " .. (time - 2 * 86400) .. ";")

       if(getConfigValue("sqlType") ~= "sqlite") then
          db.executeQuery("TRUNCATE TABLE `player_statements`;")
       else
          db.executeQuery("DELETE FROM `player_statements`;")
       end

       return true
    end

    function onGlobalSave()
       if(getGameState() ~= GAMESTATE_CLOSING) then
          return onStartup()
       end

       return true
    end

    3 participantes

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Dfsuno escribió:
    [Admin] God Maya escribió:
    Dfsuno escribió:Estoy utilizando el otxtibiafacev4 8.6

    pues con esa fue probado el sistema

    God maya desactive el script deje solo el save normal pero sigue cerrando la consola creo que es este script

    Código:
    local config = {
       creationTime = 7 * 86400,
       checkTime = 7 * 86400,
       viceCount = 4,
       memberCount = 10
    }

    function onStartup()
       local data, time, result = {}, os.time(), db.getResult("SELECT `id`, `ownerid`, `creationdata`, `checkdata` FROM `guilds` WHERE `world_id` = " .. getConfigValue('worldId') .. ";")
       if(result:getID() ~= -1) then
          repeat
             data[result:getDataInt("id")] = {result:getDataInt("ownerid"), result:getDataInt("creationdata"), result:getDataInt("checkdata")}
          until not(result:next())
          result:free()
       end

       for id, v in ipairs(data) do
          local owner, created, check = v[1], v[2], v[3]
          if(created < (time - config.creationTime)) then
             result = db.getResult("SELECT `id`, `level` FROM `guild_ranks` WHERE `guild_id` = " .. id .. ";")
             if(result:getID() ~= -1) then
                local rank, ranks = 0, {}
                repeat
                   ranks[result:getDataInt("id")] = result:getDataInt("level")
                   if(result:getDataInt("level") == 1) then
                      rank = result:getDataInt("id")
                   end
                until not(result:next())
                result:free()

                local members = {0, 0, 0, 0}
                for k, v in ipairs(ranks) do
                   result = db.getResult("SELECT COUNT(`id`) AS `count` FROM `players` WHERE `rank_id` = " .. k .. ";")
                   if(result:getID() ~= -1) then
                      members[v] = members[v] + result:getDataInt("count")
                      result:free()
                   end

                   if(v == 2) then
                      result = db.getResult("SELECT `p`.`id` FROM `players` p LEFT JOIN `accounts` a ON `p`.`account_id` = `a`.`id` WHERE `p`.`rank_id` = " .. k .. " AND (`a`.`premdays` = 0 OR (`a`.`lastday` + (`a`.`premdays` * 86400) <= 0));")
                      if(result:getID() ~= -1) then
                         local demote = ""
                         repeat
                            demote = demote .. result:getDataInt("id") .. ","
                            members[2] = members[2] - 1
                            members[1] = members[1] + 1
                         until not(result:next())
                         result:free()

                         if(demote ~= "" and rank ~= 0) then
                            db.executeQuery("UPDATE `players` SET `rank_id` = " .. rank .. " WHERE `id` IN (" .. demote:sub(1, -2) .. ");")
                         end
                      end
                   end
                end

                for i = 1, 3 do
                   members[4] = members[4] + members[i]
                end

                if(members[2] < config.viceCount or members[4] < config.memberCount) then
                   if(check == 0) then
                      db.executeQuery("UPDATE `guilds` SET `checkdata` = " .. (time + config.checkTime) .. " WHERE `id` = " .. id .. ";")
                   elseif(check < time) then
                      local tmp = ""
                      for rank, _ in ipairs(ranks) do
                         tmp = tmp .. rank .. ","
                      end

                      db.executeQuery("UPDATE `players` SET `rank_id` = 0, `guildnick` = '', `guildjoin` = 0 WHERE `rank_id` IN (" .. tmp:sub(1, -2) .. ");")
                      db.executeQuery("DELETE FROM `guilds` WHERE `id` = " .. id .. ";")
                   end
                end
             end
          end
       end

       db.executeQuery("UPDATE `players` SET `online` = 0 WHERE `world_id` = " .. getConfigValue('worldId') .. " AND `online` > 0;")
       db.executeQuery("UPDATE `bans` SET `active` = 0 WHERE `expires` <= " .. time .. " AND `expires` >= 0 AND `active` = 1")
       db.executeQuery("DELETE FROM `guild_wars` WHERE `status` = 0 AND `begin` < " .. (time - 2 * 86400) .. ";")

       if(getConfigValue("sqlType") ~= "sqlite") then
          db.executeQuery("TRUNCATE TABLE `player_statements`;")
       else
          db.executeQuery("DELETE FROM `player_statements`;")
       end

       return true
    end

    function onGlobalSave()
       if(getGameState() ~= GAMESTATE_CLOSING) then
          return onStartup()
       end

       return true
    end


    revise que en su config.lua haya esto

    globalSaveEnabled = true si esta en true coloquelo en false y reinicie el servidor


    ahora si en su config.lua esta bien y se sigue cerando el problema es sus globalevents.xml

    elimine la linea que dice globalsave



    [GlobalEvents] Globalsave New (god maya) (Tfs 0.3.7-0.4.0 and Otx) YNU5B25
    3 participantes
    http://www.tibiaface.com

    Contenido patrocinado


    3 participantes

    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).