• Nenhum resultado encontrado

29 Criando um Script 29.1 Um Script Básico

No documento Levelord - Doom Bible (páginas 79-82)

Para começar um script a primeira coisa importante a se fazer é, saber o que você quer fazer, por exemplo, suponhamos que você queira que um evento aconteça da seguinte maneira.

1. Um jogador aperta um botão; 2. Alguns setores levantam seus pisos;

3. Algumas paredes trocam suas texturas para texturas de sangue;

4. Depois de 5 segundos, esse setor fica vermelho e aparece um Archvile.

Pode parecer complicado, mas é muito simples de se fazer, antes de tudo tenha o mapa preparado, para tal evento. Rotule os setores que terão seus pisos levantados, agora para se rotular uma textura no formato ZDoom (Doom in Hexen Format), use a linedef 121 (H - Line Identification), ele usa apenas um parâmetro o LineID, que é o rótulo da linha, este rótulo pode ser o mesmo rótulo de um setor, porque o ZDoom trata de forma diferente o rótulo de um setor e o rótulo de uma linha.

Agora escolha as linhas nas quais você quer que a textura se transforme em sangue. Lembre-se de que essas texturas podem ou não conter o mesmo rótulo, se elas estiverem com o mesmo rótulo, você não precisará de um script muito grande, caso elas não estejam com o mesmo rótulo, você vai ter que definir a troca de cada uma delas, após ter feito esse processo, rotule o último setor que deverá ter uma cor nova.

Agora que já sabemos o que queremos que aconteça, está na hora de começar o script, vamos começar pelas linhas, você se lembra que nós tínhamos suposto que o jogador deveria apertar um botão antes de todo o script começar a rodar, bem, faça esse botão em um editor de mapas e coloque uma textura no mesmo, depois de criar o botão, vamos rotular uma das linhas com o linedef 80 (H - Script

Execute), assim o script somente será executado quando essa linha for ativada, antes de começar a criar

o script lembre-se de checar a ativação dessa linha, ela pode ser ativada por vários fatores os quais são: • Player Walks Over: O jogador passa por cima da linha, e esta é ativada;

• Player Presses Use: O jogador ativa a linha apertando a tecla ‘Use’ (Barra de Espaço); • Monster Walks Over: Um monstro de qualquer tipo passa por cima da linha ativando-a; • Projectle Hits: Um projétil, como um tiro disparado por um monstro ou um jogador ativa a

linha;

• Player Bumps: O jogador ‘esbarra’ na linha ativando-a;

• Projectle Flies Over: Um projétil disparado de um monstro ou de um jogador passa pela linha ativando-a;

• Player Presses Use (Pass Thru): O jogador pressiona a tecla ‘Use’ (Barra de Espaço), mas ele também passa pela linha, para ser ativada;

• Projectle Hits or Crosses: Um projétil atinge ou passa pela linha para que essa seja ativada.

No nosso caso a ativação será pelo ‘Player Presses Use’. Agora vamos ao script, a maioria dos editores de mapas, vem com uma configuração de script diferente para cada formato, então, não adianta usar ACS no DOOM Legacy (isso será abordado mais tarde).

Guia do Levelord – Black Edition

Este ‘#include’ diz a engine que inclua o ACS no seu arquivo WAD, sem ele o script não seria compilado, o ‘zcommon.acs’ é um dos ACS que a engine do ZDoom usa, o zcommon.acs inclui todas as outras configurações de ACS do ZDoom, depois apenas defina seu script:

#include "zcommon.acs" script 1

Esse ‘script’ apenas define que isso é um script e o 1 é o numero do script, agora devemos definir se ele vai ser ativado antes do mapa ser carregado ou apenas quando um jogador ativa-lo. No nosso caso, o jogador deve ativar o nosso script, para fazer isso devemos definir se o script é ‘OPEN’ ou é

(void):

• OPEN: O script será executado antes de o mapa ser carregado;

• (void): O script só é executado quando uma linha ou um evento for ativado. No nosso exemplo fica:

#include "zcommon.acs" script 1 (void)

Depois de definir o script vamos colocar as ações desse script, essas ações devem estar dentro do mesmo script, então para definir ações em um mesmo script se usa { e } dentro dessas chaves suas ações estarão sendo definidas.

ATENÇÃO!

TODA AÇÃO DEVE SER DEFINIDA DENTRO DE UM SÍMBOLO!

#include "zcommon.acs" script 1 (void)

{comandos }

Agora vamos à parte mais importante, no nosso script várias ações iriam acontecer depois que o jogador ativa-se o botão certo, o primeiro passo é saber quais comandos se encaixam no nosso script, por exemplo, existe uma lista imensa no ZDoom wiki de comandos, você apenas deve achar um que se encaixa no seu script no nosso caso, alguns pisos vão subir, esse efeito é obtido pelo simples comando:

Floor_raisebyvalue (Piso_levantaporvalor), esse comando faz com que um piso (floor) se levante

por um determinado valor, todos os comandos de um script possuem uma opção chamada de ‘valor’

(value), indicam o que pode ser usado em um comando e devem ficar entre dois () para que a engine

possa identificar. Exemplo:

Floor_raisebyvalue(tag,speed,value) // Sendo, (rótulo,velocidade,valor)

Então apenas preencha de acordo com o que você quer no seu script, digamos que o rótulo dos pisos que terão seus valores alterados seja 2:

Guia do Levelord – Black Edition

script 1 (void) {

Floor_raisebyvalue(2,25,...) }

e agora só falta o valor. script 1 (void) {

Floor_raisebyvalue(2,25,35) }

Pronto! O seu piso já irá elevar-se com a velocidade de 25 e vai elevar-se em 35 unidades. Bom agora nossos pisos já irão levantar, então o que falta? As paredes trocarem suas texturas! Lembra-se de que só precisamos achar algum comando que se encaixe com o que queremos em nosso script, nesse caso é o ‘setlinetexture’.

setlinetexture(side,position,texture) // Sendo, (lado,posição,textura)

Agora digamos que as linhas rotuladas tem um valor 3, vamos colocar em nosso script, mas antes, vamos usar a cabeça. Pense bem, se você um jogador, não iria achar estranho que de repente uma textura de parede irá virar sangue, o setor fica vermelho e um Archvile aparece em menos de 2 segundos!?!? Para resolver isso foi inventado o ‘delay’ (intervalo), esse intervalo trabalha com ‘tics’.

delay(tics) // Sendo, (tempo)

Lembre-se de que 35 ‘tics’ equivalem a 1 segundo então vamos colocar um intervalo de 1 segundo entre os comandos, para que assim pareça mais real.

script 1 (void) {

Floor_raisebyvalue(2,25,35); delay(35);

setlinetexture(side,position,texture) }

Agora vamos continuar o nosso script, completando o ‘setlinetexture’, lembre-se de colocar tudo corretamente, e do jeito que você quer, no nosso caso a textura será de sangue, então mudamos a

‘Texture_Middle’ para ‘blood1’, que é a textura de sangue do Doom 2.

setlinetexture(3,SIDE_FRONT,TEXTURE_MIDDLE,"Blood1"); Agora o comando esta completo, vamos adicioná-lo em nosso script. script 1 (void) {

Floor_raisebyvalue(2,25,35); delay(35);

setlinetexture(3,SIDE_FRONT,TEXTURE_MIDDLE,"Blood1"); }

Agora a sala fica vermelha, usaremos o comando ‘sector_setcolor(tag,red,blue,green)’, vamos dizer que nossa sala tem o rótulo 5. Lembre-se de que a sala só fica vermelha depois de 5 segundos, então... Intervalo neles! 35x5 = 255

Guia do Levelord – Black Edition

E agora colocamos o Archvile! O comando para colocar objetos no mapa é obtido pelo

‘thing_spawn(tid,type,byte,tid)’. Vamos apenas colocar um Archvile, mas antes é necessário um ‘mapspot’ no mapa para indicar onde o Archvile irá aparecer, então rotule um mapspot, o rótulo dele

também pode ser igual ao de um setor. O rótulo do nosso mapspot será 4, vamos coloca-lo em nosso script. script 1 (void) { Floor_raisebyvalue(2,25,35); delay(35); setlinetexture(3,SIDE_FRONT,TEXTURE_MIDDLE,"Blood1"); delay(255); sector_setcolor(5,203,0,0); delay(35); thing_spawn(4,T_Archville,0,0); }

Pronto seu script está completo, não foi tão difícil foi?

No documento Levelord - Doom Bible (páginas 79-82)

Documentos relacionados