• Vote in May Mapping Competition to select a winner!
  • There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

TFS 1.3 War Problem

Dorianek

Member
Joined
Nov 29, 2018
Messages
213
Best answers
0
Reaction score
8
Location
Poland
36950

Code:
local UE, RUNES = 0, 0

local function tableContains(table, value)
    for i = 1, #table do
        if (table[i] == value) then
            return true
        end
    end
    return false
end

function onSay(cid, words, param)

    local lib = warPrivate_city1
    
    local player = Player(cid)
    local guild = player:getGuild()

    local city = param
    local status = ''
    local guildcontra = ''
    local runas = ''
    local spells = ''
    local limite = 0
    local params = param:split(',')
    
    status = string.trim(params[2])
    city = string.trim(params[1])
    
    if params ~= nil  then       
        if status == 'invite' then
            city = params[1]
            status = string.trim(params[2])
            guildcontra = string.trim(params[3])
            runas = string.trim(params[4])
            spells = string.trim(params[5])
            limite = tonumber(params[6]:trim())
            -- CHECKPOINT player:sendTextMessage(MESSAGE_EVENT_ADVANCE, city ..  status ..  guildcontra ..  runas ..  spells .. " INVITE SUESSO!")
        elseif status == 'accept' then
            city = params[1]
            status = string.trim(params[2])
            guildcontra = string.trim(params[3])
            limite = tonumber(params[4]:trim())
            -- CHECKPOINT player:sendTextMessage(MESSAGE_EVENT_ADVANCE, city ..  status ..  guildcontra .. " ACEITAR SUCESSO!")
        elseif status == 'enter' then
            city = params[1]:trim()
            status = params[2]:trim()
            -- CHECKPOINT player:sendTextMessage(MESSAGE_EVENT_ADVANCE, city ..  status ..   " ENTRAR SUCESSO!")
        elseif status == 'clean' then
            city = params[1]:trim()
            status = params[2]:trim()
        elseif status == 'leave' then
            city = params[1]:trim()
            status = params[2]:trim()   
        end
    else               
        
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Not enough params.")
        return false
    end
    
    -------------------------------------------------------------------------------
    -------------------------      invite WAR       --------------------------------
    -------------------------------------------------------------------------------   
    if  status == 'invite' then 
    
    --Verifica se o player tem guild
    if guild == nil then
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are not in a guild.")
        return false
    end
    
    local acceptLimits = {10, 15, 20, 25, 30, 35, 40, 45, 50}
    if (limite == nil or not tableContains(acceptLimits, limite)) then
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Os limites aceitáveis são: " ..table.concat(acceptLimits, ", ")..".")
        return false
    end
    
    if(isInArray({"edron", "darashia", "yalahar","liberty bay"}, city)) then
        if city == 'edron' then
            lib = warPrivate_city1
        elseif city == 'darashia' then
            lib = warPrivate_city2       
        elseif city == 'liberty bay' then
            lib = warPrivate_city3
        elseif city == 'yalahar' then
            lib = warPrivate_city4
        elseif city == 'carlin' then
            lib = warPrivate_city5
        else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid city.")
            return false
        end
        else
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid city.")
    end
    
    
   --Verifica a guild contra e se ja existe alguem em war
   local enemyName, enemyId = guildcontra, getGuildId(guildcontra)
   local guildName, guildId = guild:getName(), guild:getId()
  
  
   if enemyId == false then
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE,"Enemy guild name invalid.")   
        return false
        
        elseif guildId == enemyId then           
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can not invite your guild.")
            return false
        elseif player:getGuildLevel() < 3 then           
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are not the leader guild.")
            return false
        elseif getGlobalStorageValue(lib.time) > os.time() then           
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Others guilds are on war now, wait.")   
            return false
        elseif getGlobalStorageValue(lib.wait.invite) > 0 then           
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "There is already a guild invited, please wait 5 minutes.")
            return false
    end
    
    -- valida as opções de war
    
    if(isInArray({"default", "onlysd"}, runas)) then
        if runas == 'default'    then
            RUNES = 0   
        elseif runas == 'onlysd' then
            RUNES = 1
        end
    else
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can only choose Onlysd or Default.")
        return false
    end
    
    if(isInArray({"default", "notue"}, spells)) then
        if spells == 'default'    then
            UE = 0   
        elseif spells == 'notue' then
            UE = 1
        end
    else
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can only choose Notue or Default.")
        return false
    end
    
    --Starta a guerra caso de tudo certo
    setGlobalStorageValue(lib.wait.invite, guildId)
    setGlobalStorageValue(lib.wait.accept, enemyId)
    
    setGlobalStorageValue(lib.wait.ue, UE)
    setGlobalStorageValue(lib.wait.runes, RUNES)
    setGlobalStorageValue(lib.wait.limite, limite)
    
    addEvent(setGlobalStorageValue, 5 * 60000, lib.wait.invite, 0)
    addEvent(setGlobalStorageValue, 5 * 60000, lib.wait.ue, 0)
    addEvent(setGlobalStorageValue, 5 * 60000, lib.wait.runes, 0)
    

    for _, online in ipairs(Game.getPlayers()) do
        if online then
            local guildOnline = online:getGuild()
            if guildOnline ~= nil then
                if guildOnline:getId() == getGlobalStorageValue(lib.wait.accept) then
                player:sendTextMessage(MESSAGE_STATUS_DEFAULT, "The guild ".. guildName .." invited the guild ".. enemyName .." to war private with ".. warPrivate_duration .." minutes duration, .")
                end
            end
        end
    end
   end
  
    -------------------------------------------------------------------------------
    -------------------------      ACCEPT WAR      --------------------------------
    -------------------------------------------------------------------------------
  
   if status == 'accept' then
  
        
        if(isInArray({"edron", "darashia", "yalahar", "liberty bay"}, city)) then
            if city == 'edron' then
                lib = warPrivate_city1
            elseif city == 'darashia' then
                lib = warPrivate_city2       
            elseif city == 'liberty bay' then
                lib = warPrivate_city3
            elseif city == 'yalahar' then
                lib = warPrivate_city4
            elseif city == 'carlin' then
                lib = warPrivate_city5   
            else
                player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid city.")
                return false
            end
        else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid city.")
        end

        
        
        -- CHECKPOINT player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "CHECKPOINT")
        local enemyName, enemyId = guild:getName(), guild:getId()
        
        if player:getGuildLevel() < 3 then           
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are not the leader guild.")
            return false
        elseif getGlobalStorageValue(lib.time) > os.time() then           
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Others guilds are on war now, wait.")
            return false
        elseif getGlobalStorageValue(lib.wait.invite) < 1 then           
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "There is no invitation to guilds.")
            return false
        elseif getGlobalStorageValue(lib.wait.accept) ~= enemyId then           
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your guild not this invited for war.")
            return false
        elseif limite ~= getGlobalStorageValue(lib.wait.limite) then
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "The limit of this war is "..getGlobalStorageValue(lib.wait.limite).." x "..getGlobalStorageValue(lib.wait.limite).."!")
            return false
        end
        
        setGlobalStorageValue(lib.war.guild, getGlobalStorageValue(lib.wait.invite))
        setGlobalStorageValue(lib.war.enemy, getGlobalStorageValue(lib.wait.accept))
        setGlobalStorageValue(lib.war.limite, getGlobalStorageValue(lib.wait.limite))
        setGlobalStorageValue(lib.war.ue, getGlobalStorageValue(lib.wait.ue))
        setGlobalStorageValue(lib.war.runes, getGlobalStorageValue(lib.wait.runes))
        setGlobalStorageValue(lib.time, (60 * 60) + os.time())
        
        local guildName = Guild(getGlobalStorageValue(lib.war.guild)):getName()
        
        broadcastMessage("The guild ".. enemyName .." accepted war private with the guild ".. guildName .." to war private with ".. warPrivate_duration .." minutes duration. To enter war use the command.", MESSAGE_STATUS_WARNING)
        
        for _, online in ipairs(Game.getPlayers()) do
            if online:isPlayer() and online:getStorageValue(warPrivate_storage) == lib.city then
                online:teleportTo(online:getTown():getTemplePosition())
                online:setStorageValue(warPrivate_storage, 0)
                online:setStorageValue(warPrivate_UE, 0)
                online:setStorageValue(44672, 0)
                online:setStorageValue(warPrivate_RUNES, 0)
                online:setStorageValue(warPrivate_Guild, 0)
                online:unregisterEvent("WarPrivateDeath")               
            end
        end
        
        setGlobalStorageValue(lib.war.count1, 0)
        setGlobalStorageValue(lib.war.count2, 0)

        addEvent(broadcastMessage, warPrivate_duration * 60000, "Finished the time of war private between the guilds ".. guildName .." and ".. enemyName ..".", MESSAGE_STATUS_DEFAULT)       
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Accepts war with success, good luck.")       
   end

   -------------------------------------------------------------------------------
    -------------------------      ENTER WAR       --------------------------------
    -------------------------------------------------------------------------------   
  
   if status == 'enter' then   
        if(isInArray({"edron", "darashia", "yalahar","liberty bay"}, city)) then
            if city == 'edron' then
                lib = warPrivate_city1
            elseif city == 'darashia' then
                lib = warPrivate_city2       
            elseif city == 'liberty bay' then
                lib = warPrivate_city3
            elseif city == 'yalahar' then
                lib = warPrivate_city4
            elseif city == 'carlin' then
                lib = warPrivate_city5   
            else
                player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid city.")
                return false
            end
        else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid city.")
        end
    
    
        local guildId = guild:getId()
    
    if (getPlayerVocation(cid) ~= 0) then
     if (getTilePzInfo(getThingPos(cid)) == TRUE) then
        if guildId == getGlobalStorageValue(lib.war.guild) then
            
            if (getGlobalStorageValue(lib.war.count1) >= getGlobalStorageValue(lib.war.limite)) then
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "The limit of players its reached.")
                return false
            end
            
            if (player:getStorageValue(44672) == 1) then
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You are in Anti Entrosa.")
                return false
            end
                                
            player:teleportTo(lib.pos_guild)
            player:setStorageValue(warPrivate_UE, getGlobalStorageValue(lib.war.ue))
            player:setStorageValue(warPrivate_RUNES, getGlobalStorageValue(lib.war.runes))
            player:setStorageValue(warPrivate_storage, lib.city)
            player:setStorageValue(warPrivate_Guild, 1)
            player:registerEvent("WarPrivateDeath")
            player:setStorageValue(44672, 1)
            setGlobalStorageValue(lib.war.count1, getGlobalStorageValue(lib.war.count1) + 1)           
            player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You are teleported. Good luck.")
        elseif guildId == getGlobalStorageValue(lib.war.enemy) then
            
            if (getGlobalStorageValue(lib.war.count2) >= getGlobalStorageValue(lib.war.limite)) then
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "The limit of players its reached.")
                return false
            end
            
            if (player:getStorageValue(44672) == 1) then
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You are in Anti Entrosa.")
                return false
            end
                        
            player:teleportTo(lib.pos_enemy)
            player:setStorageValue(warPrivate_UE, getGlobalStorageValue(lib.war.ue))
            player:setStorageValue(warPrivate_RUNES, getGlobalStorageValue(lib.war.runes))
            player:setStorageValue(warPrivate_storage, lib.city)
            player:setStorageValue(warPrivate_Guild, 2)
            player:registerEvent("WarPrivateDeath")
            player:setStorageValue(44672, 1)
            setGlobalStorageValue(lib.war.count2, getGlobalStorageValue(lib.war.count2) + 1)           
            player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You are teleported. Good luck.")
        else
            player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Your guild are not in war.")
            return false
        end
    else
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can only execute this command in pz area.")
    end
        else
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can't go to war in rookgaard.")
        return false
    end
    end
    
    --------------------------------------------------------------------------------------
    --------------------------------------------------------------------------------------
    --------------------------------------------------------------------------------------
    
    --[[ if status == 'leave' then   
        if(isInArray({"edron", "darashia", "yalahar","liberty bay"}, city)) then
            if city == 'edron' then
                lib = warPrivate_city1
            elseif city == 'darashia' then
                lib = warPrivate_city2       
            elseif city == 'liberty bay' then
                lib = warPrivate_city3
            elseif city == 'yalahar' then
                lib = warPrivate_city4
            else
                player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid city.")
                return false
            end
        else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid city.")
        end
        
        local guildId = guild:getId()
    
        if (getPlayerVocation(cid) ~= 0) then
            if (getTilePzInfo(getThingPos(cid)) == TRUE) then
                if guildId == getGlobalStorageValue(lib.war.guild) then           
                    player:setStorageValue(warPrivate_UE, 0)
                    player:setStorageValue(warPrivate_RUNES, 0)
                    player:unregisterEvent("WarPrivateDeath")
                    player:teleportTo(player:getTown():getTemplePosition())
                    setGlobalStorageValue(lib.war.count1, getGlobalStorageValue(lib.war.count1) - 1)       
                end
            elseif guildId == getGlobalStorageValue(lib.war.enemy) then
                    player:setStorageValue(warPrivate_UE, 0)
                    player:setStorageValue(warPrivate_RUNES, 0)
                    player:unregisterEvent("WarPrivateDeath")
                    player:teleportTo(player:getTown():getTemplePosition())
                    setGlobalStorageValue(lib.war.count1, getGlobalStorageValue(lib.war.count2) - 1)   
            else
                player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Your guild are not in war.")
                return false
            end
        else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can only execute this command in pz area.")
        end
            else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can't go to war in rookgaard.")
            return false
        end
end ]]--
    
    -------------------------------------------------------------------------------
    -------------------------     LIMPA AS STORAGES       --------------------------------
    -------------------------------------------------------------------------------
    
    
  --[[    if status == 'clean' then
        if(isInArray({"edron", "darashia", "yalahar","liberty bay"}, city)) then
            if city == 'edron' then
                lib = warPrivate_city1
            elseif city == 'darashia' then
                lib = warPrivate_city2       
            elseif city == 'liberty bay' then
                lib = warPrivate_city3
            else
                player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid city.")
                return false
            end
        else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Invalid city.")
    end
        
        if getGlobalStorageValue(lib.time) > os.time() then           
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You still within one hour of war.")
            return false
        else
            player:setStorageValue(warPrivate_storage, 0)
            player:setStorageValue(warPrivate_UE, 0)
            player:setStorageValue(warPrivate_RUNES, 0)       
            player:unregisterEvent("WarPrivateDeath")
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Now you are free to use all runes and spells.")
        end
    end ]]--
    
end
 
Top