[Tutorial] Validando Funзхes !!!, Principal para prender Operadores.
#1

Validando funзхes



Introduзгo:
Este tutorial fala sobre a importвncia de vocк validar seu script, limitar o uso de tal comando ou tal variбvel. mas vocк sabe o que й validaзгo? Validaзгo em nosso contexto de programaзгo, й quando limitamos uma funзгo para determinado jogador ou grupo de jogadores. vejamos um exemplo: Temos o comando /banir, este comando tem a principal funзгo de banir algum jogador ele bane qualquer jogador mas nгo podemos deixar qualquer jogador digitar esse comando, temos que criar uma validaзгo que limita para apenas administradores logados na RCON que possam executar este comando. Outro exemplo de validaзгo й quando temos um comando para reparar nosso veнculo /reparar. Tecnicamente a principal funзгo dele й reparar nosso veнculo mas sem a validaзгo poderб acarretar em vбrios bugs.

Agora que falei o bбsico sobre validaзгo, iremos iniciar nosso tutorial. Lembre-se esse tutoral nгo se aplica em apenas PAWN! Ele aplica em todas as linguagens que contйm interaзгo com usuбrio.


Vamos iniciar nosso tutorial com uma validaзгo clбssica, que verifica se determinado jogador й administrador:
PHP код:
    if(!strcmp(cmdtext"/comandos"true)){
    
    
        
// bla bla bla
        
        // comandos de admin
        
return 1;
    } 
Como vocк pode notar, no comando acima ele nгo faz essa verificaзгo entгo qualquer jogador poderб acessar este comando sem determinados priviйgios.. Vamos mostrar o comando com uma limitaзгo para que apenas administradores logados na RCON podem ver o conteъdo desse comando:

PHP код:
    if(!strcmp(cmdtext"/comandos"true)){
    
        if(
IsPlayerAdmin(playerid)){
        
            
SendClientMessage(playerid, -1"Erro: Vocк nгo pode ver esse comando!");
            return 
1;
        }
    
        
// bla bla bla
        
        // comandos de admin
        
return 1;
    } 
Ao adicionar a condiзгo IsPlayerAdmin, limitamos o comando para apenas administradores.



Bom agora vamos outro exemplo, vamos listar a quantidade de jogadores e para isso precisaremos usar um loop, se vocк nгo sabe oque й loop podes clicar aqui que serб direcionado a pбgina sobre o assunto. Vamos listar a quantidade de jogadores online:


PHP код:
    new variavel;
    
    for(new 
iMAX_PLAYERS; ++i)
    {
        
variavel += 1;
    }
    
    
printf("Temos %d jogadores conectados!"); 
Como vocк pode notar, esse pequeno algorнtimo tem um pequeno erro de validaзгo! Ele percorre por todos os jogadores porйm nгo verifica se cada jogador estб online! Vou postar agora um algorнtimo parecido:


pawn Код:
new variavel;
   
    for(new i; i < MAX_PLAYERS; ++i)
    {
        if(IsPlayerConnected(i))
        {
            variavel += 1;
        }
    }
   
    printf("Temos %d jogadores conectados!");
Neste exemplo, vocк notou que adicionei a condicional que verifica se o jogador em estб online, mas podemos ir mais alйm ainda!

PHP код:
    new variavel;
    
    for(new 
iMAX_PLAYERS; ++i)
    {
        if(
IsPlayerConnected(i))
        {
            if(
IsPlayerAdmin(i))
            {
                
variavel += 1;
            }
        }
    }
    
    
printf("Temos %d administradores conectados!"); 
Neste cуdigo acima, estou limitando para apenas jogadores que sгo admin online! E como vocк pode notar em alguns GameModes ou FilterScripts eles nгo contйm somente funзхes que fazem verificaзхes. Eles tambйm contйm alguns operadores que podemos utilizar para fazer uma validaзгo em nosso cуdigo e esses operadores se chamam de Operadores Lуgicos!






