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.

ACS: mudanças entre as edições

De Brdoom wiki
MegaManx3 (discussão | contribs)
Sem resumo de edição
MegaManx3 (discussão | contribs)
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 criada para [[Hexen]] pela Raven Software e que foi amplamente expandida pelo [[ZDoom]].
{{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==
O ACS permite que criadores de mapas programem eventos durante o jogo, tornando possível criar ambientes interativos mesmo no motor arcaico de [[Doom]] de forma muito mais flexível. Com comandos bastante simples, um autor pode modificar a estrutura de um mapa de várias maneiras, como subir e descer pisos separadamente ou simultaneamente, na mesma direção ou em direções opostas, e até qualquer altura ou profundidade desejada. Também é possível 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, na verdade — podem ser colocados, removidos, monitorados, ter várias de suas propriedades alteradas, receber objetivos, etc. O ACS é uma implementação de script que abre muitas possibilidades, especialmente se quem o utiliza for talentoso, paciente e criativo.
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 (semelhantes a sub-rotinas), comandos, declarações de variáveis e assim por diante. O ACS é uma linguagem de programação própria em miniatura, estruturada de forma muito semelhante ao C/C++. Os principais elementos 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 determinado script. Um script é iniciado digitando algo como o exemplo a seguir:
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
  /* comentario*/ // aqui tambem
  /* This too */
  int Disponivelparatodososcritps = 101;
  int AvailableToAllScripts = 101;
  int eupossofazervetores[3] = {3,6,9};
  int ICanMakeArrays[3] = {3,6,9};
   
   
  Script 1 {{SType|Open}}  
  Script 1 {{SType|Open}}  
  {
  {
     int Variaveldoscript = 0;
     int ScriptVariable = 0;
     while(Disponivelparatodososcritps == 101)
     while(AvailableToAllScripts == 101)
     {
     {
         Variaveldoscript++;
         ScriptVariable++;
         [[Delay]](1);
         ;
     }
     }
  }
  }


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


Observe que executar um script em loop sem um atraso fará com que o ZDoom o encerre automaticamente, pois isso impediria que qualquer outra coisa no mapa fosse executada. Isso é determinado contando a quantidade de ações chamadas pelo script e encerrando-o caso esse número chegue a 2.000.000. Algumas funções, como [[distance]], podem atingir esse limite quando chamadas dentro de um grande loop “for”. Quando isso acontece, você verá uma mensagem como a seguinte:
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 declaradas de forma semelhante à de 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 de um array podem ser diferenciados atribuindo números de índice. Por exemplo, para atribuir o valor inteiro 9 ao array ICanMakeArrays no elemento 2 (que é o TERCEIRO elemento, já que arrays começam a contar do zero), você usaria a seguinte instrução:
ICanMakeArrays[2] = 9;


Note que um script é definido de forma semelhante a uma função em C, inclusive no fato de que ele não precisa ser terminado com ponto e vírgula após a chave de fechamento, diferentemente das instruções dentro dos scripts. “OPEN”, como usado neste exemplo, é um tipo de script que informa ao [[ZDoom]] que o script deve ser executado ao iniciar o nível.
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.


Observe também que o ACS suporta instruções condicionais (“if”) e, portanto, loops criados com essas instruções. Ele oferece suporte à maioria (se não a todas) as implementações de condicionais e loops do C/C++.
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++.


O ACS precisa ser compilado antes de poder ser usado em um mapa. A ferramenta de linha de comando [[ACC]] foi criada especificamente para esse propósito.
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 guia rápido para iniciantes em ACS]]
* [[A quick beginner's guide to ACS| Um Guia de ACS para iniciantes ]]
 
* [[Data types|Variables and data types]]
[[Data types|Variáveis e tipos de dados]]
* [[Definitions|Unit definitions]]
 
* [[Action specials|Action Specials]]
[[Definitions|Definições]]
* [[Built-in ACS functions]]
 
* [[ACS actor properties]]
[[Action specials|Ações especiais]]
* [[FOR and WHILE loops]]
 
* [[Doom Builder ACS Configuration]]
[[Built-in ACS functions|Funções internas do ACS]]
* [[Libraries]]
 
* [[Other useful functions]]
[[ACS actor properties|Propriedades de atores no ACS]]
* [[Script types]] (OPEN, ENTER, etc)
 
* [[Named script]]s
[[FOR and WHILE loops|Laços FOR e WHILE]]
* [[About Multiplayer, Scripts, and TIDs]]
 
[[Doom Builder ACS Configuration|Configuração de ACS no Doom Builder]]
 
[[Libraries|Bibliotecas]]
 
[[Other useful functions|Outras funções úteis]]
 
[[Script types]] (OPEN, ENTER, etc)
 
[[Named script]]s
 
[[About Multiplayer, Scripts, and TIDs|Sobre multiplayer, scripts e TIDs]]


==Tutorial de ACS==
==Tutorial de ACS==


===Noções básicas de ACS===
===Básico de ACS===
 
* [[Structure of a script]]
[[Structure of a script|Estrutura de um script]]
* [[Scope]]
 
* [[Constants]]
[[Scope|Escopo]]
* [[Operators]]
 
[[Constants|Constantes]]
 
[[Operators|Operadores]]


===Estruturas de controle===
===Estruturas de controle===
 
* [[Script types|Scripts]]
[[Script types|Scripts]]
* [[Functions]]
 
* [[Switch/Case]]
[[Functions|Funções]]
 
[[Switch/Case]]


===Trabalhando com ACS===
===Trabalhando com ACS===
 
* [[Action specials|Action Specials]]
[[Action specials|Ações especiais]]
* [[Built-in ACS functions]]
 
* [[Loops]]
[[Built-in ACS functions|Funções internas do ACS]]
* [[Libraries]]
 
* [[Using ACS in Doom-format maps]]
[[Loops|Laços]]
 
[[Libraries|Bibliotecas]]
 
[[Using ACS in Doom-format maps|Usando ACS em mapas no formato Doom]]


===Recursos===
===Recursos===
 
* [[Definitions|Some Basic Definitions]]
[[Definitions|Algumas definições básicas]]
* [[Richard Clark's tutorials#Script Library|Rick Clark's Scripting Primer]]
 
* [[Doom Builder ACS configuration]]
[[Richard Clark's tutorials#Script Library|Guia de scripts de Rick Clark]]
* [[Other useful functions]]
 
* [[Tutorials#ACS_Related|Tutorials]].
[[Doom Builder ACS configuration|Configuração de ACS no Doom Builder]]
 
[[Other useful functions|Outras funções úteis]]
 
[[Tutorials#ACS_Related|Tutoriais]].


[[Category:ACS| ]]
[[Category:ACS| ]]

Edição atual tal como às 21h55min de 4 de fevereiro de 2026

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