Portal SAMP
[Ajuda] comando buga o servidor todo - 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] comando buga o servidor todo (/showthread.php?tid=4966)



comando buga o servidor todo - fear - 31/01/2025

boa tarde.

Estou com um problema que quando o staff da /espiar o servidor para de funciona tudo.. parece que tu desligo os plugins e o gm.. ele nao da erro algum no chat mas tb nao funciona comandos e mais nada..

comando espiar e esparioff

oque ta de errado?

Código PHP:
CMD:espiar(playeridparams[])
{
    new 
id,string[128];
    if(
PlayerInfo[playerid][Admin] < 1)
        return 
SendClientMessage(playerid,Vermelho,"[ ERRO ] Voce nao tem permissao!");

    if(
sscanf(params"u"id)) 
        return 
SendClientMessage(playeridVermelho"[ ERRO ] Digite: /Espiar [id ou nick]");

    if(
PlayerInfo[id][Admin] > PlayerInfo[playerid][Admin])
        return 
SendClientMessage(playeridVermelho"[ ERRO ] Voce nao pode aplicar esse tipo de comando em seus Superiores!");

    if(!
IsPlayerConnected(id))
        return 
SendClientMessage(playerid,Vermelho,"[ ERRO ] Player nao Conectado!");
    
    new 
Status GetPlayerState(id);

    
GetPlayerPos(playeridPlayerInfo[playerid][posEspiar][0], PlayerInfo[playerid][posEspiar][1], PlayerInfo[playerid][posEspiar][2]); 

    if(
Status == PLAYER_STATE_DRIVER || Status == PLAYER_STATE_PASSENGER)
    {
        
SetPlayerInterior(playerid,GetPlayerInterior(id));
        
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(id));
        
TogglePlayerSpectating(playerid1);
        
PlayerSpectateVehicle(playeridGetPlayerVehicleID(id));

        
gSpectateID[playerid] = id;
        
gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE;

        
format(string,sizeof(string),"Player: ~r~%s[%d]",pName[id],id);
        
PlayerTextDrawSetString(playeridESPIANDO[1][playerid],string);

        
format(string,sizeof(string),"Mundo: ~r~%s",modosq(id));
        
PlayerTextDrawSetString(playeridESPIANDO[2][playerid],string);
        
        for(new 
0sizeof(ESPIANDO); i++)PlayerTextDrawShow(playerid,ESPIANDO[i][playerid]);
        
SendClientMessage(playerid,COR_ZONE,"| ZP - Admin | Voce esta espiando!");
    } else {
        
SetPlayerInterior(playerid,GetPlayerInterior(id));
        
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(id));
        
TogglePlayerSpectating(playerid1);
        
PlayerSpectatePlayer(playeridid);

        
gSpectateID[playerid] = id;
        
gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;

        
format(string,sizeof(string),"Player: ~r~%s[%d]",pName[id],id);
        
PlayerTextDrawSetString(playeridESPIANDO[1][playerid],string);

        
format(string,sizeof(string),"Mundo: ~r~%s",modosq(id));
        
PlayerTextDrawSetString(playeridESPIANDO[2][playerid],string);
        
        for(new 
0sizeof(ESPIANDO); i++)PlayerTextDrawShow(playerid,ESPIANDO[i][playerid]);
        
SendClientMessage(playerid,COR_ZONE,"| ZP - Admin | Voce esta espiando!");
    }

    return 
1;


