new a //variável Declare "a" vazio
new b=5 //Declare variável "b" e configurá-lo para 5.
new c=5.0 //Este é inválido, tecnicamente não é um número inteiro!
new d="hello" //"hello" não é um número qualquer, este é inválido.
//Você pode também declarar múltiplas variáveis em uma linha:
new e,f,g,h
new x=7, y=3
new z = 1_000_000 // Pawn suporta números como este. Assim, valores grandes são mais fáceis de ler.
Floats
Você também pode declarar uma variável como "Float", o que significa que podem armazenar números com casas decimais. Estes são chamados de "floating point" números:
new Float:a //Declara "a" uma variável floating point vazia.
new Float:b=5.3 //Isso irá declarar uma nova variável "b" e atribuir 5,3 para ele.
new Float:c=5 //Isto é válido, mas o compilador vai lhe dar um aviso.
new Float:d="hello" //Este é inválido, "Olá" não é um número decimal.
Você também pode fazer o seguinte:
//Float (n) é uma função que recebe um número n e faz dele um
//número de floating point.
new Float:var = float(5)
new Float:var2 = 5.0
new Float:var3 = 1.0*5
new var4 = floatround(5.0)
//Nota: floatround(n) é uma função que recebe um número e ele n rodadas de um número total.
//isso faz com que a atribuição a uma variável inteira regular válido.
Matrizes
Pawn tem como características básicas "matrizes". Uma matriz é um tipo simples de dados agregados. Isto significa que você pode armazenar múltiplos valores em uma variável! Uma matriz segue as mesmas regras como uma variável normal, e tem os mesmos tipos de valores. A matriz simplesmente pode conter vários valores. Você define uma matriz com parênteses, e quantos valores ela pode conter. Por exemplo:
//Isso irá declarar uma variável chamada "Players" que tem 32 números.
new Players[32]
//Agora você pode armazenar valores em qualquer uma das 32 "slots" que esta matriz tem.
//Os slots são numerados de 0 a (n-1), ou neste caso, 0-31.
//Cada slot começa por 0.
//Set slot 0 to 5(Ou seja, coloca o slot 0 para 5).
Players[0] = 5
//Define um numero para o que está no slot 0, neste caso, o número 5
Players[1] = Players[0]
//Este é inválido!
//Apesar de existirem 32 slots, são numeradas de 0 a 31.
//Isso resulta em AMX Native Error 4 - AMX_ERR_BOUNDS
//ou, ele simplesmente não irá compilar!
Players[32] = 15
//Este é também totalmente inválido
Players[-1] = 6
new a = 3
//Este também é totalmente inválido.
//deve ser um número constante.
new BadArray[a]
//Então, isto é valido:
const b = 3
new GoodArray
#define ARRAY_SIZE 3
new Array[ARRAY_SIZE]
As matrizes também podem ser declaradas com grupos de padrão de dados, tais como:
new Numbers[4] = {0,1,2,3}
//Nota: é importante que você tenha certeza da quantidade de números
//Para você não passar o tamanho do jogo de matriz
Você também pode usar qualquer tipo de dados com matrizes:
//Matriz de pontos flutuantes(floating points):
new Float:Numbers[4] = {0.0, 1.2, 2.4, 3.8}
//matriz de booleanos. Note que esta define para cada slot de verdade.
new bool:playerHasGun[33] = {true, ...}
Strings
Você já deve ter notado que um tipo de dado importante está faltando - caracteres (letras e símbolos). Estas são chamadas de "Strings", e em Pawn, eles são tecnicamente números! Uma string é uma matriz de números que traduzem a ASCII (caractere) símbolos. Por exemplo:
//Isso irá declarar um número de série "myString" que contém os dados "Hello".
//Ela terá seis faixas, porque há 5 caracteres.
//O último espaço é reservado para o número 0, que informa ao mecanismo Pawn que é uma string.
new myString[] = "Hello"
Nota: qualquer coisa entre / * e * / é também um comentário. Você não pode usar / * * / dentro de um * /. O seguinte conjunto de comandos alcança a mesma finalidade, porém, é longo e não é recomendado. Isto funciona porque cada caractere da string "Olá" é armazenado em um slot na matriz.
new myString[6]
myString[0] = 'H'
myString[1] = 'e'
myString[2] = 'l'
myString[3] = 'l'
myString[4] = 'o'
myString[5] = 0
Nota: Arrays que se destinam a ser seqüências devem terminar em 0, ou em caractere nulo. Esta é para você saber onde a string termina.
Você não pode fazer isto! Embora possa compilar, é altamente perigoso, pois pode causar erros de estouro:
new myString[6]
myString = "Hello" //inválido!
myString[0] = "Hello" //inválido!
//Para adicionar dados a uma corda, você pode fazer isso:
new goodString[7]
copy(goodString, 6, "Hello")
Note que copiamos 6 células da matriz em uma matriz que pode conter 7. Se fôssemos para copiar 7 bytes para esta matriz, copy () poderia copiar um byte extra para o personagem nulo, transbordando a matriz. Isso é chamado de "buffer overflow" e deve ser cuidadosamente evitada.
Mais exemplos:
//Copy é uma função que recebe três parâmetros:
copy(destination[], length, source[])
//Copia a string dentro da matriz de origem e os locais
//que na matriz de destino, mas apenas cópias até caracteres comprimento.
//Por fim, para provar que é realmente uma seqüência de uma série de números, isto é totalmente válido:
new weird[6]
weird[0] = 68
weird[1] = 65
weird[2] = 73
weird[3] = 86
weird[4] = 68
weird[5] = 0
//Isto irá definir a variável de "weird" para a seqüência de "David".
//Para ver como letras e símbolos traduzem em números, visite www.asctiitable.com.
A quem quer que eu continue com a postagem do Tutorial, responda o tópico.
Obs: Isso é a base de pawn, se quiserem codar para samp, estudem GMs.
[Tutorial] Início para começar a codar!
6 de mai. de 2012.
0 comentários:
Postar um comentário