• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Lua Recod Script !

GODPaaulo

New Member
Joined
Jun 3, 2011
Messages
64
Reaction score
0
guys I have this mod and capture the flag, and that its function is to create only two teams (red, blue), config lvl, skills ...

Question 1: How do I set up, explain to me better.

XML:
?xml version="1.0" encoding="utf-8"?>
<mod name="CTF" version="1.0" author="Doggynub" contact="otland.net" enabled="yes">
  <config name="toto"><![CDATA[

--[[ Storage Settings]]--


 Owner = 1900 -- put empty storage

 FLAG2_INn = 4000 -- put empty storage

 FLAG_IN = 4001 -- put empty storage

 TEAM1_FLAGS = 3030 -- put empty storage

 TEAM2_FLAGS = 3031 -- put empty storage

 Event_Start = 3032 -- put empty storage

 Event_timeend = 3033 -- put empty storage

 Event_Tile_Close = 3039 -- put empty storage

 joined = 2023 --put empty storage

 Timer = 1010 --put empty storage

--------------------------------------


--[[ Places setting ]]--


 BLUE_FLAG = {x=1053,y=1049,z=7} -- Blue flag Place

 RED_FLAG = {x=1044,y=1049,z=7} --red flag Place

 Tp_Place = {x=1103,y=1056,z=7} -- Place where the event teleport will be created.

 Wait_Place = {x=1049,y=1049,z=7} -- Positions Players will  be sent when the enter event's teleport

 frompos = {x=1049, y=1042, z=7} --start sqm in the waiting room(1 floor)

 topos = {x=1046,y=1042,z=7} -- end sqm in the waiting room(1 floor)

 Red_Position = {x=1094,y=1061,z=7} -- Red team temple pos

 Blue_Position = {x=1104,y=1065,z=7} -- Blue team temple pos



---------------------------------------


--[[Event setting ]]--


 Event_WaitTime = 5 -- time for the collection of player then event will start (in minutes)

 Event_MaxTime = 10 --- in minutes ( this is the max time for an event to bb running )

 Players_Speed = 20000 -- put the level of base speed in event ( like if you want the speed of lvl 300 then wright 300)

  Flag_Holder_Speed = 20000 -- [Old-Styled feature] speed for the player when he hold a flag better not to increase.

 TEAM2_NAME = "Red" -- team 2 name

 TEAM1_NAME = "Green" -- team 1 name

 FLAG_SCORE = 5 -- score when team gets he wins

 Teleport_On_Score = false -- this teleport all players to their team main position when some one score a flag , make false to disable.

 Players_Least_Number = 2 -- this means if there is less than 2 players joined the event will be cancelled

 Min_Join_Level = 100 -- min lvl for a player to join event

 rewards_random = {
                                                [60] = { -- Rewards of 60% , if it is then it will randomly give one of the items in the items verible if there you put more than one item there
                                                                        items = {9971,9971,9971}
                                                                },

                                                [30] = { -- Rewards of 30%
                                                                        items = {9971,9971,9971}
                                                                },


                                                [10] = { -- Rewards of 10%
                                                                        items = {9971,9971,9971}
                                                                }
                                        }


]]></config>

Question No. 2: I want to make only part of the event! I do not want to create teams, or change anything, only the portion of the event. (capture the flag)
 
full mod capture the flag
no conf (config top)