Código PHP:
CMD:pr(playeridparams[])
{
     if(
PlayerInfo[playerid][Admin] < 1)
        return 
SendClientMessage(playerid,Vermelho,"[ ERRO ] Voce nao tem permissao!");

    if(
gSpectateID[playerid] == -1) {
        return 
SendClientMessage(playeridVermelho"[ ERRO ] Voce nao esta espiando nenhum player");
    }

    
TogglePlayerSpectating(playerid0);
    
SetPlayerSkin(playerid,PlayerInfo[playerid][skin]);
    
SetPlayerInterior(playerid,0);
    
gSpectateID[playerid] = INVALID_PLAYER_ID;
    
gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;

    for(new 
0sizeof(ESPIANDO); i++) PlayerTextDrawHide(playerid,ESPIANDO[i][playerid]);
    
SetPlayerPos(playeridPlayerInfo[playerid][posEspiar][0], PlayerInfo[playerid][posEspiar][1], PlayerInfo[playerid][posEspiar][2]);
    
SetPlayerFacingAngle(playerid,275.7067);
    return 
1;




RE: comando buga o servidor todo - Cifra Modder - 31/01/2025

(31/01/2025 12:14)fear Escreveu: boa tarde.

Estou com um problema que quando o staff da /espiar o servidor para de funciona tudo.. parece que tu desligo os plugins e o gm.. ele nao da erro algum no chat mas tb nao funciona comandos e mais nada..

comando espiar e esparioff

oque ta de errado?

Código PHP:
CMD:espiar(playeridparams[])
{
    new 
id,string[128];
    if(PlayerInfo[playerid][Admin] < 1)
        return 
SendClientMessage(playerid,Vermelho,"[ ERRO ] Voce nao tem permissao!");

    if(
sscanf(params"u"id)) 
        return 
SendClientMessage(playeridVermelho"[ ERRO ] Digite: /Espiar [id ou nick]");

    if(PlayerInfo[id][Admin] > PlayerInfo[playerid][Admin])
        return 
SendClientMessage(playeridVermelho"[ ERRO ] Voce nao pode aplicar esse tipo de comando em seus Superiores!");

    if(!
IsPlayerConnected(id))
        return 
SendClientMessage(playerid,Vermelho,"[ ERRO ] Player nao Conectado!");
    
    new 
Status GetPlayerState(id);

    GetPlayerPos(playeridPlayerInfo[playerid][posEspiar][0], PlayerInfo[playerid][posEspiar][1], PlayerInfo[playerid][posEspiar][2]); 

    if(
Status == PLAYER_STATE_DRIVER || Status == PLAYER_STATE_PASSENGER)
    {
        
SetPlayerInterior(playerid,GetPlayerInterior(id));
        
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(id));
        
TogglePlayerSpectating(playerid1);
        
PlayerSpectateVehicle(playeridGetPlayerVehicleID(id));

        
gSpectateID[playerid] = id;
        
gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE;

        
format(string,sizeof(string),"Player: ~r~%s[%d]",pName[id],id);
        
PlayerTextDrawSetString(playeridESPIANDO[1][playerid],string);

        
format(string,sizeof(string),"Mundo: ~r~%s",modosq(id));
        
PlayerTextDrawSetString(playeridESPIANDO[2][playerid],string);
        
        for(new 
0sizeof(ESPIANDO); i++)PlayerTextDrawShow(playerid,ESPIANDO[i][playerid]);
        
SendClientMessage(playerid,COR_ZONE,"| ZP - Admin | Voce esta espiando!");
    } else {
        
SetPlayerInterior(playerid,GetPlayerInterior(id));
        
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(id));
        
TogglePlayerSpectating(playerid1);
        
PlayerSpectatePlayer(playeridid);

        
gSpectateID[playerid] = id;
        
gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;

        
format(string,sizeof(string),"Player: ~r~%s[%d]",pName[id],id);
        
PlayerTextDrawSetString(playeridESPIANDO[1][playerid],string);

        
format(string,sizeof(string),"Mundo: ~r~%s",modosq(id));
        
PlayerTextDrawSetString(playeridESPIANDO[2][playerid],string);
        
        for(new 
0sizeof(ESPIANDO); i++)PlayerTextDrawShow(playerid,ESPIANDO[i][playerid]);
        
SendClientMessage(playerid,COR_ZONE,"| ZP - Admin | Voce esta espiando!");
    }

    return 1;


