<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.brdoom.org/index.php?action=history&amp;feed=atom&amp;title=ZScript</id>
	<title>ZScript - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.brdoom.org/index.php?action=history&amp;feed=atom&amp;title=ZScript"/>
	<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=ZScript&amp;action=history"/>
	<updated>2026-04-14T12:27:18Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=ZScript&amp;diff=93&amp;oldid=prev</id>
		<title>MegaManx3: Criação da pagina do Zcript</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=ZScript&amp;diff=93&amp;oldid=prev"/>
		<updated>2026-02-05T16:03:48Z</updated>

		<summary type="html">&lt;p&gt;Criação da pagina do Zcript&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;ZScript&amp;#039;&amp;#039;&amp;#039; (antigamente conhecido como [[DoomScript]]) é um lump baseado em texto usado para criar classes, structs, menus e funcionalidades personalizadas para uso no [[ZDoom]]. Ele serve como substituto completo do [[DECORATE]] e como substituto parcial do [[SBARINFO]], ao mesmo tempo em que suporta todos os métodos e recursos deles. ZScript é parecido com Java e C# em vários aspectos e permite um controle muito mais avançado de praticamente tudo no gameplay (Atores, mapas, modos de jogo, etc.) do que o [[DECORATE]] permite, além de possibilitar a criação de UI (como {{class|BaseStatusBar|HUDs customizadas}} e menus).&lt;br /&gt;
