Ativa o menu
Alternar menu de preferências
Alternar menu pessoal
Não autenticado(a)
Your IP address will be publicly visible if you make any edits.
DoomWiki.org
For more information on this article, visit the ACS page on the Doom Wiki.

ACS (Action Code Script) é a linguagem de script que foi criada originalmente para Hexen pela Raven Software e foi bastante expandida pelo ZDoom.

Introdução

ACS permite que criadores de mapas programem eventos durante o jogo, tornando a criação de ambientes interativos — mesmo no motor arcaico de Doom — infinitamente mais flexível. Com comandos bem básicos, o autor pode modificar a estrutura de um mapa de várias formas, como levantar e baixar pisos separadamente ou ao mesmo tempo, na mesma direção ou em direções opostas, e para qualquer altura ou profundidade. É possível até mover certas paredes, desde que atendam a critérios específicos (veja PolyObjects). Texturas exibidas em pisos e paredes podem ser alteradas. Monstros — e qualquer ator — podem ser colocados, removidos, monitorados, ter várias propriedades modificadas, receber objetivos etc. O ACS abre muitas possibilidades, especialmente se quem o usa for talentoso, paciente e criativo.

De forma um pouco mais técnica: um script é algo que uma pessoa escreve em algum editor de texto e que contém scripts individuais (como sub-rotinas), comandos, declarações de variáveis e assim por diante. ACS é uma linguagem de programação própria em miniatura, estruturada de forma parecida com C/C++. Os itens principais a reconhecer são os scripts e seus tipos de script, que basicamente são os eventos que disparam a sequência de comandos contida em um script. Um script pode ser iniciado escrevendo algo como o exemplo abaixo:

// This is a comment
/* This too */
int AvailableToAllScripts = 101;
int ICanMakeArrays[3] = {3,6,9};

Script 1 OPEN 
{
    int ScriptVariable = 0;
    while(AvailableToAllScripts == 101)
    {
        ScriptVariable++;
        ;
    }
}

Observe que entrar em loop em um script sem um delay fará com que o ZDoom finalize o script automaticamente, porque ele não daria chance para mais nada no mapa rodar. Isso é determinado contando quantas ações foram chamadas pelo script e encerrando-o quando esse total chega a 2.000.000. Algumas funções, como distance, podem atingir esse limite quando chamadas em um grande loop "for". Quando isso acontecer, você verá uma mensagem como:

Runaway script 1 terminated

Variáveis são dimensionadas como em muitas linguagens de programação. Se você quiser que uma variável esteja disponível para todos os scripts (escopo “global”), declare/defina-a fora de qualquer declaração de script (por tradição, acima delas). Arrays (variáveis que permitem armazenar e referenciar vários valores) são válidos no ZDoom. Elementos individuais do array são diferenciados por índices. Por exemplo, para atribuir o valor inteiro 9 ao array ICanMakeArrays, no elemento 2 (que é o TERCEIRO elemento, já que arrays começam em 0), você usaria: ICanMakeArrays[2] = 9;

Note que um script é definido de forma parecida com uma função em C, incluindo o fato de que ele não precisa ser terminado com ponto-e-vírgula após a chave de fechamento, como acontece com instruções dentro de scripts. "OPEN", como usado neste exemplo, é um tipo de script que diz ao ZDoom que o script deve ser executado ao iniciar o nível.

Note também que ACS suporta condicionais ("if") e, portanto, loops feitos com condicionais. Ele suporta a maioria (se não todas) as implementações de condicionais e loops de C/C++.

ACS precisa ser compilado antes de poder ser usado em um mapa. A ferramenta de linha de comando ACC foi feita para esse propósito.

Subpáginas

Tutorial de ACS

Básico de ACS

Estruturas de controle

Trabalhando com ACS

Recursos