Código PHP:
CMD:pr(playeridparams[])
{
     if(
PlayerInfo[playerid][Admin] < 1)
        return 
SendClientMessage(playerid,Vermelho,"[ ERRO ] Voce nao tem permissao!");

    if(
gSpectateID[playerid] == -1) {
        return 
SendClientMessage(playeridVermelho"[ ERRO ] Voce nao esta espiando nenhum player");
    }

    
TogglePlayerSpectating(playerid0);
    
SetPlayerSkin(playerid,PlayerInfo[playerid][skin]);
    
SetPlayerInterior(playerid,0);
    
gSpectateID[playerid] = INVALID_PLAYER_ID;
    
gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;

    for(new 0sizeof(ESPIANDO); i++) PlayerTextDrawHide(playerid,ESPIANDO[i][playerid]);
    
SetPlayerPos(playeridPlayerInfo[playerid][posEspiar][0], PlayerInfo[playerid][posEspiar][1], PlayerInfo[playerid][posEspiar][2]);
    
SetPlayerFacingAngle(playerid,275.7067);
    return 
1;


Os 2 comandos está bem estruturados. Você já verificou se o log retorna algo?


RE: comando buga o servidor todo - fear - 31/01/2025

(31/01/2025 13:46)Cifra Modder Escreveu:
(31/01/2025 12:14)fear Escreveu: boa tarde.

Estou com um problema que quando o staff da /espiar o servidor para de funciona tudo.. parece que tu desligo os plugins e o gm.. ele nao da erro algum no chat mas tb nao funciona comandos e mais nada..

comando espiar e esparioff

oque ta de errado?

Código PHP:
CMD:espiar(playeridparams[])
{
    new 
id,string[128];
    if(PlayerInfo[playerid][Admin] < 1)
        return 
SendClientMessage(playerid,Vermelho,"[ ERRO ] Voce nao tem permissao!");

    if(
sscanf(params"u"id)) 
        return 
SendClientMessage(playeridVermelho"[ ERRO ] Digite: /Espiar [id ou nick]");

    if(PlayerInfo[id][Admin] > PlayerInfo[playerid][Admin])
        return 
SendClientMessage(playeridVermelho"[ ERRO ] Voce nao pode aplicar esse tipo de comando em seus Superiores!");

    if(!
IsPlayerConnected(id))
        return 
SendClientMessage(playerid,Vermelho,"[ ERRO ] Player nao Conectado!");
    
    new 
Status GetPlayerState(id);

    GetPlayerPos(playeridPlayerInfo[playerid][posEspiar][0], PlayerInfo[playerid][posEspiar][1], PlayerInfo[playerid][posEspiar][2]); 

    if(
Status == PLAYER_STATE_DRIVER || Status == PLAYER_STATE_PASSENGER)
    {
        
SetPlayerInterior(playerid,GetPlayerInterior(id));
        
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(id));
        
TogglePlayerSpectating(playerid1);
        
PlayerSpectateVehicle(playeridGetPlayerVehicleID(id));

        
gSpectateID[playerid] = id;
        
gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE;

        
format(string,sizeof(string),"Player: ~r~%s[%d]",pName[id],id);
        
PlayerTextDrawSetString(playeridESPIANDO[1][playerid],string);

        
format(string,sizeof(string),"Mundo: ~r~%s",modosq(id));
        
PlayerTextDrawSetString(playeridESPIANDO[2][playerid],string);
        
        for(new 
0sizeof(ESPIANDO); i++)PlayerTextDrawShow(playerid,ESPIANDO[i][playerid]);
        
SendClientMessage(playerid,COR_ZONE,"| ZP - Admin | Voce esta espiando!");
    } else {
        
SetPlayerInterior(playerid,GetPlayerInterior(id));
        
SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(id));
        
TogglePlayerSpectating(playerid1);
        
PlayerSpectatePlayer(playeridid);

        
gSpectateID[playerid] = id;
        
gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;

        
format(string,sizeof(string),"Player: ~r~%s[%d]",pName[id],id);
        
PlayerTextDrawSetString(playeridESPIANDO[1][playerid],string);

        
format(string,sizeof(string),"Mundo: ~r~%s",modosq(id));
        
PlayerTextDrawSetString(playeridESPIANDO[2][playerid],string);
        
        for(new 
0sizeof(ESPIANDO); i++)PlayerTextDrawShow(playerid,ESPIANDO[i][playerid]);
        
SendClientMessage(playerid,COR_ZONE,"| ZP - Admin | Voce esta espiando!");
    }

    return 1;


