Ir para conteúdo

Zombie Events + Pagina Gesior.


Isbigo

Posts Recomendados

Cara adorei o script porem ta com uns pequeno erro *não to querendo ser mala não, quando vc poe pra ele ativar com 1 player só ele buga...

quando vc dexa o sistem no horario certin olha da um erro que nao conssegue executar um evento lá e tbm aparece um 0 nada a ver, o duro é que tou com tfs 8.54.. me passa a que num da bug, posta aew...

obrigado

Link para o comentário
Compartilhar em outros sites

O que seria legal eh : os players que entrarem no teleport ficarem em um lugar vendo os que estao no evento ( tipo : em uma quadrado cercado por cercas , e PZ zone ) , so nao vo usa , porque meu OT eh XP alto , entao eu uso invasao mesmo ..

 

Mas valeu , esta organizado e da para entender ..

 

Abracos.

Link para o comentário
Compartilhar em outros sites

Estou com o Msm Erro Do cara de Cima aee.

Aparece varios Zumbie Nao acaba.

Os zumbie mata todos eles morrem PErden Xp Como uma Morte Normal.

E quando sobra um o zumbie mata e naao acontece nada o evento continua sem vencedor.

Achoq eu seria assim:

 

Quando acabasse os player e sobrasse 1 o Terminava e o ganhor seria 1 Player Apenas( oq PLayer que sobrou no caso)

Ajuda aee Pessoal.

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...
  • 2 weeks later...

Olá a todos, venho aqui lhes trazer o script de Zombie Event.

 

Não tenho certeza se estou postando na areá correta, mais caso eu não esteja por favor movam o tópico.

 

Mãos a obra.

 

Zombie Events.

 

wjdth1.jpg

 

Testado em: TFS 0.4

 

 

 

Se quiser testar em outro distro responsabilidade de vocês.

 

Algumas informações sobre ele primeiramente,

Quando o evento está começando você terá certos minutos em você para incorporar o teleport antes que desapareça.

Quando o teleport desaparece mesmo acontece com zombie spawn após 20 segundos.

Zombie iram aparece 1 de cada vez, a cada 20 segundos.

Os players que morrerem no evento, serão teleportados para o templo.

O vencedor do evento, recebe algumas recompensas e um cale-se dourado com seu nome.

 

 

 

 

Lembrando a areá de evento tem que ser non-pvp para que os possam disputar la.

 

 

 

Vamos la.

 

Globalevents/scripts/zombie event.lua

local config = {
playerCount = 2001, -- Global storage for counting the players left/entered in the event
zombieCount = 2002, -- Global storage for counting the zombies in the event
teleportActionId = 2000, -- Action id of the teleport needed for the movement script
teleportPosition = {x = 1135, y = 1077, z = 3, stackpos = 1}, -- Where the teleport will be created
teleportToPosition = {x = 1190, y = 1076, z = 7}, -- Where the teleport will take you
teleportId = 1387, -- Id of the teleport
timeToStartEvent = 5, -- Minutes, after these minutes the teleport will be removed and the event will be declared started
timeBetweenSpawns = 20, -- Seconds between each spawn of zombie
zombieName = "event zombie", -- Name of the zombie that should be summoned
playersNeededToStartEvent = 5, -- Players needed before the zombies can spawn.

-- Should be the same as in the creaturescript!
-- The zombies will spawn randomly inside this area
fromPosition = {x = 1186, y = 1072, z = 7}, -- top left cornor of the playground
toPosition = {x = 1195, y = 1081, z = 7}, -- bottom right cornor of the playground
}

function onTimer()
local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)
doItemSetAttribute(tp, "aid", config.teleportActionId)
doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)
setGlobalStorageValue(config.playerCount, 0)
setGlobalStorageValue(config.zombieCount, 0)
addEvent(startEvent, config.timeToStartEvent * 1000 * 60)
print(getGlobalStorageValue(2001))
end

function startEvent()
local get = getThingfromPos(config.teleportPosition)
if get.itemid == config.teleportId then
	doRemoveItem(get.uid, 1)
end

local fromp, top = config.fromPosition, config.toPosition

