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 org, bool:orgproibida, new Float:distance; if(GetPlayerOrg(playerid) != 1 || GetPlayerOrg(playerid) != 2 || GetPlayerOrg(playerid) != 3 || GetPlayerOrg(playerid) != 4 || GetPlayerOrg(playerid) != 9 || 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..2: orgproibida = true; case 3..4: orgproibida = true; case 9..10: orgproibida = true; case 12..13: orgproibida = true; case 14..17: orgproibida = true; case 0..25: orgproibida = true; default: orgproibida = false; } if(orgproibida) return SendClientMessage(playerid, -1, "Você não pode dar autosu nessa org."); for(new i = 0; i < MAX_PLAYERS; i++) { distance = GetDistanceBetweenPlayers(playerid, i); 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(i, 255, "Sequestro (auto su usado)");
TempoSu[i] = GetTickCount(); } return 1; }
stock Float:GetDistanceBetweenPlayers(playerid, targetid) { static Float:pos[3]; GetPlayerPos(targetid, pos[0], pos[1], pos[2]); return GetPlayerDistanceFromPoint(playerid, pos[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 org, bool:orgproibida, new Float:distance; if(GetPlayerOrg(playerid) != 1 || GetPlayerOrg(playerid) != 2 || GetPlayerOrg(playerid) != 3 || GetPlayerOrg(playerid) != 4 || GetPlayerOrg(playerid) != 9 || 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..2: orgproibida = true; case 3..4: orgproibida = true; case 9..10: orgproibida = true; case 12..13: orgproibida = true; case 14..17: orgproibida = true; case 0..25: orgproibida = true; default: orgproibida = false; } if(orgproibida) return SendClientMessage(playerid, -1, "Você não pode dar autosu nessa org."); for(new i = 0; i < MAX_PLAYERS; i++) { distance = GetDistanceBetweenPlayers(playerid, i); 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(i, 255, "Sequestro (auto su usado)");
TempoSu[i] = GetTickCount(); } return 1; }
stock Float:GetDistanceBetweenPlayers(playerid, targetid) { static Float:pos[3]; GetPlayerPos(targetid, pos[0], pos[1], pos[2]); return GetPlayerDistanceFromPoint(playerid, pos[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 org, bool:orgproibida, new Float:distance; if(GetPlayerOrg(playerid) != 1 || GetPlayerOrg(playerid) != 2 || GetPlayerOrg(playerid) != 3 || GetPlayerOrg(playerid) != 4 || GetPlayerOrg(playerid) != 9 || 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..2: orgproibida = true; case 3..4: orgproibida = true; case 9..10: orgproibida = true; case 12..13: orgproibida = true; case 14..17: orgproibida = true; case 0..25: orgproibida = true; default: orgproibida = false; } if(orgproibida) return SendClientMessage(playerid, -1, "Você não pode dar autosu nessa org."); for(new i = 0; i < MAX_PLAYERS; i++) { distance = GetDistanceBetweenPlayers(playerid, i); 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(i, 255, "Sequestro (auto su usado)");
TempoSu[i] = GetTickCount(); } return 1; }
stock Float:GetDistanceBetweenPlayers(playerid, targetid) { static Float:pos[3]; GetPlayerPos(targetid, pos[0], pos[1], pos[2]); return GetPlayerDistanceFromPoint(playerid, pos[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.
|