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.
Note: Esta página é sobre ACS. Para ZScript, veja ZScript data types.

ACS suporta vários tipos de dados que você pode usar. Desses, a maioria é tratada como “gambiarras”. Na prática, ACS só suporta um tipo de dado de verdade: o tipo inteiro.

Integer

O tipo inteiro é o tipo de dado básico. Um inteiro é qualquer número inteiro (sem parte fracionária) e pode ser negativo, positivo ou zero. O intervalo de um inteiro vai de -2.147.483.648 a 2.147.483.647. Para declarar uma variável desse tipo você usa a palavra-chave int.

Boolean

ACS tem um suporte “hackeado” para o tipo booleano. Esse tipo pode guardar um valor verdadeiro ou falso (ou 1 e 0). Em ACS você usa a palavra-chave bool para declarar uma variável booleana. Mesmo usando um nome diferente, no fim das contas é a mesma coisa que um inteiro e tem todas as mesmas propriedades.

//Isto é legal
bool bTest = 7;

Character

O suporte ao tipo caractere é praticamente o mesmo de C/C++, exceto que você precisa usar o tipo inteiro. Ao atribuir caracteres a uma variável, você deve colocá-los entre aspas simples, como neste exemplo:

//Isto atribui a variável à letra a
int Test = 'a';

Você também pode usar caracteres especiais: ASCII NUL '\0', '\\', '\n' para nova linha e '\t' para tabulação horizontal.

String

Em ACS você pode definir literais de string que se parecem com isto:

//isto é um literal de string
"OMG its a string"

Quando o compilador vê isso, ele adiciona a string à tabela de strings e então atribui a ela um número de índice. A variável de string, declarada com a palavra-chave str, não guarda a string em si, mas sim o índice da tabela de strings, parecido com como literais de string em C “decaem” para ponteiros em certos contextos. Em outras palavras, a variável de string é a mesma coisa que um inteiro e tem todas as suas propriedades. A única forma do ACS “saber” que aquilo é uma string é quando ela é usada por funções especiais que esperam uma string.

//Esta função na verdade recebe o índice dessa string na tabela de strings
//mas a função sabe pegar esse número e usá-lo para procurar na tabela
CheckInventory("Fist");

Este é outro exemplo de como strings são tratadas:

//Aqui tentamos somar duas strings
str Test = "omg its a " + "string!";
print(s:Test); //Isto imprime "string!" e NÃO "omg its a string!"
//o que realmente aconteceu foi isto
Test = 0 + 1;
//então você vê que o que está sendo armazenado é o índice

Para concatenar strings, não use +; use StrParam no lugar.

Fixed point

ACS tem um suporte bem básico para tipos de ponto fixo. O que acontece é que você precisa atribuí-los a tipos inteiros. A parte inteira fica nos bits 16–31 do inteiro e a parte fracionária fica nos bits 0–15.

   3                   2                   1                   0
 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Parte Inteira        |      Parte Fracionária        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Para ver isso em ação, temos este exemplo:

//Isto atribui 1.0 a um inteiro
int Test = 1.0;
//O valor inteiro real é 65536, como mostrado pelo comando abaixo
PrintBold(d:Test);
PrintBold(f:Test); // Isto imprime como ponto fixo, e vai mostrar "1"