zombie event pod 0.4

dima0909

Banned User
Joined
Oct 18, 2012
Messages
271
Best answers
0
Reaction score
0
ten mod up - same negatywne komentarze tam są wiec zapewne nie jest dobry..
ja użyłem znowuż tego:
http://otland.net/f82/zombie-event-new-version-bug-free-updated-128664/
ale...
nie działa...tzn te napisy czerwone itd są...
ale zombie wcale się nie respią....a nawet jak ręcznie przywoluje to po zabiciu zombie nic sie nie dzieje...

jest tylko ten napis i nic wiecej sie nie dzieje:
Zombie Arena Event teleport is opened. We are waiting for 1 players to start.
 

_Dreamer

Member
Joined
Jan 23, 2010
Messages
275
Best answers
0
Reaction score
1
Location
Poznań , Poland
Proszę cię bardzo... jest to mod.
Musisz sobie dodać tylko zombie do monsters :)

Code:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="LMS_Event" version="2.0" author="Hackier" contact="[email protected]" enabled="yes">

	<config name="Lms_setup">
		<![CDATA[
			setup = {
				storage = 7532,  -- set free storage
				eventStorage = 5373,  -- set free storage
				joinEventStorage = 4534,  -- set free storage
				countPlayerStorage = 4553,  -- set free storage
				killStorage = 4656, -- set free storage
				exhaustStorage = 6456,
				whichEventStorage = 5486,

				maxPlayers = 20,  -- max players in event
				teleportPosLms = {x=880, y=993, z=7}, -- posiotion to which player is teleporting
				rewardID = {7958, 11366, 2349, 7450}, -- reward id which player can win (reward is random)
				minLvl = 100, -- minimum of level with which player can join to event
				pvp = false,
				days = {['Tuesday'] = {'21:59:20'}, 
					['Thursday'] = {'21:59:20'}, 
					['Friday'] = {'21:59:20'}, 
					['Sunday'] = {'21:59:20'}},
				minPlayers = 9,
				-- NEW --
				numberOfCreateMonsters = 5,
				---------
				
				text = '-PL-\nAby wygrac i otrzymac nagrode, zabij jak najwieksza liczbe zombie przez 20min lub pozostan sam na arenie.\n\n-ENG-\nTo win and get a reward, kill as many zombies for 20 minutes or stay the same in the arena.',

				monsterName = {'Scratchclaw', 'Propell Zombie', 'Vile Centurion', 'Mongrel Man', 'Daidalost'}, -- name of monsters which is creating in event

				delayTime = 1.0, -- time in which players who joined to event are teleporting to teleport position [[[miuntes]]]
				timeToStartEvent = 5, -- time from teleport to start event [[[seconds]]]
				timeToStopEvent = 9200 -- [[[seconds]]]
			}

			room = {fromPos = {x=677, y=914, z=7}, -- left top corner of event room
					toPos = {x=713, y=962, z=7} -- right bottom corner of event room
			}
		]]>
	</config>
	
	<lib name="Lms_lib">
		<![CDATA[			
			function doStopEvent()
				if getStorage(setup.eventStorage) == 1 then
					local playerTable, creatureTable = {}, {}

					for x = room.fromPos.x, room.toPos.x do
						for y = room.fromPos.y, room.toPos.y do
							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
									elseif isMonster(v) then
										table.insert(creatureTable, v)
										if n == #creatureTable 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
						table.sort(playerTable, function(a, b) return (getCreatureStorage(a, setup.killStorage)) > (getCreatureStorage(b, setup.killStorage)) end)
						
						local prize = math.random(#setup.rewardID)
						
						addEvent(doTeleportThing, 200, playerTable[1], getTownTemplePosition(getPlayerTown(playerTable[1])), true)
						doCreatureSetStorage(playerTable[1], setup.killStorage, 0)
						doPlayerAddItem(playerTable[1], setup.rewardID[prize], 1)
						doCreatureAddHealth(playerTable[1], getCreatureMaxHealth(playerTable[1]) - getCreatureHealth(playerTable[1]))
						doCreatureAddMana(playerTable[1], getCreatureMaxMana(playerTable[1]) - getCreatureMana(playerTable[1]))
						doPlayerSendTextMessage(playerTable[1], MESSAGE_EVENT_ADVANCE, 'You win! Your reward is ' .. getItemNameById(setup.rewardID[prize]) .. '.')
						doBroadcastMessage('Zombie Plague Attack have finished. The winner are ' .. getCreatureName(playerTable[1]) .. '. Congratulations.', MESSAGE_EVENT_ADVANCE)
						doSetStorage(setup.eventStorage, -1)
						
						db.executeQuery("INSERT INTO `events` (`event_name`, `winner_name`, `won_item`, `time_win`) VALUES (\"Zombie\", \"" .. getCreatureName(playerTable[1]) .. "\", \"" .. getItemNameById(setup.rewardID[prize]) .. "\", " .. getStorage(setup.whichEventStorage) ..");")

						for i = 2, #playerTable do
							doCreatureAddHealth(playerTable[i], - getCreatureHealth(playerTable[i]) + 1)
							doCreatureAddMana(playerTable[i], - getCreatureMana(playerTable[i]))
							doTeleportThing(playerTable[i], getTownTemplePosition(getPlayerTown(playerTable[i])))
							doPlayerSendTextMessage(playerTable[i], MESSAGE_EVENT_ADVANCE, 'You loss. You have been infected!')
							doSendMagicEffect(getThingPos(playerTable[i]), 31)
							doCreatureSetStorage(playerTable[i], setup.killStorage, 0)
						end

						for i = 1, #creatureTable do
							if isMonster(creatureTable[i]) then
								doRemoveCreature(creatureTable[i])
							end
						end
						
						doSetStorage(setup.whichEventStorage, getStorage(setup.whichEventStorage) + 1)
					elseif #playerTable == 0 then
						for i = 1, #creatureTable do
							if isMonster(creatureTable[i]) then
								doRemoveCreature(creatureTable[i])
							end
						end
					
						doBroadcastMessage('No one win in Zombie Plague Attack.', MESSAGE_EVENT_ADVANCE)
						doSetStorage(setup.eventStorage, -1)
						
						doSetStorage(setup.whichEventStorage, getStorage(setup.whichEventStorage) + 1)
					end
				end
			end

			function doStartEventLMS()
				doSetStorage(setup.joinEventStorage, -1)

				if setup.minPlayers <= getStorage(setup.countPlayerStorage) then
					for _, cid in ipairs(getPlayersOnline()) do
						if getCreatureStorage(cid, setup.storage) == 1 then
							doCreatureSetStorage(cid, setup.storage, -1)
							doTeleportThing(cid, setup.teleportPosLms)
							doCreatureSetNoMove(cid, false)
							doRemoveCondition(cid, CONDITION_INFIGHT)
							
							doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'Get ready. Event start in ' .. setup.timeToStartEvent .. ' sec.')
						end
					end
					addEvent(doSetStorage, setup.timeToStartEvent * 1000, setup.eventStorage, 1)
					addEvent(doStopEvent, setup.timeToStopEvent * 1000)
				else
					for _, cid in ipairs(getPlayersOnline()) do
						if getCreatureStorage(cid, setup.storage) == 1 then
							doCreatureSetNoMove(cid, false)
							doRemoveCondition(cid, CONDITION_INFIGHT)
						end
					end
					doBroadcastMessage('Zombie Plague Attack have started beacuse there were enough players.', MESSAGE_EVENT_ADVANCE)
				end
				doSetStorage(setup.countPlayerStorage, 0)
			end
		]]>
	</lib>

	<talkaction words="!zombie" event="script">
		<![CDATA[
			domodlib("Lms_setup")

			function onSay(cid, words, param)
				local storage, playerJoined, counter = getCreatureStorage(cid, setup.storage), {}, getStorage(setup.countPlayerStorage)

				if getStorage(setup.joinEventStorage) == 1 then
					if(param == '') then
						return doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'Command param required (say: "!zombie join" or "!zombie leave").')
					end

					if getPlayerLevel(cid) < setup.minLvl then
						return doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You can not join to event if you do not have a require level. [' .. setup.minLvl .. ']')
					end
					
					if getTileInfo(getThingPos(cid)).protection ~= true then
						return doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You can not join to event if are not in protection zone.')
					end
					
					if exhaustion.check(cid, setup.exhaustStorage) ~= false then
						return doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You must wait: ' .. exhaustion.get(cid, setup.exhaustStorage) .. ' sec')
					end

					if param == 'join' then
						if storage <= 0 then
							if counter ~= setup.maxPlayers - 1 then
								doSetStorage(setup.countPlayerStorage, 0)
								for _, pid in ipairs(getPlayersOnline()) do
									if getCreatureStorage(pid, setup.storage) > 0 then
										table.insert(playerJoined, pid)
										doSetStorage(setup.countPlayerStorage, #playerJoined)
									end
								end
								local count = getStorage(setup.countPlayerStorage)
								doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, count == 0 and 'You are first in event.' or count == 1 and 'There is 1 player in event.' or count > 1 and 'There are '.. count ..' players in event.')
								doCreatureSetStorage(cid, setup.storage, 1)
								
								doCreatureSetNoMove(cid, true)
								local condition = createConditionObject(CONDITION_INFIGHT,-1)
								
								doAddCondition(cid, condition)
								doPlayerPopupFYI(cid, setup.text)
								doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'You have joined to event. You can not move until event do not start. Wait patiently for event start.')
							else
								doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'Max players in event have been reached.')
							end
						else
							doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You arleady joined to event. Wait patiently for start.')
						end
					elseif param == 'leave' then
						if storage > 0 then
							doCreatureSetNoMove(cid, false)
							doRemoveCondition(cid, CONDITION_INFIGHT)
							doCreatureSetStorage(cid, setup.storage, -1)
							doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, 'You leave from event.')
						else
							doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You can not leave from event.')
						end
					end
				else
					doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, 'You can not join/leave to event yet.')
				end
				
				exhaustion.set(cid, setup.exhaustStorage, 5)
				
				return true
			end
		]]>
	</talkaction>
	
	<talkaction words="!startzombie" access="5" event="script">
		<![CDATA[
			domodlib("Lms_setup")
			domodlib("Lms_lib")

			function onSay(cid, words, param)
				doBroadcastMessage('Zombie Plague Attack will start in ' .. setup.delayTime .. ' min. You can join to event by say "!zombie join".', MESSAGE_EVENT_ADVANCE)

				for _, pid in ipairs(getPlayersOnline()) do
					if getCreatureStorage(pid, setup.storage) == 1 then
						doCreatureSetStorage(pid, setup.storage, -1)
						doSetStorage(setup.countPlayerStorage, 0)
						doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)), true)
						doCreatureSetStorage(pid, setup.killStorage, 0)
					end
				end

				doSetStorage(setup.joinEventStorage, 1)
				addEvent(doStartEventLMS, setup.delayTime * 60 * 1000)
				return true
			end
		]]>
	</talkaction>

	<event type="think" name="LMS_Boss_Event_Start" event="script">
		<![CDATA[
			domodlib("Lms_setup")
			domodlib("Lms_lib")
			
			local daysOpen = {}
			
			for k, v in pairs(setup.days) do
				table.insert(daysOpen, k)
			end
			
			function onThink(cid, interval)
				if isInArray(daysOpen, os.date('%A')) then
					if isInArray(setup.days[os.date('%A')], os.date('%X', os.time())) then
						if getStorage(setup.joinEventStorage) ~= 1 then
							doBroadcastMessage('Zombie Plague Attack will start in ' .. setup.delayTime .. ' min. You can join to event by say "!zombie join".', MESSAGE_EVENT_ADVANCE)

							for _, pid in ipairs(getPlayersOnline()) do
								if getCreatureStorage(pid, setup.storage) == 1 then
									doCreatureSetStorage(pid, setup.storage, -1)
									doSetStorage(setup.countPlayerStorage, 0)
									doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid)), true)
									doCreatureSetStorage(pid, setup.killStorage, 0)
								end
							end

							doSetStorage(setup.joinEventStorage, 1)
							addEvent(doStartEventLMS, setup.delayTime * 60 * 1000)
						end
					end
				end

				return true
			end
		]]>
	</event>

	<globalevent name="LMS_Event_CheckPlayer" interval="1500" event="script">
		<![CDATA[
			domodlib("Lms_setup")

			function onThink(interval, lastExecution)
				if getStorage(setup.eventStorage) == 1 then
					local playerTable, creatureTable = {}, {}

					for x = room.fromPos.x, room.toPos.x do
						for y = room.fromPos.y, room.toPos.y do
							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
									elseif isMonster(v) then
										table.insert(creatureTable, v)
										if n == #creatureTable 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(#setup.rewardID)
						
						addEvent(doTeleportThing, 200, playerTable[1], getTownTemplePosition(getPlayerTown(playerTable[1])), true)
						doPlayerAddItem(playerTable[1], setup.rewardID[prize], 1)
						doCreatureSetStorage(playerTable[1], setup.killStorage, 0)
						doCreatureAddHealth(playerTable[1], getCreatureMaxHealth(playerTable[1]) - getCreatureHealth(playerTable[1]))
						doCreatureAddMana(playerTable[1], getCreatureMaxMana(playerTable[1]) - getCreatureMana(playerTable[1]))
						doPlayerSendTextMessage(playerTable[1], MESSAGE_EVENT_ADVANCE, 'You win! Your reward is ' .. getItemNameById(setup.rewardID[prize]) .. '.')
						doBroadcastMessage('Zombie Plague Attack have finished. The winner is ' .. getCreatureName(playerTable[1]) .. '. Congratulations.', MESSAGE_EVENT_ADVANCE)
						doSetStorage(setup.eventStorage, -1)
						db.executeQuery("INSERT INTO `events` (`event_name`, `winner_name`, `won_item`, `time_win`) VALUES (\"Zombie\", \"" .. getCreatureName(playerTable[1]) .. "\", \"" .. getItemNameById(setup.rewardID[prize]) .. "\", " .. getStorage(setup.whichEventStorage) ..");")
						
						for i = 1, #creatureTable do
							if isMonster(creatureTable[i]) then
								doRemoveCreature(creatureTable[i])
							end
						end
						
						doSetStorage(setup.whichEventStorage, getStorage(setup.whichEventStorage) + 1)
					elseif #playerTable == 0 then
						for i = 1, #creatureTable do
							if isMonster(creatureTable[i]) then
								doRemoveCreature(creatureTable[i])
							end
						end
					
						doBroadcastMessage('No one win in Zombie Plague Attack.', MESSAGE_EVENT_ADVANCE)
						doSetStorage(setup.eventStorage, -1)
						
						doSetStorage(setup.whichEventStorage, getStorage(setup.whichEventStorage) + 1)
					end
				end
				return true
			end
		]]>
	</globalevent>

	<globalevent name="LMS_Event_CreateMonster" interval="500" event="script">
		<![CDATA[
			domodlib("Lms_setup")

			function onThink(interval, lastExecution)
				if getStorage(setup.eventStorage) == 1 then
					local xTable, yTable = {}, {}

					for x = room.fromPos.x, room.toPos.x do
						for y = room.fromPos.y, room.toPos.y do
							table.insert(xTable, x)
							table.insert(yTable, y)
						end
					end

					local pos, create = {x=xTable[math.random(#xTable)], y=yTable[math.random(#yTable)], z=7}
					local monster = getCreatureByName(setup.monsterName[math.random(#setup.monsterName)])
					
					for q = 1, setup.numberOfCreateMonsters do
						if isCreature(monster) then
							if doTileQueryAdd(monster, pos) == RETURNVALUE_NOERROR then
								doCreateMonster(setup.monsterName[math.random(#setup.monsterName)], pos, false, false, false)
								doSendMagicEffect(pos, 66)
							end
						end
					end
				end
				return true
			end
		]]>
	</globalevent>

	<event type="login" name="LMS_login" event="script">
		<![CDATA[
			domodlib("Lms_setup")

			function onLogin(cid)
				if getCreatureStorage(cid, setup.storage) == 1 then
					doCreatureSetStorage(cid, setup.storage, -1)
					doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), true)
					doCreatureSetNoMove(cid, false)
					doRemoveCondition(cid, CONDITION_INFIGHT)
					doCreatureSetStorage(cid, setup.killStorage, 0)
				end
				
				registerCreatureEvent(cid, "LMS_Boss_Event_Start")
				registerCreatureEvent(cid, "LMS_dead")
				registerCreatureEvent(cid, "LMS_kill")
				return true
			end
		]]>
	</event>

	<event type="statschange" name="LMS_dead" event="script">
		<![CDATA[
			domodlib("Lms_setup")

			function onStatsChange(cid, attacker, type, combat, value)
				if type == 1 and getCreatureHealth(cid) <= value then
					if isInRange(getThingPos(cid), room.fromPos, room.toPos) then
						if isPlayer(cid) then
							doCreatureAddHealth(cid, - getCreatureHealth(cid) + 1)
							doCreatureAddMana(cid, - getCreatureMana(cid))
							addEvent(doTeleportThing, 200, cid, getTownTemplePosition(getPlayerTown(cid)))
							doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, 'You loss. You have been infected.')
							doSendAnimatedText(getThingPos(cid), value, TEXTCOLOR_RED)
							doSendMagicEffect(getThingPos(cid), 10)
							doCreatureSetStorage(cid, setup.killStorage, 0)
							return false
						end
					end
				elseif setup.pvp ~= true and type == 1 and isPlayer(attacker) and isPlayer(cid) then
					if isInRange(getThingPos(cid), room.fromPos, room.toPos) then
						return false
					end
				end
				return true
			end
		]]>
	</event>

	<event type="kill" name="LMS_kill" event="script">
		<![CDATA[
			domodlib("Lms_setup")

			function onKill(cid, target, damage, flags)
				if isInRange(getThingPos(cid), room.fromPos, room.toPos) then
					if isInArray(setup.monsterName, getCreatureName(target)) then
						doCreatureSetStorage(cid, setup.killStorage, math.max(0, getCreatureStorage(cid, setup.killStorage) + 1))
					end
				end
				return true
			end
		]]>
	</event>
</mod>
 

_Dreamer

Member
Joined
Jan 23, 2010
Messages
275
Best answers
0
Reaction score
1
Location
Poznań , Poland
Po co mam mu poprawiac kod skoro daje mu dzialajacy mod do skonfigurowania?
Mod dziala 100%, to jest ten z serwera otsmateria.
 
OP
K

konolo22

Banned User
Joined
Jan 18, 2013
Messages
86
Best answers
0
Reaction score
1
a czy mógłbyś wytłumaczyć jak go skonfigurować oraz jak on działa ? (tzn czy się wchodzi do teleportu czy za pomocą komendy itd)..
bo już walczyłem z wieloma skryptami i nic ;p

- - - Updated - - -

Po co mam mu poprawiac kod skoro daje mu dzialajacy mod do skonfigurowania?
Mod dziala 100%, to jest ten z serwera otsmateria.
coś te 100% nie zadziałało...

event nie zdąży się rozpocząć jak odrazu się kończy...(jedynie co w nim dziala to to że jak wpisze komende "!zombie join" to paraluje mnie na 1 min , następnie daje tp do rooma i....


a oto moje konfiguracje:
<config name="Lms_setup">
<![CDATA[
setup = {
storage = 7532, -- set free storage
eventStorage = 5373, -- set free storage
joinEventStorage = 4534, -- set free storage
countPlayerStorage = 4553, -- set free storage
killStorage = 4656, -- set free storage
exhaustStorage = 6456,
whichEventStorage = 5486,

maxPlayers = 20, -- max players in event
teleportPosLms = {x=842, y=1029, z=9}, -- posiotion to which player is teleporting miejsce gdzie ma tp gracza na event
rewardID = {7958, 11366, 2349, 7450}, -- reward id which player can win (reward is random)
minLvl = 100, -- minimum of level with which player can join to event
pvp = false,
days = {['Tuesday'] = {'21:59:20'},
['Thursday'] = {'21:59:20'},
['Friday'] = {'21:59:20'},
['Sunday'] = {'21:59:20'}},
minPlayers = 1,
-- NEW --
numberOfCreateMonsters = 5,
---------

text = '-PL-\nAby wygrac i otrzymac nagrode, zabij jak najwieksza liczbe zombie przez 20min lub pozostan sam na arenie.\n\n-ENG-\nTo win and get a reward, kill as many zombies for 20 minutes or stay the same in the arena.',

monsterName = {'Scratchclaw', 'Propell Zombie', 'Vile Centurion', 'Mongrel Man', 'Daidalost'}, -- name of monsters which is creating in event

delayTime = 1.0, -- time in which players who joined to event are teleporting to teleport position [[[miuntes]]]
timeToStartEvent = 5, -- time from teleport to start event [[[seconds]]]
timeToStopEvent = 9200 -- [[[seconds]]]
}

room = {fromPos = {x=822, y=1025, z=9}, -- left top corner of event room lewy górny róg areny
toPos = {x=865, y=1064, z=9} -- right bottom corner of event room prawy dolny róg areny
}
]]>
</config>
 

Dedefere

New Member
Joined
Jun 6, 2010
Messages
6
Best answers
0
Reaction score
0
Przepraszam za refresh :/
Mam problem z tym skryptem co podał _Dreamer, mianowicie nie respawni mi Potworów na polu które podałem, zminiełem nazwę na" {'Zombie'}, " do testu lecz nic z tego nie wynikło... w konsoli nie mam żadnego błędu, poprowadził by mnie ktoś co może być nie tak?
 
Top