Postado Outubro 11, 2014 10 anos Gostei, esse evento lembra um pouco o Zombie Event. Em vez de zombis, é bolas de fogo. Enfim, REP+
Postado Setembro 1, 2015 9 anos Desculpa reviver o tópico, mas tenho o mesmo problema. Cheio de erros para OT 8.6 Rev 3777 ... CONSEGUI RESOLVER ! PARA QUEM QUER O MOD PARA OT 8.6 AQUI ESTÁ: <?xml version="1.0" encoding="UTF-8"?> <mod name="Fire Storm Event" version="1.0" author="iFate" contact="otland.net/members/iFate/" enabled="yes"> <config name="lms_config"> <![CDATA[ configFire = { storage = 8998, -- set free storage eventStorage = 6254, -- set free storage joinEventStorage = 5535, -- set free storage countPlayerStorage = 7373, -- set free storage exhaustStorage = 8387, maxPlayers = 50, -- max players in event teleportPos = {x=32164 ,y=32236,z=7}, -- position to which player is teleporting rewardID = {9693}, -- reward id which player can win (reward is random) minLevel = 80, -- minimum of level with which player can join to event days = { ['Monday'] = {'18:00:00'}, ['Tuesday'] = {'18:00:00'}, ['Wednesday'] = {'18:00:00'}, ['Thursday'] = {'18:00:00'}, ['Friday'] = {'18:00:00'}, ['Saturday'] = {'18:00:00'}, ['Sunday'] = {'18:00:00'} }, minPlayers = 2, delayTime = 1.0, -- time in which players who joined to event are teleporting to teleport position timeToStartEvent = 30 -- time from teleport to start event } arena = {fromPos = {x=32132,y=32207,z=7}, -- left top corner of event room toPos = {x=32198,y=32255,z=7} -- right bottom corner of event room } y, x = 1, 1 ]]> </config> <lib name="lms_fire_lib"> <![CDATA[ function doStartEvent() doSetStorage(configFire.joinEventStorage, -1) if configFire.minPlayers <= getStorage(configFire.countPlayerStorage) + 1 then for _, cid in ipairs(getPlayersOnline()) do if getCreatureStorage(cid, configFire.storage) == 1 then addEvent(doSetStorage, configFire.timeToStartEvent * 1000, configFire.eventStorage, 1) doCreatureSetStorage(cid, configFire.storage, -1) doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) doTeleportThing(cid, configFire.teleportPos) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'Get ready, The Event will start in ' .. configFire.timeToStartEvent .. ' seconds.') end end else for _, cid in ipairs(getPlayersOnline()) do if getCreatureStorage(cid, configFire.storage) == 1 then doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) end end doBroadcastMessage('The fire storm event has not started because not enough players joined.', MESSAGE_EVENT_ADVANCE) end doSetStorage(configFire.countPlayerStorage, 0) end ]]> </lib> <talkaction words="!event" event="script"> <![CDATA[ domodlib("lms_config") function onSay(cid, words, param) local storage, playerJoined, counter = getCreatureStorage(cid, configFire.storage), {}, getStorage(configFire.countPlayerStorage) if getStorage(configFire.joinEventStorage) == 1 then if(param == '') then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'Command param required (say: "!event join" or "!event leave").') end if configFire.minLevel ~= nil then if getPlayerLevel(cid) < configFire.minLevel then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You cannot join The Fire Storm Event if you do not have a require level. [' .. configFire.minLevel .. ']') end end if getTileInfo(getThingPos(cid)).protection ~= true then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You cannot join The Fire Storm Event if you are not in a Protection Zone.') end if exhaustion.check(cid, configFire.exhaustStorage) ~= false then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You must wait' .. exhaustion.get(cid, configFire.exhaustStorage) .. ' seconds.') end if param == 'join' then if storage <= 0 then if counter ~= configFire.maxPlayers - 1 then doSetStorage(configFire.countPlayerStorage, 0) for _, pid in ipairs(getPlayersOnline()) do if getCreatureStorage(pid, configFire.storage) > 0 then table.insert(playerJoined, pid) doSetStorage(configFire.countPlayerStorage, #playerJoined) end end local count = getStorage(configFire.countPlayerStorage) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, count == 0 and 'You are first in the fire storm event.' or count == 1 and 'There is 1 player in fire storm event.' or count > 1 and 'There are '.. count ..' players in fire storm event.') doCreatureSetStorage(cid, configFire.storage, 1) doCreatureSetNoMove(cid, true) local condition = createConditionObject(CONDITION_INFIGHT,-1) doAddCondition(cid, condition) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'You have joined the Fire Storm Event, You may not move until the Event has started please wait patiently...') else doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'Max players in event have been reached.') end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You already joined the Event, Wait patiently for it to start.') end elseif param == 'leave' then if storage > 0 then doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) doCreatureSetStorage(cid, configFire.storage, -1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have left the Fire Run Event, And you can move now.') else doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You cannot leave The Fire Storm Event.') end end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You cannot join/leave The Fire Storm Event yet.') end exhaustion.set(cid, configFire.exhaustStorage, 5) return true end ]]> </talkaction> <talkaction words="!startfire" access="5" event="script"> <![CDATA[ domodlib("lms_config") domodlib("lms_fire_lib") function onSay(cid, words, param) doBroadcastMessage('Fire Storm Event will start in ' .. configFire.delayTime .. ' minutes. You can join the Fire Storm Event by using this command "!event join".', MESSAGE_EVENT_ADVANCE) for _, pid in ipairs(getPlayersOnline()) do if getCreatureStorage(pid, configFire.storage) == 1 then doCreatureSetStorage(pid, configFire.storage, -1) doSetStorage(configFire.countPlayerStorage, 0) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)), true) end end doSetStorage(configFire.joinEventStorage, 1) addEvent(doStartEvent, configFire.delayTime * 60 * 1000) return true end ]]> </talkaction> <event type="think" name="LMS_Event_Start" event="script"> <![CDATA[ domodlib("lms_config") domodlib("lms_fire_lib") local daysOpen = {} for k, v in pairs(configFire.days) do table.insert(daysOpen, k) end function onThink(cid, interval) if isInArray(daysOpen, os.date('%A')) then if isInArray(configFire.days[os.date('%A')], os.date('%X', os.time())) then if getStorage(configFire.joinEventStorage) ~= 1 then doBroadcastMessage('Fire Storm Event will start in '.. configFire.delayTime ..' minutes. You can join the event by typing "!event join".', MESSAGE_EVENT_ADVANCE) for _, pid in ipairs(getPlayersOnline()) do if getCreatureStorage(pid, configFire.storage) == 1 then doCreatureSetStorage(pid, configFire.storage, -1) doSetStorage(configFire.countPlayerStorage, 0) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)), true) end end doSetStorage(configFire.joinEventStorage, 1) addEvent(doStartEvent, configFire.delayTime * 60 * 1000) end end end return true end ]]> </event> <globalevent name="LMS_Event" interval="1000" event="script"> <![CDATA[ domodlib("lms_config") function onThink(interval, lastExecution) if getStorage(configFire.eventStorage) == 1 then local xTable, yTable, playerTable = {}, {}, {} for x = arena.fromPos.x, arena.toPos.x do for y = arena.fromPos.y, arena.toPos.y do table.insert(xTable, x) table.insert(yTable, y) local n, i = getTileInfo({x=x, y=y, z=7}).creatures, 1 if n ~= 0 then local v = getThingfromPos({x=x, y=y, z=7, stackpos=i}).uid while v ~= 0 do if isPlayer(v) then table.insert(playerTable, v) if n == #playerTable then break end end i = i + 1 v = getThingfromPos({x=x, y=y, z=7, stackpos=i}).uid end end end end if #playerTable == 1 then local prize = math.random(#configFire.rewardID) doTeleportThing(playerTable[1], getTownTemplePosition(getPlayerTown(playerTable[1])), true) doPlayerAddItem(playerTable[1], configFire.rewardID[prize], 1) doPlayerSendTextMessage(playerTable[1], MESSAGE_EVENT_ADVANCE, 'You win. Your reward is ' .. getItemNameById(configFire.rewardID[prize]) .. '.') doBroadcastMessage('Fire Storm Event have finished. The winner is ' .. getCreatureName(playerTable[1]) .. '. Congratulations.', MESSAGE_EVENT_ADVANCE) doSetStorage(configFire.eventStorage, -1) x, y = 1, 1 elseif #playerTable > 1 then for a = 1, y do local pos = {x=xTable[math.random(#xTable)], y=yTable[math.random(#yTable)], z=7} for _, player in ipairs(playerTable) do local pPos = getThingPos(player) if pPos.x == pos.x and pPos.y == pos.y and pPos.z == pos.z then doCreatureAddHealth(player, - getCreatureMaxHealth(player)) end end 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) end if x == 5 * y then y = y + 1 end x = x + 1 else doBroadcastMessage('No one Won the Fire Storm Event.', MESSAGE_EVENT_ADVANCE) doSetStorage(configFire.eventStorage, -1) x, y = 1, 1 end end return true end ]]> </globalevent> <event type="login" name="LMS_Fire_login" event="script"> <![CDATA[ function onLogin(cid) if getCreatureStorage(cid, configFire.storage) == 1 then doCreatureSetStorage(cid, configFire.storage, -1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), true) doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) end registerCreatureEvent(cid, "LMS_fire_dead") registerCreatureEvent(cid, "LMS_Event_Start") return true end ]]> </event> <event type="statschange" name="LMS_fire_dead" event="script"> <![CDATA[ domodlib("lms_config") function onStatsChange(cid, attacker, type, combat, value) if type == 1 and getCreatureHealth(cid) <= value then if isInRange(getThingPos(cid), arena.fromPos, arena.toPos) then doCreatureAddHealth(cid, - getCreatureHealth(cid) + 1) doCreatureAddMana(cid, - getCreatureMana(cid)) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'You have lost the Fire Storm Event.') return false end end return true end ]]> </event> </mod>
Postado Dezembro 7, 2015 9 anos Bom dia Galerinha do Tibia King. Usei o evento civil war do Absolute e gostei muito, entao tentei usar o FireStorm, porém depois de fazer todas as mudancas (Coordenadas e rewards), eu tentei botar o otserver online. Ele comecou a me dar um erro. Sempre que alguém tentava logar eu ganhava o mesmo erro. Abaixo postarei a imagem no erro, e o meu mod que eu peguei do Absolute. Por favor, se alguém puder me ajudar, ficarei muito agradecido. w-fire.xml
Postado Janeiro 26, 2016 9 anos Em 04/06/2014 21:21:29, Absolute disse: Hello nação TK, de um tempo pra cá eu e o membro ViitinG resolvemos trabalhar em cima de um novo evento para vocês, é o FireStorm event! Eu vim trabalhando no script do evento em MODS e o Victor no mapa do mesmo. WTF DE FAIRIEISTORMIII IS IT? Pois é galera, o nome já diz tudo "Chuva de Fogos". Algum membro da equipe executará o comando !startfire para dar início ao evento, então irá aparecer uma mensagem para todos os jogadores do servidor que o evento Fire Storm foi aberto. Então os jogadores irão dizer: !joinfire para entrar no evento, os jogadores ficarão imóveis até que o evento comece, o jogador não poderá usar o comando quando estiver com battle fight. Pós dar o tempo para inciar o evento (configurável no script) os jogadores serão teleportados para a área específica do mesmo onde em 1 minuto começará a cair FOGOS do céu, onde os jogadores contaram com a habilidade e a sorte para fugir dos fogos. A regra é clara Casa Grande, foi atingido é teleportado para o templo com a mensagem "You loss" VOCÊ PERDEU BABY! O Último sobrevivente da arena é recompensado com X item automáticamente (configurável). Sem mimimi vamos ao que interessa: Na pasta incial do seu servidor há uma pasta com o nome de MODS, então crie um arquivo com o nome de w-fire.xml dentro dela com o conteúdo abaixo: <?xml version="1.0" encoding="UTF-8"?> <mod name="Fire_Storm_Event" version="0.1" author="Absolute Version" contact="lu.lukinha" enabled="yes"> <config name="config_fire_storm_event"> <![CDATA[ configFireStormEvent = { storages = { main = 'fireStormEventMain', -- set free storage player = 'fireStormEventPlayer', -- set free storage joining = 'fireStormEventJoining', -- set free storage exhaust = 'fireStormEventExhaust', -- set free storage countEvent = 'fireStormEventCountEvent' -- set free storage }, position = {x=890 ,y=993,z=7}, -- posiotion to which player is teleporting room = { from = {x=736,y=933,z=7}, -- left top corner of event room to = {x=781,y=955,z=7} -- right bottom corner of event room }, rewards = {8858, 2346, 2538, 2437}, -- reward id which player can win (reward is random) players = { max = 80, min = 2, minLevel = 100 }, days = { ['Tuesday'] = {'19:59:20'}, ['Thursday'] = {'19:59:20'}, ['Sunday'] = {'19:59:20'} }, fireStormDelay = 1000, -- milisecond delayTime = 5.0, -- time in which players who joined to event are teleporting to teleport position startEvent = 5 -- time from teleport to start event text = '-PL-\nAby wygrac i otrzymac nagrode, utrzymaj sie jak najdluzej na arenie.\n\n-ENG-\nTo win and get a Rewards, to stay as long as possible in the arena.' } y, x = 1, 1 -- don't change it ]]> </config> <lib name="lib_fire_storm_event"> <![CDATA[ function doStartFireStormEvent() doSetStorage(configFireStormEvent.storages.joining, -1) if configFireStormEvent.players.min <= doCountPlayersFireStormEvent() then for _, cid in ipairs(getPlayersOnline()) do if getCreatureStorage(cid, configFireStormEvent.storages.player) > 0 then doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) doTeleportThing(cid, configFireStormEvent.position) doCreatureSetStorage(cid, configFireStormEvent.storages.player, -1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'Get ready. Fire Storm Event start in '..configFireStormEvent.startEvent..' seconds.') end end addEvent(doSetStorage, configFireStormEvent.startEvent * 1000, configFireStormEvent.storages.main, 1) addEvent(doRepeatCheckFireStorm, configFireStormEvent.startEvent * 1000 + 2000) doBroadcastMessage('Fire Storm Event has started. LET\'S GO!') else for _, cid in ipairs(getPlayersOnline()) do if getCreatureStorage(cid, configFireStormEvent.storages.player) > 0 then doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) end end doBroadcastMessage('Fire Storm hasn\'t started beacuse there were not enough players.') end end function doRepeatCheckFireStorm() if getStorage(configFireStormEvent.storages.main) > 0 then local xTable, yTable, playerTable = {}, {}, {} for x = configFireStormEvent.room.from.x, configFireStormEvent.room.to.x do for y = configFireStormEvent.room.from.y, configFireStormEvent.room.to.y do table.insert(xTable, x) table.insert(yTable, y) local n, i = getTileInfo({x=x, y=y, z=configFireStormEvent.room.to.z}).creatures, 1 if n ~= 0 then local v = getThingfromPos({x=x, y=y, z=configFireStormEvent.room.to.z, stackpos=i}).uid while v ~= 0 do if isPlayer(v) then table.insert(playerTable, v) if n == #playerTable then break end end i = i + 1 v = getThingfromPos({x=x, y=y, z=configFireStormEvent.room.to.z, stackpos=i}).uid end end end end if #playerTable == 1 then local prize = math.random(#configFireStormEvent.rewards) doCreatureAddHealth(playerTable[1], getCreatureMaxHealth(playerTable[1]) - getCreatureHealth(playerTable[1])) doCreatureAddMana(playerTable[1], getCreatureMaxMana(playerTable[1]) - getCreatureMana(playerTable[1])) doTeleportThing(playerTable[1], getTownTemplePosition(getPlayerTown(playerTable[1])), true) doPlayerAddItem(playerTable[1], configFireStormEvent.rewards[prize], 1) doPlayerSendTextMessage(playerTable[1], MESSAGE_EVENT_ADVANCE, 'You win! You have received ' .. getItemNameById(configFireStormEvent.rewards[prize]) .. ' as reward.') doBroadcastMessage('Fire Storm Event has finished. The winner is ' .. getCreatureName(playerTable[1]) .. '. Congratulations.') doSetStorage(configFireStormEvent.storages.main, -1) db.query("INSERT INTO `events` (`event_name`, `winner_name`, `won_item`, `time_win`) VALUES (\"Fire\", \"" .. getCreatureName(playerTable[1]) .. "\", \"" .. getItemNameById(configFireStormEvent.rewards[prize]) .. "\", " .. getStorage(configFireStormEvent.storages.countEvent) ..");") doSetStorage(configFireStormEvent.storages.countEvent, getStorage(configFireStormEvent.storages.countEvent) + 1) x, y = 1, 1 elseif #playerTable > 1 then for a = 1, y do addEvent( function() local pos = {x=xTable[math.random(#xTable)], y=yTable[math.random(#yTable)], z=7} for _, player in ipairs(playerTable) do local pPos = getThingPos(player) if pPos.x == pos.x and pPos.y == pos.y and pPos.z == pos.z then doCreatureAddHealth(player, - getCreatureMaxHealth(player)) end end 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) end, math.random(100,1000) ) end if x == 5 * y then y = y + 1 end x = x + 1 else doBroadcastMessage('No one have won in Fire Storm Event.') doSetStorage(configFireStormEvent.storages.main, -1) doSetStorage(configFireStormEvent.storages.countEvent, getStorage(configFireStormEvent.storages.countEvent) + 1) x, y = 1, 1 end addEvent(doRepeatCheckFireStorm, configFireStormEvent.fireStormDelay) end end function doCountPlayersFireStormEvent() local x = 0 for _, cid in ipairs(getPlayersOnline()) do if getCreatureStorage(cid, configFireStormEvent.storages.player) > 0 then x = x + 1 end end return x end function doStartCountingFireStormEvent(x) if configFireStormEvent.delayTime-x > 0 then doBroadcastMessage('Fire Storm Event will start in '..configFireStormEvent.delayTime-x..' minutes. You can join to the event by say "!fire join".') addEvent(doStartCountingFireStormEvent, 60*1000, x+1) end end ]]> </lib> <talkaction words="!fire" event="script"> <![CDATA[ domodlib("config_fire_storm_event") function onSay(cid, words, param) if getStorage(configFireStormEvent.storages.joining) ~= 1 then return doPlayerSendCancel(cid, 'Fire Storm Event hasn\'t started yet.') elseif param == '' then return doPlayerSendCancel(cid, 'Command param required (say: "!fire join" or "!fire leave.").') elseif getPlayerLevel(cid) < configFireStormEvent.players.minLevel then return doPlayerSendCancel(cid, 'You can\'t join to the event if you don\'t have a require '..configFireStormEvent.players.minLevel..' level.') elseif getTileInfo(getThingPos(cid)).protection ~= true then return doPlayerSendCancel(cid, 'You can\'t join to the event if you aren\'t in protection zone.') elseif exhaustion.check(cid, configFireStormEvent.storages.exhaust) ~= false then return doPlayerSendCancel(cid, 'You must wait '..exhaustion.get(cid, configFireStormEvent.storages.exhaust)..' seconds to use this command again.') end if param == 'join' then if getCreatureStorage(cid, configFireStormEvent.storages.player) > 0 then return doPlayerSendCancel(cid, 'You have arleady joined to event. Wait patiently for start.') elseif doCountPlayersFireStormEvent() == configFireStormEvent.players.max then return doPlayerSendCancel(cid, 'Max players in the event have been reached.') end doCreatureSetNoMove(cid, true) doPlayerPopupFYI(cid, configFireStormEvent.text) doCreatureSetStorage(cid, configFireStormEvent.storages.player, 1) doAddCondition(cid, createConditionObject(CONDITION_INFIGHT, -1)) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'You have joined to Fire Storm Event. You can\'t move until event don\'t start. Wait patiently for the event start.') doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have joined to Fire Storm Event.') elseif param == 'leave' then if getCreatureStorage(cid, configFireStormEvent.storages.player) <= 0 then return doPlayerSendCancel(cid, 'You can\'t leave from the event if you don\'t join.') end doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) doCreatureSetStorage(cid, configFireStormEvent.storages.player, -1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You have left from the Fire Storm Event.') end exhaustion.set(cid, configFireStormEvent.storages.exhaust, 5) return true end ]]> </talkaction> <talkaction words="!startfire" access="4" event="script"> <![CDATA[ domodlib("config_fire_storm_event") domodlib("lib_fire_storm_event") function onSay(cid, words, param) if getStorage(configFireStormEvent.storages.main) > 0 then return doPlayerSendCancel(cid, 'Fire Storm Event is already running.') end doStartCountingFireStormEvent(0) for _, pid in ipairs(getPlayersOnline()) do if getCreatureStorage(pid, configFireStormEvent.storages.player) > 0 then doCreatureSetStorage(pid, configFireStormEvent.storages.player, -1) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)), true) end end doSetStorage(configFireStormEvent.storages.joining, 1) addEvent(doStartFireStormEvent, configFireStormEvent.delayTime * 60 * 1000) return true end ]]> </talkaction> <globalevent name="Fire_Storm_Event_Days" interval="1000" event="script"> <![CDATA[ domodlib("config_fire_storm_event") domodlib("lib_fire_storm_event") local daysOpen = {} for k, v in pairs(configFireStormEvent.days) do table.insert(daysOpen, k) end function onThink(interval) if isInArray(daysOpen, os.date('%A')) then if isInArray(configFireStormEvent.days[os.date('%A')], os.date('%X', os.time())) then if getStorage(configFireStormEvent.storages.joining) ~= 1 then doStartCountingFireStormEvent(0) for _, pid in ipairs(getPlayersOnline()) do if getCreatureStorage(pid, configFireStormEvent.storages.player) > 0 then doCreatureSetStorage(pid, configFireStormEvent.storages.player, -1) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)), true) end end doSetStorage(configFireStormEvent.storages.joining, 1) addEvent(doStartFireStormEvent, configFireStormEvent.delayTime * 60 * 1000) end end end return true end ]]> </globalevent> <event type="statschange" name="Fire_Storm_Event_Dead" event="script"> <![CDATA[ domodlib("config_fire_storm_event") function onStatsChange(cid, attacker, type, combat, value) if type == 1 and getCreatureHealth(cid) <= value then if isInRange(getThingPos(cid), configFireStormEvent.room.from, configFireStormEvent.room.to) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid)) doCreatureAddMana(cid, getCreatureMaxMana(cid) - getCreatureMana(cid)) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You loss.') return false end end return true end ]]> </event> <event type="login" name="Fire_Storm_Event_Login" event="script"> <![CDATA[ domodlib("config_fire_storm_event") function onLogin(cid) if getCreatureStorage(cid, configFireStormEvent.storages.player) > 0 then doCreatureSetStorage(cid, configFireStormEvent.storages.player, -1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), true) doCreatureSetNoMove(cid, false) doRemoveCondition(cid, CONDITION_INFIGHT) end registerCreatureEvent(cid, 'Fire_Storm_Event_Dead') return true end ]]> </event> <globalevent name="Fire_Storm_Event_Start" type="startup" event="script"> <![CDATA[ domodlib("config_fire_storm_event") function onStartup() doSetStorage(configFireStormEvent.storages.main, -1) doSetStorage(configFireStormEvent.storages.joining, -1) return true end ]]> </globalevent> </mod> Como configurar: position = {x=890 ,y=993,z=7}, -- posiotion to which player is teleporting - Aqui você deve colocar o centro da posição do mapa que o linduxo do meu querido amigo e parceiro vosso disponibiliza AQUI from = {x=736,y=933,z=7}, -- left top corner of event room - Aqui você deve colocar a posição superior esquerda da área do evento, como exemplo na imagem: Conteúdo Oculto to = {x=781,y=955,z=7} -- right bottom corner of event room - Aqui você deve colocar a posição inferior direita da área do evento, como exemplo na imagem: Conteúdo Oculto Configurar prêmio: rewards = {8858, 2346, 2538, 2437}, -- reward id which player can win (reward is random) - onde está os números de exemplo 8858, 2346, 2538, 2437 são os IDS dos items que você colocará como premiação, o player ganhará apenas UM item que pode ser um dos 4 (sorteio). Caso você queira colocar apenas 1 item específico altere para: rewards = {8858}, -- reward id which player can win (reward is random) Permissão para abrir o evento: <talkaction words="!startfire" access="4" event="script"> - em acess="4" você poderá alterar o membro da staff que poderá abrir, o número 4 indica que CM e ADMS poderão abrir, caso troque para 3, GM'S, CM'S E ADM'S poderão executar o comando !startfire para abrir o evento quando quiser. Configuração automática: days = { ['Tuesday'] = {'19:59:20'}, ['Thursday'] = {'19:59:20'}, ['Sunday'] = {'19:59:20'} Simples, os dias são colocados em inglês, então basta ajustar, por exemplo, você quer que o evento ocorra na segunda-feira ás 19:00, segue um exemplo: ['Monday'] = {'19:00:00'}, Lembrando que o dia e horário deve corresponder com o horário atual da máquina onde roda o servidor. É isso meus queridos, na próxima versão do evento colocarei para entrar no mesmo por teleport. Não esqueçam de baixar e usar o mapa que recomendo do Victor aqui. É ideal para o evento =) Qualquer dúvida não deixe de me perguntar. Créditos:CollocorpuseK base do evento Absolute (adaptação, funções e abertura por comando) VitiinG (mapa) EVENTO SUPER BACANA E INTERESSANTE PARA OTS SERVER!, MAIS VOCE PODERIA ARRUMAR SCRIPTS, ESTA TODO BAGUNÇADO!!
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.