Jump to content

CTF bugado


ludgeromf1

Recommended Posts

Bom gente tenho esse evento no meu ot so q ta com um problema quando tentam pegar a flag n pega ela continua no msm lugar seila o pq ta ai umas prints pra ajd um pouco.

 

post-325416-0-40415800-1358613745_thumb.jpg

 

post-325416-0-17771700-1358613765_thumb.jpg

 

aki ta o script do evento

 

<?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=900,y=225,z=7} -- Blue flag Place
RED_FLAG = {x=992,y=217,z=7} --red flag Place
Tp_Place = {x=171,y=60,z=7} -- Place where the event teleport will be created.
Wait_Place = {x=647,y=613,z=7} -- Positions Players will  be sent when the enter event's teleport
frompos = {x=643, y=608, z=7} --start sqm in the waiting room(1 floor)
topos = {x=653,y=617,z=7} -- end sqm in the waiting room(1 floor)
Red_Position = {x=989,y=217,z=7} -- Red team temple pos
Blue_Position = {x=907,y=224,z=7} -- Blue team temple pos

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

--[[Event setting ]]--

Event_WaitTime = 2 -- time for the collection of player then event will start (in minutes)
Event_MaxTime = 2 --- 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 = 2000 -- [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 = 3 -- score when team gets he wins
Teleport_On_Score = true -- 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 = {2475,2471,2494}
														    },
										    [30] = { -- Rewards of 30%
																    items = {32366,8918,2495}
														    },

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

]]></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="120" 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>

 

desde ja agradeço :D

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...