Advertisement
whiplk

Pawn book, Willian_Luigi

Feb 2nd, 2012
568
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 27.95 KB | None | 0 0
  1. /*Introdução ao Pawn...
  2.   Aprender Pawn...
  3.     (básico)
  4.  
  5. - Indice:
  6.     * Pawn / Pawno                                      1
  7.     * Extensões                                         1.2
  8.     * Comentários                                       1.3
  9.         - Comentar uma única linha...                   1.3.1
  10.         - Comentar várias linhas...                     1.3.2
  11.     * Variáveis                                         1.4
  12.         - Oque são...                                  1.4.1
  13.         - Algumas dicas...                              1.4.2
  14.         - Tipo Booleano...                              1.4.3
  15.         - Tipo Númerico...                              1.4.4
  16.         - Tipo String...                                1.4.5
  17.         - Tipo Float...                                 1.4.6
  18.         - Tipo Vetor&Array...                           1.4.7
  19.  
  20. - Condição:                                             2
  21.     * If                                                2.1
  22.         - Braços...                                     2.1.1
  23.         - Else...                                       2.1.2
  24.         - Else if...                                    2.1.3
  25.     * Goto                                              2.2
  26.        
  27. - Inicializadores:                                      3
  28.     * Const                                             3.1
  29.     * Enum                                              3.2
  30.     * Forward                                           3.3
  31.     * Native                                            3.4
  32.     * New                                               3.5
  33.         - Local...                                      3.5.1
  34.         - Global...                                     3.5.2
  35.     * Public                                            3.6
  36.     * Static                                            3.7
  37.         - Local...                                      3.7.1
  38.         - Global...                                     3.7.2
  39.     * Stock                                             3.8
  40.    
  41. - Operadores:                                           4
  42.     * Atribuição                                        4.1
  43.     * Aritméticos                                       4.2
  44.     * Relacionais                                       4.3
  45.     * Lógicos                                           4.4
  46.     * Char                                              4.5
  47.     * Tagof                                             4.6
  48.     * Sizeof                                            4.7
  49.     * Sate                                              4.8
  50.    
  51. - Loops:                                                5
  52.     * While                                             5.1
  53.     * For                                               5.2
  54.     * if-goto                                           5.3
  55.     * do-while                                          5.4
  56.     * Continue                                          5.5
  57.     * Break                                             5.6
  58.  
  59. - Switch:                                               6
  60.     * Oque é?                                           6.1
  61.     * Case                                              6.2
  62.     * Default                                           6.3
  63.    
  64. - Diretivas                                             7
  65.     * #define                                           7.1
  66.     * #if                                               7.2
  67.     * #else                                             7.3
  68.     * #else if                                          7.4
  69.     * #endif                                            7.5
  70.     * #include                                          7.6
  71.     * #assert                                           7.7
  72.     * #emit                                             7.8
  73.     * #endinput                                         7.9
  74.     * #line                                             7.10
  75.     * #pragma                                           7.11
  76.     * #error                                            7.12
  77.     * #file                                             7.13
  78.     * #tryinclude                                       7.14
  79.     * #undef                                            7.15
  80.  
  81.     EXTRA:
  82. - Callbacks básicas:
  83.     * OnPlayerConnect
  84.     * OnPlayerDisconnect
  85.     * OnPlayerSpawn
  86.     * OnPlayerDeath
  87.     * OnPlayerEnterVehicle
  88.     * OnPlayerExitVehicle
  89.     * OnPlayerText
  90.     * OnPlayerCommandText
  91.     * OnPlayerStateChange
  92.     * OnPlayerKeyStateChange
  93.     * OnPlayerUpdate
  94.     * OnDialogResponse
  95.     * OnFilterScriptInit
  96.     * OnFilterScriptExit
  97.    
  98. =========================================================================================
  99. |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  100. =========================================================================================
  101.  
  102. 1 Pawn / Pawno:
  103.  
  104. 1       Pawn:
  105.         - Pawn é uma linguagem muito ampla e que segue uma certa sintaxe de variáveis/ operadores/ loops de C...
  106.         feito exclusivamente para o SA:MP, GTA.
  107.  
  108. 1.1     Pawno:
  109.         - Pawno é o compilador que lê e interpreta o seu código para o computador...
  110.  
  111. 1.2     Extensões:
  112.         - O Pawno não é um compilador que suporte várias extensões, pois sua única função é
  113.         voltada para o SA:MP, aceita .pwn, salva .pwn, e compila em .amx para que o seu
  114.         samp-server.exe possa executar o GM...
  115.        
  116. 1.3     Comentários:
  117.         - Alguns scripters gostam de criar Códigos úteis e posta-los com comentários dentro de seu
  118.         próprio código fonte mostrando seu nome, dedicações ou até mesmo dicas/suporte para seu code...
  119.        
  120.         Pra isso existem duas formas de fazer comentários dentro de um código,
  121. 1.3.1      comentários de uma única linha:
  122.                 seguidos de // - seu comentário -
  123.  
  124. 1.3.2       comentários de várias linhas:
  125.                 seguidos por / * - comentário
  126.                                 - comentário
  127.                                 - comentário
  128.                                 - comentário
  129.                             * /
  130.             até o fim de seu comentário...
  131.  
  132.         Pode ser útil até mesmo para você fazer anotações básicas...
  133.  
  134. 1.4 Variáveis:
  135.  
  136. 1.4.1   Oque são?
  137.         - Variáveis são identificadores utilizados para representar valores mutáveis e voláteis,
  138.         e assim armazenar dados que serão utilizados ao longo de sua execução.
  139.        
  140. 1.4.2   Dicas:
  141.         - Variáveis podem ser declaradas a todo momento em qualquer parte do GM, lógicamente a cada "Var"
  142.         criada ocupara um espaço de bits em seu GM dependendo do seu valor ou tamanho...
  143.         A dica mais precisa seria evitar criar variáveis atoa ou repetidas,
  144.         criar variáveis com nomes lógicos e que transmitam a idéia de seu código, para fácilitar seu uso...
  145.        
  146. 1.4.3   Tipo Booleano:
  147.         - Um booleano expressa um valor lógico que pode ser verdadeiro ou falso.
  148.         Para especificar um valor booleano, utilize a palavra-chave 'bool' seguido de 'new' para definir uma nova variável
  149.         Exemplo:
  150.             new bool:NomeDoBooleano;
  151.            
  152.         Logo que criado ele assumirá o valor FALSE (falso), igual a 0...
  153.         ele poderá ser modificado durante sua estada dentro do código fonte em apenas duas maneiras...
  154.         Exemplo:
  155.             NomeDoBooleano = true;
  156.                 \\
  157.             NomeDoBooleano = false;
  158.  
  159. 1.4.4   Tipo Númerico:
  160.         - Tipo númerico mais conhecido como intiger (inteiro), números que podem ser declarados infinitos...
  161.         Para especificar um valor númerico, utilize apenas o 'new' para definir uma nova variável com valor númerico
  162.         Exemplo:
  163.             new Intiger = 0;
  164.            
  165.         Assim como Booleano, logo que criado ele assumirá o valor falso, igual a 0 como visto no exemplo...
  166.         ele poderá ser modificado durante sua estada dentro do código fonte em digitos altos, para uso contado...
  167.         Exemplo:
  168.             Intiger = 1;
  169.                 \\
  170.             Intiger = 2;
  171.                 \\
  172.             Intiger = 3;
  173.  
  174. 1.4.5   Tipo String:
  175.         - Uma string é muito conhecido por 'palavras' 'frases', assim podemos considera-lá uma cadeia de
  176.         caracteres alfanuméricos...
  177.         Para especificar uma string, utilize o clássico 'new' para definir uma nova variável com aspas duplas. " "
  178.         Exemplo:
  179.             new String[] = "Isto é uma String...";
  180.  
  181.         Uma string diferenciada de números, ela pode assumir uma especia em caracteres inicial declarado pelo programador
  182.         ou ser manipulada para seguir uma lógica(sistemas de frases, anúncios, mensagens), usando Arrays que veremos mais a frente...
  183.  
  184. 1.4.6   Tipo Float:
  185.         - Float, mais conhecida como 'ponto flutuante', armazena números de ponto.
  186.         Para especificar um valor com ponto flutuante, utilize 'new' seguido de 'Float', para definir seu valor com ponto.
  187.         Exemplo:
  188.             new Float:PontoFlutuante;
  189.            
  190.         Assim como os númericos, e booleanos assumirá um valor falso de (0.0) podendo ser modificado durante
  191.         sua estada no código fonte, ou ser manipulado por sistemas ou funções criadas com finalidades de distância,
  192.         e contas precisas...
  193.  
  194. 1.4.7   Tipo Vetor:
  195.         - Vetoré uma lista de valores armazenados na memória, os quais podem ser de tipos diferentes(números, strings, floats)
  196.         e podem ser acessados a qualquer momento, pois cada valor é relacionado a uma chave.
  197.         Para especificar uma Vetor, pode ser utilizado qualquer item citado acima, sendo eles
  198.         Exemplo:
  199.             new Vetor[4];
  200.             new Float:Vetor[4];
  201.  
  202.         Uma Vetor pode ser utilizado para fazer banco de dados de grandes sistemas.
  203.         Uma Array pode ser utilizado da mesma forma que um Vetor, porém em dimensões maiores
  204.         Exemplo:
  205.             new Array[4][4]; // linha x coluna, pode ser representado como se fosse uma tabela.
  206.        
  207. 2 Condição:
  208.  
  209. 2.1     If:
  210.         - O if é um estrutura de controle que introduz um desvio condicional, vindo do ingles ( SE )
  211.         caso a condição introduzida no if seja satisfeita, ele executará o bloco de comandos dentro do if...
  212.        
  213. 2.1.1   Braços:
  214.         - Os braços mais conhecidos por brackets, são utilizados em geral para abrir ("{") e fechar ("}") um bloco de códigos
  215.         dentro de uma função, comparação, condição, callback, stock ou etc...
  216.         Exemplo baseado na estrutura condicional ( if ):
  217.             new Variavel;
  218.             if( Variavel == 0 ) {
  219.                 Variavel ++;
  220.                 return 1;
  221.             }
  222.            
  223.         Como visto no exemplo, foi utilizado a criação de uma variável nova, cujo seu valor seria assumido por 0,
  224.         na estrutura de 'if' fazemos a condição que caso "Variável" seja igual a 0 ele parte a atuar dentro dos brackets,
  225.         neste caso ele incrementaria um valor a mais na "Variável", assim largando o valor de 0 e assumindo 1,
  226.         e logo a baixo retornamos a função para que se encerre a condição de Variável == 0 com o bracket de fechar '}'
  227.         Mais exemplos:
  228.        
  229.             new bool:Var;
  230.             if(!Var) {
  231.                 print("Var é um valor booleano assumido como falso...");
  232.             }
  233.            
  234.         Este exemplo poderá ser entendido mais a frente na seção de operadores...
  235.  
  236. 2.1.2   Else:
  237.         - Else vem do popular 'fail', quando usamos a estrutura condicional 'if' como no exemplo acima...
  238.         Se a Variável 'Var' não for true(verdadeira) ele seguirá o bloco...
  239.         Mais e caso a Variável seja true ? Para isso usamos else...
  240.         Exemplo:
  241.             new bool:EstaChovendo;
  242.             if(EstaChovendo == true) {
  243.                 print("Está chovendo lá fora...");
  244.             }
  245.             else
  246.             {
  247.                 print("Não está chovendo lá fora...");
  248.             }
  249.            
  250.         Como visto, assim que a Variável é criada e assume o valor de 0, seguimos com a condição,
  251.         se "EstaChovendo" fosse verdadeira, printaria "Está chovendo lá fora..."
  252.         mais como sabemos, ela está em um valor assumido de 0 = falso, ou seja o Else entre em ação...
  253.         Afirmando que "Não está chovendo lá fora..."
  254.        
  255. 2.1.3   Else if:
  256.         - Else if, segue junto com Else, mesma lógica... Apenas pode ser aumentada dentro de mais de 1 condição.
  257.         Exemplo:
  258.             new EstaChovendo;
  259.             if(EstaChovendo == 0) {
  260.                 print("Está chovendo...");
  261.             }
  262.             else if(EstaChovendo == 1) {
  263.                 print("Não está chovendo...");
  264.             }
  265.             else
  266.             {
  267.                 print("Está nublado...");
  268.             }
  269.            
  270.         Caso 'EstaChovendo' seja igual a 0, afirmaria que está chovendo, caso for 1, afirmaria que não está chovendo,
  271.         caso não seja nenhum dos dois, afirmará que está nublado.
  272.  
  273. 2.2     GOTO:
  274.         - Já vindo do inglês go to(ir para...), é também usado para loops, ou para pulos trágicos de uma função a outra...
  275.         seguindo de goto e suas labeis.
  276.         Exemplo:
  277.             my_func() {
  278.                 new nn;
  279.                 new ii;
  280.                 if(ii == 0) {
  281.                     goto exemplo;
  282.                 }
  283.                 else {
  284.                     nn++;
  285.                 }
  286.                 if(nn == 1) {
  287.                     ii++;
  288.                 }
  289.             exemplo:
  290.                 return 1;
  291.             }
  292.  
  293.         Como já vimos no inicio, variáveis criadas assumem o valor de 0(falso), sendo assim
  294.         nn e ii são igual a 0, seguindo a lógica da condição, se ii for igual a 0 usaremos o goto para ir até a label 'exemplo'
  295.         que se encontra no terminar do código...
  296.         Caso ii não seja igual a 0, ele incrementará um valor em nn, e assim começando uma nova condição, caso nn igual 1
  297.         incrementará um valor em ii, assim chegando ao fim da função, com valores novos ii = 1, nn =1
  298.  
  299. 3 Inicializadores:
  300.  
  301. 3.1     Const:
  302.         - Const, mais conhecido como constantes, são inicializadores parecidos com o 'new' que venho utilizado em todos os exemplos
  303.         com definições e criações de variáveis...
  304.         O new cria novas variáveis com valores mutáveis, diferente da constante, que cria com um valor único
  305.         que não pode ser modificado ao longo de sua estada no código-fonte...
  306.         re-capitulando, assim que uma constante é definida, seu valor é único e não pode ser alterado ou manipulado...
  307.         Exemplo:
  308.             const Variável = 50;
  309.            
  310.         Agora 'Variável' possui um valor númerico = 50, e não será modificado...
  311.        
  312. 3.2     Enum:
  313.         - Enum pode ser visto também como uma lista de itens criados pelo programador,
  314.         muito útil para criar um (bancos de dados) juntamente com as Arrays...
  315.         Exemplo:
  316.             enum ListaDeDados {
  317.                 Item1,
  318.                 Item2,
  319.                 Item3,
  320.                 Item4,
  321.                 Item5,
  322.                 Item6
  323.             };
  324.            
  325.         Uma lista feita em Enum não tem um número certo de itens para ser criado...
  326.         Assim podendo aculumar várias informações, sendo muito útil ao invés de criar várias variáveis para suprir
  327.         um mesmo motivo e ocupando espaços desnecessários...
  328.         Comparação:
  329.                 new:            enum:
  330.             new item1;      enum Lista {
  331.             new item2;          item1,
  332.             new item3;          item2,
  333.             new item4;          item3,
  334.                                 item4
  335.                             };
  336.  
  337. 3.3     Forward:
  338.         - Não é uma das formas mais indicadas para criar suas funções, mais vários programadores a usam para funções
  339.         stocks, e etc...
  340.         Forward declara uma nova Função/Callback em formato -public- em Pawn...
  341.         Exemplo:
  342.             forward PegarNome(playerid);
  343.  
  344.         forma de uso:
  345.             public PegarNome(playerid) {
  346.                 new nn[MAX_PLAYER_NAME];
  347.                 GetPlayerName(playerid, nn, sizeof( nn ));
  348.                 return nn;
  349.             }
  350.            
  351.         A forward está declarando que será criado uma -public- com os seguintes parâmetros "playerid", e logo abaixo
  352.         usaremos a public para pegar o nome de players por exemplo:
  353.        
  354.             PegarNome(15);
  355.  
  356.         Assim ela irá salvar o nome do atual id 15 online,
  357.         não é muito complicado de se entender, criamos uma nova Array nomeada 'nn' por acaso...
  358.         e o tamanho dela será 'MAX_PLAYER_NAME' que no caso seria o valor máximo de um nick permitido no SA:MP ( 24 )
  359.         e logo após pode ser utilizado a função,
  360.  
  361.                           GetPlayerName(playerid, const name[], len);
  362.                                             |          |         |
  363.                                       ID do player   Nome   Tamanho do Nome
  364.                                                              
  365.         Está função armazenará o nome do 'playerid' escolhido pelo programador, ou manipulado com finalidades de sistemas grandes
  366.         dentro da Variável 'nn[24];' ou 'nn[MAX_PLAYER_NAME];'
  367.         e o tamanho dela (len) será igual ao tamanho da Array criada para armezar o nome -sizeof( nn )-...
  368.  
  369. 3.4     Nativas:
  370.         - Em construção...
  371.        
  372. 3.5     New:
  373.         - É um dos inicializadores mais utilizados, por ser simples rápido e de bom entendimento para qualquer classe
  374.         de programadores, desde iniciantes até veteranos...
  375.         New como visto nos exemplos do primeiro capitulo do indice, pode ser utilizado para definir e criar variáveis novas,
  376.         booleanas, pontos flutuantes, arrays, strings, intigers...
  377.         Exemplo:
  378.             new Var;
  379.             new bool:Var;
  380.             new Float:Var;
  381.             new Var[4];
  382.             new Var = "Var";
  383.  
  384. 3.5.1   New local:
  385.         - Um new contém diferenças quando aplicado dentro ou fora de funções(atoa no GM), uma dessas diferenças
  386.         se chama 'local', uma variável local é aplicada quando se define um novo new dentro da função/public/callback de uso
  387.         instantâneo, como por exemplo:
  388.        
  389.             Callback:: public OnPlayerConnect(playerid)
  390.             Bracket::  {
  391.             New local::    new Var[MAX_PLAYERS];
  392.             Retornando::   return 1;
  393.             Bracket::  }
  394.            
  395.         No exemplo foi utilizado a Callback OnPlayerConnect, muito conhecida por ser a função de quando um novo player
  396.         se conecta ao servido, foi utilizado a definição de uma Variável com o valor do tamanho do server(slots), caso o server
  397.         contenha 20 slots, esse será o valor da Variável...
  398.         Como está variável foi criada dentro de uma Callback, é considerada Local, pois só poderá ser usada e modificada dentro da mesma Callback...
  399.  
  400. 3.5.2   New global:
  401.         - Uma global seria o oposto da local, no caso quando você criasse uma variável fora de funções/publics/callbacks,
  402.         para uso global, em todo GM(Game Mode) ela seria de livre uso, e ela guardaria um valor quando fosse manipulada...
  403.         Exemplo:
  404.  
  405.             New global::  new Var[MAX_PLAYERS];
  406.             Callback::    public OnPlayerConnect(playerid)
  407.             Bracket::     {
  408.             Global::         Var[playerid] ++;
  409.             Retornando::     return 1;
  410.             Bracket::     }
  411.            
  412.         No exemplo foi utilizado uma Variável criada fora de qualquer função, chamada de Global, para ser usada dentro de uma Callback
  413.         assim acumulando um valor quando fosse alterada ou incrementada como foi feito no exemplo 'Var[playerid] ++;' ...
  414.  
  415. 3.6     Public:
  416.         - Como foi explicado anteriormente em 'Nativas', -public- é um código função criado para executar um bloco de comandos
  417.         toda vez que for chamado...
  418.         Exemplo:
  419.             forward Nome(parâmetros);
  420.             public Nome(parâmetros) {
  421.                 //Códigos
  422.                 return 1;
  423.             }
  424.  
  425. 3.7     Static:
  426.         - Static pode ser considerado um 'new', idêntico para quem não conheçe, mais suas diferenças não são de imensa preocupação,
  427.         a real diferença, é que o Static não perde o valor quando criado localmente...
  428.         Ele mantém o valor do princípio, bom para códigos com calculo extremo e incrementativo...
  429.         Exemplo:
  430.             static Variavel;
  431.             static Var;
  432.            
  433.         Exemplo completo:
  434.        
  435.             NEW:
  436.             my_func() {
  437.                 for(new ii = 0; ii < 3; ii++) {
  438.                     new jj = 1;
  439.                     printf("%d", jj);
  440.                     jj++;
  441.                 }
  442.                 return 1;
  443.             }
  444.            
  445.             Código retirado do wiki-SA:MP para exemplificar...
  446.             Como visto no código, foi criado uma função nova, e dentro dela foi feito um loop(Será explicado mais afrente oque são loops)
  447.             este loop rodaria 3 vezes, e sempre incrementando um valor na variável 'jj'
  448.             pórem por ser uma variável 'new' local, o seu valor é incrementado uma vez ao completar o loop e retorna a 0(falso)
  449.            
  450.             resultado: 1 1 1
  451.            
  452.             STATIC:
  453.             my_func() {
  454.                 for(new ii = 0; ii < 3; ii++) {
  455.                     static jj = 1;
  456.                     printf("%d", jj);
  457.                     jj++);
  458.                 }
  459.                 return 1;
  460.             }
  461.            
  462.             Código retirado do wiki-SA:MP para exemplificar...
  463.             Como se pode observar neste outro exemplo, ao invés de definir uma 'new' variável, foi usado 'static' variável,
  464.             para que não perdesse o valor toda vez que o loop terminasse uma volta completa.
  465.  
  466.             resultado: 1 2 3
  467.            
  468. 3.8     Stock:
  469.         - Uma stock é um conjunto de códigos formando uma função, pode ser visto como 'Forward & Public', mais alguns scripters
  470.         iniciantes acham menos complicado.
  471.         Exemplo:
  472.        
  473.             stock Tapa(playerid)
  474.             {
  475.                 new Float:x;
  476.                 new Float:y;
  477.                 new Float:z;
  478.                 GetPlayerPos(playerid, x, y, z);
  479.                 SetPlayerPos(playerid, x, y, z+20);
  480.             }
  481.            
  482.         Está é uma das funções da qual considero mais simples para um iniciante trabalhar em cima e tentar fazer,
  483.         a função de dar um tapa no jogador 'playerid'...
  484.         Como visto, foi usado 3 Floats(Variáveis com pontos flutuantes...), nomeadas (x, y, z) por próposito de coordenadas...
  485.         e logo utilizamos a função:
  486.        
  487.             GetPlayerPos(playerid, &Float:x, &Float:y, &Float:z); //Esta função está sendo usada para pegar as coordenadas x, y, z de jogador 'playerid'
  488.             SetPlayerPos(playerid, Float:x, Float:y, Float:z); // Esta está sendo usada para Setar novamente as posições x, y, z do jogador 'playerid'
  489.  
  490.         Com uma pequena diferente, o exemplo pega as coordenadas do playerid e re-faz elas adicionando '+20' ao Z, que seria altura...
  491.         Isso faz com que o Player seja jogado a sua posição z+20 para cima...
  492.  
  493. 4 Operadores:
  494.  
  495. 4.1     Atribuição:
  496.         - Um operador de atribuição é utilizado para definir uma variável atribuindo-lhe um valor.
  497.         O operador básico de atribuição é ( = ).
  498.         Exemplo:
  499.             new Var = 0;    //defini variável = 0
  500.             new Var += 5;   //soma variável com 5
  501.             new Var -= 5;   //subtrai variável com 5
  502.             new Var *= 5;   //multiplica variável por 5
  503.             new Var /= 5;   //dividi variável por 5
  504.  
  505.             ++Var;          //Pré-incremento, adiciona 1 a Var, e depois retorna à mesma.
  506.             Var++;          //Pós-incremento, retorna Var e depois adiciona 1.
  507.             --Var;          //Pré-decremento, retira 1 da Var, e depois retorna à mesma.
  508.             Var--;          //Pós-decremento, retorna Var e depois retira 1.
  509.            
  510. 4.2     Aritméticos:
  511.         - São operadores utilizados para realização de cálculos matemáticos.
  512.         Exemplo:
  513.             new Var = 5;
  514.             new Var2 = 5;
  515.             new Var3 = Var + Var2;
  516.            
  517.             Resultado: Var+Var2 = 5+5 = 10
  518.  
  519.             +   //adição
  520.             -   //subtração
  521.             *   //multiplicação
  522.             /   //divisão
  523.             %   //módulo(resto da divisão)
  524.  
  525. 4.3     Relacionais:
  526.         - São operadores utilizados para realizar comparações entre valores ou expressões, resultando sempre
  527.         um valor booleano (true ou false)
  528.         Exemplo:
  529.             new Var = 10;
  530.             if(Var == 11) return true; //caso Var seja igual a 11 retorna true
  531.             if(Var != 10) return true; //caso Var não seja igual a 10 retorna true
  532.             if(Var >= 10) return true; //caso Var seja maior ou igual a 10 retorna true
  533.             if(Var <= 10) return true; //caso Var seja menor ou igual a 10 retorna true
  534.            
  535.             ==  //Igual, resultante de true
  536.             !=  //diferente, resulta true se as variáveis forem diferentes
  537.             >   //maior que
  538.             <   //menor que
  539.             >=  //maior ou igual
  540.             <=  //menor ou igual que
  541.            
  542. 4.4     Lógicos:
  543.         - São operadores utilizados para combinar expressões lógicas entre si.
  544.         Exemplo:
  545.             if((Var == true) || (Var == false)) return true; //caso a Var seja falsa 'ou' verdadeira retorna true
  546.             if((Var == true) && (Var1 == false)) return true;//caso a Var seja verdadeira e a Var1 falsa retorna true
  547.             if(!Var) return true //caso a Var seja false, retorna true
  548.  
  549.             &&  //and do inglês (e...)
  550.             ||  //or do inglês (ou...)
  551.             !   //not go inglês(não...) interpretado por procurar um valor falso
  552.  
  553. 4.5     Char:
  554.         - Usado para retornar o valor necessário para compactar strings...
  555.         Exemplo:
  556.             new Var[10 char];
  557.  
  558. 4.6     Tagof:
  559.         - Usado para retornar a tag da variável...
  560.         Exemplo:
  561.             printf("%d", tagof(Var));
  562.  
  563. 4.7     Sizeof:
  564.         - Usado para retornar o tamanho da array...
  565.         Exemplo:
  566.             printf("%d", sizeof(Var));
  567.  
  568. 4.8     State:
  569.         - Em construção ainda...
  570.  
  571. 5 Loops:
  572.  
  573. 5.1     While: while( )
  574.         - While é uma estrutura semelhante ao 'if', sendo que chamamos de loop, pois não faz apenas uma condição
  575.         faz giros em torno de um mesmo código enquanto a condição imposta for true...
  576.         Exemplo:
  577.             new ii;
  578.             while(ii < 10) {
  579.                 ii++;
  580.             }
  581.            
  582.         é básicamente uma condição como if, sendo que while(enquanto, do inglês...) como no código exemplar acima
  583.         é possivel ver que a condição é suprida como 'enquanto ii for menor que 10, executa o bloco abaixo.
  584.         Que no caso é incrementar um valor a ii, assim aumentando seu valor... Quando atingido 10 o loop para...
  585.        
  586. 5.2     For: for( ; ; )
  587.         - Um dos meus preferidos... O for é conhecido pelas suas expressões, ele é um loop criativo feito em 3 expressões
  588.         Exemplo:
  589.        
  590.             for( Expressão inicial ; Expressão condicional ; Expressão final )
  591.            
  592.         Expressão inicial: começa dando um valor para o loop se basear...
  593.         Expressão condicional: faz a condição como se fosse um While ou if, para começar a fazer os giros em torno do código
  594.         Expressão final: toda vez que o 'for' fizer um giro em torno do código a expressão final incrementará ou decrementará
  595.         um valor na expressão inicial
  596.         Exemplo:
  597.            
  598.             for(new ii = 0; ii < 10; ii++) {
  599.                 //Códigos
  600.             }
  601.            
  602.         Ele usa a expressão inicial pra criar uma variável nova, a condicional para determinar uma condição
  603.         para o loop prosseguir os giros, e a final para incrementar um valor a tal variável...
  604.        
  605. 5.3     if-goto:
  606.         - Como já foi explicado a cima sobre o goto, goto também pode ser considerado um loop.
  607.         Exemplo:
  608.        
  609.             new x;
  610.             laab:
  611.             if(x < 10) {
  612.                 x++;
  613.                 goto laab;
  614.             }
  615.            
  616. 5.4     do-while:
  617.         - Em construção...
  618.        
  619. 5.5     Continue:
  620.         - Uma expressão usada para dar continuidade a um loop...
  621.  
  622. 5.6     Break:
  623.         - Uma expressão usada para parar um loop...
  624.  
  625. 6 Switch:
  626.  
  627. 6.1     Oque é:
  628. 6.2...  - Switch é uma estrutura que simula vários testes sobre uma variável.
  629. 6.3...  É semelhante a vários comandos if sobre a mesma expressão...
  630.         Exemplo:
  631.        
  632.             new ii;
  633.             switch(ii)
  634.             {
  635.                 case 1: //caso ii seja igual a 1;
  636.                 case 2: //caso ii seja igual a 2;
  637.                 case 3: //caso ii seja igual a 3;
  638.                 default: //caso não seja igual a nenhuma destes itens acima...;
  639.             }
  640.            
  641.         Se fossemos comparar ao if seria mais ou menos assim:
  642.        
  643.             if(ii == 0) {
  644.             }
  645.             else if(ii == 1){
  646.             }
  647.             else {
  648.             }
  649.  
  650. 7 Diretivas:
  651.  
  652. 7.1     #define:
  653.         - Já diz o nome #define, define um valor como se fosse uma ordem direta ao compilador para ser executado...
  654.         Muito útil para definir funções, cores, pastas, etc...
  655.         Exemplo:
  656.             #define COR_PRETA 0x000000FF
  657.             #define wii_Kick Kick
  658.             #define SCM(%0,%1) SendClientMessage(%0,-1,%1);
  659.             #define wiiLoop(%0) for(%0; %0<MAX_PLAYERS; %0++)
  660.            
  661. 7.2     #if:
  662.         - Semelhante ao 'if' comúm, mais como ordem direta ao compilador...
  663.         Exemplo:
  664.             #if condição...
  665.                 //código...
  666.             #endif
  667.            
  668. 7.3     #else:
  669.         - Semelhante ao 'else' comúm, mais como ordem direta ao compilador...
  670.  
  671. 7.4     #else if:
  672.         - Semelhante ao 'else if' comúm, mais como ordem direta ao compilador...
  673.        
  674. 7.5     #endif:
  675.         - Usado para terminar uma condição #if.
  676.  
  677. 7.6     #include:
  678.         - Usado para incluir uma livrária de códigos externos a uso do GM...
  679.         Exemplo:
  680.        
  681.             Você pode criar códigos como de GM comúm, e salva-los como arquivo.inc, na pasta de includes
  682.             do seu pawno, e executa-lo dentro do GM como...
  683.             #include <name>
  684.            
  685. 7.7     #assert:
  686.         - assert é uma expressão como 'if' mais muito pouco usada, não aconselho usa-lá, pra isso já temos o if
  687.        
  688. 7.8     #emit:
  689.         - Em construção...
  690.        
  691. 7.9     #endinput:
  692.         - Usado para terminar uma saida input...
  693.         Exemplo:
  694.             #if define _wii_include
  695.                 #endinput
  696. 7.10    #line:
  697.         - Em construção...
  698.  
  699. 7.11    #pragma:
  700.         - O pragma é útilizado pode ser útilizado para anúnciar uma livrária, anúnciar que um item não está sendo utilizado no GM
  701.         Exemplo:
  702.             #pragma unused symbol
  703.             #pragma tabsize value
  704.             #pragma dll library
  705.            
  706. 7.12    #error:
  707.         - Usado para enviar a ordem de erro ao compilador, muito útil para fazer includes e etc...
  708.         Exemplo:
  709.             #if defined triwii
  710.                 #error este item não pode ser definido
  711.             #endif
  712.            
  713. 7.13    #file:
  714.         - Defini o nome do arquivo atual.
  715.        
  716. 7.14    #tryinclude:
  717.         - Tem a mesma função da #include, sendo que se a include não existir ou não estiver no local correto,
  718.         ele não dará erros, a menos que a include seja necessária...
  719.  
  720. 7.15    #undef:
  721.         - Usado para acabar com uma definição...
  722.         Exemplo:
  723.             #define gay (10)
  724.             #undef gay
  725.  
  726.  
  727. */
  728. // O mini-livro ainda está sendo trabalhado, com o tempo irei atualizando...
  729. // [OutOfDate]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement