SA-MP Forums Archive
[Ajuda] prender - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] prender (/showthread.php?tid=654473)



prender - Feconitu - 29.05.2018

bom galera, estou tendo problema em criar um comando que й o /prender, comecei a fazer o comando, sу que a parte mais complicada pra mim й a parte de setar o tempo do player ser preso

PHP код:
CMD:prender(playeridparams[])
{
    new 
ID_OUTRO_JOGADORMinutos;
    if(!
IsPlayerInRangeOfPoint(playerid3.01526.5399, -1678.61675.8906)) return SendClientMessage(playerid,VERMELHO_BEM_CLARO ,"Vocк nгo estб no local de prender!");
    if(!
IsACop(playerid)) return SendClientMessage(playeridVERMELHO_BEM_CLARO"Vocк nгo й um policial!");
    
SendClientMessage(playeridAZUL_BEM_CLARO"Se vocк nгo sabe por quanto tempo prender, digite /ajudapreso, e verifique as regras!");
    else if(
IsACop(playerid))
    {
        if(
ProxDetector_Ao_Jogador(8.0playeridID_OUTRO_JOGADOR))
        {
            if(
sscanf(params"u"ID_OUTRO_JOGADOR Minutos)) return SendClientMessage(playeridVERDE_BEM_CLARO"USE: /prender [ID] [MINUTOS]");
            if(!
IsPlayerConnected(ID_OUTRO_JOGADOR)) return SendClientMessage(playeridVERMELHO_BEM_CLARO "Jogador(a) nгo estб conectado.");
            
SetPlayerInterior(ID_OUTRO_JOGADOR6);
            
SetPlayerPos(ID_OUTRO_JOGADOR264.1306,77.4115,1001.0391);
            
        }
        else
        {
            
SendClientMessage(playeridVERMELHO_BEM_CLARO"[ ERRO ] Vocк nгo estб perto do outro jogador!");
        }
    }
    return 
1;

no caso o prуprio policial colocaria os minutos, seria 5 mais a quantidade de estrelas do player. Se puderem me ajudar, ficarei muito agradecido!


Re: prender - FerrariL - 29.05.2018

Tб mas qual й a sua dъvida ? vocк irб fazer o mesmo processo no sscanf, com a variбvel Minutos.
Sу uma observaзгo, vocк estб fazendo uma condicional desnecessбria
pawn Код:
else if(IsACop(playerid))
Vocк jб fez uma condicional anterior
pawn Код:
if(!IsACop(playerid)) return SendClientMessage(playerid, VERMELHO_BEM_CLARO, "Vocк nгo й um policial!");
.


Re: prender - Feconitu - 29.05.2018

bom, seria isso, so que queria salvar o tempo que ele ficara preso em dof2, e quando acabar ele seria solto.

Ainda nгo entendo muito de pawn mano, mais valu por avisar


Re: prender - FerrariL - 29.05.2018

Fiz uma base, nгo й para copiar e colar e sim entender o cуdigo. Vai ser necessбrio criar a pasta Presos,e adaptar o sistema a suas variбveis. Na callback OnPlayerSpawn vocк faz a verificaзгo se o player estб preso ou nгo, usando o DOF2_GetInt. Tambйm й necessбrio salvar a variбvel MinutosPreso, na OnPlayerDisconnect.
PHP код:
#define minutos(%0) (1000 * %0 * 60)
new MinutosPreso[MAX_PLAYERS],
    
IdTimer[MAX_PLAYERS];
    
new 
Str[50];
CMD:prender(playeridparams[]) 

    new 
ID_OUTRO_JOGADORMinutos
    if(!
IsPlayerInRangeOfPoint(playerid3.01526.5399, -1678.61675.8906)) return SendClientMessage(playerid,VERMELHO_BEM_CLARO ,"Vocк nгo estб no local de prender!"); 
    if(!
IsACop(playerid)) return SendClientMessage(playeridVERMELHO_BEM_CLARO"Vocк nгo й um policial!"); 
    
SendClientMessage(playeridAZUL_BEM_CLARO"Se vocк nгo sabe por quanto tempo prender, digite /ajudapreso, e verifique as regras!"); 
    
    if(
ProxDetector_Ao_Jogador(8.0playeridID_OUTRO_JOGADOR)) 
    { 
        if(
sscanf(params"uu"ID_OUTRO_JOGADOR Minutos)) return SendClientMessage(playeridVERDE_BEM_CLARO"USE: /prender [ID] [MINUTOS]"); 
        if(!
IsPlayerConnected(ID_OUTRO_JOGADOR)) return SendClientMessage(playeridVERMELHO_BEM_CLARO "Jogador(a) nгo estб conectado."); 
            
        
format(Str,sizeof(Str),"Presos/%s.ini",Name[ID_OUTRO_JOGADOR]);
            
        if(!
DOF2_FileExists(Str))
            
DOF2_CreateFile(Str);
            
        
MinutosPreso[ID_OUTRO_JOGADOR] = Minutos;
        
DOF2_SetInt(Str,"Tempo",MinutosPreso[ID_OUTRO_JOGADOR]);
            
        
IdTimer[ID_OUTRO_JOGADOR] = SetTimerEx("GetTimerJail"Minutos(1), true"i"ID_OUTRO_JOGADOR);
        
SetPlayerInterior(ID_OUTRO_JOGADOR6); 
        
SetPlayerPos(ID_OUTRO_JOGADOR264.1306,77.4115,1001.0391); 
    } 
    else 
       
SendClientMessage(playeridVERMELHO_BEM_CLARO"[ ERRO ] Vocк nгo estб perto do outro jogador!"); 
   
    return 
1
}  
forward GetTimerJail(playerid);
public 
GetTimerJail(playerid)
{
    if(
MinutosPreso[playerid] == 0)
    {
        
SetPlayerPos(playeridX,Y,Z); //Coordenadas de fora da prisгo
        
KillTimer(IdTimer[playerid]);
        return 
1;
    }
        
    
MinutosPreso[playerid]--;
        
    
format(Str,sizeof(Str),"Minuto atual preso %d",MinutosPreso[playerid]);
    
SendClientMessage(playerid,-1,Str);
        
    return 
0;




Re: prender - Feconitu - 29.05.2018

Mano muito obrigado, so tenho mais uma duvida

PHP код:
IdTimer[ID_OUTRO_JOGADOR] = SetTimerEx("GetTimerJail"Minutos(1), true"i"ID_OUTRO_JOGADOR); 
nгo entendi esse Minutos(1)


Re: prender - AutoMatic2 - 29.05.2018

esse Minutos(1) e essa define:

PHP код:
#define minutos(%0) (1000 * %0 * 60) 
tem uma tabela inteira de: Segundos, Minutos, Horas, Dias, Anos, Seculos
nгo achei ela, mais e muito boa

Minutos(1), Minutos(5)

Segundos(30), Segundos(10) ... :z


Re: prender - Feconitu - 29.05.2018

entendi, mas mesmo assim, quando eu coloco o valor que a pessoa ficaria presa comeзa do 65535 e vai diminuindo vamos supor que colequei 3 uma vez, 2 outra vez e 1, e sempre da o mesmo valor


Re: prender - Feconitu - 30.05.2018

Alguйm?