Ir para conteúdo

Featured Replies

Postado

Funcionou a parte do spawn auto do zombie

o movements no teleporte.

Mas quando o zombie ataca fica hitando

e não teleporta o player pro templo.

Ja coloquei event no monster

Testando em TFS 0.3 e 0.4

  • Respostas 41
  • Visualizações 16.6k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • -- POSITIONS ZE_blockEnterItemPosition = {x= 873, y=997, z=7} --- posição onde aparecera a grade para n deixar ngm entrar na arena ZE_enterPosition = {x = 1638, y = 1530, z = 7} --- posição centra

Postado

Consegui arrumar mais agora o zumbi não nasce

  • 2 weeks later...
Postado

Bem hj vou estar postando o ZOMBIE EVENT q eu uso no meu server sem erros nem nada..

Testado em tfs 0.3 pra mais

Testado em 8.54,8.60

COMANDOS

INSTALAÇÃO

data/creaturescripts/scripts/zombie/onattack.lua


function loseOnZombieArena(cid)

	kickPlayerFromZombiesArea(cid)

	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! You are dead.")

	local players = getZombiesEventPlayers()

	if(#players <= 1) then

		local winner = players[1]

		if(winner) then

			doPlayerAddItem(winner, 2157, 5, true)

			doPlayerAddItem(winner, 6119, 1, true)

			doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "You won zombies arena event.")

			doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " seconds of fight " .. getCreatureName(winner) .. " won Zombie Arena Event in game versus " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies!")

			kickPlayerFromZombiesArea(winner)

		else

			doBroadcastMessage("Zombie arena event finished! No one win?!?!?! WTF!")

		end

		doSetStorage(ZE_STATUS, 0)

		doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS)

		doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0)

		doSetStorage(ZE_ZOMBIES_SPAWNED, 0)

		local width = (math.max(ZE_spawnFromPosition.x, ZE_spawnToPosition.x) - math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)) / 2 + 1

		local height = (math.max(ZE_spawnFromPosition.y, ZE_spawnToPosition.y) - math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)) / 2 + 1

		local centerPos = {x=math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)+width,y=math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)+height,z=ZE_spawnFromPosition.z}

		for z = math.min(ZE_spawnFromPosition.z, ZE_spawnToPosition.z), math.max(ZE_spawnFromPosition.z, ZE_spawnToPosition.z) do

			centerPos.z = z

			for i, uid in pairs(getSpectators(centerPos, width, height, false)) do

				if(isMonster(uid)) then

					doRemoveCreature(uid)

				end

			end

		end

	end

end

function onStatsChange(target, cid, changetype, combat, value)

	if((cid and isMonster(cid) and getCreatureName(cid) == "Zombie Event") or (isInRange(getThingPosition(target), ZE_spawnFromPosition, ZE_spawnToPosition) and changetype == STATSCHANGE_HEALTHLOSS and math.abs(value) >= getCreatureHealth(target))) then

		doCreatureAddHealth(target, getCreatureMaxHealth(target))

		loseOnZombieArena(target)

		return false

	end

	return true

end

/data/creaturescripts/scripts/zombie/ondeath.lua


function onDeath(cid)

setZombiesToSpawnCount(getZombiesToSpawnCount() + 2)

doCreatureSay(cid, "I'll be back!", 19)

return true

end

/data/creaturescripts/scripts/zombie/onthink.lua


function onThink(cid)

local target = getCreatureTarget(cid)

if(target ~= 0 and not isPlayer(target)) then

doRemoveCreature(target)

end

return true

end

/data/creaturescripts/scripts/login.lua add:


registerCreatureEvent(cid, "ZombieAttack")

/data/globalevents/scripts/zombie/onstartup.lua


function onstartup()

db.executeQuery("UPDATE `player_storage` SET `value` = 0 WHERE `key` = " .. ZE_isOnZombieArea .. ";")

doSetStorage(ZE_STATUS, 0)

doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS)

doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0)

doSetStorage(ZE_ZOMBIES_SPAWNED, 0)

addZombiesEventBlockEnterPosition()

return true

end

/data/globalevents/scripts/zombie/onthink.lua


function onThink(interval, lastExecution, thinkInterval)

if(getStorage(ZE_STATUS) == 2) then

setZombiesToSpawnCount(getZombiesToSpawnCount()+1)

local players = getZombiesEventPlayers()

for i=1, getZombiesToSpawnCount() * 2 do

if(getZombiesToSpawnCount() > 0 and spawnNewZombie()) then

	setZombiesToSpawnCount(getZombiesToSpawnCount()-1)

end

end

end

return true

end

/data/lib/zombie_event.lua


-- CONFIG

ZE_DEFAULT_NUMBER_OF_PLAYERS = 5

ZE_ACCESS_TO_IGNORE_ARENA = 3

-- POSITIONS

ZE_blockEnterItemPosition = {x= 873, y=997, z=7}

ZE_enterPosition = {x = 1638, y = 1530, z = 7}

ZE_kickPosition = {x=874, y=994, z=7}

ZE_spawnFromPosition = {x = 1617, y = 1514, z = 7}

ZE_spawnToPosition = {x = 1671, y = 1565, z = 7}

-- ITEM IDS

ZE_blockEnterItemID = 2700

-- STORAGES

-- - player

ZE_isOnZombieArea = 34370

-- - global

ZE_STATUS = 34370 -- =< 0 - off, 1 - waiting for players, 2 - is running

ZE_PLAYERS_NUMBER = 34371

ZE_ZOMBIES_TO_SPAWN = 34372

ZE_ZOMBIES_SPAWNED = 34373


-- FUNCTION


function setZombiesEventPlayersLimit(value)

doSetStorage(ZE_PLAYERS_NUMBER, value)

end


function getZombiesEventPlayersLimit()

return getStorage(ZE_PLAYERS_NUMBER)

end


function addPlayerToZombiesArea(cid)

doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)

doTeleportThing(cid, ZE_enterPosition, true)

doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)

if(getPlayerAccess(cid) < ZE_ACCESS_TO_IGNORE_ARENA) then

setPlayerZombiesEventStatus(cid, os.time())

end

end


function kickPlayerFromZombiesArea(cid)

doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)

doTeleportThing(cid, ZE_kickPosition, true)

doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT)

setPlayerZombiesEventStatus(cid, 0)

end


function getPlayerZombiesEventStatus(cid)

return getCreatureStorage(cid, ZE_isOnZombieArea)

end


function setPlayerZombiesEventStatus(cid, value)

doCreatureSetStorage(cid, ZE_isOnZombieArea, value)

end


function getZombiesEventPlayers()

local players = {}

for i, cid in pairs(getPlayersOnline()) do

if(getPlayerZombiesEventStatus(cid) > 0) then

table.insert(players, cid)

end

end

return players

end


function getZombiesCount()

return getStorage(ZE_ZOMBIES_SPAWNED)

end


function addZombiesCount()

doSetStorage(ZE_ZOMBIES_SPAWNED, getStorage(ZE_ZOMBIES_SPAWNED)+1)

end


function resetZombiesCount()

doSetStorage(ZE_ZOMBIES_SPAWNED, 0)

end


function getZombiesToSpawnCount()

return getStorage(ZE_ZOMBIES_TO_SPAWN)

end


function setZombiesToSpawnCount(count)

doSetStorage(ZE_ZOMBIES_TO_SPAWN, count)

end


function addZombiesEventBlockEnterPosition()

if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then

doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition)

end

end


function removeZombiesEventBlockEnterPosition()

local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID)

if(item.uid ~= 0) then

doRemoveItem(item.uid)

end

end


function spawnNewZombie()

local posx = {}

local posy = {}

local posz = {}

local pir = {}

for i=1, 5 do

local posx_tmp = math.random(ZE_spawnFromPosition.x ,ZE_spawnToPosition.x)

local posy_tmp = math.random(ZE_spawnFromPosition.y ,ZE_spawnToPosition.y)

local posz_tmp = math.random(ZE_spawnFromPosition.z ,ZE_spawnToPosition.z)

local pir_tmp = 0

local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false)

if(spec and #spec > 0) then

for z, pid in pairs(spec) do

	if(isPlayer(pid)) then

	 pir_tmp = pir_tmp + 1

	end

end

end

posx[i] = posx_tmp

posy[i] = posy_tmp

posz[i] = posz_tmp

pir[i] = pir_tmp

end

local lowest_i = 1

for i=2, 5 do

if(pir[i] < pir[lowest_i]) then

lowest_i = i

end

end

local ret = (type(doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false)) == 'number')

if(ret) then

addZombiesCount()

end

return ret

end
/data/movements/scripts/zombie/onenter.lua


function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)

if(not isPlayer(cid)) then

return true

end

if(getPlayerAccess(cid) >= ZE_ACCESS_TO_IGNORE_ARENA) then

addPlayerToZombiesArea(cid)

