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

CTF not working probably

Ray Rewind

Doctor
Joined
Jun 6, 2009
Messages
1,349
Reaction score
76
Location
Germany
I always get message in Console CTF is Starting in 1 Minute also ingame as Broadcast. But nothing happnds


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"/>
 
OH damn :(

maybe it's because

doCreateTeleport(1387, t.tpDestination, t.tpSpawn)

should be maybe

doCreateTeleport(1387, tpDestination, tpSpawn) ?

shell I try it ?

TFS 0.3.6

8.6
 
OH damn :(

maybe it's because

doCreateTeleport(1387, t.tpDestination, t.tpSpawn)

should be maybe

doCreateTeleport(1387, tpDestination, tpSpawn) ?

shell I try it ?

TFS 0.3.6

8.6


No it should be that way because it is located within this
local t = {
}
Like I said you can always make a teleport movement and give the teleport an action id on creation.
 
Back
Top