Código PHP:
CMD:pr(playeridparams[])
{
     if(
PlayerInfo[playerid][Admin] < 1)
        return 
SendClientMessage(playerid,Vermelho,"[ ERRO ] Voce nao tem permissao!");

    if(
gSpectateID[playerid] == -1) {
        return 
SendClientMessage(playeridVermelho"[ ERRO ] Voce nao esta espiando nenhum player");
    }

    
TogglePlayerSpectating(playerid0);
    
SetPlayerSkin(playerid,PlayerInfo[playerid][skin]);
    
SetPlayerInterior(playerid,0);
    
gSpectateID[playerid] = INVALID_PLAYER_ID;
    
gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;

    for(new 0sizeof(ESPIANDO); i++) PlayerTextDrawHide(playerid,ESPIANDO[i][playerid]);
    
SetPlayerPos(playeridPlayerInfo[playerid][posEspiar][0], PlayerInfo[playerid][posEspiar][1], PlayerInfo[playerid][posEspiar][2]);
    
SetPlayerFacingAngle(playerid,275.7067);
    return 
1;


Os 2 comandos está bem estruturados. Você já verificou se o log retorna algo?

Retorna isso e para de funciona tudo.

Array index out of bounds


RE: comando buga o servidor todo - BitSain - 31/01/2025

Use o crash detect e compile com a flag -d3 para debug profundo (irá retornar a linha no código).
Execute o servidor novamente e veja onde o erro ("Índice da array fora dos limites", você quis acessar um índice que é maior do que o definido) ocorre.


RE: comando buga o servidor todo - fear - 31/01/2025

(31/01/2025 14:47)BitSain Escreveu: Use o crash detect e compile com a flag -d3 para debug profundo (irá retornar a linha no código).
Execute o servidor novamente e veja onde o erro ("Índice da array fora dos limites", você quis acessar um índice que é maior do que o definido) ocorre.

Flag -d3 não sei isso mano.


RE: comando buga o servidor todo - BitSain - 31/01/2025

(31/01/2025 15:12)fear Escreveu:
(31/01/2025 14:47)BitSain Escreveu: Use o crash detect e compile com a flag -d3 para debug profundo (irá retornar a linha no código).
Execute o servidor novamente e veja onde o erro ("Índice da array fora dos limites", você quis acessar um índice que é maior do que o definido) ocorre.

Flag -d3 não sei isso mano.
Se você usa o programa pawn.exe:
Pasta pawno -> settings.ini -> params -> adicione: -d3

Se você usa o vscode, vá no arquivo tasks.json (na gm, na pasta ".vscode") e adicione em: "args": o -d3


RE: comando buga o servidor todo - LOS_SANTOS - 13/02/2025

(31/01/2025 19:31)BitSain Escreveu:
(31/01/2025 15:12)fear Escreveu:
(31/01/2025 14:47)BitSain Escreveu: Use o crash detect e compile com a flag -d3 para debug profundo (irá retornar a linha no código).
Execute o servidor novamente e veja onde o erro ("Índice da array fora dos limites", você quis acessar um índice que é maior do que o definido) ocorre.

Flag -d3 não sei isso mano.
Se você usa o programa pawn.exe:
Pasta pawno -> settings.ini -> params -> adicione: -d3

Se você usa o vscode, vá no arquivo tasks.json (na gm, na pasta ".vscode") e adicione em: "args": o -d3
Se eu entendi bem você está usando um comando para spiar o player né isso?! Porém quando vc usa o servidor desliga por algum motivo e isso?! Se for isso tentei usar esse código e altere o If(IsPlayerAdmin) para a variável do seu admin a do seu servidor , bem não sou nenhum expert no assunto mas se isso não te ajudou só ignora blz
Código:
//------------------------------------------------------------------------------
#define ADMIN_SPEC_TYPE_NONE 0
#define ADMIN_SPEC_TYPE_PLAYER 1
new gSpectateID[MAX_PLAYERS];
new gSpectateType[MAX_PLAYERS];
CMD:spec(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"» voce nao tem permissao de usar esse comando");
    new specplayerid;
    if (sscanf(params, "u", specplayerid))return SendClientMessage(playerid, -1, "» /spec[playerid]");
    if (!IsPlayerConnected(specplayerid))return SendClientMessage(playerid, -1, "» specplayer: esse jogador nao esta ativo.");
    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, specplayerid);
    SetPlayerInterior(playerid, GetPlayerInterior(specplayerid));
    gSpectateID[playerid] = specplayerid;
    gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;
    return 1;
}
CMD:specoff(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"» voce nao tem permissao de usar esse comando");
    TogglePlayerSpectating(playerid, 0);
    gSpectateID[playerid] = INVALID_PLAYER_ID;
    gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
    return 1;
}