Portal SAMP
[Ajuda] Anti-jogo não funciona ao relogar - 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] Anti-jogo não funciona ao relogar (/showthread.php?tid=4378)



Anti-jogo não funciona ao relogar - fear - 04/01/2024

Boa noite. estou com o seguinte problema.. o player esta saindo rendido, algemado ou em perseguição porém.. o anti-jogo não esta aplicando a punição da cadeia ao relogar depois que o mesmo da /q em ação.. percebi que dentro do .txt no scriptfiles dos presos ele da como PRESO: 0 se eu coloco PRESO: 1 ele aplica a punição porém ele fica na tela e não da o tempo certo fica flutuando o player.. devo colocar isso em onplayerconnect? pois esta em onplayerdisconnect.

Código PHP:
    if(PlayerInfo[playerid][Rendido] == 1)
    {
        
SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor Rendido!",pName[playerid],playerid);

        
PlayerInfo[playerid][preso]=true;
        
ResetPlayerWeapons(playerid);

        
DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
        
DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
        
DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
        
DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
        
DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
        
DOF2_SaveFile();
    }
    switch(
PlayerInfo[playerid][pers])
    {
        case 
1,2:
        {
            
SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor em Perseguicao!",pName[playerid],playerid);

            
PlayerInfo[playerid][preso]=true;
            
ResetPlayerWeapons(playerid);

            
DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
            
DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
            
DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
            
DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
            
DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
             
DOF2_SaveFile();
        }
    }
    if(
PlayerInfo[playerid][Algemado] == 1)
    {
        
SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor Algemado!",pName[playerid],playerid);

        
PlayerInfo[playerid][preso]=true;

        
DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
        
DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
        
DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
        
DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
        
DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
        
DOF2_SaveFile();
    } 



RE: Anti-jogo não funciona ao relogar - xbruno1000x - 05/01/2024

Código:
DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);

Tem alguma coisa de errada com esse salvamento, pois ele seta um valor de 1800(30 vezes 60) na variável "Preso". Porém, apesar disso, você diz estar sendo inserido o valor 0.
Use o printf para fazer um debug dos valores que estão sendo salvos e verificar se estão entrando corretamente.


RE: Anti-jogo não funciona ao relogar - fear - 13/01/2024

(05/01/2024 02:16)xbruno1000x Escreveu:
Código:
DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);

Tem alguma coisa de errada com esse salvamento, pois ele seta um valor de 1800(30 vezes 60) na variável "Preso". Porém, apesar disso, você diz estar sendo inserido o valor 0.
Use o printf para fazer um debug dos valores que estão sendo salvos e verificar se estão entrando corretamente.


Boa tarde. poderia me ajudar com esse printf.. eu não sei muito aplicar debug


RE: Anti-jogo não funciona ao relogar - xbruno1000x - 13/01/2024

Tente assim:
Código:
    if(PlayerInfo[playerid][Rendido] == 1)
    {
        SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor Rendido!",pName[playerid],playerid);

        PlayerInfo[playerid][preso]=true;
        ResetPlayerWeapons(playerid);

        DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
        DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
        DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
        DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
        DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
        Printf("'Preso' = %d, 'Temp' = %d");
        DOF2_SaveFile();
    }
    switch(PlayerInfo[playerid][pers])
    {
        case 1,2:
        {
            SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor em Perseguicao!",pName[playerid],playerid);

            PlayerInfo[playerid][preso]=true;
            ResetPlayerWeapons(playerid);

            DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
            DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
            DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
            DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
            DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
            Printf("'Preso' = %d, 'Temp' = %d");
            DOF2_SaveFile();
        }
    }
    if(PlayerInfo[playerid][Algemado] == 1)
    {
        SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor Algemado!",pName[playerid],playerid);

        PlayerInfo[playerid][preso]=true;

        DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
        DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
        DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
        DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
        DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
        Printf("'Preso' = %d, 'Temp' = %d");
        DOF2_SaveFile();
    }

Quando você realizar uma prisão, serão mostrados no log os resultados. Faça os testes in-game e veja os resultados.


RE: Anti-jogo não funciona ao relogar - fear - 13/01/2024

(13/01/2024 19:54)xbruno1000x Escreveu: Tente assim:
Código:
    if(PlayerInfo[playerid][Rendido] == 1)
    {
        SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor Rendido!",pName[playerid],playerid);

        PlayerInfo[playerid][preso]=true;
        ResetPlayerWeapons(playerid);

        DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
        DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
        DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
        DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
        DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
        Printf("'Preso' = %d, 'Temp' = %d");
        DOF2_SaveFile();
    }
    switch(PlayerInfo[playerid][pers])
    {
        case 1,2:
        {
            SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor em Perseguicao!",pName[playerid],playerid);

            PlayerInfo[playerid][preso]=true;
            ResetPlayerWeapons(playerid);

            DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
            DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
            DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
            DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
            DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
            Printf("'Preso' = %d, 'Temp' = %d");
            DOF2_SaveFile();
        }
    }
    if(PlayerInfo[playerid][Algemado] == 1)
    {
        SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor Algemado!",pName[playerid],playerid);

        PlayerInfo[playerid][preso]=true;

        DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
        DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
        DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
        DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
        DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
        Printf("'Preso' = %d, 'Temp' = %d");
        DOF2_SaveFile();
    }

Quando você realizar uma prisão, serão mostrados no log os resultados. Faça os testes in-game e veja os resultados.

boa noite.

segue o resultado:

Código PHP:
[21:02:26'Preso' = , 'Temp' RENDIDO
[21:02:26'Preso' = , 'Temp' EM PERSEGUIÇÃO
[21:05:43'Preso' = , 'Temp' ALGEMADO 
como faço pra resolver?


RE: Anti-jogo não funciona ao relogar - xbruno1000x - 14/01/2024

Eu esqueci de colocar as variáveis, por isso saiu vazio.

Código:
Printf("'Preso' = %d, 'Temp' = %d", DOF2_GetInt(GetPlayerPresos(playerid),"Preso"), DOF2_GetInt(GetPlayerPresos(playerid),"Temp"));

Substitua e tente novamente


RE: Anti-jogo não funciona ao relogar - fear - 14/01/2024

(14/01/2024 14:47)xbruno1000x Escreveu: Eu esqueci de colocar as variáveis, por isso saiu vazio.

Código:
Printf("'Preso' = %d, 'Temp' = %d", DOF2_GetInt(GetPlayerPresos(playerid),"Preso"), DOF2_GetInt(GetPlayerPresos(playerid),"Temp"));

Substitua e tente novamente

Resultado:
Código PHP:
[18:06:19'Preso' 1800'Temp' 30 
[18:06:19'Preso' 1800'Temp' 30
[18:10:12'Preso' 1800'Temp' 30 



RE: Anti-jogo não funciona ao relogar - xbruno1000x - 15/01/2024

(14/01/2024 18:11)fear Escreveu:
(14/01/2024 14:47)xbruno1000x Escreveu: Eu esqueci de colocar as variáveis, por isso saiu vazio.

Código:
Printf("'Preso' = %d, 'Temp' = %d", DOF2_GetInt(GetPlayerPresos(playerid),"Preso"), DOF2_GetInt(GetPlayerPresos(playerid),"Temp"));

Substitua e tente novamente

Resultado:
Código PHP:
[18:06:19'Preso' 1800'Temp' 30 
[18:06:19'Preso' 1800'Temp' 30
[18:10:12'Preso' 1800'Temp' 30 

Os valores estão sendo salvos certinhos, o que indica que o problema não está aí. Você diz que quando o player desconecta o valor de "Preso" fica igual a 0, mas nessa public ao menos está salvando os 1800. Tem alguma coisa relacionada a esse sistema na OnPlayerDisconnect?


RE: Anti-jogo não funciona ao relogar - fear - 15/01/2024

(13/01/2024 19:54)xbruno1000x Escreveu: Tente assim:
Código:
    if(PlayerInfo[playerid][Rendido] == 1)
    {
        SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor Rendido!",pName[playerid],playerid);

        PlayerInfo[playerid][preso]=true;
        ResetPlayerWeapons(playerid);

        DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
        DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
        DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
        DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
        DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
        Printf("'Preso' = %d, 'Temp' = %d");
        DOF2_SaveFile();
    }
    switch(PlayerInfo[playerid][pers])
    {
        case 1,2:
        {
            SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor em Perseguicao!",pName[playerid],playerid);

            PlayerInfo[playerid][preso]=true;
            ResetPlayerWeapons(playerid);

            DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
            DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
            DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
            DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
            DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
            Printf("'Preso' = %d, 'Temp' = %d");
            DOF2_SaveFile();
        }
    }
    if(PlayerInfo[playerid][Algemado] == 1)
    {
        SendClientMessageToAll(Vermelho,"| ZONE - Admin | %s[%d] foi punido automaticamente por sair do servidor Algemado!",pName[playerid],playerid);

        PlayerInfo[playerid][preso]=true;

        DOF2_SetString(GetPlayerPresos(playerid),"Motivo","Anti-Jogo.");
        DOF2_SetString(GetPlayerPresos(playerid),"Resp","Punicao Automatica.");
        DOF2_SetBool(GetPlayerPresos(playerid),"Abuser",PlayerInfo[playerid][preso]);
        DOF2_SetInt(GetPlayerPresos(playerid),"Preso",30*60);
        DOF2_SetInt(GetPlayerPresos(playerid),"Temp",30);
        Printf("'Preso' = %d, 'Temp' = %d");
        DOF2_SaveFile();
    }

Quando você realizar uma prisão, serão mostrados no log os resultados. Faça os testes in-game e veja os resultados.
Isso aqui fica no onplayerdisconnect


RE: Anti-jogo não funciona ao relogar - xbruno1000x - 15/01/2024

(15/01/2024 14:04)fear Escreveu: Isso aqui fica no onplayerdisconnect

E como essas informações estão sendo carregadas? Como está saindo no arquivo de salvamento?