<?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=Libraries</id>
	<title>Libraries - 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=Libraries"/>
	<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Libraries&amp;action=history"/>
	<updated>2026-04-15T01:13:41Z</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=Libraries&amp;diff=211&amp;oldid=prev</id>
		<title>MegaManx3: Criou página com &#039;Uma &#039;&#039;&#039;biblioteca&#039;&#039;&#039; é um script ACS independente que define scripts, funções e constantes comuns, que podem ser usados por outros scripts ACS. Ela é diferente das diretivas padrão &#039;&#039;&#039;#include&#039;&#039;&#039; do ACS porque o arquivo incluído **não é compilado dentro** do binário final resultante.  Usar bibliotecas pode ajudar a economizar espaço nos seus scripts (útil se você usa um editor de scripts com limite de tamanho, como o WadA...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Libraries&amp;diff=211&amp;oldid=prev"/>
		<updated>2026-03-08T17:22:58Z</updated>

		<summary type="html">&lt;p&gt;Criou página com &amp;#039;Uma &amp;#039;&amp;#039;&amp;#039;biblioteca&amp;#039;&amp;#039;&amp;#039; é um script &lt;a href=&quot;/index.php/ACS&quot; title=&quot;ACS&quot;&gt;ACS&lt;/a&gt; independente que define &lt;a href=&quot;/index.php?title=Scripts&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Scripts (página inexistente)&quot;&gt;scripts&lt;/a&gt;, &lt;a href=&quot;/index.php?title=Functions&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Functions (página inexistente)&quot;&gt;funções&lt;/a&gt; e &lt;a href=&quot;/index.php?title=Constants&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Constants (página inexistente)&quot;&gt;constantes&lt;/a&gt; comuns, que podem ser usados por outros scripts ACS. Ela é diferente das diretivas padrão &amp;#039;&amp;#039;&amp;#039;#include&amp;#039;&amp;#039;&amp;#039; do ACS porque o arquivo incluído **não é compilado dentro** do binário final resultante.  Usar bibliotecas pode ajudar a economizar espaço nos seus scripts (útil se você usa um editor de scripts com limite de tamanho, como o WadA...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Uma &amp;#039;&amp;#039;&amp;#039;biblioteca&amp;#039;&amp;#039;&amp;#039; é um script [[ACS]] independente que define [[scripts]], [[functions|funções]] e [[constants|constantes]] comuns, que podem ser usados por outros scripts ACS.&lt;br /&gt;
Ela é diferente das diretivas padrão &amp;#039;&amp;#039;&amp;#039;#include&amp;#039;&amp;#039;&amp;#039; do ACS porque o arquivo incluído **não é compilado dentro** do binário final resultante.&lt;br /&gt;
&lt;br /&gt;
Usar bibliotecas pode ajudar a economizar espaço nos seus scripts (útil se você usa um editor de scripts com limite de tamanho, como o [[WadAuthor]]), além de reduzir duplicação de código e erros de copy-paste.&lt;br /&gt;
Quaisquer mudanças nas bibliotecas serão refletidas automaticamente em todos os scripts que as utilizam.&lt;br /&gt;
&lt;br /&gt;
O uso mais comum de bibliotecas é em projetos grandes, onde múltiplos mapas compartilham ACS, e também em mods auxiliares de gameplay que incluem seu próprio ACS via [[LOADACS]].&lt;br /&gt;
&lt;br /&gt;
== Criando bibliotecas ==&lt;br /&gt;
Um script ACS normal é marcado como biblioteca usando a diretiva &amp;#039;&amp;#039;&amp;#039;#library&amp;#039;&amp;#039;&amp;#039;, que deve ser a primeira instrução no arquivo:&lt;br /&gt;
&lt;br /&gt;
 #library &amp;quot;LIBNAME&amp;quot;&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
O nome passado para a diretiva &amp;#039;&amp;#039;&amp;#039;#library&amp;#039;&amp;#039;&amp;#039; especifica o nome da biblioteca, limitado pelas regras padrão de nomes de lumps em WAD.&lt;br /&gt;
Depois de [[ACC|compilado]], o lump binário deve ser colocado no [[namespace|namespace]] de bibliotecas ACS com o mesmo nome usado na diretiva &amp;#039;&amp;#039;&amp;#039;#library&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Editores modernos de recursos, como o [[SLADE 3]], conseguem automatizar esse processo.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota:&amp;#039;&amp;#039;&amp;#039; ao usar [[LOADACS]], scripts {{SType|enter}} e {{SType|open}} dentro da sua biblioteca serão executados em **todo** mapa (seguindo as regras de cada tipo de script).&lt;br /&gt;
&lt;br /&gt;
== Importando bibliotecas ==&lt;br /&gt;
Scripts podem importar bibliotecas usando a diretiva &amp;#039;&amp;#039;&amp;#039;#import&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
 #import &amp;quot;libname.acs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
