IS

Zombie Events + Pagina Gesior.

Por Isbigo, 03 de set. de 2011 em Globalevents e Spells

otserv
tibia
script
89
37k
WatersonW
15 de outubro de 2011 às 18:16

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

1418311
15 de outubro de 2011 às 18:35

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.

brunaum15B
19 de outubro de 2011 às 12:42

Gente, eu to com um problema... tipow como q o player q ganha recebe a recompensa?

pq aki os zombie aparece.. as pessoas vao perdendo ai fica um playeer por ultimo, ai ele perde tbm, mas n ganha nada, ajuda ai plx!

danilo13D
20 de outubro de 2011 às 10:05

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.

21 de outubro de 2011 às 00:20

como eu sei qual meu tsf?

FeehGussoF
22 de outubro de 2011 às 13:23

tem como alguem disponibiliza 1 pagina site?

Valeu ae

1 mês depois...
IsbigoI
10 de novembro de 2011 às 11:32

Adicionado script para website, qualquer duvida postem ai '-'

 

Desculpem todos e que estou meio afastado de OTserv.

11 de novembro de 2011 às 02:10

A parte do site é precisa ? Ou uma opçao ??

IsbigoI
12 de novembro de 2011 às 16:23

Ta mais para opção, não e obrigatório, e também não faz diferença e mais para divulgação.

13 de novembro de 2011 às 19:53

boa parceiro isso ai

2 semanas depois...
Lym312yzL
21 de novembro de 2011 às 20:02

Queria saber quais as versoes que esse script pega.

IsbigoI
23 de novembro de 2011 às 20:34

Foi testado na versão 8.60,

 

Mais acho que funciona em versões mais recentes pois não ouveram muitas mudanças nas Funções que eu saiba.

Editado Novembro 23 por Isbigo

fredpaduaF
29 de novembro de 2011 às 20:11

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?

IsbigoI
30 de novembro de 2011 às 12:47
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...
fredpaduaF
30 de novembro de 2011 às 23:03

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 ?