[Ajuda] Sistema de AbordagemІ
#1

Eu gostaria de ajuda em um sistema de abordagem, o problema seria o seguinte o policial aborda o procurado, quando o procurado se rende era para enviar uma mensagem ao policia dizendo "O procurado se Rendeu Vocк tem 30 segundos para autua-lo".
PHP код:
if(strcmp(cmd"/abordar"true) == 0)
    {
       if(
IsPlayerConnected(playerid))
        {
            if(!
IsACop(playerid))
            {
                
SendClientMessage(playeridCOLOR_GREY"   Vocк nгo й um policial!");
                return 
true;
            }
            if(
OnDuty[playerid] != 1)
            {
                
SendClientMessage(playeridCOLOR_GREY"   Vocк nгo Bateu o cartгo!");
                return 
true;
            }
            
tmp strtok(cmdtextidx);
            if(!
strlen(tmp))
            {
                
SendClientMessage(playeridCOLOR_LIGHTBLUE"Use: /abordar [id]");
                return 
true;
            }
            
giveplayerid ReturnUser(tmp);
            if(
IsPlayerConnected(giveplayerid))
            {
                if(
giveplayerid != INVALID_PLAYER_ID)
                {
                    if(
WantedPoints[giveplayerid] == 0)
                    {
                        
SendClientMessage(playeridCOLOR_LIGHTBLUE"   Este jogador nгo estб sendo procurado!");
                        return 
true;
                    }
                    if(
Abordagem[giveplayerid] == 1)
                    {
                        
SendClientMessage(playeridCOLOR_LIGHTBLUE"  O jogador ja estб sendo Abordado.");
                        return 
true;
                    }
                    if(
VozDePrisao[giveplayerid] == 1)
                    {
                     
SendClientMessage(playeridCOLOR_LIGHTBLUE"  O jogador jб sendo perseguido.");
                     return 
true;
                     }
                    if (
ProxDetectorS(5.0playeridgiveplayerid))
                    {
                        if(
PlayerInfo[playerid][pMembro] != || PlayerInfo[playerid][pLider] != 3)
                           {
                        if(
giveplayerid == playerid) { SendClientMessage(playeridCOLOR_GREY"Vocк nгo pode abordar se abordar."); return 1; }
                        
GetPlayerName(giveplayeridgiveplayersizeof(giveplayer));
                        
GetPlayerName(playeridsendernamesizeof(sendername));
                        
format(stringsizeof(string), "[POLICIA] O jogador %s tem 15s para se render."giveplayer);
                        
SendClientMessage(playeridCOLOR_LIGHTBLUEstring);
                        
format(stringsizeof(string), "[POLICIA] Se o jogador nгo se render inicie uma perseguiзгo com o comando /vdp [id]");
                        
SendClientMessage(playeridCOLOR_LIGHTBLUEstring);
                        
format(stringsizeof(string), "Vocк foi abordado pelo policial %s[%d] e tem 15s para se render."sendernameplayerid);
                        
SendClientMessage(giveplayeridCOLOR_LIGHTBLUEstring);
                        
GameTextForPlayer(playerid"  ~r~Policia, ~b~Pare "50003);
                        
format(stringsizeof(string), "    Digite /render para se render."sendernameplayerid);
                        
SendClientMessage(giveplayeridCOLOR_LIGHTBLUEstring);
                        
Ttimer SetTimerEx("Abordagemm"150000"ii"playeridgiveplayerid);
                        
Abordagem[giveplayerid] = 1;
                        }
                        else if(
ProxDetectorS(5.0playeridgiveplayerid))
                        {
                        if(
PlayerInfo[playerid][pMembro] == || PlayerInfo[playerid][pLider] == 3)
                         {
                        
GetPlayerName(giveplayeridgiveplayersizeof(giveplayer));
                        
GetPlayerName(playeridsendernamesizeof(sendername));
                        if(
giveplayerid == playerid) { SendClientMessage(playeridCOLOR_GREY"Vocк nгo pode abordar se abordar."); return 1; }
                        
format(stringsizeof(string), "[EXERCITO] O jogador %s tem 15s para se render."giveplayer);
                        
SendClientMessage(playeridCOLOR_GREENstring);
                        
format(stringsizeof(string), "[EXERCITO] Se o jogador nгo se render inicie uma perseguiзгo com o comando /vdp [id]");
                        
SendClientMessage(playeridCOLOR_GREENstring);
                        
format(stringsizeof(string), "Vocк foi abordado pelo militar %s[%d] e tem 15s para se render."sendernameplayerid);
                        
SendClientMessage(giveplayeridCOLOR_GREENstring);
                        
GameTextForPlayer(playerid"  ~r~Exercito, ~b~Pare "50003);
                        
format(stringsizeof(string), "    Digite /render para se render."sendernameplayerid);
                        
SendClientMessage(giveplayeridCOLOR_GREENstring);
                        
Ttimer SetTimerEx("Abordagemm"150000"ii"playeridgiveplayerid);
                        
Abordagem[giveplayerid] = 1;
                        return 
true;
                    }
                else
                {
                
SendClientMessage(playeridCOLOR_GREEN"Chegue Mais perto.");
                return 
true;
                }
              }
           }
        }
     }
   }
 } 
