Portal SAMP
[Ajuda] CMD PRENDER - 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] CMD PRENDER (/showthread.php?tid=1029)



CMD PRENDER - Smith - 03/04/2021

Galera auguem pode me ajudar estou tentando fazer um comando de prender para as cop
na pratica esta funcionando certinho porem depois que você usa o comando /prender id tempo motivo
os outro comandos fica invalido tipo que desativa os outros comandos, quando vai usar outro comando fala que o comando não existe
e mostra a mensagem SERVE: Unknown command.
pwn abaixo
Código:
forward VerificarPreso(playerid);
forward TempoPrisao(playerid);

public OnPlayerConnect
{
SetTimerEx("VerificarPreso", 1000, true, "i", playerid);

}

public VerificarPreso(playerid)
{
if(pInfo[playerid][Prisao] > 0)
{
SetPlayerPos(playerid, 264.6288,77.5742,1001.0391);
SetPlayerInterior(playerid, 6);
SendClientMessage(playerid, Vermelho, "Seu Tempo de Cadeia ainda não acabou!");
SetTimerEx("TempoPrisao", 1000, true, "i", playerid);
}
return 1;
}

public TempoPrisao(playerid){
pInfo[playerid][Prisao]--;
if(pInfo[playerid][Prisao] <= 0)
{
SpawnPlayer(playerid);
SendClientMessage(playerid, VerdeC, "Você está livre da cadeia! alvara cantou");
KillTimer(TempoPrisao(playerid));
}
}




CMD:prender(playerid, params[])
if(!IsPlayerInRangeOfPoint(playerid, 6.0, 1526.1999511719, -1678, 5.9000000953674))return SendClientMessage(playerid, Vermelho, "Voce precisa estar  na dp para usar o comando");
if(pInfo[playerid][Cop] !=1) return SendClientMessage(playerid, Vermelho, "Voce nao e um Policial");
new id, Tempo, Motivo[30], str[128];
if(sscanf(params, "uds", id, Tempo, Motivo))return SendClientMessage(playerid, Vermelho, "|ERRO|: Use /prender [id][Minutos][motivo]");
format(str, sizeof(str), "O Policial %s prendeu o vagabundo %s, motivo %s.", pNome(playerid), pNome(id), Motivo);
SendClientMessageToAll(Azul, str);
SetPlayerPos(id, 264.6288,77.5742,1001.0391);
SetPlayerInterior(id, 6);
ResetPlayerWeapons(id);
ResetPlayerMoney(id);
SetPlayerWantedLevel(id, 0);
TogglePlayerControllable(id, 1);
pInfo[id][Prisao] = Tempo;
SetTimerEx("TempoPrisao", 1000, true, "i", id);
return 1;
}



RE: CMD PRENDER - Smith - 08/04/2021

(03/04/2021 22:02)Smith Escreveu: Galera auguem pode me ajudar estou tentando fazer um comando de prender para as cop
na pratica esta funcionando certinho porem depois que você usa o comando /prender id tempo motivo
os outro comandos fica invalido tipo que desativa os outros comandos, quando vai usar outro comando fala que o comando não existe
e mostra a mensagem SERVE: Unknown command.
pwn abaixo
Código:
forward VerificarPreso(playerid);
forward TempoPrisao(playerid);

public OnPlayerConnect
{
SetTimerEx("VerificarPreso", 1000, true, "i", playerid);

}

public VerificarPreso(playerid)
{
if(pInfo[playerid][Prisao] > 0)
{
SetPlayerPos(playerid, 264.6288,77.5742,1001.0391);
SetPlayerInterior(playerid, 6);
SendClientMessage(playerid, Vermelho, "Seu Tempo de Cadeia ainda não acabou!");
SetTimerEx("TempoPrisao", 1000, true, "i", playerid);
}
return 1;
}

public TempoPrisao(playerid){
pInfo[playerid][Prisao]--;
if(pInfo[playerid][Prisao] <= 0)
{
SpawnPlayer(playerid);
SendClientMessage(playerid, VerdeC, "Você está livre da cadeia! alvara cantou");
KillTimer(TempoPrisao(playerid));
}
}




CMD:prender(playerid, params[])
if(!IsPlayerInRangeOfPoint(playerid, 6.0, 1526.1999511719, -1678, 5.9000000953674))return SendClientMessage(playerid, Vermelho, "Voce precisa estar  na dp para usar o comando");
if(pInfo[playerid][Cop] !=1) return SendClientMessage(playerid, Vermelho, "Voce nao e um Policial");
new id, Tempo, Motivo[30], str[128];
if(sscanf(params, "uds", id, Tempo, Motivo))return SendClientMessage(playerid, Vermelho, "|ERRO|: Use /prender [id][Minutos][motivo]");
format(str, sizeof(str), "O Policial %s prendeu o vagabundo %s, motivo %s.", pNome(playerid), pNome(id), Motivo);
SendClientMessageToAll(Azul, str);
SetPlayerPos(id, 264.6288,77.5742,1001.0391);
SetPlayerInterior(id, 6);
ResetPlayerWeapons(id);
ResetPlayerMoney(id);
SetPlayerWantedLevel(id, 0);
TogglePlayerControllable(id, 1);
pInfo[id][Prisao] = Tempo;
SetTimerEx("TempoPrisao", 1000, true, "i", id);
return 1;
}
alguem pode me ajudar? se não achar erro no codico podem me falar uma outra forma de fazer esse sistema? uma base?


RE: CMD PRENDER - k2bi_YT - 08/04/2021

Dei uma reformulada e corrigi alguns problemas, basta testar.

Código PHP:
forward VerificarPreso(playerid);
forward TempoPrisao(playerid);

new 
TimerPreso[MAX_PLAYERS];

public 
OnPlayerConnect(playerid)
{
    
VerificarPreso(playerid);
}

public 
VerificarPreso(playerid)
{
    if(
pInfo[playerid][Prisao] > 0)
    {
        if(!
IsPlayerInRangeOfPoint(playerid10264.6288,77.5742,1001.0391))
        {
            
SetPlayerPos(playerid264.6288,77.5742,1001.0391);
            
SetPlayerInterior(playerid6);
            
SendClientMessage(playeridVermelho"Seu Tempo de Cadeia ainda não acabou!");
        }        
        
TimerPreso[playerid] = SetTimerEx("TempoPrisao"1000true"i"playerid);
    }
    return 
1;
}

public 
TempoPrisao(playerid)
{
    if(
pInfo[playerid][Prisao] > 0)
    {
        
pInfo[playerid][Prisao]--;
        if(!
IsPlayerInRangeOfPoint(playerid10264.6288,77.5742,1001.0391))
        {
            
SetPlayerPos(playerid264.6288,77.5742,1001.0391);
            
SetPlayerInterior(playerid6);
            
SendClientMessage(playeridVermelho"Seu Tempo de Cadeia ainda não acabou!");
        }    
    }
    else
    if(
pInfo[playerid][Prisao] <= 0)
    {
        
SpawnPlayer(playerid);
        
SendClientMessage(playeridVerdeC"Você está livre da cadeia! Alvara cantou.");
        
KillTimer(TimerPreso[playerid]);
    }
    return 
1;
}



