• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    GlobalEvents Shutdown para hacer restart automatico

    Compartir:

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

    jeceoz

    jeceoz
    Nuevo Miembro
    Nuevo Miembro
    Descripcion escribió:Si me pueden ayudar con un GlobalEvents Shutdown para hacer restart automatico a una cierta hora diariamente por favor Very Happy
    Imagen Explicativa escribió:Imagen Explicativa: GlobalEvents Shutdown para hacer restart automatico Tibiaf10
    Version del Scripts: TFs 0.4.0

    ralke

    ralke
    Miembro
    Miembro
    Autosave

    Código:
    <globalevent name="save" interval="10800000" event="script" value="save.lua"/>

    Código:
    local config = {
       broadcast = {120, 30},
       shallow = "no",
       delay = 120,
       events = 30
    }

    config.shallow = getBooleanFromString(config.shallow)

    local function executeSave(seconds)
       if(isInArray(config.broadcast, seconds)) then
          local text = ""
          if(not config.shallow) then
             text = "Full s"
          else
             text = "S"
          end

          text = text .. "erver save within " .. seconds .. " seconds, please mind it may freeze!"
          doBroadcastMessage(text)
       end

       if(seconds > 0) then
          addEvent(executeSave, config.events * 1000, seconds - config.events)
       else
          doSaveServer(config.shallow)
       end
    end

    function onThink(interval)
       if(table.maxn(config.broadcast) == 0) then
          doSaveServer(config.shallow)
       else
          executeSave(config.delay)
       end

       return true
    end

    Globalsave

    Código:
       <globalevent name="globalsave" type="globalsave" event="script" value="init.lua"/>

    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;")
       return true
    end

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

       return true
    end

    http://greedisland.ml/index.php

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