• 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!

Lua CTF Mod

TibiaGameHost

Hello!
Joined
Feb 25, 2009
Messages
255
Reaction score
0
Location
Canadá
When someone does point to the team, the points are not counted. And is 0x0. Nobody wins.

Code:
<?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 = 1 --put empty storage

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


--[[ Places setting ]]--


BLUE_FLAG = {x=384,y=78,z=6} -- Lugar da bandeira verde (piso pra pegar)

RED_FLAG = {x=375,y=78,z=6} -- Lugar da bandeira vermelha (piso pra pegar)

Tp_Place = {x=32366,y=32238,z=7} -- Lugar onde o teleport vai ser criado

Wait_Place = {x=347,y=73,z=7} -- Pra onde os jogadores vao ser teletransportados

frompos = {x=341,y=69,z=7} -- ponto inicial da sala de espera diagonal (primeiro piso)

topos = {x=353,y=78,z=7} -- ponto final da sala de espera diagonal (ultimo piso)

Red_Position = {x=373,y=78,z=5} -- base do red team

Blue_Position = {x=386,y=78,z=5} -- base do blue team



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


--[[Event setting ]]--


Event_WaitTime = 5 -- tempo para os jogadores coletarem a bandeira apos o inicio (em minutos)

Event_MaxTime = 10 --- em minutos (este e o tempo maximo de execucao de um evento bb)

Players_Speed = 2000 -- colocar o nivel da base de velocidade no evento (se quiser velocidade de lvl 300 entao coloque 300)

Flag_Holder_Speed = 2000

TEAM2_NAME = "vermelho" -- team 2 name

TEAM1_NAME = "verde" -- team 1 name

FLAG_SCORE = 10 -- marcar quando o time ganha

Teleport_On_Score = true -- Isto ira transportar toda a sua posicao sobre o computador principal, quando 20 bandeira um, fazer false para desativar.

Players_Least_Number = 2 -- isto significa que se houver menos de dois jogadores participaram do evento sera cancelado

Min_Join_Level = 55 -- min lvl de um jogador para participar do evento

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 = {6570}
},

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


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


]]></config>
<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,"Recompensa Rara premiada: voce ganhou um "..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,"Recompensa semi rara premiada: voce ganhou um "..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,"Recompensa media premiada: voce ganhou um "..getItemNameById(aver)..".")
end
return true
end
]]></lib>
<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('Evento-CTF: O time '..TEAM2_NAME..' venceu e recebeu o premio.')
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,'Seu time perdeu.')
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, "Essa e a sua bandeira, voce nao pode pegar ela!")
end
elseif isTeamTwo(cid) and redStolen() > 0 and blueStolen() < 0 then
doPlayerSendTextMessage(cid, 27, "A bandeira de sua equipe foi roubada, va busca-la de volta!")
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) .. " capturou a ultima bandeira e o time ".. TEAM2_NAME.." venceu o evento!")
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) .. " capturou uma bandeira e adquiriu 1 ponto para o time ".. TEAM2_NAME.."!")
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, "Voce ja esta segurando a bandeira!")
doTeleportThing(cid, fromPosition,TRUE)
doSendMagicEffect(getThingPos(cid),2)
elseif (not flagOwner(cid)) then
doPlayerSendTextMessage(cid, 27, "Seus companheiros de equipe roubaram uma bandeira adversaria, defenda-os!")
doTeleportThing(cid, fromPosition,TRUE)
doSendMagicEffect(getThingPos(cid),2)
end
elseif blueStolen() > 0 and redStolen() < 0 then
doPlayerSendTextMessage(cid, 27, "A bandeira de seu time foi roubada e voce nao pode capturar uma bandeira agora!")
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) .. " roubou uma bandeira do time "..TEAM2_NAME.."!")
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,"Apenas jogadores com o nivel "..Min_Join_Level.." ou superior podem passar.")
else
doTeleportThing(cid,Wait_Place,false)
doSendMagicEffect(Wait_Place,10)
end
else
doTeleportThing(cid,fromPosition,false)
doSendMagicEffect(fromPosition,10)
doPlayerSendTextMessage(cid,21,"Volte depois, o evento esta fechado agora.")
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('Evento-CTF: O time '.. TEAM1_NAME..' venceu e recebeu o premio.')
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,'Seu time perdeu.')
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, "Essa e a sua bandeira, voce nao pode pegar ela!")
end
elseif isTeamOne(cid) and blueStolen() > 0 and redStolen() < 0 then
doPlayerSendTextMessage(cid, 27, "A bandeira de seu time foi roubada, va busca-la de volta!")
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) .. " capturou a ultima bandeira e o time ".. TEAM1_NAME.." venceu o evento!")
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) .. " capturou uma bandeira e adquiriu 1 ponto para o time ".. TEAM1_NAME.."!")
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, "Voce ja esta segurando essa bandeira!")
doTeleportThing(cid, fromPosition,TRUE)
doSendMagicEffect(getThingPos(cid),2)
elseif (not flagOwner(cid)) then
doPlayerSendTextMessage(cid, 27, "Seus companheiros de equipe roubaram uma bandeira adversaria, defenda-os!")
doTeleportThing(cid, fromPosition,TRUE)
doSendMagicEffect(getThingPos(cid),2)
end
elseif redStolen() > 0 and blueStolen() < 0 then
doPlayerSendTextMessage(cid, 27, "A bandeira de seu time foi roubada e voce nao pode capturar uma bandeira agora!")
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) .. " roubou uma bandeira do time "..TEAM1_NAME.."!")
end
end
end
end
end
return true
end
]]></movevent>
<globalevent name="ctf" interval="14400000" 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('Evento-CTF: O time '.. TEAM2_NAME..' venceu o evento e recebeu o premio.')
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,'Seu time perdeu.')
resetTheTeams(cid)
doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
end
end

elseif getRedScore() < getBlueScore() then
doBroadcastMessage('Evento-CTF: O time '.. TEAM1_NAME..' venceu o evento e recebeu o premio.')
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,'Seu time perdeu.')
resetTheTeams(cid)
doChangeSpeed(cid, getTheSpeed(getPlayerLevel(cid)) - getCreatureSpeed(cid))
end
end
elseif getRedScore() == getBlueScore() then
doBroadcastMessage('Evento-CTF: O evento terminou com um empate entre as duas equipes.')
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,'Foi um empate entre as duas equipes.')
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, "Lamentamos, mas voce foi expulso do evento para o balanceamento das equipes.")
table.remove(players)
end
if #players < Players_Least_Number then
doBroadcastMessage("O evento CTF foi cancelado porque menos de "..Players_Least_Number.." jogadores participaram.")
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 iniciado")
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("O evento CTF esta comecando e o teleporte foi aberto. Ele vai comecar em "..Event_WaitTime.." minutos.")
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,"O evento CTF esta comecando e o teleporte foi aberto. Ele vai comecar em "..f.." minutos.")
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,"BANDEIRA!",TEXTCOLOR_DARKRED)
doSendMagicEffect(re, CONST_ME_SOUND_RED)
end
if blueStolen() < 0 then
doSendAnimatedText(bl,"BANDEIRA!",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) .. " demorou 5 minutos com a bandeira. A bandeira da equipe "..TEAM1_NAME.." deve ser capturada novamente!")
end
end
else
doSendAnimatedText(pl,"BANDEIRA!",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) .. " demorou 5 minutos com a bandeira. A bandeira da equipe "..TEAM2_NAME.." deve ser capturada novamente!")
end
end
else
doSendAnimatedText(pl,"BANDEIRA!",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, "Tempo -> ".. os.date("%M:%S ",getGlobalStorageValue(Timer)- os.time()) .. " | ".. TEAM1_NAME..": "..getBlueScore(cid).."/"..FLAG_SCORE.." capturas | ".. TEAM2_NAME..": "..getRedScore(cid).."/"..FLAG_SCORE.." capturas")
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