Portal SAMP
[Ajuda] Ajuda Comando (Pawn) - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Ajuda Comando (Pawn) (/showthread.php?tid=2308)



Ajuda Comando (Pawn) - agi.exe - 18/04/2022

comando de pegar dinheiro

Código PHP:
CMD:pegargrana(playeridparams[])
{
    new 
grana;
     if(
sscanf(params"d"grana)) return SendClientMessage(playeridCINZA"Use: /pegargrana [Quantidade]");
     if(
grana 10000) return SendClientMessage(playeridCINZA"[CMD] So e permitido pegar grana ate 10.000");
     
GivePlayerMoney(playeridgrana);
     
     
format(Strsizeof(Str), "[CMD] Voce pegou %s"grana);
     
SendClientMessage(playeridAZULStr);
    return 
1;
}
  


Mais a um problema, quando o player digita um valor Injajerado a verificação não funciona

Código PHP:
if(grana 10000) return SendClientMessage(playeridCINZA"[CMD] So e permitido pegar grana ate 10.000"); // verificação 
EXEMPLO:

/pegargrana 111111111111111111111111111111


RE: Ajuda Comando (Pawn) - Aranha - 18/04/2022

if(grana >= 1 && grana <= 10000)
return SendClientMessage(playerid, CINZA, "[CMD] nao pode pegar menos que 1 ou maior que 10000");


acho q assim da certo


RE: Ajuda Comando (Pawn) - CoelhaO_LokaO - 18/04/2022

Você já colocou uma verificação if(grana > 10000)  ou seja só entra se a grana é Maior que 1000 e retorna
coloque um else{}  ou if(grana < 10000) se a grana é menor que 1000 entra
ou ate mesmo  if(grana <= 10000 && grana >= 1)
Tabela de Operadores
==  Igual
< Menor
> Maior
<= Menor ou igual:
>= Maior ou igual:
!= Diferente
|| Ou
e



RE: Ajuda Comando (Pawn) - xbruno1000x - 18/04/2022

Creio que isso ocorre pois 999.999.999 é o limite do GTA SA(Segundo o GTAForums). Acima disso o SA-MP provavelmente recebe um valor bugado.

O que vem escrito na mensagem quando o player joga um valor alto?

Tente alterar o intervalo da if, deve funcionar.


RE: Ajuda Comando (Pawn) - Dr Editor - 18/04/2022

Conforme já comentado, a linguagem não possui um tipo de inteiro que suporte valor superior a 2147483647.
Acima disso retorna um valor aleatório e bugado. Algumas vezes até caracteres não inteiros.


RE: Ajuda Comando (Pawn) - Carlos Victor - 18/04/2022

Analisando seu comando, não era pra ignorar a verificação, eu re fiz o comando aqui e cara, não tem nenhum problema. Também percebi que você estava usando %s ao invés de %d que é para números inteiros, então isso poderia retornar alguns caracteres bugados.

%s - String(texto, mensagem)
%d - Inteiros(0, 2, 5, 7...)
%f - Floats(0.2, 5.7, 9.1)

Código PHP:
CMD:pegargrana(playeridparams[])
{
    new 
grana;
    if(
sscanf(params"d"grana))
        return 
SendClientMessage(playeridCINZA"USE: /pegargrana [Quantidade]");

    if(
grana 10000)
        return 
SendClientMessage(playeridCINZA"[CMD] So e permitido pegar grana ate R$10,000");

    
GivePlayerMoney(playeridgrana);

    new 
str[32];
    
format(strsizeof(str), "[CMD] Voce pegou R$%d"grana);
    
SendClientMessage(playeridAZULstr);
    return 
1;


Caso ainda continue com problemas, avise.