kozmo
Member
- Joined
- Jan 30, 2009
- Messages
- 444
- Solutions
- 2
- Reaction score
- 23
I had this mod working fine in my 9.1 server , i switched and started working on a 8.6 server i just recently tried adding this event/mod in and it all seems to work fine accept after it says Get ready, The Event will start in 30 seconds... 30 seconds later the fire does not even start dropping so i have no clue why this wouldn't be working, If anyone knows why this is not working or what i have to edit in the script to fix it that would help a lot.
XML:
<?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=1110 ,y=1174,z=7}, -- position to which player is teleporting
rewardID = {9693}, -- reward id which player can win (reward is random)
minLevel = 1, -- 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 = 3.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=1090,y=1165,z=7}, -- left top corner of event room
toPos = {x=1132,y=1182,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>
Last edited by a moderator: