Theme Support

Unordered List

Recent Posts

Tecnologia do Blogger.

sexta-feira, 29 de janeiro de 2016

[BASE] Sistema de Radar

Olá galera boa noite a todos, bom hoje eu estava ajudando um membro da fórum sa-mp com dúvida no seu sistema de radar e por ventura acabei criando a base para ele e resolvi compartilhar com vocês !

forward OnPlayerVehicleEnterRadar(playerid);

public 
OnGameModeInit()
{
    
SetTimer("OnPlayerVehicleEnterRadar"1000true);
    return 
1;
}

public 
OnPlayerVehicleEnterRadar(playerid)
{
    for(new 
0GetMaxPlayers(); ++i)
    {
        if(
IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
        {
            new 
playervehicle;
            if((
playervehicle GetPlayerVehicleID(i)) != INVALID_VEHICLE_ID)
            if(
IsPlayerInRangeOfPoint(i8.00000.00000000.00000000.0000))
            {
                if(
GetVehicleSpeed(playervehicle) == 60)
                {
                    
//Funções para tomar multa.
                
}
            }
        }
    }
}
stock GetVehicleSpeed(vehicleid)
{
    new 
Float:xPos[3];
    
GetVehicleVelocity(vehicleidxPos[0], xPos[1], xPos[2]);
    return 
floatround(floatsqroot(xPos[0] * xPos[0] + xPos[1] * xPos[1] + xPos[2] * xPos[2]) * 170.00);
}  

quinta-feira, 28 de janeiro de 2016

[TUTORIAL] for ou while? veja qual é a mais rápida!

Tempos de processamentos de cada loop, entre elas for e while.
A loop que se saiu mais rápida foi a for, portando o melhor resultado de 36 millisegundos.
Operando as mesmas funções que a loop while que obteu 37 millisegundos como seu melhor resultado.

[For] Quantidade de Loop: -27008 - Tempo: 37
[For] Quantidade de Loop: -27008 - Tempo: 38
[For] Quantidade de Loop: -27008 - Tempo: 36


[While] Quantidade de Loop: -27008 - Tempo: 38
[While] Quantidade de Loop: -27008 - Tempo: 38
[While] Quantidade de Loop: -27008 - Tempo: 37


Código usado para verificar os millis:

int const maxloop 100000;
void setup() {
  
Serial.begin(9600);
}
void loop() {
  
int dCount millis(),array,i;
  for(
0maxloopi++){
      array++;
  }
  
Serial.println("[For] Functions: ");
  
Serial.print(maxloop);
  
Serial.println(" - Temp: ");
  
Serial.print((millis() - dCount)); 

  
int bCount millis(),arrey,a;
  while(
maxloop){
      
a++;
      
arrey++;
  }
  
Serial.println("[While] Functions: ");
  
Serial.print(maxloop);
  
Serial.println(" - Temp: ");
  
Serial.print((millis() - bCount));
}  

[TUTORIAL] Variáveis - Definição, uso e tipos.

Bem, neste tutorial irei explicar passo a passo como criar uma variável e como elas podem ser úteis .


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 

domingo, 10 de janeiro de 2016

[TUTORIAL] Operações ternária

Ok, hoje estou aqui para explicar como é que a operação ternária.

Para quem não sabe, uma operação ternária equivale a um "if" & "else", mas de uma maneira mais "pequena".
Normalmente usa-se as operações ternárias nos returns, e quando queremos dar um dos dois[ou mais, mas a ideia foi só para dois] valores a uma variável.

Normalmente, os iniciantes em programação costumam um código parecido[este foi feito à força]
Code:
if(variavel[playerid] == true) {
    outravariavel[playerid] = GetPlayerMoney(playerid);
} else {
    outravariavel[playerid] = 0;
}
Aqui, temos 5 linhas de código, o qual, pode ser mais simplificado para esta ocasião...
Code:
outravariavel[playerid] = (variavel[playerid] == true ? GetPlayerMoney(playerid) : 0);
Bem simples, não?
Agora vou passar a explicar como é que as operações ternárias trabalham...
As condições ternárias consistem em:
(Uma condição ? o que fazer se verdadeiro : o que fazer se falso).
Por outras palavras
Code:
return (n1 == 1 ? true : false);
Explicado:
Code:
return (se n1 igual 1 ? o que devolver se verdadeiro : o que devolver se falso);

←  Anterior Proxima  → Inicio

Midias Sociais

Seguidores

Total de Visualizações