elseif(#getZombiesEventPlayers() < getZombiesEventPlayersLimit() and getStorage(ZE_STATUS) == 1) then

addPlayerToZombiesArea(cid)

local players_on_arena_count = #getZombiesEventPlayers()

if(players_on_arena_count == getZombiesEventPlayersLimit()) then

addZombiesEventBlockEnterPosition()

doSetStorage(ZE_STATUS, 2)

doBroadcastMessage("Zombie Arena Event started.")

else

doBroadcastMessage(getCreatureName(cid) .. " has entered a Zombie Arena. We still need " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players.")

end

else

doTeleportThing(cid, fromPosition, true)

addZombiesEventBlockEnterPosition()

end

return true

end
/data/talkactions/scripts/zombie/onsay.lua


function onSay(cid, words, param, channel)

if(getStorage(ZE_STATUS) ~= 2) then

local players_on_arena_count = #getZombiesEventPlayers()

if(param == 'force') then

if(players_on_arena_count > 0) then

	setZombiesEventPlayersLimit(players_on_arena_count )

	addZombiesEventBlockEnterPosition()

	doSetStorage(ZE_STATUS, 2)

	doBroadcastMessage("Zombie Arena Event started.")

	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event started.")

else

	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot start Zombies event. There is no players on arena.")

end

else

if(param ~= '' and tonumber(param) > 0) then

	setZombiesEventPlayersLimit(tonumber(param))

end

removeZombiesEventBlockEnterPosition()

doSetStorage(ZE_STATUS, 1)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Event started.")

doPlayerBroadcastMessage(cid, "Zombie Arena Event teleport is opened. We are waiting for " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players to start.")

end

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event is already running.")

end

return true

end
AGR EM XMLS /data/creaturescripts/creaturescripts.xml


<event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/>

<event type="statschange" name="ZombieAttack" event="script" value="zombie/onattack.lua"/>

<event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/>
/data/globalevents/globalevents.xml TFS 0.3

<globalevent name="ZombieGlobalThink" interval="5" event="script" value="zombie/onthink.lua"/>

<globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/>

TFS 0.4

<globalevent name="ZombieGlobalThink" interval="5000" event="script" value="zombie/onthink.lua"/>

<globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/>

/data/movements/movements.xml


<movevent type="StepIn" actionid="5555" event="script" value="zombie/onenter.lua"/>

/data/talkactions/talkactions.xml


<talkaction log="yes" words="/zombiestart" access="4" event="script" value="zombie/onsay.lua"/>

/data/monster/zombie_event.xml


<monster name="Zombie Event" nameDescription="an event zombie" race="undead" experience="480" speed="170" manacost="0">

	<health now="20000" max="20000"/>

	<look type="311" corpse="9875"/>

	<targetchange interval="5000" chance="50"/>

	<strategy attack="100" defense="0"/>

	<flags>

		<flag summonable="0"/>

		<flag attackable="1"/>

		<flag hostile="1"/>

		<flag illusionable="0"/>

		<flag convinceable="0"/>

		<flag pushable="0"/>

		<flag canpushitems="1"/>

		<flag canpushcreatures="1"/>

		<flag targetdistance="1"/>

		<flag staticattack="90"/>

		<flag runonhealth="0"/>

	</flags>

	<attacks>

		<attack name="melee" interval="1000" min="-1500" max="-2350"/>

	</attacks>

	<defenses armor="0" defense="0"/>

<immunities>

<immunity paralyze="1"/>

<immunity invisible="1"/>

<immunity fire="1"/>

<immunity energy="1"/>

<immunity poison="1"/>

</immunities>

	<voices interval="5000" chance="10">

		<voice sentence="You wont last long!"/>

		<voice sentence="Mmmmh.. braains!"/>

	</voices>

<script>

<event name="ZombieThink"/>

<event name="ZombieDeath"/>

</script>

	<loot>


	</loot>

</monster>

/data/monster/monsters.xml

Créditos

PhoOwned 99%

Sociopata 1%

Bem é isso por favor antes de postar erros vejam se fizeram os procedimento de modo correto, por que eu uso isso RLs usam e nunca tiveram problema, e tbm so pra lembrar vcs precisam ter a arena tradicional do Zombie Event para garantir o funcionamento em 100% e pelo amor de deus n coloquem em ot com TFS menor que 0.3.

OBRIGADO A TODOS E POR FAVOR COMENTEM



<monster name="Zombie Event" file="zombie_event.xml"/>

Como eu faço para mudar a recompensa to com essa evento no meu serve mais não consigo mudar a recompensa.

Postado

[12/08/2012 13:24:32] [Error - LuaScriptInterface::loadFile] data/lib/zombie_event.lua:9: '}' expected near 'z'

[12/08/2012 13:24:32] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

[12/08/2012 13:24:32] [Warning - TalkAction::configureEvent] Duplicate registered talkaction with words: /jail

[12/08/2012 13:24:32] [Error - LuaScriptInterface::loadFile] data/lib/zombie_event.lua:9: '}' expected near 'z'

[12/08/2012 13:24:32] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

[12/08/2012 13:24:32] [Error - LuaScriptInterface::loadFile] data/lib/zombie_event.lua:9: '}' expected near 'z'

[12/08/2012 13:24:32] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

[12/08/2012 13:24:32] [Error - LuaScriptInterface::loadFile] data/lib/zombie_event.lua:9: '}' expected near 'z'

[12/08/2012 13:24:33] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

[12/08/2012 13:24:33] [Warning - Event::loadScript] Event onstartup not found (data/globalevents/scripts/zombie/onstartup.lua)

AJUDA AE

Visitante
Este tópico está impedido de receber novos posts.

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo