Untitled
Guest 155 18th Jan, 2023
--======================================================
--============ FIRESTORM EVENT =========================
--======================================================
function playersInArea(pos,pos2,limit)
limit=limit or 999
local i=0
for x = pos.x,pos2.x,1
do
for y = pos.y,pos2.y,1
do
for z = pos.z,pos2.z,1
do
if(isPlayerOnPos({x=x,y=y,z=z})) then
i=i+1
if(limit==0)then
--print("mamygracza")
player = getThingfromPos({x=x,y=y,z=z,stackpos=253})
return player
--print("Chuja")
elseif(i>limit) then
return i
end
end
end
end
end
return i
end
fireStorm={}
function addEventWorkaround(obj)
obj.f(obj.s)
end
function fireStorm:start(pos,pos2,settings)
if(settings==nil)then
settings={}
end
--doBroadcastMessage("Firestorm event starts in 5 minutes")
local fse={}
local obj = setmetatable(fse,{__index = fireStorm})
fse.posStart=pos
fse.posEnd=pos2
fse.appearSpeed=settings.speed or 2000
fse.appearSpeedDecrease=settings.speedDecrease or 50
fse.appearLevelTime=settings.levelTime or 10000
fse.eventReward=settings.eventReward or function (winner) doPlayerAddExp(winner.uid,4200) end
fse.teleportTo=settings.teleportTo or {x=438,y=502,z=8}
fse.timeUntilStart=5
fse.players=0
fse.appearLevelTimer=fse.appearLevelTime
fse:countdown(5)
end
function fireStorm:countdown()
if(self.timeUntilStart>0) then
--doBroadcastMessage("Firestorm event starts in ".. self.timeUntilStart .." minutes")
self.timeUntilStart=self.timeUntilStart-1
addEvent(addEventWorkaround, 60, {s=self,f=function (obj) obj:countdown() end})
else
self.players=playersInArea(self.posStart,self.posEnd)
if(self.players>0) then
--doBroadcastMessage("Firestorm event wystartowal.")
addEvent(addEventWorkaround, self.appearSpeed, {s=self,f=function (obj) obj:run() end})
end
end
end
function fireStorm:win()
winner=playersInArea(self.posStart,self.posEnd,0)
--doBroadcastMessage(winneruid)
pos=getPlayerPosition(winner.uid)
self.eventReward(winner)
end
function fireStorm:checkLevel()
self.appearLevelTimer=self.appearLevelTimer-self.appearSpeed
if(self.appearLevelTimer<=0)then
if(self.appearSpeed-self.appearSpeedDecrease>0)then
self.appearSpeed=self.appearSpeed-self.appearSpeedDecrease
else
self.appearSpeed=1
end
self.appearLevelTimer=self.appearLevelTime
end
end
--iks de
function fireStorm:run()
--if(self.players>1)then
--doBroadcastMessage(self.players)
if(self:fire({x=math.random(self.posStart.x,self.posEnd.x),y=math.random(self.posStart.y,self.posEnd.y),z=math.random(self.posStart.z,self.posEnd.z)})==true)then
self.players=playersInArea(self.posStart,self.posEnd,2)
end
if(self.players==1)then
self:win()
else
self:checkLevel()
addEvent(addEventWorkaround, self.appearSpeed, {s=self,f=function (obj) obj:run() end})
end
--else
--self.win()
--end
end
function fireStorm:fire(pos)
doSendMagicEffect(pos, CONST_ME_FIREAREA)
pos={x=pos.x,y=pos.y,z=pos.z,stackpos=253}
if(isPlayerOnPos(pos))then
doTeleportThing(getThingfromPos(pos).uid,self.teleportTo)
return true
end
return false
end
To share this paste please copy this url and send to your friends
RAW Paste Data
Recent Pastes
- Untitled
Markup | 19 | 6 hours ago
- Untitled
Markup | 22 | 9 hours ago
- Wanted to see what your conviction is on this theme
Markdown | 12 | 9 hours ago
- Untitled
Markup | 63 | 1 day ago
- mega555kf7lsmb54yd6etzginolhxxi4ytdoma2rf77ngq55fhfcnyid.onion
Template Toolkit 2 | 24 | 1 day ago
- Untitled
Markup | 70 | 2 days ago
- Untitled
Markup | 76 | 2 days ago