XML:
<lib name="CTF-lib"><![CDATA[
function isTeamTwo(cid)
        return (isPlayer(cid) and getPlayerStorageValue(cid,5054) > -1)
end
function isTeamOne(cid)
        return (isPlayer(cid) and getPlayerStorageValue(cid,5055) > -1)
end
function resetTheTeams(cid)
        return (isPlayer(cid) and setPlayerStorageValue(cid,5054,-1) and setPlayerStorageValue(cid,5055,-1))
end
function setflagOwner(cid)
        return setPlayerStorageValue(cid,Owner,1)
end
function flagOwner(cid)
        return (isPlayer(cid) and getPlayerStorageValue(cid,Owner) > 0)
end
function releaseBF(cid)
        setGlobalStorageValue(FLAG_IN,-1)
        setPlayerStorageValue(cid,103, 0)
        setPlayerStorageValue(cid,Owner,-1)
return true
end
function releaseRF(cid)
        setGlobalStorageValue(FLAG2_INn,-1)
        setPlayerStorageValue(cid,103, 0)
        setPlayerStorageValue(cid,Owner,-1)
return true
end
function setFirstTeam(cid)
        return setPlayerStorageValue(cid,5055,1)
end
function setSecondTeam(cid)
        return setPlayerStorageValue(cid,5054,2)
end
function addToRed()
        return setGlobalStorageValue(TEAM2_FLAGS,getGlobalStorageValue(TEAM2_FLAGS)+1)
end
function addToBlue()
        return setGlobalStorageValue(TEAM1_FLAGS,getGlobalStorageValue(TEAM1_FLAGS)+1)
end
function getBlueScore()
        return getGlobalStorageValue(TEAM1_FLAGS)
end
function getRedScore()
        return getGlobalStorageValue(TEAM2_FLAGS)
end
function getTheSpeed(level)
        value = (220 +(2 *(level -1)))
        return value
end

function resetTheStorage()
        setGlobalStorageValue(Event_Start,-1)
        setGlobalStorageValue(Event_timeend,-1)
        setGlobalStorageValue(TEAM1_FLAGS,0)
        setGlobalStorageValue(FLAG2_INn,-1)
    setGlobalStorageValue(FLAG_IN,-1)
        setGlobalStorageValue(TEAM2_FLAGS,0)
return true
end
function blueStolen()
        return getGlobalStorageValue(FLAG_IN)
end
function redStolen()
        return getGlobalStorageValue(FLAG2_INn)
end
function giveReward(cid)
        local t = math.random(1,100)
        if t <= 10 then
                local rare = rewards_random[10].items[math.random(1,#rewards_random[10].items)]
                doPlayerAddItem(cid,rare,1)
                doPlayerSendTextMessage(cid,25,"Rare rate Reward : you won "..getItemNameById(rare)..".")

        elseif t > 10 and t <= 40 then
                local semi = rewards_random[30].items[math.random(1,#rewards_random[30].items)]
                doPlayerAddItem(cid,semi,1)
                doPlayerSendTextMessage(cid,25,"Semi rate Reward : you won "..getItemNameById(semi)..".")


        elseif t > 40 then
                local aver = rewards_random[60].items[math.random(1,#rewards_random[60].items)]
                doPlayerAddItem(cid,aver,1)
                doPlayerSendTextMessage(cid,25,"Averege rate Reward : you won "..getItemNameById(aver)..".")
        end
        return true
end
]]></lib>
 
rest of the script (not made ​​to put all)

XML:
<event type="login" name="Tutorial Login" event="script"><![CDATA[
domodlib('toto')
domodlib('CTF-lib')
function onLogin(cid)
        if getGlobalStorageValue(Event_Start) < 1 then
                if isTeamOne(cid) or isTeamTwo(cid) then
                        resetTheTeams(cid)
                end
        end
        registerCreatureEvent(cid, "Attk")
        registerCreatureEvent(cid, "ctff")
        registerCreatureEvent(cid, "prepare")
return true
end
]]></event>
  <event type="combat" name="Attk" event="script"><![CDATA[
domodlib('toto')
domodlib('CTF-lib')

function onCombat(cid, target)
        if isTeamOne(cid) and isTeamOne(target) then
                return false
    end
    if isTeamTwo(cid) and isTeamTwo(target) then
        return false
    end
        return true
end
]]></event>
  <event type="statschange" name="prepare" event="script"><![CDATA[
domodlib('toto')
domodlib('CTF-lib')

local corpse_ids = {
                [0] = 3065, -- female
        [1] = 3058 -- male
}
function onStatsChange(cid, attacker, type, combat, value)
                if combat == COMBAT_HEALING then
                        return true
        end
        if getCreatureHealth(cid) > value then
                        return true
        end
                if getGlobalStorageValue(Event_Start) > 0 then
                        if flagOwner(cid) then
                                if isTeamOne(cid) then
                                        doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "description", "You recognize "..getCreatureName(cid)..". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item").."[Flag Holder].")
                                        doTeleportThing(cid,Blue_Position,false)
                                        doSendMagicEffect(Blue_Position,10)
                                        doCreatureAddHealth(cid,getCreatureMaxHealth(cid))
                                        doCreatureAddMana(cid,getCreatureMaxMana(cid))
                                        releaseRF(cid)
                                                        for _,cid in ipairs(getPlayersOnline()) do
                                                                if isTeamOne(cid) or isTeamTwo(cid) then
                                                                        doPlayerSendTextMessage(cid,22,getCreatureName(cid) .. " has died with the "..TEAM2_NAME.." team flag. The flag is returned back to the "..TEAM1_NAME.." team.")
                                                                end
                                                        end
                                        return false
                                elseif isTeamTwo(cid) then
                                        doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "description", "You recognize "..getCreatureName(cid)..". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item").."[Flag Holder].")
                                        doTeleportThing(cid,Red_Position,false)
                                        doSendMagicEffect(Red_Position,10)
                                        doCreatureAddHealth(cid,getCreatureMaxHealth(cid))
                                        doCreatureAddMana(cid,getCreatureMaxMana(cid))
                                        releaseBF(cid)
                                                        for _,cid in ipairs(getPlayersOnline()) do
                                                                if isTeamOne(cid) or isTeamTwo(cid) then
                                                                        doPlayerSendTextMessage(cid,22,getCreatureName(cid) .. " has died with the "..TEAM1_NAME.." team flag. The flag is returned back to the "..TEAM1_NAME.." team.")
                                                                end
                                                        end
                                return false
                                end

                        else
                                if isTeamOne(cid) or isTeamTwo(cid) then
                                        doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "description", "You recognize "..getCreatureName(cid)..". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item").."[Normal kill].")
                                        doTeleportThing(cid,( isTeamTwo(cid) and Red_Position or Blue_Position ),false)
                                        doSendMagicEffect(Red_Position,10)
                                        doCreatureAddHealth(cid,getCreatureMaxHealth(cid))
                                        doCreatureAddMana(cid,getCreatureMaxMana(cid))
                                        return false
                                end
                        end

                end
return true
end

]]></event>
  <movevent type="StepIn" actionid="6000" event="script"><![CDATA[
domodlib('toto')
domodlib('CTF-lib')

function eventEnds()
        doBroadcastMessage('CTF-Event : The '..TEAM2_NAME..' team won and reciaved their reward.')
            for _,cid in ipairs(getPlayersOnline()) do
                        if isTeamTwo(cid) then
                                doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
                                doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
                            doRemoveConditions(cid,false)
                            resetTheTeams(cid)
                                doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
                                giveReward(cid)

                        elseif isTeamOne(cid) then
                                doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
                            doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
                            doRemoveConditions(cid,false)
                            doPlayerSendTextMessage(cid,22,'Your team have lost.')
                                resetTheTeams(cid)
                                doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
                        end
                end
    addEvent(resetTheStorage,5)
end
function onStepIn(cid, item, position, fromPosition)
        if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
                if isTeamTwo(cid) and redStolen() < 0 then
                        if not flagOwner(cid) then
                                doTeleportThing(cid, fromPosition,TRUE)
                                doSendMagicEffect(getThingPos(cid),2)
                                doPlayerSendTextMessage(cid, 27, "This is your team flag, you cant take it!")
                        end
                elseif isTeamTwo(cid) and redStolen() > 0 and blueStolen() < 0 then
                        doPlayerSendTextMessage(cid, 27, "Your team's Flag has been stolen, go get it back!")
                        doTeleportThing(cid, fromPosition,TRUE)
                        doSendMagicEffect(getThingPos(cid),2)
                  return true
                end
        if isTeamTwo(cid) and flagOwner(cid) and blueStolen() > 0 and redStolen() < 0 then
                        if getRedScore() == FLAG_SCORE -1 then
                                addEvent(eventEnds,1000)
                                addToRed()
                                doTeleportThing(cid, fromPosition,TRUE)
                                doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid) )
                                releaseBF(cid)
                                        for _,tid in ipairs(getPlayersOnline()) do
                                                if isTeamOne(tid) or isTeamTwo(tid) then
                                                        doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " have captured the last flag and earned match win to the ".. TEAM2_NAME.." team!")
                                                end
                                        end
                        else
                                releaseBF(cid)
                                addToRed()
                                doTeleportThing(cid, fromPosition,TRUE)
                                doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid) )
                                        for _,tid in ipairs(getPlayersOnline()) do
                                                if isTeamOne(tid) or isTeamTwo(tid) then
                                                        doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " have captured the flag and earned 1 point to the ".. TEAM2_NAME.." team!")
                                                                if Teleport_On_Score == true then
                                                                        doTeleportThing(tid,( isTeamTwo(tid) and Red_Position or Blue_Position ), false)
                                                                        doSendMagicEffect(getThingPos(tid),10)
                                                                end
                                                end
                                        end
                        end
                end
                if isTeamOne(cid) then
                        if blueStolen() < 0 and redStolen() > 0 then
                    if flagOwner(cid) then
                    doPlayerSendTextMessage(cid, 27, "You already holding the flag!")
                        doTeleportThing(cid, fromPosition,TRUE)
                            doSendMagicEffect(getThingPos(cid),2)
                elseif (not flagOwner(cid)) then
                        doPlayerSendTextMessage(cid, 27, "Your Team mates already stole the oponent flag, defend him!")
                        doTeleportThing(cid, fromPosition,TRUE)
                            doSendMagicEffect(getThingPos(cid),2)
                end
                        elseif blueStolen() > 0 and redStolen() < 0 then
                    doPlayerSendTextMessage(cid, 27, "Your team's flag is taken you can't capture or steel a flag!")
                        doTeleportThing(cid, fromPosition,TRUE)
                        doSendMagicEffect(getThingPos(cid),2)
                        end
                        if redStolen() < 0 and blueStolen() < 0 then
                    setGlobalStorageValue(FLAG2_INn,1)
                            setflagOwner(cid)
                setPlayerStorageValue(cid,103, os.time()+300)
                doTeleportThing(cid, fromPosition,TRUE)
                                doChangeSpeed(cid, getTheSpeed(Flag_Holder_Speed)- getCreatureSpeed(cid) )
                                        for _,tid in ipairs(getPlayersOnline()) do
                                if isTeamOne(tid) or isTeamTwo(tid) then
                            doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " stolen the "..TEAM2_NAME.." team flag!")
                                                end
                                        end
                        end
                end
        end
return true
end
]]></movevent>
  <movevent type="StepIn" actionid="3435" event="script"><![CDATA[
domodlib('toto')
domodlib('CTF-lib')
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
        if getStorage(Event_Tile_Close) > 0 then
                if getPlayerLevel(cid) < Min_Join_Level then
                   doTeleportThing(cid,fromPosition,false)
                        doSendMagicEffect(fromPosition,10)
                        doPlayerSendTextMessage(cid,21,"Only players of level "..Min_Join_Level.." are allowed to pass.")
                else
                        doTeleportThing(cid,Wait_Place,false)
                        doSendMagicEffect(Wait_Place,10)
                end
        else
                doTeleportThing(cid,fromPosition,false)
                doSendMagicEffect(fromPosition,10)
                doPlayerSendTextMessage(cid,21,"Come back later, event is closed now.")
        end
return true
end

]]></movevent>
  <movevent type="StepIn" actionid="6001" event="script"><![CDATA[
domodlib('toto')
domodlib('CTF-lib')

function eventEnded()
        if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
                doBroadcastMessage('CTF-Event : The '.. TEAM1_NAME..' team won and reciaved their reward.')
                for _,cid in ipairs(getPlayersOnline()) do
                            if isTeamOne(cid) then
                                    doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
                                        doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
                                        doRemoveConditions(cid,false)
                                        resetTheTeams(cid)
                                        doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
                                        giveReward(cid)
                                elseif isTeamTwo(cid) then
                                    doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
                                        doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
                                        doRemoveConditions(cid,false)
                                doPlayerSendTextMessage(cid,22,'Your team have lost.')
                                        resetTheTeams(cid)
                                        doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
                                end
                        end
    end
    addEvent(resetTheStorage,5)
end
function onStepIn(cid, item, position, fromPosition)
        if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
                if isTeamOne(cid) and blueStolen() < 0 then
                        if not flagOwner(cid) then
                                doTeleportThing(cid, fromPosition,TRUE)
                                doSendMagicEffect(getThingPos(cid),2)
                                doPlayerSendTextMessage(cid, 27, "This is your team flag, you cant take it!")
                        end
                elseif isTeamOne(cid) and blueStolen() > 0 and redStolen() < 0 then
                        doPlayerSendTextMessage(cid, 27, "Your team's Flag has been stolen, go get it back!")
                        doTeleportThing(cid, fromPosition,TRUE)
                        doSendMagicEffect(getThingPos(cid),2)
         return true
                end
                if isTeamOne(cid) and flagOwner(cid) and redStolen() > 0 and blueStolen() < 0 then
                        if getBlueScore() == FLAG_SCORE -1 then
                                addEvent(eventEnded,1000)
                                addToBlue()
                                doTeleportThing(cid, fromPosition,TRUE)
                                doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid) )
                                releaseRF(cid)
                                        for _,tid in ipairs(getPlayersOnline()) do
                                                if isTeamOne(tid) or isTeamTwo(tid) then
                                                        doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " have captured the last flag and earned match win to the ".. TEAM1_NAME.." team!")
                                                end
                                        end
                        else
                                releaseRF(cid)
                                addToBlue()
                                doTeleportThing(cid, fromPosition,TRUE)
                                doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid) )
                                        for _,tid in ipairs(getPlayersOnline()) do
                                                if isTeamOne(tid) or isTeamTwo(tid) then
                                                        doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " have captured the flag and earned 1 point to the ".. TEAM1_NAME.." team!")
                                                                if Teleport_On_Score == true then
                                                                        doTeleportThing(tid,( isTeamTwo(tid) and Red_Position or Blue_Position ), false)
                                                                        doSendMagicEffect(getThingPos(tid),10)
                                                                end
                                                end
                                        end
                        end
                end
                if isTeamTwo(cid) then
                        if blueStolen() > 0 and redStolen() < 0 then
                            if flagOwner(cid) then
                                        doPlayerSendTextMessage(cid, 27, "You already holding the flag!")
                        doTeleportThing(cid, fromPosition,TRUE)
                            doSendMagicEffect(getThingPos(cid),2)
                elseif (not flagOwner(cid)) then
                        doPlayerSendTextMessage(cid, 27, "Your Team mates already stole the oponent flag, defend him!")
                        doTeleportThing(cid, fromPosition,TRUE)
                            doSendMagicEffect(getThingPos(cid),2)
                end
                        elseif redStolen() > 0 and blueStolen() < 0 then
                                doPlayerSendTextMessage(cid, 27, "Your team's flag is taken you can't capture or steel a flag!")
                                doTeleportThing(cid, fromPosition,TRUE)
                                doSendMagicEffect(getThingPos(cid),2)
                        end
                        if blueStolen() < 0 and redStolen() < 0 then
                                setGlobalStorageValue(FLAG_IN,1)
                            setflagOwner(cid)
                                setPlayerStorageValue(cid,103, os.time()+300)
                                doTeleportThing(cid, fromPosition,TRUE)
                                doChangeSpeed(cid, getTheSpeed(Flag_Holder_Speed)- getCreatureSpeed(cid) )
                    for _,tid in ipairs(getPlayersOnline()) do
                                                if isTeamOne(tid) or isTeamTwo(tid) then
                                                        doPlayerSendTextMessage(tid,22,getCreatureName(cid) .. " stolen the "..TEAM1_NAME.." team flag!")
                                                end
                                        end
                        end
                end
        end
return true
end
]]></movevent>
  <globalevent name="ctf" interval="900" event="script"><![CDATA[
domodlib('toto')
domodlib('CTF-lib')
local players = {}
local bmale = createConditionObject(CONDITION_OUTFIT)
                setConditionParam(bmale, CONDITION_PARAM_TICKS, -1)
                addOutfitCondition(bmale, {lookType = math.random(128,134), lookHead = 115, lookBody =114, lookLegs = 81, lookFeet = 81, lookTypeEx = 0, lookAddons = 3})

        local bfemale = createConditionObject(CONDITION_OUTFIT)
                setConditionParam(bfemale, CONDITION_PARAM_TICKS, -1)
                addOutfitCondition(bfemale, {lookType = math.random(136,142), lookHead = 115, lookBody =114, lookLegs = 81, lookFeet = 81, lookTypeEx = 0, lookAddons = 3})

        local rmale = createConditionObject(CONDITION_OUTFIT)
                setConditionParam(rmale, CONDITION_PARAM_TICKS, -1)
                addOutfitCondition(rmale, {lookType = math.random(128,134), lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})

        local rfemale = createConditionObject(CONDITION_OUTFIT)
                setConditionParam(rfemale, CONDITION_PARAM_TICKS, -1)
                addOutfitCondition(rfemale, {lookType = math.random(136,142),lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})
        local fight = createConditionObject(CONDITION_INFIGHT)
                setConditionParam(fight, CONDITION_PARAM_TICKS, -1)
function eventEnd()
        if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
                if getRedScore() > getBlueScore() then
                doBroadcastMessage('CTF-Event : The '.. TEAM2_NAME..' team won and recieved their reward.')
                                for _,cid in ipairs(getPlayersOnline()) do
                                        if isTeamTwo(cid) then
                                                doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
                                                doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
                                                doRemoveConditions(cid,false)
                                                resetTheTeams(cid)
                                                doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
                                                giveReward(cid)
                                        elseif isTeamOne(cid) then
                                                doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
                                                doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
                                                doRemoveConditions(cid,false)
                                                doPlayerSendTextMessage(cid,22,'Your team have lost.')
                                                resetTheTeams(cid)
                                                doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
                                        end
                                end

                elseif getRedScore() < getBlueScore() then
                doBroadcastMessage('CTF-Event : The '.. TEAM1_NAME..' team won and recieved their reward.')
                                for _,cid in ipairs(getPlayersOnline()) do
                                        if isTeamOne(cid) then
                                                doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
                                                doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
                                                doRemoveConditions(cid,false)
                                                resetTheTeams(cid)
                                                doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
                                                giveReward(cid)
                                        elseif isTeamTwo(cid) then
                                                doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
                                                doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
                                                doRemoveConditions(cid,false)
                                                doPlayerSendTextMessage(cid,22,'Your team have lost.')
                                                resetTheTeams(cid)
                                                doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
                                        end
                                end
                elseif getRedScore() == getBlueScore() then
                doBroadcastMessage('CTF-Event : The Event ended with a draw between both teams.')
                                for _,cid in ipairs(getPlayersOnline()) do
                                        if isTeamTwo(cid) or isTeamOne(cid) then
                                                doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)),false)
                                                doSendMagicEffect(getTownTemplePosition(getPlayerTown(cid)),10)
                                                doRemoveConditions(cid,false)
                                                doPlayerSendTextMessage(cid,22,'It was a draw between both teams.')
                                                resetTheTeams(cid)
                                                doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
                                        end
                                end

                end
                addEvent(resetTheStorage,1000)
        end
end

function eventStart()
        doSetStorage(Event_Tile_Close,-1)
        setGlobalStorageValue(Event_timeend,1)
        setGlobalStorageValue(Timer, os.time() + Event_MaxTime*60)
        addEvent(eventEnd,Event_MaxTime*60*1000)

                 for v = frompos.x , topos.x do
                                for k = frompos.y , topos.y do
                                        for i = 1, 200 do
                                                position = {x = v, y = k, z = 7, stackpos = i}
                                                pid = getThingfromPos(position).uid
                                                        if(pid ~= nil and isPlayer(pid)) then
                                                                table.insert(players, pid)
                                                        end
                                        end
                                end
                        end
                        if math.mod(#players, 2) ~= 0 then
                                doTeleportThing(players[#players],getTownTemplePosition(getPlayerTown(players[#players])),false)
                                doSendMagicEffect(getThingPosition(players[#players]),10)
                                doPlayerSendTextMessage(players[#players], 19, "Sorry, you have been kicked from event to balance teams.")
                                table.remove(players)
            end
            if #players < Players_Least_Number then
                                doBroadcastMessage("CTF event was cancelled because less than "..Players_Least_Number.." players joined")
                                resetTheStorage()
                                        if #players > 0 then
                                                for i = 1,#players do
                                                     doTeleportThing(players[i],getTownTemplePosition(getPlayerTown(players[i])),false)
                                             doSendMagicEffect(getThingPos(players[i]), 10)
                                            end
                                        end
                        else
                                         doBroadcastMessage("CTF started")
                                                for i = 1, math.floor(#players/2) do
                                                        setFirstTeam(players[i])
                                                end
                                                for i = math.floor(#players/2)+1 , #players do
                                                        setSecondTeam(players[i])
                                                end
                                                for _,cid in ipairs(getPlayersOnline()) do
                                                        if isTeamOne(cid) then
                                                                if getPlayerSex(cid) == 1 then
                                                                        doAddCondition(cid, bmale)
                                                                elseif getPlayerSex(cid) ~= 1 then
                                                                        doAddCondition(cid, bfemale)
                                                                end
                                                                doAddCondition(cid, fight)
                                                                doTeleportThing(cid,Blue_Position,false)
                                                                doSendMagicEffect(Blue_Position, 10)
                                                                doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid))
                                                        elseif  isTeamTwo(cid) then
                                                                if getPlayerSex(cid) == 1 then
                                                                        doAddCondition(cid, rmale)
                                                                elseif getPlayerSex(cid) ~= 1 then
                                                                        doAddCondition(cid, rfemale)
                                                                end
                                                                doAddCondition(cid, fight)
                                                                doTeleportThing(cid,Red_Position,false)
                                                                doSendMagicEffect(Red_Position, 10)
                                                                doChangeSpeed(cid, getTheSpeed(Players_Speed) - getCreatureSpeed(cid))
                                                        end
                                                end
                                                players = {}

            end
end
function onThink(interval)
   if getGlobalStorageValue(Event_Start) < 0 then
                setGlobalStorageValue(Event_Start,1)
                doSetStorage(Event_Tile_Close,1)
                doBroadcastMessage("CTF event is opened and teleport is created. It will start in "..Event_WaitTime.." minutes.")
                players = {}
                if getTileItemById(Tp_Place, 1387).uid < 1 then
                        doItemSetAttribute(doCreateItem(1387,1, Tp_Place), "aid", 3435)
                end

                f= Event_WaitTime - 1
                        for i = 1,Event_WaitTime-1 do
                                addEvent(doBroadcastMessage,i*60*1000,"CTF event is opened and teleport is created. It will start in "..f.." minutes.")
                                f= f-1
                        end
                addEvent(eventStart,Event_WaitTime*60*1000)
        end
return true
end
]]></globalevent>
  <event type="think" name="ctff" event="script"><![CDATA[
domodlib('toto')
domodlib('CTF-lib')

local bl = BLUE_FLAG
local re = RED_FLAG
function onThink(interval)
        if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
        if redStolen() < 0 then
                        doSendAnimatedText(re,"FLAG!",TEXTCOLOR_DARKRED)
                        doSendMagicEffect(re, CONST_ME_SOUND_RED)
        end
        if blueStolen() < 0 then
                        doSendAnimatedText(bl,"FLAG!",TEXTCOLOR_GREEN)
                        doSendMagicEffect(bl, CONST_ME_SOUND_GREEN)
            end
        for _, cid in ipairs(getPlayersOnline()) do
            if flagOwner(cid) then
                                if isTeamOne(cid) or isTeamTwo(cid) then
                                        if hasCondition(cid,CONDITION_HASTE) then
                                                doRemoveCondition(cid,CONDITION_HASTE)
                                        end
                                end
                                pl = getThingPos(cid)
                                        if isTeamTwo(cid) then
                                                if getPlayerStorageValue(cid,103) < os.time() then
                                                        releaseBF(cid)
                                                                for _,cid in ipairs(getPlayersOnline()) do
                                                                        if isTeamOne(cid) or isTeamTwo(cid) then
                                                                                doPlayerSendTextMessage(cid,22,getCreatureName(cid) .. " wasted 5 minutes with FLAG."..TEAM2_NAME.." flag is again on spawn!")
                                                                        end
                                                                end
                                                else
                                                        doSendAnimatedText(pl,"FLAG!",TEXTCOLOR_GREEN)
                                                        doSendMagicEffect(pl, CONST_ME_SOUND_GREEN)
                                                end
                                        elseif isTeamOne(cid) then
                                                if getPlayerStorageValue(cid,103) < os.time() then
                                                        releaseRF(cid)
                                                                for _,cid in ipairs(getPlayersOnline()) do
                                                                        if isTeamOne(cid) or isTeamTwo(cid) then
                                                                                doPlayerSendTextMessage(cid,22,getCreatureName(cid) .. " wasted 5 minutes with FLAG."..TEAM1_NAME.." flag is again on spawn!")
                                                                        end
                                                                end
                                                else
                                                        doSendAnimatedText(pl,"FLAG!",COLOR_RED)
                                                        doSendMagicEffect(pl, CONST_ME_SOUND_RED)
                                                end
                                        end
                        end
                end
        end
  return true
end
]]></event>
  <globalevent name="timer" interval="0.4" event="script"><![CDATA[
domodlib('toto')
domodlib('CTF-lib')

function onThink(interval)
        for _,cid in ipairs(getPlayersOnline()) do
                if isTeamOne(cid) or isTeamTwo(cid) then
                        if getGlobalStorageValue(Event_Start) > 0 and getGlobalStorageValue(Event_timeend) > 0 then
                                if getGlobalStorageValue(Timer)- os.time() >= 0 then
                                        doPlayerSendCancel(cid, "Time -> ".. os.date("%M:%S ",getGlobalStorageValue(Timer)- os.time()) .. "  |  ".. TEAM1_NAME.." Score : "..getBlueScore(cid).."/"..FLAG_SCORE.." captures  |  ".. TEAM2_NAME.." Score : "..getRedScore(cid).."/"..FLAG_SCORE.." captures")
                                end
                        end
                end
        end
return true
end
]]></globalevent>
  <globalevent name="starting" type="startup" event="script"><![CDATA[
domodlib('toto')
domodlib('CTF-lib')
function onStartup()
        resetTheStorage()

 return true
end
]]></globalevent>
</mod>
 
Back
Top