if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then
	addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
	doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING)

	for x = fromp.x, top.x do
		for y = fromp.y, top.y do
			for z = fromp.z, top.z do
				areapos = {x = x, y = y, z = z, stackpos = 253}
				getPlayers = getThingfromPos(areapos)
				if isPlayer(getPlayers.uid) then
					doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!")
				end
			end
		end
	end
else
	doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)
	for x = fromp.x, top.x do
		for y = fromp.y, top.y do
			for z = fromp.z, top.z do
				areapos = {x = x, y = y, z = z, stackpos = 253}
				getPlayers = getThingfromPos(areapos)
				if isPlayer(getPlayers.uid) then
					doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)
					doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)
				end
			end
		end
	end
end
end

function spawnZombie()
if getGlobalStorageValue(config.playerCount) >= 2 then
	pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)}
	doSummonCreature(config.zombieName, pos)
	doSendMagicEffect(pos, CONST_ME_MORTAREA)
	setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)
	doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED)
	addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
end
end

Movements/scripts/zombie event.lua

local config = {
playerCount = 2001, -- Global storage for counting the players in the event
maxPlayers = 15, -- Max players who can participate

}

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
if getGlobalStorageValue(config.playerCount) < config.maxPlayers then
	setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1)
	if getGlobalStorageValue(config.playerCount) == config.maxPlayers then
		doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.")
	else	
		doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED)
	end	
else
	addEvent(tpBack, 1000, cid, fromPosition)
	doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the quest.")
	return false
end
print(getStorage(config.playerCount) .. " Players in the zombie event.")
return true
end

function tpBack(cid, fromPosition)
doTeleportThing(cid, fromPosition, true)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
end

Creaturescripts/scripts/zombie event.lua

local config = {
playerCount = 2001, -- Global storage for counting the players left/entered in the event

goblet = 5805, -- id of the gold goblet you'll get when finishing the event.
rewards = {2195, 2152, 2160}, -- You will get this +  a gold goblet with your name on.
--		{moneyId, count, using? 1 for using moneyReward, 0 for not using.}
moneyReward = {2160, 10, 1},

-- Should be same as in the globalevent!
-- The zombies will spawn randomly inside this area
fromPosition = {x = 1186, y = 1072, z = 7}, -- top left cornor of the playground
toPosition = {x = 1195, y = 1081, z = 7}, -- bottom right cornor of the playground
}

function onStatsChange(cid, attacker, type, combat, value)
if isPlayer(cid) and isMonster(attacker) then
	if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
		if getGlobalStorageValue(config.playerCount) >= 2 then
			doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED)
			local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))
			doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")
			doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
			doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
			doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
			setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1)
		elseif getGlobalStorageValue(config.playerCount) == 1 then
			if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
				doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING)
				local goblet = doPlayerAddItem(cid, config.goblet, 1)
				doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.")
				local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))
				doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")
				doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
				doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
				doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
				for _,items in ipairs(config.rewards) do
					doPlayerAddItem(cid, items, 1)
				end
				if config.moneyReward[3] == 1 then
					doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2])
				end
			end

			for x = config.fromPosition.x, config.toPosition.x do
				for y = config.fromPosition.y, config.toPosition.y do
					for z = config.fromPosition.z, config.toPosition.z do
						areapos = {x = x, y = y, z = z, stackpos = 253}
						getMonsters = getThingfromPos(areapos)
						if isMonster(getMonsters.uid) then
							doRemoveCreature(getMonsters.uid)
						end
					end
				end
			end
		end
		return false
	end
end
return true
end

Creaturescripts/scripts/login.lua poste a seguinte função.

registerCreatureEvent(cid, "zombieevent")

Globalevents.xml insira:

<globalevent name="zombieevent" time="15:00" event="script" value="zombie event.lua"/>

Movements.xml insira:

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

Creaturescripts.xml insira:

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

 

Esta parte e de grande importância.

 

Na pasta Monster crie um arquivo chamado Event zombie.xml e insira isto dentro:


<?xml version="1.0" encoding="UTF-8"?>
<monster name="Event Zombie" nameDescription="an event zombie" race="undead" experience="280" speed="100" manacost="0">
<health now="500" max="500"/>
<look type="311" corpse="9875"/>
<targetchange interval="5000" chance="50"/>
<strategy attack="100" defense="0"/>
<flags>
	<flag summonable="0"/>
	<flag attackable="0"/>
	<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="2000" min="-350" max="-350"/>
</attacks>
<defenses armor="15" defense="10"/>
<immunities>
	<immunity paralyze="1"/>
</immunities>
<voices interval="5000" chance="10">
	<voice sentence="You wont last long!"/>
	<voice sentence="Mmmmh.. braains!"/>
</voices>
<loot>
	<item id="2148" countmax="1" chance="100000"/><!-- gold coin -->
</loot>
</monster>

 

Depois em monstros.xml adicione a seguinte linha:

<monster name="Event zombie" file="event zombie.xml"/>

 

Por pedidos vai ai uma pagina para seu website.

 

Vá ate "C:/xampp/htdcos/" crie um arquivo chamado Zombieevent.php dentro coloque isso.


<?PHP
$main_content .= '<h4 style="" id="pt">
<br>
<center><h2><b> Zombie Event</b></h2></center><br><br>

<center><object height="350" width="425"><img

src="http://i52.tinypic.com/wjdth1.jpg" height="700"

width="525"></object></center><br>

<br><br> </h4>


<b></b><center><b>O que é o Zombie Event?</b><br>
<br>
É um evento que acontece todos os dias as 12:00, 18:30 e 21:30 hr no

servidor.<br>

<br>
<br>
<b>Como funciona?<br></b>
<br>
Quando estiver na hora irá abrir um teleport no mesmo lugar onde aparece o

teleport da WoE, basta você entrar e aguardar o tempo para inicio do Evento,
o objetivo do jogo é correr dos zombies, a cada 20 segundos irá nascer um novo em

alguma área randomica, você deve correr pois se eles te tocarem você

automaticamente é retirado do evento e volta para o seu temple.
O ultimo jogador que sobrar vivo vence o evento.<br>
<br>
<br>
<b>Quais são os prêmios?<br></b>
<br>
O ganhador irá ganhar<b> 100k</b>, uma <b>Boots of Haste</b> e um <b>Globet com o

nome dele</b>.<br>

<br>
</center>';
?>

 

Depois abra o index.php em "C:/xampp/htdcos/".

 

Depois de:


	case "buypoints":
			$topic = "Buy Points";
			$subtopic = "buypoints";
			include("buypoints.php");
	break;

 

Cole isso:



	case "zombieevent":
			$topic = "Zombie event";
			$subtopic = "zombieevent";
			include("zombieevent.php");
	break;

 

Agora vá em "C:/xampp/htdcos/layout/tibiacom/" abra o arquivo layout.php.

 

Depois de:


<a href='?subtopic=highscores'>
 <div id='submenu_highscores' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
<div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
<div id='ActiveSubmenuItemIcon_highscores' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div>
<div class='SubmenuitemLabel'>Highscores</div>
<div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
 </div>
</a>

 

Cole isso:


<a href='?subtopic=zombieevent'>
 <div id='submenu_zombieevent' class='Submenuitem'

onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
<div class='LeftChain' style='background-image:url(<?PHP echo $layout_name;

?>/images/general/chain.gif);'></div>
<div id='ActiveSubmenuItemIcon_highscores' class='ActiveSubmenuItemIcon'

style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-

activesubmenu.gif);'></div>
<div class='SubmenuitemLabel'>Zombie Event</div>
<div class='RightChain' style='background-image:url(<?PHP echo $layout_name;

?>/images/general/chain.gif);'></div>
 </div>
</a>

 

Agora clique aqui e confira seu zombie events.

 

Aqui vocês podem baixar o mapa para se usar com este evento:

Download:

Click aqui

 

Scan:

Clique aqui

 

Prontinho espero que gostem.

 

 

Créditos:

 

 

Gatupojk [Pelo script]

DawnOT [Pelo Mapa ]

Isbigo [Por postar ]

 

 

 

Gostou? REP+ button_ok.png

 

Arrumado Monster.

Site Adicionado.

 

 

Tem tutorial de editando as coordenadas e tudo certo ? e tem algum mapa pra disponibilizar?

Link para o comentário
Compartilhar em outros sites

o.O não entendi direito sua duvida, mais se for o MAP da zombie event, esta para download ai, basta você ler com atenção...

 

SIm, mas o mapa tem que ser adicionado exatamente nas mesmas coordenadas? .. porque se nao..

os respawns n dariam certo ?

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...