Operadores Lуgicos:
  • +
    • Adiзгo.
      Exemplo:
      pawn Код:
      Dinheirod[playerid] += GetPlayerMoney(playerid);
  • -
    • Subtraзгo
      Exemplo:
      pawn Код:
      Dineheiro[playerid] -= GetPlayerMoney(playerid);

  • *
    • Multiplicaзгo.
      Exemplo:
      pawn Код:
      Dinheiro[playerid] * GetPlayerMoney(playerid);

  • /
    • Divisгo.
      Exemplo:
      pawn Код:
      Dinheiro[playerid] / GetPlayerMoney(playerid);
  • >
    • Maior que.
      Exemplo:
      pawn Код:
      if(GetPlayerMone(playerid) > 10) return 0;
  • <
    • Menor que.
      Exemplo:
      pawn Код:
      if(GetPlayerMoney(playerid) < 10) return true;

  • ==
    • Igual.
      Exemplo:
      pawn Код:
      if(GetPlayerMoneyplayerid) == 10) return true;
  • !=
    • Diferente.
      Exemplo:
      pawn Код:
      if(GetPlayerMoney(playerid) != 1) return false

  • ||
    • Ou
      Exemplo:
      pawn Код:
      if(GetPlayerMoney(playerid) == 10 || GetPlayerMoney(playerid) == 20)
  • &&
    • E
      Exemplo:
      pawn Код:
      if(GetPlayerMoney(playerid)  && IsPlayerConnected(playerid))







Validando variбveis:
Agora que aprendemos o bбsico sobre validaзгo de funзгo, vamos aprender a validar variбveis!

No topo do nosso script,
PHP код:
new Minhau[MAX_PLAYERS]; 




pawn Код:
if(Minhau[playerid] == 10)
if(Minhau[playerid] == 10) => Se(Minhau[playerid] For Igual a 10. Simples, Nй?

Ou Seja
pawn Код:
if(Minhau[playerid] /* Operador */ /*Numero*/
Validando Variбveis com Tйcnicas de Borleana

Isto й igual a o tutorial a cima ( Validando Varбveis ).

Vamos Usar Esta Varбvel para o tutorial: "new bool:lasanha;"

Primeiro exemplo:
pawn Код:
if(lasanha == true)
Explicaзгo:

if(lasanha /* Operador */ true) < Se lasanha for SIM

Outro

pawn Код:
if(lasanha == false)
Explicaзгo:

if(lasanha /*Operador */ false) < Se Lasanha for NВO
[i]
Nota:As tйcinicas de borleana sгo apenas TRUE e FALSE, nгo permitindo nъmeros.

Validaзгo entre Nъmeros & Enumeradores.

Nesta parte do tutorial vamo usar esta variбvel como exemplo:

pawn Код:
enum Info
{
    Masho,
    Lindu,
    OI
}

new  Player[MAX_PLAYERS][Info];
Primeiro Exemplo:
pawn Код:
if(Player[playerid][Masho] == 110)
Explicando:
if(Player[playerid][Masho] /*Operador*/ 110) < SE Player(var), Player(playerid), Masho(enumerador) for 110.


Crйditos
[FeK]Garfield
[FeK]Squad



Por favor, nгo poste em outros locais ou em qualquer tipo de comunicaзгo. Obrigado.
Reply
#2

Bom Tutorial Parabйns !

@OFF
Carai eu ia fazer um tutorial desse agorinha ._.
Reply
#3

Hmmmm Parabens,Bem Explicativo...
Reply
#4

Legal Garfield, bem explicadinho e tudo..

Parabйns.
Reply
#5

MIAUUUUU

Boa meu gato gordo zuera bom para novatos
Reply
#6

Muito legal
Reply
#7

muito bom, bem explicado.
Parabйns.
Reply
#8

Que gatinho paciencioso voЗe hein

parabens ta de parabens
bem explicado e explicativo LOL
Reply
#9

Legal gato ,super bem explicado
Reply
#10

Good Job / Bom Trabalho
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)