O caminho passado em &amp;#039;&amp;#039;&amp;#039;#import&amp;#039;&amp;#039;&amp;#039; especifica o fonte &amp;#039;&amp;#039;não compilado&amp;#039;&amp;#039; da biblioteca (e não o binário compilado). O caminho pode ser absoluto ou relativo (por exemplo, &amp;quot;/doom/levels/mymaps/foomap/lumps/lib/foolib.acs&amp;quot;).&lt;br /&gt;
Os seguintes elementos são importados da biblioteca:&lt;br /&gt;
&lt;br /&gt;
* [[Scripts]], tanto [[named script|nomeados]] quanto numerados (em caso de conflito número/nome, o que for carregado por último é usado {{verification}})&lt;br /&gt;
* [[Functions|Funções]]&lt;br /&gt;
* [[Constants|Constantes]] declaradas com a diretiva &amp;#039;&amp;#039;&amp;#039;#libdefine&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota:&amp;#039;&amp;#039;&amp;#039; quando o [[ACC]] varre bibliotecas importadas, todas as diretivas &amp;#039;&amp;#039;&amp;#039;#include&amp;#039;&amp;#039;&amp;#039; dentro da biblioteca são ignoradas e esses arquivos não são varridos.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
Abaixo há um exemplo curto e (espero) simples: uma biblioteca de objetivos de fase. Eu comentei mais do que normalmente comentaria, e isso assume que você já tem conhecimento básico de ACS (como [[loops|loops]], if, [[HudMessage]], #define, funções, [[arrays|arrays]] e variáveis). Se você não tiver, não fique tentando “quebrar a cabeça” com isso (e, se você não conhece essas coisas, provavelmente ainda não deveria estar usando bibliotecas).&lt;br /&gt;
&lt;br /&gt;
 //foolib.acs, o arquivo texto do script (biblioteca)&lt;br /&gt;
 #library &amp;quot;foolib&amp;quot;&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MAX_OBJECTIVES 4 // número máximo de objetivos por mapa&lt;br /&gt;
 &lt;br /&gt;
 // este array guarda os objetivos; ele é alterado cada vez que você entra em um novo mapa&lt;br /&gt;
 world str 0:objectives[];&lt;br /&gt;
 &lt;br /&gt;
 // esta função é chamada pelo script 999 (veja abaixo)&lt;br /&gt;
 function void printobjs(void)&lt;br /&gt;
 {&lt;br /&gt;
     [[HudMessage]](s:&amp;quot;Objectives\n\n&amp;quot;; &lt;br /&gt;
         {{const|HUDMSG_PLAIN}} | {{const|HUDMSG_LOG}}, 0, {{const|CR_RED}}, 0.0, 0.0, 5.0 );&lt;br /&gt;
     &lt;br /&gt;
     // imprime cada objetivo&lt;br /&gt;
     for(int x = 0; x &amp;lt; MAX_OBJECTIVES; x++)&lt;br /&gt;
     {&lt;br /&gt;
         [[HudMessage]](s:objectives[x]; &lt;br /&gt;
             {{const|HUDMSG_PLAIN}} | {{const|HUDMSG_LOG}}, 0, {{const|CR_WHITE}}, 0.0, (x * 0.1) + 0.1, 5.0);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // Este script roda toda vez que você entra em um novo mapa, mostrando os&lt;br /&gt;
 // objetivos de missão daquele mapa. Se você quiser que o jogador consiga&lt;br /&gt;
 // ver os objetivos depois que eles sumirem, você precisa configurar um alias&lt;br /&gt;
 // para “puke 999” em um lump [[KEYCONF]].&lt;br /&gt;
 script 999 {{SType|Enter}}&lt;br /&gt;
 {&lt;br /&gt;
     printobjs();&lt;br /&gt;
     [[delay]](35 * 5); // atraso de cinco segundos&lt;br /&gt;
     // note que delays não podem ser colocados em funções, por isso aparece aqui&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
 // este é um lump SCRIPTS para o map01&lt;br /&gt;
 #import &amp;quot;foolib.acs&amp;quot;&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 script 100 {{SType|Open}}&lt;br /&gt;
 {&lt;br /&gt;
     objectives[0] = &amp;quot;Find the shotgun&amp;quot;;&lt;br /&gt;
     objectives[1] = &amp;quot;Get the blue key&amp;quot;;&lt;br /&gt;
     objectives[2] = &amp;quot;Destroy the computer&amp;quot;;&lt;br /&gt;
     objectives[3] = &amp;quot;Escape from the complex&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // Depois você coloca aqui embaixo os scripts que precisar para o mapa.&lt;br /&gt;
 // Se quiser, ao completar um objetivo você pode alterar a cor do objetivo&lt;br /&gt;
 // completado, para o jogador saber que concluiu. Por exemplo: o HudMessage&lt;br /&gt;
 // imprime tudo em branco; então o script abaixo roda quando você completa&lt;br /&gt;
 // o primeiro objetivo (objectives[0]).&lt;br /&gt;
 &lt;br /&gt;
 script 1 (void)&lt;br /&gt;
 {&lt;br /&gt;
     objectives[0] = &amp;quot;\cFFind the shotgun&amp;quot;;&lt;br /&gt;
     // o \cF no começo da string muda a cor para amarelo (ou dourado)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
 // este é um lump SCRIPTS para o map02&lt;br /&gt;
 #import &amp;quot;foolib.acs&amp;quot;&lt;br /&gt;
 #include &amp;quot;zcommon.acs&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 script 100 {{SType|Open}}&lt;br /&gt;
 {&lt;br /&gt;
     objectives[0] = &amp;quot;Kill some imps&amp;quot;;&lt;br /&gt;
     objectives[1] = &amp;quot;Eat a cheeseburger&amp;quot;;&lt;br /&gt;
     objectives[2] = &amp;quot;Find a BFG&amp;quot;;&lt;br /&gt;
     objectives[3] = &amp;quot;&amp;quot;;&lt;br /&gt;
     // se você não quer que um objetivo apareça, deixe como string vazia&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Note que este exemplo armazena cada objetivo nos scripts do mapa; você poderia armazenar na biblioteca, mas aí precisaria que os scripts de saída do mapa anotassem para qual mapa você está indo (não é difícil) e então selecionassem o array apropriado na biblioteca ao imprimir os objetivos.&lt;br /&gt;
[[Category:ACS]][[Category:Glossary]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
</feed>