SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 16/01/2011, 09:28 PM   #1
zSuYaNw
Godfather
 
zSuYaNw's Avatar
 
Join Date: Apr 2010
Location: Santa Catarina
Posts: 6,845
Reputation: 670
Default Validando Funções !!!, Principal para prender Operadores.

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 Code:
    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 Code:
    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 Code:
    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 Code:
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 Code:
    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 Code:
      Dinheirod[playerid] += GetPlayerMoney(playerid);
  • -
    • Subtração
      Exemplo:
      pawn Code:
      Dineheiro[playerid] -= GetPlayerMoney(playerid);


  • *
    • Multiplicação.
      Exemplo:
      pawn Code:
      Dinheiro[playerid] * GetPlayerMoney(playerid);

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

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

  • ||
    • Ou
      Exemplo:
      pawn Code:
      if(GetPlayerMoney(playerid) == 10 || GetPlayerMoney(playerid) == 20)
  • &&
    • E
      Exemplo:
      pawn Code:
      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 Code:
new Minhau[MAX_PLAYERS]; 





pawn Code:
if(Minhau[playerid] == 10)

if(Minhau[playerid] == 10) => Se(Minhau[playerid] For Igual a 10. Simples, Né?

Ou Seja
pawn Code:
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 Code:
if(lasanha == true)

Explicação:

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

Outro

pawn Code:
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 Code:
enum Info
{
    Masho,
    Lindu,
    OI
}

new  Player[MAX_PLAYERS][Info];

Primeiro Exemplo:
pawn Code:
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.

Last edited by zSuYaNw; 17/06/2016 at 02:17 AM.
zSuYaNw is offline   Reply With Quote
Old 16/01/2011, 09:46 PM   #2
[FeK]Knife
Gangsta
 
[FeK]Knife's Avatar
 
Join Date: Oct 2010
Location: Lauro de Freitas - BA
Posts: 599
Reputation: 51
Default Re: Validando Funções !!!, Principal para prender Operadores.

Bom Tutorial Parabéns !

@OFF
Carai eu ia fazer um tutorial desse agorinha ._.
[FeK]Knife is offline   Reply With Quote
Old 16/01/2011, 09:48 PM   #3
[Ips]Guh
Gangsta
 
[Ips]Guh's Avatar
 
Join Date: Apr 2010
Location: Brazil
Posts: 854
Reputation: 62
Default Re: Validando Funções !!!, Principal para prender Operadores.

Hmmmm Parabens,Bem Explicativo...
[Ips]Guh is offline   Reply With Quote
Old 16/01/2011, 11:07 PM   #4
LuaN_
Big Clucker
 
LuaN_'s Avatar
 
Join Date: Jan 2011
Posts: 81
Reputation: 0
Default Re: Validando Funções !!!, Principal para prender Operadores.

Legal Garfield, bem explicadinho e tudo..

Parabéns.
LuaN_ is offline   Reply With Quote
Old 17/01/2011, 12:14 AM   #5
jonas_gabriel
Big Clucker
 
Join Date: Oct 2010
Posts: 167
Reputation: 0
Default Re: Validando Funções !!!, Principal para prender Operadores.

MIAUUUUU

Boa meu gato gordo zuera bom para novatos
__________________
BGL FOREVER

HostName: Brasil Game of Life [RPG v1.0c]
Address: 66.197.186.117:7777
Players: !! / 50
Ping: 142
Mode: BGL RPG v1.0c
Map: Brasil RPG


jonas_gabriel is offline   Reply With Quote
Old 17/01/2011, 12:18 AM   #6
Xapita_Halls
Huge Clucker
 
Xapita_Halls's Avatar
 
Join Date: Sep 2010
Location: Novo Hamburgo
Posts: 334
Reputation: 0
Default Re: Validando Funções !!!, Principal para prender Operadores.

Muito legal
__________________
Mapper level: Intermediário
Scripter level: Intermediário
Designer level: Novato


. : BRASIL START GAMES: .
Em breve! Em desenvolvimento o mais novo GM, com novas inovações! Aguardem


My works:
Xapita_Halls is offline   Reply With Quote
Old 17/01/2011, 12:31 AM   #7
DeNeR
Big Clucker
 
DeNeR's Avatar
 
Join Date: Oct 2010
Posts: 57
Reputation: 0
Default Re: Validando Funções !!!, Principal para prender Operadores.

muito bom, bem explicado.
Parabéns.
__________________
"Eu pensei que tinha amigos, mas no fim morremos sozinhos".
DeNeR is offline   Reply With Quote
Old 17/01/2011, 12:59 AM   #8
TiagoPS
Gangsta
 
TiagoPS's Avatar
 
Join Date: Mar 2010
Location: Dilma's Country
Posts: 846
Reputation: 4
Default Re: Validando Funções !!!, Principal para prender Operadores.

Que gatinho paciencioso voÇe hein

parabens ta de parabens
bem explicado e explicativo LOL
__________________
TiagoPS is offline   Reply With Quote
Old 17/01/2011, 07:06 PM   #9
frenetico
Big Clucker
 
frenetico's Avatar
 
Join Date: Jul 2010
Location: São Paulo, Capital.
Posts: 86
Reputation: 0
Default Re: Validando Funções !!!, Principal para prender Operadores.

Legal gato ,super bem explicado
frenetico is offline   Reply With Quote
Old 17/01/2011, 07:23 PM   #10
Trinix_PoS [Bizu]
Huge Clucker
 
Join Date: Dec 2010
Posts: 217
Reputation: 2
Default Re: Validando Funções !!!, Principal para prender Operadores.

Good Job / Bom Trabalho
__________________
Trinix_PoS [Bizu] is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Tutorial] Usando Dini [ Principal para Aprende-la ] ipsBruno Lançamentos/Releases 65 02/10/2019 04:32 PM
[Tutorial] Manual Pawn Iniciantes {CallBacks,Diretivas,Operadores} ipsBruno Lançamentos/Releases 47 31/08/2019 05:22 AM
[Include] Funções do GofFather para jogadores em Macros CyNiC Lançamentos/Releases 11 07/09/2010 07:16 PM
[DUV] /prender victormelo Português/Portuguese 8 23/08/2010 10:17 PM
[PEDIDO] Codigos para as seguintes funçoes Twisty Português/Portuguese 10 29/07/2010 12:47 AM


All times are GMT. The time now is 12:21 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.