ACS: mudanças entre as edições
Mais ações
Sem resumo de edição |
Sem resumo de edição |
||
| (Uma revisão intermediária pelo mesmo usuário não está sendo mostrada) | |||
| Linha 1: | Linha 1: | ||
{{Doomwiki}}'''ACS''' (Action Code Script) é a linguagem de script originalmente | {{Doomwiki}}'''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== | ==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 | 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 [[script types|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 | int AvailableToAllScripts = 101; | ||
int | int ICanMakeArrays[3] = {3,6,9}; | ||
Script 1 {{SType|Open}} | Script 1 {{SType|Open}} | ||
{ | { | ||
int | int ScriptVariable = 0; | ||
while( | 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; | |||
Variáveis são | |||
ICanMakeArrays[2] = 9; | |||
Note que um script é definido de forma | 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== | ==Subpáginas== | ||
[[A quick beginner's guide to ACS|Um | * [[A quick beginner's guide to ACS| Um Guia de ACS para iniciantes ]] | ||
* [[Data types|Variables and data types]] | |||
[[Data types| | * [[Definitions|Unit definitions]] | ||
* [[Action specials|Action Specials]] | |||
[[Definitions| | * [[Built-in ACS functions]] | ||
* [[ACS actor properties]] | |||
[[Action specials| | * [[FOR and WHILE loops]] | ||
* [[Doom Builder ACS Configuration]] | |||
[[Built-in ACS functions | * [[Libraries]] | ||
* [[Other useful functions]] | |||
[[ACS actor properties | * [[Script types]] (OPEN, ENTER, etc) | ||
* [[Named script]]s | |||
[[FOR and WHILE loops | * [[About Multiplayer, Scripts, and TIDs]] | ||
[[Doom Builder ACS Configuration | |||
[[Libraries | |||
[[Other useful functions | |||
[[Script types]] (OPEN, ENTER, etc) | |||
[[Named script]]s | |||
[[About Multiplayer, Scripts, and | |||
==Tutorial de ACS== | ==Tutorial de ACS== | ||
=== | ===Básico de ACS=== | ||
* [[Structure of a script]] | |||
[[Structure of a | * [[Scope]] | ||
* [[Constants]] | |||
[[Scope | * [[Operators]] | ||
[[Constants | |||
[[Operators | |||
===Estruturas de controle=== | ===Estruturas de controle=== | ||
* [[Script types|Scripts]] | |||
[[Script types|Scripts]] | * [[Functions]] | ||
* [[Switch/Case]] | |||
[[Functions | |||
[[Switch/Case]] | |||
===Trabalhando com ACS=== | ===Trabalhando com ACS=== | ||
* [[Action specials|Action Specials]] | |||
[[Action specials| | * [[Built-in ACS functions]] | ||
* [[Loops]] | |||
[[Built-in ACS functions | * [[Libraries]] | ||
* [[Using ACS in Doom-format maps]] | |||
[[Loops | |||
[[Libraries | |||
[[Using ACS in Doom-format maps | |||
===Recursos=== | ===Recursos=== | ||
* [[Definitions|Some Basic Definitions]] | |||
[[Definitions| | * [[Richard Clark's tutorials#Script Library|Rick Clark's Scripting Primer]] | ||
* [[Doom Builder ACS configuration]] | |||
[[Richard Clark's tutorials#Script Library| | * [[Other useful functions]] | ||
* [[Tutorials#ACS_Related|Tutorials]]. | |||
[[Doom Builder ACS configuration | |||
[[Other useful functions | |||
[[Tutorials#ACS_Related| | |||
[[Category:ACS| ]] | [[Category:ACS| ]] | ||
Edição atual tal como às 21h55min de 4 de fevereiro de 2026
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.
