Ir para conteúdo

Featured Replies

Postado

@tirso teste ai: 

 

dofile("./_woe.lua")
local config = woe_config
local reward = 200000 -- 200k
local function EndWoe()
    Woe.getInfo()
        
    setGlobalStorageValue(stor.Started, 0)
    setGlobalStorageValue(stor.WoeTime, 0)
    
    Woe.expulsar(infoLua[2], Castle.salas.a.fromx, Castle.salas.a.tox, Castle.salas.a.fromy, Castle.salas.a.toy, Castle.salas.a.z, Castle._exit)
    Woe.expulsar(infoLua[2], Castle.salas.b.fromx, Castle.salas.b.tox, Castle.salas.b.fromy, Castle.salas.b.toy, Castle.salas.b.z, Castle._exit)
    Woe.expulsar(infoLua[2], Castle.salas.c.fromx, Castle.salas.c.tox, Castle.salas.c.fromy, Castle.salas.c.toy, Castle.salas.c.z, Castle._exit)
    
    doBroadcastMessage("WoE is finished", config.bcType)
    doBroadcastMessage("The castle " .. Castle.name .. " is owned by ".. Woe.guildName() ..".", config.bcType)
    
    if isCreature(getThingFromPos(Castle.empePos).uid) then
        doRemoveCreature(getThingFromPos(Castle.empePos).uid)
    end
    
    Woe.removePre()
    Woe.removePortals()
    
    doRemoveItem(getThingFromPos(Castle.desde).uid, 1)
    
    Woe.save()
    
    for _, cid in ipairs(getPlayersOnline()) do
        if infoLua[2] == getPlayerGuildId(cid) and getPlayerLevel(cid) >= 100 then
            doPlayerAddMoney(cid, reward)
        end
    end
    
    Woe.remove()
    setGlobalStorageValue(24503, -1)
    
end
function onThink(interval, lastExecution)
    Woe.getInfo()
    if Woe.isTime() then
        if not Woe.isStarted() then
            doSummonCreature("empe", Castle.empePos)
            doSummonCreature("pre1", Castle.PreEmpes[1])
            doSummonCreature("pre2", Castle.PreEmpes[2])
            doBroadcastMessage("War has started...", config.bcType)
            setGlobalStorageValue(stor.Started, 1)
            Woe.updateInfo({os.time(), infoLua[2], infoLua[3], infoLua[4]})
            doCreateTeleport(1387, Castle.pos, Castle.desde)
            addEvent(EndWoe, config.timeToEnd * 60 * 1000)
        end
    end
    return true
end   

Só trocar por aquele primeiro script que você postou ^^

Qualquer erro só falar.

  • Respostas 11
  • Visualizações 308
  • Created
  • Última resposta

Top Posters In This Topic

Posted Images

Postado
  • Autor
Em 22/01/2017 ás 20:56, Noob II disse:

@tirso teste ai: 

 

 


dofile("./_woe.lua")
local config = woe_config
local reward = 200000 -- 200k
local function EndWoe()
    Woe.getInfo()
        
    setGlobalStorageValue(stor.Started, 0)
    setGlobalStorageValue(stor.WoeTime, 0)
    
    Woe.expulsar(infoLua[2], Castle.salas.a.fromx, Castle.salas.a.tox, Castle.salas.a.fromy, Castle.salas.a.toy, Castle.salas.a.z, Castle._exit)
    Woe.expulsar(infoLua[2], Castle.salas.b.fromx, Castle.salas.b.tox, Castle.salas.b.fromy, Castle.salas.b.toy, Castle.salas.b.z, Castle._exit)
    Woe.expulsar(infoLua[2], Castle.salas.c.fromx, Castle.salas.c.tox, Castle.salas.c.fromy, Castle.salas.c.toy, Castle.salas.c.z, Castle._exit)
    
    doBroadcastMessage("WoE is finished", config.bcType)
    doBroadcastMessage("The castle " .. Castle.name .. " is owned by ".. Woe.guildName() ..".", config.bcType)
    
    if isCreature(getThingFromPos(Castle.empePos).uid) then
        doRemoveCreature(getThingFromPos(Castle.empePos).uid)
    end
    
    Woe.removePre()
    Woe.removePortals()
    
    doRemoveItem(getThingFromPos(Castle.desde).uid, 1)
    
    Woe.save()
    
    for _, cid in ipairs(getPlayersOnline()) do
        if infoLua[2] == getPlayerGuildId(cid) and getPlayerLevel(cid) >= 100 then
            doPlayerAddMoney(cid, reward)
        end
    end
    
    Woe.remove()
    setGlobalStorageValue(24503, -1)
    
