Considero este um tema muito importante na linguagem Pawn, por isso, leiam com atenção:
1 - O que são variáveis ?
Variáveis são símbolos criados para assumir algum valor, elas podem variar (daí o nome variável) dependendo de onde e de como estamos usando-as .
Em uma questão de Matemática por exemplo, se ela diz que X = 2, então sabemos que quando o X aparecer em algum lugar da conta que fizermos, poderemos substituí-lo por 2.
Essa questão de Matemática, como voce resolveria se a questão dissesse que Y = 10 e voce tivesse que achar o valor de X ?
Code:
X = 3 + Y
E aí ? Quanto valeria o X ?
Resposta: X valeria 13, pois:
Code:
X = 3 + Y
É igual á:
Code:
X = 3 + 10
que é igual á:
Code:
X = 13
Não entendeu ? Leia de novo .
2 - Variáveis na linguagem Pawn:
No Pawn, as variáveis são usadas em quase tudo .
Como exemplo, vamos restringir um comando chamado /pum, só usando váriavéis :
- Primeiro criamos uma variável:
Code:
new Futebol;//Ao criarmos a variável, ela automaticamente ganha o valor 0.
- Agora vamos fazer com que ela ganhe um valor (4, por exemplo), ao usar qualquer comando (no caso, o comando /ei):
Code:
if(strcmp("/ei",cmdtext,true,3)==0) { Futebol = 4;//Ao usar o comando /ei, a variável ganha valor igual á 4 return 1; }
E finalmente, o comando /pum que queríamos restringir:
Code:
if(strcmp("/pum",cmdtext,true,4)==0) { if(Futebol == 4)//Isso checará se a variável "Futebol" é igual á 4, só se for igual á 4, acontecerá o que tem dentro das chaves do if, ou seja, o print("PUMMM!"); { print("PUMMM!"); } return 1; }
Agora vamos pensar..., a linha if(Futebol == 4) checou se variável é igual á 4 certo ?
Mas, tem um porém aí, A VARIÁVEL SÓ SERÁ 4 SE O CARA TIVER USADO O COMANDO /ei ANTES, POIS ELA SÓ VIRA 4QUANDO ESSE COMANDO É USADO, LEMBRA ?
Viu ? , agora o comando /pum só pode ser ativado se o comando /ei for usado antes, em outras palavras, ele está restrito agora .
3 - Tipos de variáveis I (Locais e Globais) :
* Variáveis Locais.
Uma variável local só pode ser usada em um único lugar, por exemplo:
Code:
if(strcmp("/afff",cmdtext,true,5)==0) { new TENSO; //A variável TENSO foi criada dentro do comando /afff return 1; }//A variável TENSO é destruída quando esta chave é lida após o processamento do comando.
Se a variável foi criada dentro do comando /afff e destruída quando a chave foi lida, então nem podemos pensar em usar aTENSO em outro comando, pois ela só é criada dentro do comando /afff e destruída no final dele.
Por isso chamados esse tipo de variável de Variável Local, pois só podemos usá-la em um local do GM/FS (no caso acima, só poderíamos usar a variável dentro do comando, e antes do final dele ).
* Variáveis Globais.
As globais normalmente são criadas no Topo do GM ou FS, um lugar que é livre de chaves que possam destruir essas variáveis.
Se criamos uma variável no Topo do GM, por exemplo:
Code:
new PQP;
Como ela está no topo do GM e não foi destruída por nenhuma chave, então podemos usa-lá em qualquer lugar do GM/FS que seja, sem precisar criá-la de novo pois ela já existe no Topo do GM.
Se é assim, poderíamos usá-la em um comando:
Code:
if(strcmp("/xiu",cmdtext,true,4)==0) { PQP = 3; //A variável já foi criada no Topo do GM, por isso vamos igualá-la aqui no comando. return 1; }
Obs: Variáveis Globais não podem ser destruídas por chaves de nenhuma public, comando etc.
4 - Tipos de variáveis II (new, static e const) :
* New
Método de criação de uma variável comum, bastando colocar new + nome da variável + ponto e vírgula :
Exemplo:
Code:
new Eita; //variável criada.
* Static
Método de criação de uma variável com uma característica especial: quando local ela não é destruída :
Exemplo:
Code:
if(strcmp("/noob",cmdtext,true,5)==0) { for(new x = 0; x < 5; x++) { static LOL;//Variável LOL é criada LOL = 3; }//Mesmo sendo local ela não é destruída aqui. Por essa razão, no próximo giro do loop ela não é criada novamente e contém o mesmo valor que tinha antes do momento no qual era para ser apagada. return 1; }
* Const
Método de criação de uma constante, ou seja, uma variável que sempre terá o mesmo valor:
Code:
const Pickup = 2;//Sempre terá o valor 2
Se depois for usado algo como:
Code:
Pickup = 26;
O pawno gerará um error pois não é possível mudar o valor de uma constante.
5 - Tags e Arrays :
*Tags
As Tags são formas de classificar uma variável com uma caracterista especial, elas normalmente aparecem na variável na forma de um complemento no começo do nome da mesma .
Float e bool são tags padrões do Pawn.
Exemplo de uso de Float:
Code:
new Float:Exemplo = 1.222; //Caracterista especial: conseguem se igualar á números fracionários.
Exemplo de uso de bool:
Code:
new bool:Exemplo = true; //Caracterista especial: só podem se igualar á dois valores, true e false.
*Arrays
São multi-variáveis, com variáveis arrays é possível criar várias variáveis de uma vez só .
Exemplo:
Ao invés de usar:
Code:
new Sanduiche1; new Sanduiche2; new Sanduiche3;
Pode se fazer com variável array :
Code:
new Sanduiche[3];
Daí a igualação seria assim:
Code:
Sanduiche[0] = 1; Sanduiche[1] = 1; Sanduiche[2] = 1;
Ops, mas por que será que não coloquei ali Sanduiche[3] = 1; ?
Por que nunca deve-se igualar uma variável no seu máximo de cells permitidas, ou seja, como criamos assim:
Code:
new Sanduiche[3];
Não poderemos usar:
Code:
Sanduiche[3] = 1;
Apenas valores dentro dos colchetes [ ], que forem menores do que 3, pois a cell da array quando a criamos era 3 .
Mas mesmo assim, 3 valores da array foram igualados assim como seriam se tivessem sido criadas 3 variáveis comuns para cada valor.
Também há casos como:
Criamos uma variável array:
Code:
new Sorriso[MAX_PLAYERS]; //Mesma coisa que VariavelArray[500];, pois MAX_PLAYERS está definido assim no a_samp.inc
E a usamos como:
Code:
Sorriso[playerid] = 1;
Ou seja, para cada ID diferente a variável vai ter um valor, por exemplo, se o playerid (ou ID no jogo) de um jogador é 5, então a variável ficaria assim quando fosse lida na execução do jogo:
Code:
Sorriso[5] = 1;
Pois, playerid = 5, no caso de um jogador, se fosse outro jogador de ID 9, então seria playerid = 9, entre outros.
Variáveis arrays também são as únicas que podem armazenar texto, como por exemplo:
Code:
new Jornal[10] = "é nóis";
Lembrando que o total de caracteres do texto deve ser menor do que a cell da array, no caso, menor que 10.
Fonte: Fórum SA-MP
FIM, e este foi meu tutorial sobre variáveis
Espero ter ajudado
0 comentários:
Postar um comentário