CMD:prender(playeridparams[])
{
    if(!
IsPlayerInRangeOfPoint(playerid6.01526.199, -16785.900))  SendClientMessage(playeridVermelho"Você precisa estar na DP para usar o comando.");
    if(
pInfo[playerid][Cop] != 1) return SendClientMessage(playeridVermelho"Você não é um Policial.");
    new 
idTempoMotivo[30], str[128];
    if(
sscanf(params"uds[30]"idTempoMotivo)) return SendClientMessage(playeridVermelho"|ERRO|: Use /prender [id][Minutos][motivo]");
    if(!
IsPlayerConnected(id)) return SendClientMessage(playeridVermelho"Jogador jogador não conectado.");
    
format(strsizeof(str), "O Policial %s prendeu o vagabundo %s, motivo %s."pNome(playerid), pNome(id), Motivo);
    
SendClientMessageToAll(Azulstr);
    
SetPlayerPos(id264.6288,77.5742,1001.0391);
    
SetPlayerInterior(id6);
    
ResetPlayerWeapons(id);
    
ResetPlayerMoney(id);
    
SetPlayerWantedLevel(id0);
    
TogglePlayerControllable(id1);
    
pInfo[id][Prisao] = Tempo;
    
VerificarPreso(id);
    return 
1;




RE: CMD PRENDER - Smith - 18/04/2021

(08/04/2021 21:44)k2bi_YT Escreveu: Dei uma reformulada e corrigi alguns problemas, basta testar.

Código PHP:
forward VerificarPreso(playerid);
forward TempoPrisao(playerid);

new 
TimerPreso[MAX_PLAYERS];

public 
OnPlayerConnect(playerid)
{
    
VerificarPreso(playerid);
}

public 
VerificarPreso(playerid)
{
    if(
pInfo[playerid][Prisao] > 0)
    {
        if(!
IsPlayerInRangeOfPoint(playerid10264.6288,77.5742,1001.0391))
        {
            
SetPlayerPos(playerid264.6288,77.5742,1001.0391);
            
SetPlayerInterior(playerid6);
            
SendClientMessage(playeridVermelho"Seu Tempo de Cadeia ainda não acabou!");
        }        
        
TimerPreso[playerid] = SetTimerEx("TempoPrisao"1000true"i"playerid);
    }
    return 
1;
}

public 
TempoPrisao(playerid)
{
    if(
pInfo[playerid][Prisao] > 0)
    {
        
pInfo[playerid][Prisao]--;
        if(!
IsPlayerInRangeOfPoint(playerid10264.6288,77.5742,1001.0391))
        {
            
SetPlayerPos(playerid264.6288,77.5742,1001.0391);
            
SetPlayerInterior(playerid6);
            
SendClientMessage(playeridVermelho"Seu Tempo de Cadeia ainda não acabou!");
        }    
    }
    else
    if(
pInfo[playerid][Prisao] <= 0)
    {
        
SpawnPlayer(playerid);
        
SendClientMessage(playeridVerdeC"Você está livre da cadeia! Alvara cantou.");
        
KillTimer(TimerPreso[playerid]);
    }
    return 
1;
}



CMD:prender(playeridparams[])
{
    if(!
IsPlayerInRangeOfPoint(playerid6.01526.199, -16785.900))  SendClientMessage(playeridVermelho"Você precisa estar na DP para usar o comando.");
    if(
pInfo[playerid][Cop] != 1) return SendClientMessage(playeridVermelho"Você não é um Policial.");
    new 
idTempoMotivo[30], str[128];
    if(
sscanf(params"uds[30]"idTempoMotivo)) return SendClientMessage(playeridVermelho"|ERRO|: Use /prender [id][Minutos][motivo]");
    if(!
IsPlayerConnected(id)) return SendClientMessage(playeridVermelho"Jogador jogador não conectado.");
    
format(strsizeof(str), "O Policial %s prendeu o vagabundo %s, motivo %s."pNome(playerid), pNome(id), Motivo);
    
SendClientMessageToAll(Azulstr);
    
SetPlayerPos(id264.6288,77.5742,1001.0391);
    
SetPlayerInterior(id6);
    
ResetPlayerWeapons(id);
    
ResetPlayerMoney(id);
    
SetPlayerWantedLevel(id0);
    
TogglePlayerControllable(id1);
    
pInfo[id][Prisao] = Tempo;
    
VerificarPreso(id);
    return 
1;

ate que funciono mais quando player reconecta ele nao volta pra prisao