end
function onThink(interval, lastExecution)
    Woe.getInfo()
    if Woe.isTime() then
        if not Woe.isStarted() then
            doSummonCreature("empe", Castle.empePos)
            doSummonCreature("pre1", Castle.PreEmpes[1])
            doSummonCreature("pre2", Castle.PreEmpes[2])
            doBroadcastMessage("War has started...", config.bcType)
            setGlobalStorageValue(stor.Started, 1)
            Woe.updateInfo({os.time(), infoLua[2], infoLua[3], infoLua[4]})
            doCreateTeleport(1387, Castle.pos, Castle.desde)
            addEvent(EndWoe, config.timeToEnd * 60 * 1000)
        end
    end
    return true
end   

 

Só trocar por aquele primeiro script que você postou ^^

Qualquer erro só falar.

Olha o script meu

Spoiler

dofile("./var.woe")

local config = woe_config

fileStore = true

infoFile = 'tmp.woe'
infoLua = {}

Woe = {}
Woe.__index = Woe

function Woe.setup()
    db.executeQuery("DROP TABLE IF EXISTS `woe`;")
    db.executeQuery("CREATE TABLE `woe` (`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,`started` INT( 11 ) NOT NULL ,`guild` INT( 11 ) NOT NULL ,`breaker` INT( 11 ) NOT NULL ,`time` INT( 11 ) NOT NULL ,PRIMARY KEY ( `id` ) ,UNIQUE (`id`)) ENGINE = MYISAM")
    doBroadcastMessage("DB Added [...]", config.bcType)
    if fileStore then
        local newFile = io.open(infoFile, "w")
        for _, i in ipairs({'started', 'guild', 'breaker', 'time'}) do
            newFile:write(i .. ' = 0 ;end;\n')
        end
        newFile:close()
    else
        db.executeQuery("DROP TABLE IF EXISTS `tmpwoe`;")
        db.executeQuery("CREATE TABLE `tmpwoe` (`started` INT( 11 ) NOT NULL ,`guild` INT( 11 ) NOT NULL ,`breaker` INT( 111 ) NOT NULL ,`time` INT( 1 ) NOT NULL) ENGINE = MYISAM ;")
        db.executeQuery("ALTER TABLE `tmpwoe` ADD `indexer` INT NOT NULL ")
        db.executeQuery("INSERT INTO `tmpwoe` (`started` ,`guild` ,`breaker` ,`time`, `indexer`)VALUES ('0', '0', '0', '0', '1');")
    end
end

function Woe.getInfo()
    if fileStore then
        local open = io.open(infoFile, "r")
        if open then
            for i in io.lines(infoFile) do 
                for v, k in ipairs({'started', 'guild', 'breaker', 'time'}) do
                    if (i:find(k)) then
                        n = i:match(k .. '.*')
                        infoLua[v] = tonumber(n:sub(n:find('=') + 2, n:find(';end;') - 2))
                    end
                end
            end
            open:close()
        end
    else
        for v, k in ipairs({'started', 'guild', 'breaker', 'time'}) do
            local tmp = db.getResult("SELECT " .. k .. " FROM `tmpwoe` WHERE `indexer` = '1';")
            infoLua[v] = tmp:getDataInt(k)
            tmp:free()
        end
    end
end

function Woe.updateInfo(tab)
    if fileStore then
        local open = io.open(infoFile, "w")
        if open then
            for k, i in ipairs({'started', 'guild', 'breaker', 'time'}) do
                open:write(i .. ' = ' .. tab[k] .. ' ;end;\n')
            end
            open:close()
        end
    else
        for v, k in ipairs({'started', 'guild', 'breaker', 'time'}) do
            db.executeQuery("UPDATE `tmpwoe` SET " .. k .. " =  " .. tab[v] .. " WHERE `indexer` = 1;")
        end
    end
end

function Woe.save()
    Woe.getInfo()
    db.executeQuery("INSERT INTO `woe` (`started`, `guild`, `breaker`, `time`) VALUES (" .. infoLua[1] .. ", " .. infoLua[2] .. ", " .. infoLua[3] .. ", " .. infoLua[4] .. ");")
end

function Woe.getGuildName(id)
    local res = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. id .. ";")
    if (res:getID() ~= -1) then
        ret = res:getDataString('name')
        res:free()
    end
    return ret
end

function Woe.breakerName()
    Woe.getInfo()
    return infoLua[3] ~= 0 and getPlayerNameByGUID(infoLua[3]) or 'None'
end

function Woe.guildName()
    Woe.getInfo()
    return infoLua[2] ~= 0 and Woe.getGuildName(infoLua[2]) or 'Nones'
end

function Woe.startTime()
    Woe.getInfo()
    return os.date("%d %B %Y %X ", infoLua[1])
end

function Woe.breakTime()
    Woe.getInfo()
    return os.date("%d %B %Y %X ", infoLua[4])
