Portal SAMP
[Ajuda] problema com comando - 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] problema com comando (/showthread.php?tid=3993)



problema com comando - Colono - 23/09/2023

Olá sou novato em Pawn, estou tentando criar um comando policial, o /autosu, a sua função seria "/autosu [id]" (id do time) que retornaria dando nível de procura em:  quem estiver perto do player e seu time for do mesmo número que o player digitou.
Deixei no pastebin o código pra  ser mais fácil de entender

https://pastebin.com/wAmBqxvA

o problema é que ele não retorna dando procura em quem esta perto o máximo que consegui foi dar procura em mim mesmo...


RE: problema com comando - White_Blue - 23/09/2023

(23/09/2023 08:11)Colono Escreveu: Olá sou novato em Pawn, estou tentando criar um comando policial, o /autosu, a sua função seria "/autosu [id]" (id do time) que retornaria dando nível de procura em:  quem estiver perto do player e seu time for do mesmo número que o player digitou.
Deixei no pastebin o código pra  ser mais fácil de entender

https://pastebin.com/wAmBqxvA

o problema é que ele não retorna dando procura em quem esta perto o máximo que consegui foi dar procura em mim mesmo...

Tente assim:

Código PHP:
CMD:autosu(playerid, const params[]) {
    new orgbool:orgproibida, new Float:distance;
    if(GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != 10 || GetPlayerOrg(playerid) != 12 || GetPlayerOrg(playerid) != 13 || GetPlayerOrg(playerid) != 14 || GetPlayerOrg(playerid) != 17 || GetPlayerOrg(playerid) != 25) return SendClientMessage(playerid, -1"Você precisa ser policial para utilizar este comando.");



    if(sscanf(params"d"org)) return SendClientMessage(playerid, -1"Use: /autosu [id-org]");
    switch(org) {
     case 1..2orgproibida true;
     case 3..4orgproibida true;
     case 9..10orgproibida true;
     case 12..13orgproibida true;
     case 14..17orgproibida true;
     case 0..25orgproibida true;
     default: orgproibida false;
    }
    if(orgproibida) return SendClientMessage(playerid, -1"Você não pode dar autosu nessa org.");
    for(new 0MAX_PLAYERSi++) {
      distance GetDistanceBetweenPlayers(playeridi);
      if(distance 10) continue; // Caso a distância for superior a 10, o loop pula esse jogador e continua a procurar por jogadores com a distância inferior a 10.
      else if(GetPlayerOrg(i) != org) continue;

      SetPlayerCriminal(i255"Sequestro (auto su usado)");

      TempoSu[i] = GetTickCount();
    }
    return 1;
}

stock Float:GetDistanceBetweenPlayers(playeridtargetid) {
 static 
Float:pos[3];
 
GetPlayerPos(targetidpos[0], pos[1], pos[2]);
 return 
GetPlayerDistanceFromPoint(playeridpos[0], pos[1], pos[2]);




RE: problema com comando - Colono - 24/09/2023

(23/09/2023 10:49)White_Blue Escreveu:
(23/09/2023 08:11)Colono Escreveu: Olá sou novato em Pawn, estou tentando criar um comando policial, o /autosu, a sua função seria "/autosu [id]" (id do time) que retornaria dando nível de procura em:  quem estiver perto do player e seu time for do mesmo número que o player digitou.
Deixei no pastebin o código pra  ser mais fácil de entender

https://pastebin.com/wAmBqxvA

o problema é que ele não retorna dando procura em quem esta perto o máximo que consegui foi dar procura em mim mesmo...

Tente assim:

Código PHP:
CMD:autosu(playerid, const params[]) {
    new orgbool:orgproibida, new Float:distance;
    if(GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != 10 || GetPlayerOrg(playerid) != 12 || GetPlayerOrg(playerid) != 13 || GetPlayerOrg(playerid) != 14 || GetPlayerOrg(playerid) != 17 || GetPlayerOrg(playerid) != 25) return SendClientMessage(playerid, -1"Você precisa ser policial para utilizar este comando.");



    if(sscanf(params"d"org)) return SendClientMessage(playerid, -1"Use: /autosu [id-org]");
    switch(org) {
     case 1..2orgproibida true;
     case 3..4orgproibida true;
     case 9..10orgproibida true;
     case 12..13orgproibida true;
     case 14..17orgproibida true;
     case 0..25orgproibida true;
     default: orgproibida false;
    }
    if(orgproibida) return SendClientMessage(playerid, -1"Você não pode dar autosu nessa org.");
    for(new 0MAX_PLAYERSi++) {
      distance GetDistanceBetweenPlayers(playeridi);
      if(distance 10) continue; // Caso a distância for superior a 10, o loop pula esse jogador e continua a procurar por jogadores com a distância inferior a 10.
      else if(GetPlayerOrg(i) != org) continue;

      SetPlayerCriminal(i255"Sequestro (auto su usado)");

      TempoSu[i] = GetTickCount();
    }
    return 1;
}

stock Float:GetDistanceBetweenPlayers(playeridtargetid) {
 static 
Float:pos[3];
 
GetPlayerPos(targetidpos[0], pos[1], pos[2]);
 return 
GetPlayerDistanceFromPoint(playeridpos[0], pos[1], pos[2]);

Fala amigão tudo certo? Fiquei impressionado com o capricho e a complexidade do código que vc fez, obrigado mesmo pela ajuda, ficou perfeito só precisei colocar um ponto e virgula ali em cima depois do org proibida, e renomear "GetDistanceBetweenPlayers" que tava dando conflito com uma include e Shazam o código funcionou PERFEITAMENTEEE muito obrigado mesmo amigo!!


RE: problema com comando - White_Blue - 26/09/2023

(24/09/2023 08:26)Colono Escreveu:
(23/09/2023 10:49)White_Blue Escreveu:
(23/09/2023 08:11)Colono Escreveu: Olá sou novato em Pawn, estou tentando criar um comando policial, o /autosu, a sua função seria "/autosu [id]" (id do time) que retornaria dando nível de procura em:  quem estiver perto do player e seu time for do mesmo número que o player digitou.
Deixei no pastebin o código pra  ser mais fácil de entender

https://pastebin.com/wAmBqxvA

o problema é que ele não retorna dando procura em quem esta perto o máximo que consegui foi dar procura em mim mesmo...

Tente assim:

Código PHP:
CMD:autosu(playerid, const params[]) {
    new orgbool:orgproibida, new Float:distance;
    if(GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != || GetPlayerOrg(playerid) != 10 || GetPlayerOrg(playerid) != 12 || GetPlayerOrg(playerid) != 13 || GetPlayerOrg(playerid) != 14 || GetPlayerOrg(playerid) != 17 || GetPlayerOrg(playerid) != 25) return SendClientMessage(playerid, -1"Você precisa ser policial para utilizar este comando.");



    if(sscanf(params"d"org)) return SendClientMessage(playerid, -1"Use: /autosu [id-org]");
    switch(org) {
     case 1..2orgproibida true;
     case 3..4orgproibida true;
     case 9..10orgproibida true;
     case 12..13orgproibida true;
     case 14..17orgproibida true;
     case 0..25orgproibida true;
     default: orgproibida false;
    }
    if(orgproibida) return SendClientMessage(playerid, -1"Você não pode dar autosu nessa org.");
    for(new 0MAX_PLAYERSi++) {
      distance GetDistanceBetweenPlayers(playeridi);
      if(distance 10) continue; // Caso a distância for superior a 10, o loop pula esse jogador e continua a procurar por jogadores com a distância inferior a 10.
      else if(GetPlayerOrg(i) != org) continue;

      SetPlayerCriminal(i255"Sequestro (auto su usado)");

      TempoSu[i] = GetTickCount();
    }
    return 1;
}

stock Float:GetDistanceBetweenPlayers(playeridtargetid) {
 static 
Float:pos[3];
 
GetPlayerPos(targetidpos[0], pos[1], pos[2]);
 return 
GetPlayerDistanceFromPoint(playeridpos[0], pos[1], pos[2]);

Fala amigão tudo certo? Fiquei impressionado com o capricho e a complexidade do código que vc fez, obrigado mesmo pela ajuda, ficou perfeito só precisei colocar um ponto e virgula ali em cima depois do org proibida, e renomear "GetDistanceBetweenPlayers" que tava dando conflito com uma include e Shazam o código funcionou PERFEITAMENTEEE muito obrigado mesmo amigo!!

Fico feliz por ter ajudado.