matti450
Member
- Joined
- Apr 13, 2008
- Messages
- 507
- Reaction score
- 24
Hello, I did added Lastman standing event in to my ot server and i do not get any error all seems to work perfect.
The problem is that when someone enter the arena and fight and the last player will gets tp out but its take like 3 min for the player to get out tped. What am i missing?
Using version 0.3.6
here is the link for that script : http://otland.net/threads/last-man-standing-event-100-working.185769/
and here is the scripts
arena.lua
lastman.lua
The problem is that when someone enter the arena and fight and the last player will gets tp out but its take like 3 min for the player to get out tped. What am i missing?
Using version 0.3.6
here is the link for that script : http://otland.net/threads/last-man-standing-event-100-working.185769/
and here is the scripts
arena.lua
Code:
local t = {
tmp = {
{x = 1131, y = 988, z = 7}, -- North west corner of Area where players must stand in order to join the event
{x = 1131, y = 990, z = 7} -- South east corner of Area
},
arena = {
{x = 1133, y = 984, z = 7}, -- North west Corner of Arena
{x = 1145, y = 994, z = 7}, -- South East corner of Arena
{x = 1139, y = 989, z = 7} -- Center of Arena
},
from = {x = 1133, y = 986, z = 7}, -- Top left cornor of the playground (random players teleportation)
to = {x = 1144, y = 992, z = 7}, -- Bottom right cornor of the playground (random players teleportation)
minPlayers = 2, -- min players required to start the battle
noPlayers = 1, -- Leave it as it is
prize = {6527} -- Reward that player recives
}
local kick = 0
function onThink()
local arenaPlayers = {}
for x = t.arena[1].x, t.arena[2].x do
for y = t.arena[1].y, t.arena[2].y do
for z = t.arena[1].z, t.arena[2].z do
local pos = {x = x, y = y, z = z}
local n = getTileInfo(pos).creatures
if n ~= 0 then
pos.stackpos = 1
local c = getThingfromPos(pos)
while c.uid ~= 0 do
if c.itemid == 1 and c.type == 1 then
table.insert(arenaPlayers, c.uid)
if #arenaPlayers == n then
break
end
end
pos.stackpos = pos.stackpos + 1
c = getThingfromPos(pos)
end
end
end
end
end
if #arenaPlayers == 1 then
local p = getPlayerMasterPos(arenaPlayers[1])
doTeleportThing(arenaPlayers[1], p)
doSendMagicEffect(p, CONST_ME_TELEPORT)
doPlayerSendTextMessage(arenaPlayers[1], MESSAGE_STATUS_CONSOLE_BLUE, "You have won the event and received your reward.")
doBroadcastMessage(getCreatureName(arenaPlayers[1]) .." won a Last Man Standing Event.")
doPlayerAddItem(arenaPlayers[1], t.prize[math.random(#t.prize)], 10)
kick = 0
elseif #arenaPlayers > 1 then
if kick == 0 then
kick = os.time()
else
if os.time() - kick >= 5 then
kick = 0
for i = 1, #arenaPlayers do
doTeleportThing(arenaPlayers[i], {x=999, y=998, z=7})
doPlayerSendTextMessage(arenaPlayers[i], MESSAGE_STATUS_WARNING, "Too even, try harder next time.")
end
end
end
elseif #arenaPlayers == 0 then
kick = 0
local players = {}
for x = t.tmp[1].x, t.tmp[2].x do
for y = t.tmp[1].y, t.tmp[2].y do
for z = t.tmp[1].z, t.tmp[2].z do
local c = getTopCreature({x = x, y = y, z = z})
if c.type == 1 then
table.insert(players, c.uid)
end
end
end
end
if #players >= t.minPlayers then
for i = 1, #players do
local p = {x = math.random(t.from.x, t.to.x), y = math.random(t.from.y, t.to.y), z = math.random(t.from.z, t.to.z)}
doTeleportThing(players[i], p)
doSendMagicEffect(p, CONST_ME_TELEPORT)
doPlayerSendTextMessage(players[i], MESSAGE_STATUS_WARNING, "The battle begins. Survive for glory!")
end
else
for i = 1, #players do
doTeleportThing(players[i], {x=999, y=998, z=7})
doPlayerSendTextMessage(players[i], MESSAGE_STATUS_WARNING, "The event didn't start because there isn't enough players in area!")
end
end
end
return true
end
lastman.lua
Code:
local createpos = {x=999,y=999,z=7} -- Every 2h where will the Teleport Appear
local topos = {x=1123,y=989,z=7} -- Where will the Teleport take you
local msg = "Last man standing event TP has now been closed! It will open again in 2 hours! All participants get Ready for a Fight!"
local timetoclose = 120 -- in second
local function remove()
local tp = getTileItemById(createpos,1387).uid
if tp ~= 0 then
doRemoveItem(tp)
doBroadcastMessage(msg)
end
end
function onThink(interval)
doCreateTeleport(1387, topos, createpos)
doBroadcastMessage("Last man standing event TP is now open!\nCatch the teleport within "..timetoclose.." seconds! Teleport is Located in Events Room.")
addEvent(remove,timetoclose*1000)
return true
end
Last edited: