JO

Easy Annihilator Tutorial

Por Jovial, 01 de fev. de 2008 em Tutoriais de Scripting

otserv
tibia
script
5.0 (1)
31
10.3k
JovialJ
01 de fevereiro de 2008 às 14:00

.:Easy Annihilator Tutorial:.

 

Olá, para quem não sabe o Easy Annihilator é um sistema que criei para facilitar a criação de quests no estilo da anihilator, ou até mesmo arenas de lutas. Para adquirir o script clique aqui.

 

Para melhor entender como é configurado este sistema, aconselho a procurarem Tutorial sobre Array (Tabelas), pois a configuração de uma annihilator, para utilizar o Easy Annihilator System, é feita dentro de Arrays.

 

 

Configurando:

Todas as informações sobre a sua annihilator deverá ser organizada em um Array, no caso vamos nomeá-la Annihilator

 

Irei colocar abaixo a configuração de uma annihilator para 4 players e 6 monstros, igual a global, você só precisará mudar as posições para as do seu mapa.

 

local Annihilator = { --Aqui iniciamos uma Array, coloquei 'local' para que ela existir somente neste arquivo.
ANNIHILATOR_LEVER_UNIQUEID = 5000, --Aqui você coloca o uniqueid da sua alavanca ( o uso da virgula no fim é obrigatório, pois estamos dentro de uma Array, a Annihilator_config).
MIN_LEVEL = 100, --Aqui você coloca o level minimo para fazer a quest.
STORAGE = 5000, --Aqui você coloca o numero do Storage que deseja usar para salvar as informações da quest (para marcar/verificar se o player ja fez a quest).
CHECK_INVISIBLE_ACCESS = 1, --Aqui você poe o access minimo para ser ignorado, na verificação se a sala está vazia. (para não contar gms como players).
CHESTS = { --Aqui estamos abrindo uma array chamada CHESTS dentro da Array Annihilator_config.
	{uniqueid = 5001, prize = 2494, count = 1}, --Aqui você configura o uniqueid de cada baú, o item que ira receber (prize) e a quantidade.
	{uniqueid = 5002, prize = 2400, count = 1}, --Note que como estamos dentro da Array CHESTS usamos virgula para separar os valores, o uso é obrigado, somente no ultimo valor que não se deve colocar virgula.
	{uniqueid = 5003, prize = 2431, count = 1},
	{uniqueid = 5004, prize = 2421, count = 1} --Aqui não existe virgula, é o ultimo valor da array CHESTS
},-- Fechamos a Array CHESTS
PLAYER_POS = {
	{x = 500, y = 755, z = 9, stackpos = 253}, --Aqui você irá por as posições dos players, você pode colocar quantas quiser para aumentar o numero de players ou diminuir, mas obedecendo a sintaxe correta, sempre o ultimo valor sem virgula
	{x = 499, y = 755, z = 9, stackpos = 253},
	{x = 498, y = 755, z = 9, stackpos = 253},
	{x = 497, y = 755, z = 9, stackpos = 253}
},
PLAYER_TOPOS = {
	{x = 500, y = 755, z = 10}, --Posições para aonde os players devem ser levados, deve ter a mesma quantidade de valores do que a Array PLAYER_POS.
	{x = 499, y = 755, z = 10},
	{x = 498, y = 755, z = 10},
	{x = 497, y = 755, z = 10}
},
MONSTERS = {
	{name = "Demon", pos = {x = 500, y = 753, z = 10}}, --Aqui configuramos os monstros, qual deve ser sumonado e qual sua posição, você pode colocar mais  ou menos que isto.
	{name = "Demon", pos = {x = 498, y = 753, z = 10}},
	{name = "Demon", pos = {x = 497, y = 757, z = 10}},
	{name = "Demon", pos = {x = 499, y = 757, z = 10}},
	{name = "Demon", pos = {x = 501, y = 755, z = 10}},
	{name = "Demon", pos = {x = 502, y = 755, z = 10}}
},
TOP_LEFT_POS = {x = 494, y = 749, z = 10}, --Irei explicar logo abaixo.
BOTTOM_RIGHT_POS = {x = 517, y = 760, z = 10}, --Irei explicar logo abaixo.
TRASH_POS = {x = 528, y = 754, z = 10}, --Posição de um lugar escondido no mapa para onde os demons antigos serão levados
IS_FORGOTTEN_SERVER = TRUE --Se você usa o Forgotten Server ou servers mais recentes troque o FALSE por TRUE, pois a função de teleport de alguns servers é diferente, de qualquer maneira se os player não forem teleportados troque de FALSE para TRUE ou vice-versa, aqui não colocamos virgula, pois é o ultimo valor da Array Annihilator_config.
} --Fechamos a Array Annihilator_config

--Agora vamos transformar essas informações para uma variavel que conterá o sistema para que essa annihilator funcione
Annihilator_ID = AnnihilatorSys:new(Annihilator)

Bem, agora vou explicar oque são as variaveis TOP_LEFT_POS e BOTTOM_RIGHT_POS.

 

TOP_LEFT_POS é a posição acima e a esquerda da Annihilator, usada na verificaçao se a sala está vazia ou não.(veja na SS abaixo em azul)

BOTTOM_RIGHT_POS é a posição abaixo e a direita da Annihilator, usada na verificaçao se a sala está vazia ou não.(veja na SS abaixo em verde)

exemplouy8.jpg

A annihilator verifica entre elas formando um retangulo, cujos dois de seus vértices são estes pontos, tudo dentro dele será verificado.

Tome cuidado para não pegar nenhum lugar fora da annihilator onde possa ter players, pois se tiver alguém la ele será considerado como dentro da annihilator.

 

Bem, está quase tudo pronto. Agora iremos colocar isto em um arquivo.

Crie um arquivo chamado Annihilator.lua, e nele coloque a Annihilator configurada para seu server, ficando:

local Annihilator_config = {
ANNIHILATOR_LEVER_UNIQUEID = 5000,
MIN_LEVEL = 100,
STORAGE = 5000,
CHECK_INVISIBLE_ACCESS = 1,
CHESTS = {
	{uniqueid = 5001, prize = 2494, count = 1},
	{uniqueid = 5002, prize = 2400, count = 1},
	{uniqueid = 5003, prize = 2431, count = 1},
	{uniqueid = 5004, prize = 2421, count = 1}
},
PLAYER_POS = {
	{x = 500, y = 755, z = 9, stackpos = 253},
	{x = 499, y = 755, z = 9, stackpos = 253},
	{x = 498, y = 755, z = 9, stackpos = 253},
	{x = 497, y = 755, z = 9, stackpos = 253}
},
PLAYER_TOPOS = {
	{x = 500, y = 755, z = 10},
	{x = 499, y = 755, z = 10},
	{x = 498, y = 755, z = 10},
	{x = 497, y = 755, z = 10}
},
MONSTERS = {
	{name = "Demon", pos = {x = 500, y = 753, z = 10}},
	{name = "Demon", pos = {x = 498, y = 753, z = 10}},
	{name = "Demon", pos = {x = 497, y = 757, z = 10}},
	{name = "Demon", pos = {x = 499, y = 757, z = 10}},
	{name = "Demon", pos = {x = 501, y = 755, z = 10}},
	{name = "Demon", pos = {x = 502, y = 755, z = 10}}
},
TOP_LEFT_POS = {x = 494, y = 749, z = 10},
BOTTOM_RIGHT_POS = {x = 517, y = 760, z = 10},
TRASH_POS = {x = 528, y = 754, z = 10},
IS_FORGOTTEN_SERVER = TRUE
}

Annihilator_ID = AnnihilatorSys:new(Annihilator)

function onUse(cid, item, frompos, item2, topos)
Annihilator_ID:onUse(cid, item) --Essa função verifica faz com que o sistema seja acionado quand oo player der use na alavanca ou no baú
return TRUE
end

Não se esqueça de criar as tags... No caso para este arquivo ficaria:

	<action uniqueid="5000" script="annihilator.lua"/>
<action uniqueid="5001" script="annihilator.lua"/>
<action uniqueid="5002" script="annihilator.lua"/>
<action uniqueid="5003" script="annihilator.lua"/>
<action uniqueid="5004" script="annihilator.lua"/>

 

OBS:Se voçe não for querer monstros não precisa colocar a parte MONSTERS na Array que você for configurar, o mesmo server para os baús. Se não tiver level minimo também não precisa por a parte de level minimo. (Bom para fazer arenas de batalhas ou outro tipo de coisas)

 

 

Exemplo de 3 annihilators em um único arquivo

No exemplo usei os mesmo premios nos baús mas você pode mudá-los, adicionar mais baús ou remover alguns.

O mapa foi feito pelo Lambix, eu só fiz a entrada das annihilators(a parte feia =D)

Download

 

 

Espero que vocês tenham entendido, qualquer dúvida é só perguntar.

 

cya;

Jovial

Editado Fevereiro 1 por Jovial

EvolutionsE
01 de fevereiro de 2008 às 14:42

##### jovial script otimo mesmo muito bom

01 de fevereiro de 2008 às 20:05

Script muito bom

APROVADO

Conde SapoC
01 de fevereiro de 2008 às 20:49

sempre bom ver os trabalhos do JOVIAL

muito do que sei hoje é graças a esse mestre

 

 

APROVADAÇO

:thumbsupsmiley:

01 de fevereiro de 2008 às 21:15

Eu não sei, a parte dos scripts ficou muito confusa.... atrapalha a ler, não tem nada para destacar o script da instrução...

Eu não posso aprovar até você mudar isso, poís quem trabalha com script está acostumado, mas quem está começando

vai er dificuldade, e muita :/

 

Frozen

JovialJ
01 de fevereiro de 2008 às 21:32

Frozen poderia ser mais especifico para que eu possa ver isto?

GuimG
02 de fevereiro de 2008 às 11:28

Otimo Script Jovial

Parabens

 

Aprovado

02 de fevereiro de 2008 às 22:48

tp se você pulasse uma linha tipo a cada vez que você termina-se de fazer uma observação exemplo

 

ANNIHILATOR_LEVER_UNIQUEID = 5000, --Aqui você coloca o uniqueid da sua alavanca ( o uso da virgula no fim é obrigatório, pois estamos dentro de uma Array, a Annihilator_config).

 

MIN_LEVEL = 100, --Aqui você coloca o level minimo para fazer a quest.

 

fizesse issu o dexava de vermelho a observação(não precisa ser vermelho mais apenas uma cor que se destaque das outras)

 

ANNIHILATOR_LEVER_UNIQUEID = 5000, --Aqui você coloca o uniqueid da sua alavanca ( o uso da virgula no fim é obrigatório, pois estamos dentro de uma Array, a Annihilator_config).

 

MIN_LEVEL = 100, --Aqui você coloca o level minimo para fazer a quest.

 

faz algo desse tipo que seu script ia ficar perfeitoo...

JovialJ
04 de fevereiro de 2008 às 13:29

Obrigado pela sujestão assim que eu tiver tempo eu organizo o tutorial.

leandrocoreL
05 de fevereiro de 2008 às 08:36

:smile_positivo: otima Script parabens :smile_positivo:

 

by dArK

 

 

 

:XTibia_smile:

RusttyR
05 de fevereiro de 2008 às 22:24

Aprovado.

Motivo : Bem organizado e útil.

Movido para seção de Tutoriais de Scripting.

2 semanas depois...
DaNDaNrOxXD
13 de fevereiro de 2008 às 16:52

Excelente trabalho amigo!

muito bom mesmo :)

2 semanas depois...
WenemyW
23 de fevereiro de 2008 às 23:44

Concerteza um dos melhores tutoriais sobre fazer anihi, esta muito bem explicado... Parabens

 

//The Wenemy

3 meses depois...
icaro2512I
02 de maio de 2008 às 23:33

Affs o que é um array e onde eu acho esse tutorial Ajuda aew explika melhor quem num sabe num tem como

elaborar essa quest ;/

2 semanas depois...
grt217G
16 de maio de 2008 às 13:43

Parabens Muito Bom Mesmoooo

Cara Juro Tava Precisando Disso

Obrigado Vai Me Ajuda Bastante

Tchau