Jump to content

[MODS](0.4-0.3.6) - Fire Storm Event


Crypter

Recommended Posts

Nome: Evento for fun 

Infos: quem é atingido pelo fogo morre, o último a sobreviver ganha.

 

O evento é automático, mas também possui um comando para dar inicio ao evento, só usar /firestart minutos

 

exemplo: /firestart 1

 

 

 

 

Fire_Storm_Event.xml

<?xml version="1.0" encoding="ISO-8859-1"?><mod name="Fire Storm Event" version="8.6" author="Vodkart" contact="" enabled="yes"><config name="fire_config"><![CDATA[Fire = {	storages = {172354, 172355}, -- storage Count	players = {min = 2, max = 50}, -- min, max players no evento	minLevel = 20, -- level minimo para entrar no event	rewards = {{2160,10},{2494,1}}, -- premios que vai receber	timeToStartEvent = 30, -- segundos para começar o evento	CheckTime = 5, -- time to check event	teleport = {{x=158, y=53, z=7}, {x=189 , y=58, z=7}}, -- posição do teleport, posição para onde o jogador vai	arena = {{x=186,y=54,z=7},{x=193,y=60,z=7}} -- posição começo e final da area}Fire_Days = {	["Monday"] = {"13:00","18:00","20:00","22:00"},	["Tuesday"] = {"13:00","18:00","20:00","22:00"},	["Wednesday"] = {"13:00","18:00","20:00","22:00"},	["Thursday"] = {"13:00","18:00","20:00","22:00"},	["Friday"] = {"13:00","18:00","20:00","22:00"},	["Saturday"] = {"13:00","18:00","20:00","22:00"},	["Sunday"] = {"13:00","18:00","20:00","22:00"}}function removeFireTp()	local t = getTileItemById(Fire.teleport[1], 1387).uid	return t > 0 and doRemoveItem(t) and doSendMagicEffect(Fire.teleport[1], CONST_ME_POFF)endfunction ZerarStorFire()	setGlobalStorageValue(Fire.storages[1], 0)	setGlobalStorageValue(Fire.storages[2], 0)endfunction getPlayersInFireEvent()	local t = {}	for _, pid in pairs(getPlayersOnline()) do		if isInRange(getPlayerPosition(pid), Fire.arena[1], Fire.arena[2]) then			t[#t+1] = pid		end	end	return tendfunction getFireRewards(cid, items)	local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID	for _, i_i in ipairs(items) do		local item, amount = i_i[1],i_i[2]		if isItemStackable(item) or amount == 1 then			doAddContainerItem(backpack, item, amount)		else			for i = 1, amount do				doAddContainerItem(backpack, item, 1)			end		end	endendfunction doFireInArea(n)	if #getPlayersInFireEvent() > 1 then		for i = 1, n do			local pos = {x=math.random(Fire.arena[1].x, Fire.arena[2].x), y=math.random(Fire.arena[1].y,Fire.arena[2].y), z=Fire.arena[1].z}			local m = getTopCreature(pos).uid			doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE)			addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE)			addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA)			if m ~= 0 and isPlayer(m) then				doSendMagicEffect(getCreaturePosition(m), CONST_ME_FIREAREA)				doCreatureSay(m, "Ooh Burn Burn", TALKTYPE_ORANGE_1)				local corpse = doCreateItem(3058, 1, getPlayerPosition(m))				doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(m) .. ". He was killed by Fire Field.")				doSendMagicEffect(getPlayerPosition(m), CONST_ME_POFF)				doTeleportThing(m, getTownTemplePosition(getPlayerTown(m)))				doPlayerSendTextMessage(m, MESSAGE_EVENT_ADVANCE, "[Fire Storm Event] You died burned out.")			end		end		local x = 2700-(200*n)		addEvent(doFireInArea, x <= 0 and 500 or x, n+1)	elseif #getPlayersInFireEvent() == 1 then		local cid = getPlayersInFireEvent()[1]		doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))		getFireRewards(cid, Fire.rewards)		doBroadcastMessage("Fire Storm Event have finished. The winner is ".. getCreatureName(cid).. ". Congratulations.", MESSAGE_EVENT_ADVANCE)		ZerarStorFire()	else		doBroadcastMessage("No one Won the Fire Storm Event.", MESSAGE_EVENT_ADVANCE)		ZerarStorFire()	endendfunction CheckFireEvent(delay)	if getGlobalStorageValue(Fire.storages[1]) ~= (Fire.players.max+1) then		if delay > 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.max then			doBroadcastMessage("[Fire Stortm Event] Starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)		elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.min then			for _, cid in pairs(getPlayersInFireEvent()) do				doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))			end			removeFireTp()			doBroadcastMessage("The Fire Storm event could not start because of to few players participating.\n At least " .. Fire.players.min .. " players is needed!", MESSAGE_STATUS_WARNING)			ZerarStorFire()		elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) >= Fire.players.min then			removeFireTp()			doBroadcastMessage("Good Lucky! The event will start on "..Fire.timeToStartEvent.." seconds. get ready!")			addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1)		end		addEvent(CheckFireEvent, 60000, delay-1)	endend]]></config><globalevent name="Storm_Fire_Start" interval="60" event="script"><![CDATA[domodlib('fire_config')function onThink(interval, lastExecution)	if Fire_Days[os.date("%A")] then		local hrs = tostring(os.date("%X")):sub(1, 5)		if isInArray(Fire_Days[os.date("%A")], hrs) and getGlobalStorageValue(Fire.storages[2]) <= 0 then			local tp = doCreateItem(1387, 1, Fire.teleport[1])			doItemSetAttribute(tp, "aid", 45111)			CheckFireEvent(Fire.CheckTime)			setGlobalStorageValue(Fire.storages[1], 0) 		end	end	return trueend]]></globalevent><event type="login" name="Storm_Fire_Login" event="script"><![CDATA[domodlib('fire_config')function onLogin(cid)	registerCreatureEvent(cid, "FireStormBatle")	if isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then		doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))	end	return trueend]]></event><event type="combat" name="FireStormBatle" event="script"><![CDATA[domodlib('fire_config')if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then	doPlayerSendCancel(cid, "You may not attack this player.")	return falseendreturn true]]></event><movevent type="StepIn" actionid ="45111" event="script"><![CDATA[domodlib('fire_config')function onStepIn(cid, item, position, fromPosition)	if not isPlayer(cid) then return true end	if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, Fire.teleport[2]) end	if getPlayerLevel(cid) < Fire.minLevel then		doTeleportThing(cid, fromPosition, true)		doPlayerSendCancel(cid, "You need to be at least level " .. Fire.minLevel .. ".")		doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)		return true	end	if getGlobalStorageValue(Fire.storages[1]) <= Fire.players.max then		doTeleportThing(cid, Fire.teleport[2])		setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1)		doBroadcastMessage(getPlayerName(cid) .. " entered the fire stortm event! Currently " .. getGlobalStorageValue(Fire.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED)		if getGlobalStorageValue(Fire.storages[1]) == Fire.players.max then			setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1)			removeFireTp()			doBroadcastMessage("The event will start on "..Fire.timeToStartEvent.." seconds. get ready!")			addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1)		end 	end	return trueend]]></movevent><talkaction words="/firestart;!firestart" access="5" event="buffer"><![CDATA[domodlib('fire_config')if getGlobalStorageValue(Fire.storages[2]) > 0 then	doPlayerSendCancel(cid, "The event is already starting.") return trueelseif not param or not tonumber(param) then 	doPlayerSendCancel(cid, "Use only numbers.") return true endlocal param = tonumber(param) <= 0 and 1 or tonumber(param)local tp = doCreateItem(1387, 1, Fire.teleport[1])doItemSetAttribute(tp, "aid", 45111)CheckFireEvent(tonumber(param))setGlobalStorageValue(Fire.storages[1], 0)setGlobalStorageValue(Fire.storages[2], 1)]]></talkaction><globalevent name="FireDebug-Start" type="start" event="buffer"><![CDATA[domodlib('fire_config')ZerarStorFire()return true]]></globalevent></mod>

 

Baixa esse arquivo e adicione no seu servidor no respectivo lugar.!

 

fire lua.rar

fire lua.rar

Link to comment
Share on other sites

  • 2 months later...
  • 1 month later...
×
×
  • Create New...