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

Error in tfs Team Battle event

Mister Budex

BudexOT.com
Joined
Jun 22, 2016
Messages
1,547
Solutions
18
Reaction score
378
Elo I'm using tfs 0.4 - 8.60 protocol version , I added Team Battle event in my server it works fine , i just have 1 error in my console and it is -
[Warning - Event::LoadScript] Event onThink not found (data/globalevents/scripts/tbevent.lua)
i dont even have function onThink , so idk why it shows up , here is my script - it is only globalevents
Code:
    <globalevent name="tbevent" interval="14400000" script="tbevent.lua"/>



Code:
local config = {
    tpPos = {x=998,y=999,z=7}, -- where tp happends
    tpToPos = {x=1250,y=2093,z=7}, -- tp p onde
    minutes = 120, -- minute
    area = {{x=1286,y=2083,z=7},{x=1349,y=2096,z=7}},   -- top left and bottom right corner of fight area
    waiting = {{x=1240,y=2090,z=7},{x=1261,y=2097,z=7}}, -- top left and bottom right corner of waiting arena
    needed = 10,   -- minimum players
    timeToEnd = 10*1000,  -- time to end
    base = {{x=1286,y=2089,z=7}, {x=1350,y=2090,z=7}},  -- team1 base, team2 base
    names = {"Alliance", "Horde"}, -- team names
    outfit = {{132, 136, 40},{132, 136, 160}}, -- outfits
    teamStorage = 49595,
    fragStorage = {49596, 49597},
    fragsToWin = 50, -- frags to win
    outfitStorage = 49598
}

function getFragsTB(id)
    return getGlobalStorageValue(config.fragStorage[id]) == -1 and 0 or getGlobalStorageValue(config.fragStorage[id])
end

function getTeam(cid)
    return getPlayerStorageValue(cid, config.teamStorage) == -1 and 0 or getPlayerStorageValue(cid, config.teamStorage)
end

function setTeam(cid, team)
    local o = getCreatureOutfit(cid)
    setPlayerStorageValue(cid, config.outfitStorage, "{lookType=" .. o.lookType .. ", lookHead=" .. o.lookHead .. ", lookAddons=" .. o.lookAddons .. ", lookLegs=" .. o.lookLegs .. ", lookBody="..o.lookBody .. ", lookFeet=".. o.lookFeet.."}")
    doCreatureChangeOutfit(cid, {lookType = config.outfit[team][getPlayerSex(cid)+1], lookHead = config.outfit[team][3], lookAddons = 3, lookLegs = config.outfit[team][3], lookBody = config.outfit[team][3], lookFeet = config.outfit[team][3]})
    return setPlayerStorageValue(cid, config.teamStorage, team)
end

function winner(id)
    if isInArray({1,2}, id) then
        doBroadcastMessage(config.names[id] .. " has won the Team Battle event.")
      
        for _, cid in pairs(getPlayersOnline()) do
            if getTeam(cid) == id then
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your team has won the Team Battle event.")
                local rand = math.random(1,3)
                if rand == 1 then
                    doPlayerAddItem(cid, SOFTBOOTS_ID, 1)
                elseif rand == 2 then
                    doPlayerAddItem(cid, 2160, 10)
                else
                    doAddPoints(cid, 5)
                end
            else
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your team has lost the Team Battle event.")
            end
        end
    else
        doBroadcastMessage("No one won the Team Battle event. DRAW")
    end
    for _, cid in pairs(getPlayersOnline()) do
        if getTeam(cid) ~= 0 then
            doTeleportThing(cid, getTownTemplePosition(1))
            doSendMagicEffect(getThingPos(cid), 10)  
            setPlayerStorageValue(cid, config.teamStorage, -1)
            setGlobalStorageValue(5474578, -1)
            doCreatureChangeOutfit(cid, loadstring("return " .. getPlayerStorageValue(cid, config.outfitStorage))())
        end
    end
end

function areaPlayers(c)
    local t = {}
    for x = c[1].x, c[2].x do
        for y = c[1].y, c[2].y do
            for z = c[1].z, c[2].z do
                local tmp = getThingFromPos({x=x,y=y,z=z,stackpos=253})
                if tmp.uid > 0 and (isPlayer(tmp.uid)) then
                    table.insert(t, tmp.uid)
                end
            end
        end
    end
    return t
end

function endTB(z)
    if z >= config.timeToEnd then
        local w = getFragsTB(1) == getFragsTB(2) and 3 or getFragsTB(1) > getFragsTB(2) and 1 or 2
        return winner(w)
    elseif getFragsTB(1) ~= getFragsTB(2) then
        if getFragsTB(1) >= config.fragsToWin then
            return winner(1)
        elseif getFragsTB(2) >= config.fragsToWin then
            return winner(2)
        end
    end
    addEvent(endTB, 25, z+25)
end

function setTeams(cid, team)
    local pos = config.base[team]
    if not(isPlayer(cid)) then
        return true
    end
    doTeleportThing(cid, pos)
    doSendMagicEffect(pos, 10)
    setTeam(cid, team)
end

function startTB()
    doRemoveItem(getTileItemById(config.tpPos, 1387).uid)
    local ppl = areaPlayers(config.waiting)
    for i = 1, #ppl do
        local level = getPlayerLevel(ppl[i])
        if not(level >= 150) then  -- LEVEL HERE
            doTeleportThing(ppl[i], getTownTemplePosition(1))
            doSendMagicEffect(getThingPos(ppl[i]), 10)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "To fight here must be level 150.")
        end
    end
    ppl = areaPlayers(config.waiting)
    if #ppl%2 == 1 then
        local r = ppl[math.random(#ppl)]
        doTeleportThing(r, getTownTemplePosition(1))
        doSendMagicEffect(getThingPos(r), 10)
        doPlayerSendTextMessage(r, MESSAGE_INFO_DESCR, "Sorry, but you were kicked from the event for balancement.")
    end
    ppl = areaPlayers(config.waiting)
    if #ppl >= config.needed then
        for p = 1, #ppl/2 do
            addEvent(setTeams, 10*1000, ppl[p], 1)
            for i = 10, 1, -1 do
                addEvent(doPlayerSendTextMessage, (10-i)*1000, ppl[p], MESSAGE_INFO_DESCR, "Team Battle event will start in " .. i .. " seconds.")
            end
        end
        for p = #ppl/2+1, #ppl do
            addEvent(setTeams, 10*1000, ppl[p], 2)
            for i = 10, 1, -1 do
                addEvent(doPlayerSendTextMessage, (10-i)*1000, ppl[p], MESSAGE_INFO_DESCR, "Team Battle event will start in " .. i .. " seconds.")
            end
        end
        addEvent(endTB, 10*1000, 0)
        return doBroadcastMessage("Team Battle event started.")
    end
    for i = 1, #ppl do
        doTeleportThing(ppl[i], getTownTemplePosition(1))
        doSendMagicEffect(getTownTemplePosition(1), 10)
        doPlayerSendTextMessage(ppl[i], MESSAGE_INFO_DESCR, "There were not enough players")
    end
    doBroadcastMessage("Team Battle failed to start, because there were not enough players.")
    setGlobalStorageValue(5474578, -1)
end

function onTime()
    setGlobalStorageValue(config.fragStorage[1], -1)
    setGlobalStorageValue(5474578, 1)
    setGlobalStorageValue(config.fragStorage[2], -1)
    doBroadcastMessage("Team Battle event will start in " .. config.minutes .. " minutes. The teleporter is open now. ")
    doCreateTeleport(1387, config.tpToPos, config.tpPos)
    for m = config.minutes-1, 0, -1 do
        if m == 0 then
            addEvent(startTB, config.minutes*60*1000)
        else
            addEvent(doBroadcastMessage, (config.minutes-m)*60*1000, "Team Battle event will start in " .. m .. " minutes.")
        end
    end
    return true
end
 
Solution
Elo I'm using tfs 0.4 - 8.60 protocol version , I added Team Battle event in my server it works fine , i just have 1 error in my console and it is -
[Warning - Event::LoadScript] Event onThink not found (data/globalevents/scripts/tbevent.lua)
i dont even have function onThink , so idk why it shows up , here is my script - it is only globalevents
Code:
    <globalevent name="tbevent" interval="14400000" script="tbevent.lua"/>



Code:
local config = {
    tpPos = {x=998,y=999,z=7}, -- where tp happends
    tpToPos = {x=1250,y=2093,z=7}, -- tp p onde
    minutes = 120, -- minute
    area = {{x=1286,y=2083,z=7},{x=1349,y=2096,z=7}},   -- top left and bottom right corner of fight area
    waiting =...
Elo I'm using tfs 0.4 - 8.60 protocol version , I added Team Battle event in my server it works fine , i just have 1 error in my console and it is -
[Warning - Event::LoadScript] Event onThink not found (data/globalevents/scripts/tbevent.lua)
i dont even have function onThink , so idk why it shows up , here is my script - it is only globalevents
Code:
    <globalevent name="tbevent" interval="14400000" script="tbevent.lua"/>



Code:
local config = {
    tpPos = {x=998,y=999,z=7}, -- where tp happends
    tpToPos = {x=1250,y=2093,z=7}, -- tp p onde
    minutes = 120, -- minute
    area = {{x=1286,y=2083,z=7},{x=1349,y=2096,z=7}},   -- top left and bottom right corner of fight area
    waiting = {{x=1240,y=2090,z=7},{x=1261,y=2097,z=7}}, -- top left and bottom right corner of waiting arena
    needed = 10,   -- minimum players
    timeToEnd = 10*1000,  -- time to end
    base = {{x=1286,y=2089,z=7}, {x=1350,y=2090,z=7}},  -- team1 base, team2 base
    names = {"Alliance", "Horde"}, -- team names
    outfit = {{132, 136, 40},{132, 136, 160}}, -- outfits
    teamStorage = 49595,
    fragStorage = {49596, 49597},
    fragsToWin = 50, -- frags to win
    outfitStorage = 49598
}

function getFragsTB(id)
    return getGlobalStorageValue(config.fragStorage[id]) == -1 and 0 or getGlobalStorageValue(config.fragStorage[id])
end

function getTeam(cid)
    return getPlayerStorageValue(cid, config.teamStorage) == -1 and 0 or getPlayerStorageValue(cid, config.teamStorage)
end

function setTeam(cid, team)
    local o = getCreatureOutfit(cid)
    setPlayerStorageValue(cid, config.outfitStorage, "{lookType=" .. o.lookType .. ", lookHead=" .. o.lookHead .. ", lookAddons=" .. o.lookAddons .. ", lookLegs=" .. o.lookLegs .. ", lookBody="..o.lookBody .. ", lookFeet=".. o.lookFeet.."}")
    doCreatureChangeOutfit(cid, {lookType = config.outfit[team][getPlayerSex(cid)+1], lookHead = config.outfit[team][3], lookAddons = 3, lookLegs = config.outfit[team][3], lookBody = config.outfit[team][3], lookFeet = config.outfit[team][3]})
    return setPlayerStorageValue(cid, config.teamStorage, team)
end

function winner(id)
    if isInArray({1,2}, id) then
        doBroadcastMessage(config.names[id] .. " has won the Team Battle event.")
     
        for _, cid in pairs(getPlayersOnline()) do
            if getTeam(cid) == id then
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your team has won the Team Battle event.")
                local rand = math.random(1,3)
                if rand == 1 then
                    doPlayerAddItem(cid, SOFTBOOTS_ID, 1)
                elseif rand == 2 then
                    doPlayerAddItem(cid, 2160, 10)
                else
                    doAddPoints(cid, 5)
                end
            else
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your team has lost the Team Battle event.")
            end
        end
    else
        doBroadcastMessage("No one won the Team Battle event. DRAW")
    end
    for _, cid in pairs(getPlayersOnline()) do
        if getTeam(cid) ~= 0 then
            doTeleportThing(cid, getTownTemplePosition(1))
            doSendMagicEffect(getThingPos(cid), 10) 
            setPlayerStorageValue(cid, config.teamStorage, -1)
            setGlobalStorageValue(5474578, -1)
            doCreatureChangeOutfit(cid, loadstring("return " .. getPlayerStorageValue(cid, config.outfitStorage))())
        end
    end
end

function areaPlayers(c)
    local t = {}
    for x = c[1].x, c[2].x do
        for y = c[1].y, c[2].y do
            for z = c[1].z, c[2].z do
                local tmp = getThingFromPos({x=x,y=y,z=z,stackpos=253})
                if tmp.uid > 0 and (isPlayer(tmp.uid)) then
                    table.insert(t, tmp.uid)
                end
            end
        end
    end
    return t
end

function endTB(z)
    if z >= config.timeToEnd then
        local w = getFragsTB(1) == getFragsTB(2) and 3 or getFragsTB(1) > getFragsTB(2) and 1 or 2
        return winner(w)
    elseif getFragsTB(1) ~= getFragsTB(2) then
        if getFragsTB(1) >= config.fragsToWin then
            return winner(1)
        elseif getFragsTB(2) >= config.fragsToWin then
            return winner(2)
        end
    end
    addEvent(endTB, 25, z+25)
end

function setTeams(cid, team)
    local pos = config.base[team]
    if not(isPlayer(cid)) then
        return true
    end
    doTeleportThing(cid, pos)
    doSendMagicEffect(pos, 10)
    setTeam(cid, team)
end

function startTB()
    doRemoveItem(getTileItemById(config.tpPos, 1387).uid)
    local ppl = areaPlayers(config.waiting)
    for i = 1, #ppl do
        local level = getPlayerLevel(ppl[i])
        if not(level >= 150) then  -- LEVEL HERE
            doTeleportThing(ppl[i], getTownTemplePosition(1))
            doSendMagicEffect(getThingPos(ppl[i]), 10)
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "To fight here must be level 150.")
        end
    end
    ppl = areaPlayers(config.waiting)
    if #ppl%2 == 1 then
        local r = ppl[math.random(#ppl)]
        doTeleportThing(r, getTownTemplePosition(1))
        doSendMagicEffect(getThingPos(r), 10)
        doPlayerSendTextMessage(r, MESSAGE_INFO_DESCR, "Sorry, but you were kicked from the event for balancement.")
    end
    ppl = areaPlayers(config.waiting)
    if #ppl >= config.needed then
        for p = 1, #ppl/2 do
            addEvent(setTeams, 10*1000, ppl[p], 1)
            for i = 10, 1, -1 do
                addEvent(doPlayerSendTextMessage, (10-i)*1000, ppl[p], MESSAGE_INFO_DESCR, "Team Battle event will start in " .. i .. " seconds.")
            end
        end
        for p = #ppl/2+1, #ppl do
            addEvent(setTeams, 10*1000, ppl[p], 2)
            for i = 10, 1, -1 do
                addEvent(doPlayerSendTextMessage, (10-i)*1000, ppl[p], MESSAGE_INFO_DESCR, "Team Battle event will start in " .. i .. " seconds.")
            end
        end
        addEvent(endTB, 10*1000, 0)
        return doBroadcastMessage("Team Battle event started.")
    end
    for i = 1, #ppl do
        doTeleportThing(ppl[i], getTownTemplePosition(1))
        doSendMagicEffect(getTownTemplePosition(1), 10)
        doPlayerSendTextMessage(ppl[i], MESSAGE_INFO_DESCR, "There were not enough players")
    end
    doBroadcastMessage("Team Battle failed to start, because there were not enough players.")
    setGlobalStorageValue(5474578, -1)
end

function onTime()
    setGlobalStorageValue(config.fragStorage[1], -1)
    setGlobalStorageValue(5474578, 1)
    setGlobalStorageValue(config.fragStorage[2], -1)
    doBroadcastMessage("Team Battle event will start in " .. config.minutes .. " minutes. The teleporter is open now. ")
    doCreateTeleport(1387, config.tpToPos, config.tpPos)
    for m = config.minutes-1, 0, -1 do
        if m == 0 then
            addEvent(startTB, config.minutes*60*1000)
        else
            addEvent(doBroadcastMessage, (config.minutes-m)*60*1000, "Team Battle event will start in " .. m .. " minutes.")
        end
    end
    return true
end

Line 149
onTime => onThink
 
Solution
Back
Top