Postado Maio 7, 2017 8 anos Aparece a mensagem que o evento vai começar, os jogadores digitam !Event Join e ficam aguardando, na hora que os jogadores são levados para o local do evento, ocorre o seguinte erro no console: Depois disso eles ficam lá dentro do local, porem não ocorre nada, nenhuma objeto ou fogo ataca eles. O QUE PODE SER? MOD: Spoiler <?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=395, y=164, z=4}, -- position to which player is teleporting rewardID = {9693}, -- reward id which player can win (reward is random) minLevel = 8, -- 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'] = {'20:30: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=369,y=134,z=4}, -- left top corner of event room toPos = {x=431,y=119,z=4} -- 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> Att; FireStorm.xml
Postado Maio 8, 2017 8 anos Spoiler <?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=395, y=164, z=4}, -- position to which player is teleporting rewardID = {9693}, -- reward id which player can win (reward is random) minLevel = 8, -- 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'] = {'20:30: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=369,y=134,z=4}, -- left top corner of event room toPos = {x=431,y=119,z=4} -- 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") local condition = createConditionObject(CONDITION_INFIGHT,-1) 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) 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 Maio 8, 2017 8 anos Autor 17 horas atrás, MaTTch disse: Ocultar conteúdo <?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=395, y=164, z=4}, -- position to which player is teleporting rewardID = {9693}, -- reward id which player can win (reward is random) minLevel = 8, -- 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'] = {'20:30: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=369,y=134,z=4}, -- left top corner of event room toPos = {x=431,y=119,z=4} -- 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") local condition = createConditionObject(CONDITION_INFIGHT,-1) 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) 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> Resolveu as mensagem no distro, funciona tudo, porem quando começa não acontece nada, os fogos não começam. Sabe oque poderia ser?
Postado Maio 9, 2017 8 anos 1 hora atrás, davidguimaraesdrum disse: Resolveu as mensagem no distro, funciona tudo, porem quando começa não acontece nada, os fogos não começam. Sabe oque poderia ser? Você configurou as positions dos cantos do mapa? Superior Esquerdo e Inferior Direito? arena = {fromPos = {x=369,y=134,z=4}, -- left top corner of event room toPos = {x=431,y=119,z=4} -- right bottom corner of event room Editado Maio 9, 2017 8 anos por Skipper (veja o histórico de edições)
Postado Maio 9, 2017 8 anos Autor 22 horas atrás, Skipper disse: Você configurou as positions dos cantos do mapa? Superior Esquerdo e Inferior Direito? arena = {fromPos = {x=369,y=134,z=4}, -- left top corner of event room toPos = {x=431,y=119,z=4} -- right bottom corner of event room ToPos estava errada, vou testa e já dou REP+! Realizei o teste com as positions correta, porem nada ocorre dentro do evento, falta os fogos ou o objetivo pra atacar os players. alguma dica? Editado Maio 9, 2017 8 anos por davidguimaraesdrum (veja o histórico de edições)
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.