&lt;br /&gt;
Assim como no [[DECORATE]], você pode incluir múltiplos lumps/arquivos de ZScript para processamento, usando um caminho completo ou relativo. Um caminho relativo começa com {{c|./}} ou {{c|../}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt; // Caminho completo&lt;br /&gt;
&lt;br /&gt;
# include &amp;quot;ZScript/Const.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Caminhos relativos&lt;br /&gt;
&lt;br /&gt;
# include &amp;quot;./Items/Health.txt&amp;quot; // Começa a partir do diretório onde este arquivo está&lt;br /&gt;
# include &amp;quot;../Items/Armor.txt&amp;quot; // Começa a partir do diretório pai&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Devido a como o ZScript é processado, é possível dar a um arquivo um nome que conflite com outros mods ou com arquivos internos do próprio engine. Por exemplo, se você tiver um arquivo no seu mod com o caminho {{c|ZScript/Const.txt}}, isso impedirá o jogo de carregar corretamente esse arquivo, já que o próprio ZDoom já define esse arquivo dentro da subpasta {{c|ZScript}} dele. Para evitar esse tipo de conflito, é recomendado ter uma subpasta com o nome do seu mod, por exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# include &amp;quot;MyMod/Const.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Antes de {{DRDForum|GZDoom 2.3.0|t=7453}}, o ZScript precisava ser habilitado manualmente via parâmetro de linha de comando, mas hoje ele é usado por padrão. As últimas versões de desenvolvimento do ZDoom após a 2.8.1 exigiam o parâmetro {{c|-zscript}} para habilitar o carregamento de lumps ZScript.&lt;br /&gt;
&lt;br /&gt;
Um arquivo completo de ZScript é chamado de &amp;#039;&amp;#039;&amp;#039;unidade de tradução&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;translation unit&amp;#039;&amp;#039;), semelhante ao uso do termo na linguagem C.{{Note|Todas as palavras-chave e identificadores no ZScript não diferenciam maiúsculas/minúsculas (&amp;#039;&amp;#039;case insensitive&amp;#039;&amp;#039;).}}&lt;br /&gt;
&lt;br /&gt;
=== Recursos do ZScript ===&lt;br /&gt;
Os seguintes recursos existem desde o GZDoom 3.0:&lt;br /&gt;
&lt;br /&gt;
* Compatibilidade com [[DECORATE]] (classes em DECORATE podem herdar de classes em ZScript)&lt;br /&gt;
* [[ZScript data types#Constants|Constantes]]&lt;br /&gt;
* [[ZScript data types|Variáveis]] locais e no escopo da classe&lt;br /&gt;
* Capacidade de definir e manipular ponteiros de ator customizados&lt;br /&gt;
* Funções customizadas&lt;br /&gt;
* [[ZScript data types#Arrays|Arrays]]&lt;br /&gt;
* [[Dynamic arrays]]&lt;br /&gt;
* Acesso (e controle parcial) a dados do mapa (por exemplo, veja {{struct|LevelLocals}})&lt;br /&gt;
* [[ZScript menus|Definição de menus customizados]]&lt;br /&gt;
* {{class|BaseStatusBar|Substituto do SBARINFO}}&lt;br /&gt;
&lt;br /&gt;
== Ordem de carregamento ==&lt;br /&gt;
Para um arquivo carregado no GZDoom, ele carrega o arquivo {{c|./zscript.txt}} em um [[Using ZIPs as WAD replacement|arquivo ZIP (PK3)]] ou o lump {{c|ZSCRIPT}} em um WAD. Para mais informações, veja [[Object scopes and versions|a página sobre versionamento de arquivos.]]&lt;br /&gt;
&lt;br /&gt;
O ZScript é bem mais flexível e os {{c|include}}s podem ser feitos em qualquer ordem, exceto no caso de [[ZScript classes#Extending Classes|extender classes]].&lt;br /&gt;
&lt;br /&gt;
== Combinando ZScript e DECORATE ==&lt;br /&gt;
É possível usar DECORATE e ZScript ao mesmo tempo. Por exemplo, o ZScript pode ser usado para criar uma função customizada que então fica disponível para atores em DECORATE. O código em ZScript é processado e compilado antes do código em DECORATE; isso significa que atores DECORATE podem herdar de atores ZScript, mas não o contrário. Para referências necessárias apenas em tempo de execução, e não em tempo de compilação (como chamar uma função para spawnar um ator), não há restrição: um ator em ZScript pode spawnar um ator em DECORATE, e vice-versa.&lt;br /&gt;
&lt;br /&gt;
Isso geralmente só é recomendado quando um projeto originalmente feito em DECORATE está sendo atualizado para ZScript. Para projetos novos, o DECORATE deve ser considerado [[Deprecation|obsoleto]], e o ZScript deve ser usado para definir todas as classes (todos os métodos, recursos e funções do DECORATE ainda podem ser usados no ZScript de maneira muito parecida). O próprio GZDoom não usa mais DECORATE para suas classes internas.&lt;br /&gt;
&lt;br /&gt;
[[ZScript]] tem, e continuará tendo, uma enorme expansão de recursos.&lt;br /&gt;
&lt;br /&gt;
== Tópicos de ZScript ==&lt;br /&gt;
&lt;br /&gt;
* [[Coding language differences]]&lt;br /&gt;
* [[ZScript data types]]&lt;br /&gt;
* [[Operators (ZScript)|Operadores de ZScript]]&lt;br /&gt;
* [[Statements (ZScript)|Declarações/Statements de ZScript]]&lt;br /&gt;
* [[Object scopes and versions]]&lt;br /&gt;
* [[ZScript classes]]&lt;br /&gt;
* [[Structs]]&lt;br /&gt;
* [[ZScript actor flags]]&lt;br /&gt;
* [[ZScript spawn flags]]&lt;br /&gt;
* [[ZScript functions]]&lt;br /&gt;
* [[ZScript actor functions]]&lt;br /&gt;
* [[ZScript virtual functions]]&lt;br /&gt;
* [[ZScript mixins]]&lt;br /&gt;
* [[ZScript custom properties]]&lt;br /&gt;
* [[ZScript global variables]]&lt;br /&gt;
* [[ZScript named arguments]]&lt;br /&gt;
* [[Events and handlers]]&lt;br /&gt;
* [[:Categoria:Custom action functions|Funções de ação customizadas]]&lt;br /&gt;
* [[Controlling dynamic lights]]&lt;br /&gt;
* [[CVar (ZScript)|CVars em ZScript]]&lt;br /&gt;
* [[Associative maps]]&lt;br /&gt;
* [[ZScript special words]]&lt;br /&gt;
&lt;br /&gt;
== Tópicos avançados ==&lt;br /&gt;
Estas seções são para usuários avançados e programadores que querem mais controle sobre seus mods. O melhor caminho para modders é dar uma revisada em uma linguagem como Java ou C#. Esses tópicos assumem que quem lê já sabe trabalhar com ZScript, de preferência com boa parte do que foi listado acima.&lt;br /&gt;
&lt;br /&gt;
Também vale a pena abrir o gzdoom.pk3 com qualquer programa que consiga navegar arquivos ZIP. O arquivo base contém bastante código ZScript que pode servir como exemplo para modders.&lt;br /&gt;
&lt;br /&gt;
* [[Function pointers]]&lt;br /&gt;
* [[Events and handlers]]&lt;br /&gt;
* [[ZScript menus]]&lt;br /&gt;
* [[ZScript status bars]]&lt;br /&gt;
&lt;br /&gt;
== Guias de ZScript ==&lt;br /&gt;
&lt;br /&gt;
* [[Creating non-interactive decorations (ZScript)]]&lt;br /&gt;
* [[Creating new monsters or other complex items (ZScript)]]&lt;br /&gt;
* [[Creating new projectiles (ZScript)]]&lt;br /&gt;
* [[Creating new inventory items (ZScript)]]&lt;br /&gt;
* [[Creating new weapons (ZScript)]]&lt;br /&gt;
* [[Creating interactive decorations]]&lt;br /&gt;
* [[Creating new player classes]]&lt;br /&gt;
* [[Using inheritance]]&lt;br /&gt;
* [[Converting DECORATE code to ZScript]]&lt;br /&gt;
* [[Creating multiplayer-friendly ZScript]]&lt;br /&gt;
* [[Using pointers in ZScript]]&lt;br /&gt;
* [[Using user variables in ZScript]]&lt;br /&gt;
&lt;br /&gt;
== Documentação adicional ==&lt;br /&gt;
Se nenhuma das páginas acima responder suas dúvidas, o Marrub vem trabalhando em uma documentação mais detalhada e abrangente do núcleo da linguagem e da API do ZScript, disponível em [https://forum.zdoom.org/viewtopic.php?f=122&amp;amp;t=59770 este tópico no fórum]. Esse material ainda é um trabalho em andamento, mas deve ser incorporado ao wiki quando estiver completo. Até lá, essa documentação extra pode ser encontrada aqui: https://github.com/marrub--/zscript-doc/blob/master/README.md&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
</feed>