Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

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

  Citar

Default:

23:13 /zombiestart 15

23:13 Event started.

Server log:

23:13 [HOSTER] PhoOwned: Zombie Arena Event teleport is opened. We are waiting for 15 players to start.

23:14 Jestemsexi has entered a Zombie Arena. We still need 14 players.

23:14 Magic Girl has entered a Zombie Arena. We still need 13 players.

23:14 Tench has entered a Zombie Arena. We still need 12 players.

23:14 Tiito has entered a Zombie Arena. We still need 11 players.

23:15 Burning Axer has entered a Zombie Arena. We still need 10 players.

Default:

23:15 /zombiestart force

23:15 Zombies event started.

Server log:

23:15 Zombie Arena Event started.

23:15 After 73 seconds of fight Jestemsexi won Zombie Arena Event in game versus 2 zombies!

COMANDOS

  Citar
/zombiestart 15

/zombiestart force -- force start, if you set for example 15 players limit, but there enter only 8 and you don't want to wait for more then you say it and it start arena

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"/>


Regras Gerais 

 

"Califórnia Brasileira :cool: "

  • 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

o Tutorial me aparenta estar tudo funcional.. Olhada rápida'

Porém, só acho que poderia estar um pouco mais simplificado, com alguns Spoilers para não confundir quem vai fazê-lo, pelo mesmo ser extenso isso pode acontecer...

Enfim, obrigado por compartilhar e é realmente um ótimo tutorial'

Abraços'

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Postado
  Em 02/03/2012 em 22:51, luuuck disse:

Estou testando mais logo iniciando o distro ja apareceu problemas... vou ver agora no server... jaja volto e edito

@EDIT

Não funciona!

Faz assim, mostra pra gente quais erros de Distro apareceram'

Abraços'

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

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.7k

Informação Importante

Confirmação de Termo