PHP код:
   if(strcmp(cmd"/render"true) == 0)
   {
    if(
IsPlayerConnected(playerid))
        {
   if(
Abordagem[playerid] == 0)
       {
    
SendClientMessage(playeridCOLOR_ORANGE"   Vocк nгo esta sendo abordado.");
    return 
true;
    }
    if(
Rendido[playerid] == 1)
    {
     
SendClientMessage(playeridCOLOR_ORANGE"   Vocк jб se rendeu, aguarde o policia fazer a autuaзгo.");
     return 
true;
     }
    if(
Abordagem[playerid] == 1)
    {
    
TogglePlayerControllable(playerid0);
    
SetPlayerSpecialAction(playeridSPECIAL_ACTION_HANDSUP);
    
Rendido[playerid] = 1;
    
SetTimerEx("Rendidoo"segundos(30), 0"ii"playeridgiveplayerid);
    
KillTimer(Ttimer);
    return 
true;
    }
  }

OBS: Eu ja havia criado um tуpico de ajuda, sobre o sistema de abordagem, me ajudaram a arrumar um dos problemas, mas ficou outro sem respostas.
Tуpico: https://sampforum.blast.hk/showthread.php?tid=659260
Reply
#2

"refiz" todo sistema em sscanf2 E zcmd, o sscanf te poupa de usar muito cуdigo desnecessario!





se ajudei da +rep


PHP код:

#define  SCM       SendClientMessage
new tRender;
CMD:abordar(playeridparams[])
{
    new 
idx,
           
Float:pos[3],
                           
aname[MAX_PLAYER_NAME],
                                                   
Nike[MAX_PLAYER_NAME],
                                                                        
String[150];
    
    
GetPlayerPos(playeridpos[0], pos[1], pos[2]);
    
    
GetPlayerName(playeridanameMAX_PLAYER_NAME);
    
    if(
sscanf(params,"d",idx))  return  SCM(playerid, -1"[SERVER] Comando incorreto! Use: /abordar [id]");
    
    
GetPlayerName(idxNikeMAX_PLAYER_NAME);
    
    if(
IsPlayerConnected(idx)) return    SCM(playerid, -1"[SERVER] O jogador, nгo estб conectado");
    if(!
IsACop(playerid)) return SCM(playerid, -1"[SERVER] Vocк nгo й policial");
    if(
OnDuty[playerid] != 1)    return  SCM(playerid, -1"[SERVER] Vocк nгo Bateu o cartгo!");
    if(
GetPlayerWantedLevel(idx) <= 0)  return  SCM(playerid, -1"[SERVER] Este jogador, nгo estб sendo procurado");
    if(
Abordagem[idx] >= 1) return  SCM(playerid, -1"[SERVER] O jogador jб estб sendo abordado!");
    if(
VozDePrisao[idx] >= 1)   return  SCM(playerid, -1"[SERVER] O jogador jб estб sendo perseguido");
    if(
isPlayerInRangeOfPoint(idx5.0pos[0], pos[1], pos[2]))
    {
     if(
idx == playerid) return  SCM(playerid, -1"[ERRO] Vocк nгo pode se prender");
    if(
PlayerInfo[playerid][pMembro] != || PlayerInfo[playerid][pLider] != 3)
     {
     
format(Stringsizeof(String), "[CENTRAL] O jogador %s, tem 15 Seg para se render, caso contrario inicie uma perseguiзгo!",Nike);
     
SCM(playerid, -1String);
     
     
format(Stringsizeof(String), "Vocк estб sendo abordado pelo policial %s, Vocк tem 15 segundos para se render!"aname);
     
SCM(idx, -1String);
     
     
GameTextForPlayer(idx"Parado! Aqui й a policia"50003);
     
     
SCM(idx, -1"Digite: /renderse para se render!");
     
tRender SetTimerEx("nRendeu"15000false"i"idx);
     
     
     }
    
    
    }
     else { 
SCM(playerid, -1"[SERVER] O jogador estб muito distante"); }
    return 
1;
}
forward nRendeu(playerid);
public 
nRendeu(playerid)
{
    
SCM(playerid, -1"[CENTRAL] O jogador nгo se rendeu! inicie uma perseguiзгo!");
    return 
1;
}
CMD:renderse(playerid)
{
    if(
Abordagem[playerid] >= 1)
    {
    
killtimer(tRender);
    
    
Rendido[playerid] = 1;
    
    
TogglePlayerControllable(playeid1);
    
SetPlayerSpecialAction(playerid10);
    }
    else {
SCM(playerid, -1"[SERVER] Vocк nгo esґta sendo abordado"); }
    return 
1;

Reply
#3

Quote:
Originally Posted by GSantana
Посмотреть сообщение
"refiz" todo sistema em sscanf2 E zcmd, o sscanf te poupa de usar muito cуdigo desnecessario!





se ajudei da +rep


PHP код:

#define  SCM       SendClientMessage
new tRender;
CMD:abordar(playeridparams[])
{
    new 
idx,
           
Float:pos[3],
                           
aname[MAX_PLAYER_NAME],
                                                   
Nike[MAX_PLAYER_NAME],
                                                                        
String[150];
    
    
GetPlayerPos(playeridpos[0], pos[1], pos[2]);
    
    
GetPlayerName(playeridanameMAX_PLAYER_NAME);
    
    if(
sscanf(params,"d",idx))  return  SCM(playerid, -1"[SERVER] Comando incorreto! Use: /abordar [id]");
    
    
GetPlayerName(idxNikeMAX_PLAYER_NAME);
    
    if(
IsPlayerConnected(idx)) return    SCM(playerid, -1"[SERVER] O jogador, nгo estб conectado");
    if(!
IsACop(playerid)) return SCM(playerid, -1"[SERVER] Vocк nгo й policial");
    if(
OnDuty[playerid] != 1)    return  SCM(playerid, -1"[SERVER] Vocк nгo Bateu o cartгo!");
    if(
GetPlayerWantedLevel(idx) <= 0)  return  SCM(playerid, -1"[SERVER] Este jogador, nгo estб sendo procurado");
    if(
Abordagem[idx] >= 1) return  SCM(playerid, -1"[SERVER] O jogador jб estб sendo abordado!");
    if(
VozDePrisao[idx] >= 1)   return  SCM(playerid, -1"[SERVER] O jogador jб estб sendo perseguido");
    if(
isPlayerInRangeOfPoint(idx5.0pos[0], pos[1], pos[2]))
    {
     if(
idx == playerid) return  SCM(playerid, -1"[ERRO] Vocк nгo pode se prender");
    if(
PlayerInfo[playerid][pMembro] != || PlayerInfo[playerid][pLider] != 3)
     {
     
format(Stringsizeof(String), "[CENTRAL] O jogador %s, tem 15 Seg para se render, caso contrario inicie uma perseguiзгo!",Nike);
     
SCM(playerid, -1String);
     
     
format(Stringsizeof(String), "Vocк estб sendo abordado pelo policial %s, Vocк tem 15 segundos para se render!"aname);
     
SCM(idx, -1String);
     
     
GameTextForPlayer(idx"Parado! Aqui й a policia"50003);
     
     
SCM(idx, -1"Digite: /renderse para se render!");
     
tRender SetTimerEx("nRendeu"15000false"i"idx);
     
     
     }
    
    
    }
     else { 
SCM(playerid, -1"[SERVER] O jogador estб muito distante"); }
    return 
1;
}
forward nRendeu(playerid);
public 
nRendeu(playerid)
{
    
SCM(playerid, -1"[CENTRAL] O jogador nгo se rendeu! inicie uma perseguiзгo!");
    return 
1;
}
CMD:renderse(playerid)
{
    if(
Abordagem[playerid] >= 1)
    {
    
killtimer(tRender);
    
    
Rendido[playerid] = 1;
    
    
TogglePlayerControllable(playeid1);
    
SetPlayerSpecialAction(playerid10);
    }
    else {
SCM(playerid, -1"[SERVER] Vocк nгo esґta sendo abordado"); }
    return 
1;

Nгo quero reputaзгo, apenas corrigindo algumas coisas.

Код:
if(GetPlayerWantedLevel(idx) <= 0) return SendClientMessage(playerid, -1, "[SERVER] Este jogador, nгo estб sendo procurado");

if(isPlayerInRangeOfPoint(idx, 5.0, pos[0], pos[1], pos[2]))
PHP код:
new tRender[MAX_PLAYERS], pMeAbordando[MAX_PLAYERS];
forward nRendeu(playerid);
CMD:abordar(playeridparams[]) {
    new 
idxFloat:pos[3], aname[MAX_PLAYER_NAME], Nike[MAX_PLAYER_NAME], String[128];
    if(
sscanf(params"d"idx)) return SendClientMessage(playerid, -1"[SERVER] Comando incorreto! Use: /abordar [id]");
    
GetPlayerPos(playeridpos[0], pos[1], pos[2]);
    
GetPlayerName(playeridanamesizeof(aname));
    
GetPlayerName(idxNikesizeof(Nike));
    if(
idx == playerid) return  SendClientMessage(playerid, -1"[ERRO] Vocк nгo pode se prender");
    if(
IsPlayerConnected(idx)) return SendClientMessage(playerid, -1"[SERVER] O jogador, nгo estб conectado");
    if(!
IsACop(playerid)) return SendClientMessage(playerid, -1"[SERVER] Vocк nгo й policial");
    if(
OnDuty[playerid] != 1) return SendClientMessage(playerid, -1"[SERVER] Vocк nгo Bateu o cartгo!");
    if(
Abordagem[idx] >= 1) return SendClientMessage(playerid, -1"[SERVER] O jogador jб estб sendo abordado!");
    if(
VozDePrisao[idx] >= 1) return SendClientMessage(playerid, -1"[SERVER] O jogador jб estб sendo perseguido");
    if(!
IsPlayerInRangeOfPoint(idx5.0pos[0], pos[1], pos[2])) return SendClientMessage(playerid, -1"[SERVER] O jogador estб muito distante");
    if(
PlayerInfo[playerid][pMembro] != || PlayerInfo[playerid][pLider] != 3) {
        
format(Stringsizeof(String), "[CENTRAL] O jogador %s, tem 15 Seg para se render, caso contrario inicie uma perseguiзгo!",Nike);
        
SendClientMessage(playerid, -1String);
        
format(Stringsizeof(String), "Vocк estб sendo abordado pelo policial %s, Vocк tem 15 segundos para se render!"aname);
        
SendClientMessage(idx, -1String);
        
GameTextForPlayer(idx"Parado! Aqui й a policia"50003);
        
SendClientMessage(idx, -1"Digite: /renderse para se render!");
        
tRender[idx] = SetTimerEx("nRendeu"15000false"i"idx);
        
pMeAbordando[idx] = playerid;
    }
    return 
1;
}
public 
nRendeu(playerid) { return SendClientMessage(playerid, -1"[CENTRAL] O jogador nгo se rendeu! inicie uma perseguiзгo!"); }
CMD:renderse(playerid) {
    if(
Abordagem[playerid] <= 0) return SendClientMessage(playerid, -1"[SERVER] Vocк nгo esta sendo abordado");
    
KillTimer(tRender[playerid]);
    
Rendido[playerid] = 1;
    
TogglePlayerControllable(playeidtrue);
    
SetPlayerSpecialAction(playerid10);
    
SendClientMessage(pMeAbordando[playerid], -1"O jogador se rendeu, faзa a revista !");
    return 
1;

Reply
#4

Quote:
Originally Posted by [BOPE]Seu._.Madruga
Посмотреть сообщение
Nгo quero reputaзгo, apenas corrigindo algumas coisas.

Код:
if(GetPlayerWantedLevel(idx) <= 0) return SendClientMessage(playerid, -1, "[SERVER] Este jogador, nгo estб sendo procurado");

if(isPlayerInRangeOfPoint(idx, 5.0, pos[0], pos[1], pos[2]))
PHP код:
new tRender[MAX_PLAYERS], pMeAbordando[MAX_PLAYERS];
forward nRendeu(playerid);
CMD:abordar(playeridparams[]) {
    new 
idxFloat:pos[3], aname[MAX_PLAYER_NAME], Nike[MAX_PLAYER_NAME], String[128];
    if(
sscanf(params"d"idx)) return SendClientMessage(playerid, -1"[SERVER] Comando incorreto! Use: /abordar [id]");
    
GetPlayerPos(playeridpos[0], pos[1], pos[2]);
    
GetPlayerName(playeridanamesizeof(aname));
    
GetPlayerName(idxNikesizeof(Nike));
    if(
idx == playerid) return  SendClientMessage(playerid, -1"[ERRO] Vocк nгo pode se prender");
    if(
IsPlayerConnected(idx)) return SendClientMessage(playerid, -1"[SERVER] O jogador, nгo estб conectado");
    if(!
IsACop(playerid)) return SendClientMessage(playerid, -1"[SERVER] Vocк nгo й policial");
    if(
OnDuty[playerid] != 1) return SendClientMessage(playerid, -1"[SERVER] Vocк nгo Bateu o cartгo!");
    if(
Abordagem[idx] >= 1) return SendClientMessage(playerid, -1"[SERVER] O jogador jб estб sendo abordado!");
    if(
VozDePrisao[idx] >= 1) return SendClientMessage(playerid, -1"[SERVER] O jogador jб estб sendo perseguido");
    if(!
IsPlayerInRangeOfPoint(idx5.0pos[0], pos[1], pos[2])) return SendClientMessage(playerid, -1"[SERVER] O jogador estб muito distante");
    if(
PlayerInfo[playerid][pMembro] != || PlayerInfo[playerid][pLider] != 3) {
        
format(Stringsizeof(String), "[CENTRAL] O jogador %s, tem 15 Seg para se render, caso contrario inicie uma perseguiзгo!",Nike);
        
SendClientMessage(playerid, -1String);
        
format(Stringsizeof(String), "Vocк estб sendo abordado pelo policial %s, Vocк tem 15 segundos para se render!"aname);
        
SendClientMessage(idx, -1String);
        
GameTextForPlayer(idx"Parado! Aqui й a policia"50003);
        
SendClientMessage(idx, -1"Digite: /renderse para se render!");
        
tRender[idx] = SetTimerEx("nRendeu"15000false"i"idx);
        
pMeAbordando[idx] = playerid;
    }
    return 
1;
}
public 
nRendeu(playerid) { return SendClientMessage(playerid, -1"[CENTRAL] O jogador nгo se rendeu! inicie uma perseguiзгo!"); }
CMD:renderse(playerid) {
    if(
Abordagem[playerid] <= 0) return SendClientMessage(playerid, -1"[SERVER] Vocк nгo esta sendo abordado");
    
KillTimer(tRender[playerid]);
    
Rendido[playerid] = 1;
    
TogglePlayerControllable(playeidtrue);
    
SetPlayerSpecialAction(playerid10);
    
SendClientMessage(pMeAbordando[playerid], -1"O jogador se rendeu, faзa a revista !");
    return 
1;

Funcionou Muito obrigado, Agradeзo aos dois que tentaram me ajudar.
Reply
#5

Quote:
Originally Posted by [BOPE]Seu._.Madruga
Посмотреть сообщение
Nгo quero reputaзгo, apenas corrigindo algumas coisas.

Код:
if(GetPlayerWantedLevel(idx) <= 0) return SendClientMessage(playerid, -1, "[SERVER] Este jogador, nгo estб sendo procurado");

if(isPlayerInRangeOfPoint(idx, 5.0, pos[0], pos[1], pos[2]))
PHP код:
new tRender[MAX_PLAYERS], pMeAbordando[MAX_PLAYERS];
forward nRendeu(playerid);
CMD:abordar(playeridparams[]) {
    new 
idxFloat:pos[3], aname[MAX_PLAYER_NAME], Nike[MAX_PLAYER_NAME], String[128];
    if(
sscanf(params"d"idx)) return SendClientMessage(playerid, -1"[SERVER] Comando incorreto! Use: /abordar [id]");
    
GetPlayerPos(playeridpos[0], pos[1], pos[2]);
    
GetPlayerName(playeridanamesizeof(aname));
    
GetPlayerName(idxNikesizeof(Nike));
    if(
idx == playerid) return  SendClientMessage(playerid, -1"[ERRO] Vocк nгo pode se prender");
    if(
IsPlayerConnected(idx)) return SendClientMessage(playerid, -1"[SERVER] O jogador, nгo estб conectado");
    if(!
IsACop(playerid)) return SendClientMessage(playerid, -1"[SERVER] Vocк nгo й policial");
    if(
OnDuty[playerid] != 1) return SendClientMessage(playerid, -1"[SERVER] Vocк nгo Bateu o cartгo!");
    if(
Abordagem[idx] >= 1) return SendClientMessage(playerid, -1"[SERVER] O jogador jб estб sendo abordado!");
    if(
VozDePrisao[idx] >= 1) return SendClientMessage(playerid, -1"[SERVER] O jogador jб estб sendo perseguido");
    if(!
IsPlayerInRangeOfPoint(idx5.0pos[0], pos[1], pos[2])) return SendClientMessage(playerid, -1"[SERVER] O jogador estб muito distante");
    if(
PlayerInfo[playerid][pMembro] != || PlayerInfo[playerid][pLider] != 3) {
        
format(Stringsizeof(String), "[CENTRAL] O jogador %s, tem 15 Seg para se render, caso contrario inicie uma perseguiзгo!",Nike);
        
SendClientMessage(playerid, -1String);
        
format(Stringsizeof(String), "Vocк estб sendo abordado pelo policial %s, Vocк tem 15 segundos para se render!"aname);
        
SendClientMessage(idx, -1String);
        
GameTextForPlayer(idx"Parado! Aqui й a policia"50003);
        
SendClientMessage(idx, -1"Digite: /renderse para se render!");
        
tRender[idx] = SetTimerEx("nRendeu"15000false"i"idx);
        
pMeAbordando[idx] = playerid;
    }
    return 
1;
}
public 
nRendeu(playerid) { return SendClientMessage(playerid, -1"[CENTRAL] O jogador nгo se rendeu! inicie uma perseguiзгo!"); }
CMD:renderse(playerid) {
    if(
Abordagem[playerid] <= 0) return SendClientMessage(playerid, -1"[SERVER] Vocк nгo esta sendo abordado");
    
KillTimer(tRender[playerid]);
    
Rendido[playerid] = 1;
    
TogglePlayerControllable(playeidtrue);
    
SetPlayerSpecialAction(playerid10);
    
SendClientMessage(pMeAbordando[playerid], -1"O jogador se rendeu, faзa a revista !");
    return 
1;

que isso, oque importa й ajudar, reputaзгo й sу um nъmero
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)