end

function Woe.timeToEnd()
    Woe.getInfo()
    local myTable = {}
    for k, i in ipairs({"%M", "%S"}) do
        myTable[k] = os.date(i, os.difftime(os.time(), infoLua[1]))
    end
    return {mins = ((config.timeToEnd - 1) - myTable[1]), secs = (60 - myTable[2])}
end

function Woe.moveBack(cid, fromPosition, text)
    doTeleportThing(cid, fromPosition, TRUE)
    doPlayerSendCancel(cid, text)
end

function Woe.getGuildMembers(id)
    local members = {}
    for _, i in ipairs(getPlayersOnline()) do
        if id == getPlayerGuildId(i) then
            table.insert(members, i)
        end
    end
    return members
end

function Woe.deco(text)
    for _, i in ipairs(Castle.decoraciones) do
        doItemSetAttribute(i, "description", text)
    end
end

function Woe.removePortals()
    for _, i in ipairs(Castle.PrePortalsPos) do
        if (getThingFromPos(i).itemid > 0) then
            doRemoveItem(getThingFromPos(i).uid)
        end
    end
end

function Woe.removePre()
    for _, i in ipairs(Castle.PreEmpes) do
        if (isCreature(getThingFromPos(i).uid) == true) then
            doRemoveCreature(getThingFromPos(i).uid)
        end
    end
end

function Woe.checkPre()
    local Count = 0
    for _, i in ipairs(Castle.PreEmpes) do
        if (isCreature(getThingFromPos(i).uid) == false) then
            Count = Count + 1
        end
    end
    return (Count == #Castle.PreEmpes)
end

function Woe.isTime()
    return (getGlobalStorageValue(stor.WoeTime) == 1)
end

function Woe.isStarted()
    return (getGlobalStorageValue(stor.Started) == 1)
end

function Woe.isRegistered(cid)
    return (getPlayerStorageValue(cid, stor.register) == 1)
end

function Woe.isInCastle(cid)
    local myPos = getCreaturePosition(cid)
    if (myPos.x >= Castle.salas.a.fromx and myPos.x <= Castle.salas.a.tox) then
        if (myPos.y >= Castle.salas.a.fromy and myPos.y <= Castle.salas.a.toy) then
            if isInArray({Castle.salas.a.z, Castle.salas.b.z, Castle.salas.c.z}, myPos.z) then
                return true
            end
        end
    end
    return false
end

function Woe.expulsar(guild, fromx, tox, fromy, toy, z, outpos)
    for _x = fromx, tox do
        for _y = fromy, toy do
            local player = getThingFromPos({x = _x, y = _y, z = z, stackpos = 253}).uid
            if (isPlayer(player) == true) then
                if (getPlayerGuildId(player) ~= guild) then
                    doTeleportThing(player, outpos, false)
                end
            end
        end
    end
end

-- extras

function doSetItemActionId(uid, action)
    doItemSetAttribute(uid, "aid", action)
end

function exhaust(cid, storevalue, exhausttime)
-- Exhaustion function by Alreth, v1.1 2006-06-24 01:31
-- Returns 1 if not exhausted and 0 if exhausted
    newExhaust = os.time()
    oldExhaust = getPlayerStorageValue(cid, storevalue)
    if (oldExhaust == nil or oldExhaust < 0) then
        oldExhaust = 0
    end
    if (exhausttime == nil or exhausttime < 0) then
        exhausttime = 1
    end
    diffTime = os.difftime(newExhaust, oldExhaust)
    if (diffTime >= exhausttime or diffTime < 0) then
        setPlayerStorageValue(cid, storevalue, newExhaust) 
        return 1
    else
        return 0
    end
end

--Posição dos guardas que vão defender o Castelo.
guard_pos = 
    {
        {x = 18987, y = 19064, z = 7},
        {x = 18987, y = 19065, z = 7}
    }
    
function Woe.check()
    for storage = 24504, 24511 do
        local pid = getGlobalStorageValue(storage)
        if isCreature(pid) then
            return false
        end
    end
    return true
end

function Woe.summon()
    for k, i in ipairs(guard_pos) do
        local pid = doSummonCreature("guard", i)
        setGlobalStorageValue(24503 + k, pid)
    end
end

function Woe.remove()
    for storage = 24504, 24511 do
        local pid = getGlobalStorageValue(storage)
        if isCreature(pid) then
            doRemoveCreature(pid)
        end
    end
end

function pegavencedor()
    local aa
    local res = db.getResult("SELECT `guild` FROM `woe` ORDER BY `id` DESC;")
    if (res:getID() ~= -1) then
        aa = res:getDataString('guild')
        res:free()
    else
        res:free()
        return 0
    end
    return aa
end

 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo