Ir para conteúdo
  • 0

[Pedido] Evento: Capture The Flag


JumentoCuzaum

Pergunta

Vi Em Um OTserver e queria por no meu alguem tem ae? +REP por 3 dias :D

 

 

 

Explicação:

ctf.png

Capture The Flag

# O CTF, ou Capture The Flag é um evento onde 2 times irão se enfrentar para conseguir pegar a bandeira do inimigo.

# Objetivo é simples, chegar a base do inimigo antes que ele pega sua bandeira passar em cima dela e voltar para a sua base onde terá uma bandeira da sua cor, basta passar em cima dela e você dará a seu time um ponto.

# Quando algum time conseguir marcar algum ponto todos os jogadores que estão no evento serão jogados para suas bases.

# Quando você entrar no evento você será atribuído um equipa aleatória.

# O evento tem a duração de 10 minutos, dentro do evento todos players terão a mesma velocidade.

# O Evento será a cada 6 Horas, quando estiver na hora ira aparecer uma mensagem e um teleport será criado no templo, após 5 minutos este teleport ira sumir e o evento ira começar.

# Se você morrer dentro do evento você não ira perder nada, skill, level, exp nada, você será apenas teleportado para sua base.

# O time que fizer 10 pontos primeiro ira ganhar, caso ninguém faça 10 points nesses 10 minutos o time que mais fez pontos ira ganhar.

# A recompensa para cada player do time ganhador será feito à sorte.

50% de chance de ganhar soft boots

25% de chance de ganhar exp scroll (500k de exp ao ser usado)

25% de chance de ganhar Gold Ingot (250k em gold ao ser usado)

 

 

ctf.PNG

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
<?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=3536,y=3537,z=7} -- Blue flag Place

 

RED_FLAG = {x=3536,y=3537,z=7} --red flag Place

 

Tp_Place = {x=1007,y=991,z=15} -- Place where the event teleport will be created.

 

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

 

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

 

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

 

Red_Position = {x=3615,y=3602,z=7} -- Red team temple pos

 

Blue_Position = {x=3546,y=3536,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>

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

<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,getTownTemplePosition(getPlayerTown(players)),false)

doSendMagicEffect(getThingPos(players), 10)

end

end

else

doBroadcastMessage("CTF started")

for i = 1, math.floor(#players/2) do

setFirstTeam(players)

end

for i = math.floor(#players/2)+1 , #players do

setSecondTeam(players)

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>

 

Ai está um sistema em mod, créditos estão no arquivo.. eu testei e não consegui fazer funcionar corretamente, se alguem conseguir eixa postado ae!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...