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