Ray Rewind
Doctor
I always get message in Console CTF is Starting in 1 Minute also ingame as Broadcast. But nothing happnds
Creature Scripts
stats_Ctf
ctf_Target
Global events
Creature Scripts
stats_Ctf
Code:
local t = {
redPos = {x = 100, y = 200, z = 7},
bluePos = {x = 100, y = 200, z = 7},
redStorage = 15000,
blueStorage = 15001,
redFlag = 8000,
blueFlag = 9000
}
function onStatsChange(cid, attacker, type, combat, value)
if type == 1 then
if getCreatureHealth(cid) <= value then
if isPlayer(cid) and isCreature(attacker) then
if getGlobalStorageValue(t.redFlag) == 1 and getPlayerStorageValue(cid, t.redFlag) == 1 then
setPlayerStorageValue(cid, t.redFlag, -1)
setGlobalStorageValue(t.redFlag, -1)
doBroadcastMessage(getCreatureName(cid) .. " has lost the Red Flag!")
elseif getGlobalStorageValue(t.blueFlag) == 1 and getPlayerStorageValue(cid, t.blueFlag) == 1 then
setPlayerStorageValue(cid, t.blueFlag, -1)
setGlobalStorageValue(t.blueFlag, -1)
doBroadcastMessage(getCreatureName(cid) .. " has lost the Blue Flag!")
end
if getPlayerStorageValue(cid, t.redStorage) == 1 then
doTeleportThing(cid, t.redPos, true)
elseif getPlayerStorageValue(cid, t.blueStorage) == 1 then
doTeleportThing(cid, t.bluePos, true)
end
end
return false
end
end
return true
end
ctf_Target
Code:
local t = {
redStorage = 15000,
blueStorage = 15001
}
function onCombat(cid, target)
if isPlayer(cid) and isPlayer(target) then
if getPlayerStorageValue(cid, t.redStorage) == 1 and getPlayerStorageValue(target, t.redStorage) == 1 then
return doPlayerSendCancel(cid, "You may not attack your team mates.") and false
elseif getPlayerStorageValue(cid, t.blueStorage) == 1 and getPlayerStorageValue(target, t.blueStorage) == 1 then
return doPlayerSendCancel(cid, "You may not attack your team mates.") and false
end
end
return true
end
Code:
<event type="statschange" name="stats_ctf" event="script" value="ctf/stats_ctf.lua"/>
<event type="combat" name="ctf_target" event="script" value="ctf/ctf_target.lua"/>
Global events
Code:
local t = {
redPos = {x = 809, y = 1166, z = 7},
bluePos = {x = 879, y = 1201, z = 7},
redStorage = 15000,
blueStorage = 15001,
fromPos = {x = 787, y = 1028, z = 7},
toPos = {x = 792, y = 1033, z = 7}
}
local conditionBlue = createConditionObject(CONDITION_OUTFIT)
setConditionParam(conditionBlue, CONDITION_PARAM_TICKS, 1800 * 1000)
addOutfitCondition(conditionBlue, {lookType = 130, lookHead = 87, lookBody = 87, lookLegs = 87, lookFeet = 87})
local conditionRed = createConditionObject(CONDITION_OUTFIT)
setConditionParam(conditionRed, CONDITION_PARAM_TICKS, 1800 * 1000)
addOutfitCondition(conditionRed, {lookType = 130, lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94})
local function teleportThing(minutes)
local event = 0
if minutes <= 0 then
for _, cid in ipairs(getPlayersOnline()) do
if isInRange(getThingPos(cid), t.fromPos, t.toPos) then
if math.random(1, 3) < 3 then
setPlayerStorageValue(cid, t.redStorage, 1)
doAddCondition(cid, conditionRed)
doTeleportThing(cid, t.redPos, true)
else
setPlayerStorageValue(cid, t.blueStorage, 1)
doAddCondition(cid, conditionBlue)
doTeleportThing(cid, t.bluePos, true)
end
end
end
return true
end
if minutes == 1 then
doBroadcastMessage("Capture The Flag will begin in " .. minutes .. " minute!")
elseif minutes <= 3 then
doBroadcastMessage("Capture The Flag will begin in " .. minutes .. " minutes!")
else
doBroadcastMessage("Capture The Flag will begin in " .. minutes .. " minutes!")
end
event = addEvent(teleportThing, 60, minutes - 1)
return true
end
function onThink(interval, lastExecution)
return teleportThing(math.abs(math.ceil(1)))
end
Code:
<!--CTF -->
<globalevent name="ctf_event" interval="120" event="script" value="ctf/ctf.lua"/>