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



crashdetect - welmateus - 17/04/2024

Código:
[15:50:22] [debug] #1 00316c8c in public Tempo () in GRP.amx
[15:50:23] [debug] Run time error 4: "Array index out of bounds"
[15:50:23] [debug]  Attempted to read/write array element at negative index -1
esta aparecendo essas mensagens no log
segue o codigo
Código:
public Tempo()
{
    new Dia,Mes,Ano;
    getdate(Dia,Mes,Ano);
    new HoraRoYal, MinutoRoYal, SegundoRoYal;
    gettime(HoraRoYal, MinutoRoYal, SegundoRoYal);
    switch(HoraRoYal)
    {
        case 0: SetWorldTime(0);
         case 1: SetWorldTime(0);
          case 2: SetWorldTime(1);
           case 3: SetWorldTime(2);
        case 4: SetWorldTime(4);
        case 5:
        {
            if(MinutoRoYal == 0 && SegundoRoYal == 0)
            {
                SetWorldTime(5);
                SendClientMessageToAll(COR_AMARELO, "| GMX | Atencao o Servidor ira reiniciar automaticamente em 30 segundos.");
                SetTimer("ReiniciarServidor", 30000, false);

                printf("[gmx] primeiro aviso de restart dado com sucesso [%d:%d:%d].", HoraRoYal, MinutoRoYal, SegundoRoYal);
            }
            else
            {
                SetWorldTime(5);
            }
        }
        case 6: SetWorldTime(6);
        case 7: SetWorldTime(7);
        case 8: SetWorldTime(8);
        case 9: SetWorldTime(9);
        case 10: SetWorldTime(10);
        case 11: SetWorldTime(11);
        case 12: SetWorldTime(12);
        case 13: SetWorldTime(13);
        case 14: SetWorldTime(14);
        case 15: SetWorldTime(15);
        case 16: SetWorldTime(16);
        case 17: SetWorldTime(20);
        case 18: SetWorldTime(21);
        case 19: SetWorldTime(22);
        case 20: SetWorldTime(22);
        case 21: SetWorldTime(23);
        case 22: SetWorldTime(23);
        case 23: SetWorldTime(23);
    }
    foreach(Player, i)
    {
        new str[100];
        format(str, sizeof(str), "%02d/%02d/%d - %02d:%02d",Ano,Mes,Dia, HoraRoYal, MinutoRoYal);
        TextDrawSetString(SpaceTD[2], str);
        TextDrawShowForPlayer(i,SpaceTD[2]);
        MostrarTDPrincipal(i);
        EsconderTDPrincipal(i);

        if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
        {
            if(GetPlayerSpeed(i) > 300)
            {
                if(PlayerInfo[i][Admin] == 0)
                {
                       format(gstring,sizeof(gstring), "AntCheat: O Player %s(%d) Foi Kickado por Suspeita de Speed Hack", PlayerName(i), i);
                      SendClientMessageToAll(COLOR_LIGHTRED, gstring);
                    ShowPlayerDialog(i,5000,DIALOG_STYLE_MSGBOX,"{FFFFFF}Kick {8B008B}Space RolePlay","{8B008B}> {FFFFFF}Voce foi Kickado por Suspeita de Speed Hack\n{8B008B}> {FFFFFF}Prox.Vez Sera Banido.","Sair","");
                       SetTimerEx("KickPlayer", 100, false, "i", i);
                }
                return 1;
            }
        }
        else
        {
            if(GetPlayerState(i) == PLAYER_STATE_ONFOOT)
            {
                if(GetPlayerSpeed(i) > 100)
                  {
                    if(PlayerInfo[i][Admin] == 0)
                    {
                           format(gstring,sizeof(gstring), "AntCheat: O Player %s(%d) Foi Kickado por Suspeita de Fly Hack ou Surf", PlayerName(i), i);
                           SendClientMessageToAll(COLOR_LIGHTRED, gstring);
                           ShowPlayerDialog(i,5000,DIALOG_STYLE_MSGBOX,"{FFFFFF}Kick {8B008B}Space RolePlay","{8B008B}> {FFFFFF}Voce foi Kickado por Suspeita de Fly Hack ou Surf\n{8B008B}> {FFFFFF}Voce nao pode Praticar Surf em Nosso Servidor, Prox.Vez Sera Banido.","Sair","");
                           SetTimerEx("KickPlayer", 100, false, "i", i);
                    }
                    return 1;
                }
            }
        }
        if(IsPlayerInAnyVehicle(i))
        {
               new vid = GetPlayerVehicleID(i);
             if(GetVehicleModel(vid) != 481 && GetVehicleModel(vid) != 509 && GetVehicleModel(vid) != 510)
              {
                if (GetPlayerVehicleSeat(i) == 0)
                {
                    new Float:health;
                    GetVehicleHealth(GetPlayerVehicleID(i), health);
                    if(health <= 300 && health > 0)
                    {
                        SetVehicleHealth(GetPlayerVehicleID(i), 300);
                        motor[vid] = false;
                        new engine, farol, alarme, portas, capo, portamalas, objetivo;
                        GetVehicleParamsEx(vid, engine, farol, alarme, portas, capo, portamalas, objetivo);
                        SetVehicleParamsEx(vid, VEHICLE_PARAMS_OFF, farol, alarme, portas, capo, portamalas, objetivo);
                        GameTextForPlayer(i, "~w~Veiculo ~r~Quebrado", 1000, 4);
                    }
                }
            }
        }
        if(GetPlayerCash(i) != GetPlayerMoney(i))
        {
            ResetMoneyBar(i);//Resets the money in the original moneybar, Do not remove!
            UpdateMoneyBar(i,GetPlayerCash(i));//Sets the money in the moneybar to the serverside cash, Do not remove!
        }
        if(!IsPlayerInAnyVehicle(i))
        {
            if(GetPlayerSpeed(i) > 250 && GetPlayerSpecialAction(i) != SPECIAL_ACTION_USEJETPACK)
            {
                if(PlayerInfo[i][Admin] == 0)
                {
                    foreach(Player, j)
                    {
                        if(PlayerInfo[j][Admin] > 0)
                        {
                            format(gstring, sizeof(gstring),  "AntCheat: O Jogador %s[%d] esta com suspeita de Speed Hack [%dKm/h] fique de olho nele.", PlayerName(i), i, GetPlayerSpeed(i));
                            SendClientMessage(j, COLOR_LIGHTRED, gstring);
                        }
                    }
                }
            }
        }
        if(dmsafe[i] == 3)
        {
            dmsafe[i] = 0;
            format(gstring, sizeof(gstring), "Kick Space RP: O Jogador %s foi kickado automaticamente, Motivo: Matando em Area-Safe.", PlayerName(i));
            SendClientMessageToAll(COLOR_LIGHTRED, gstring);
            Kick(i);
        }
        if(EstaUsandoCelular[i] == true)
        {
            new ano,mes,dia;
                getdate(ano, mes, dia);
            gettime(HoraRoYal, MinutoRoYal, SegundoRoYal);
            format(gstring, sizeof(gstring), "%02d:%02d", HoraRoYal, MinutoRoYal);
            TextDrawSetString(TelaInicialCelular[14], gstring);
            format(gstring, sizeof(gstring), "%02d/%02d/%04d", dia,mes,ano);
            TextDrawSetString(TelaInicialCelular[20], gstring);
        }
        if(PlayerInfo[i][Vip] >= 1)
        {
              if(PlayerInfo[i][TempoVip] >= 1)
            {
                PlayerInfo[i][TempoVip] = PlayerInfo[i][TempoVip] - 1;
            }
            if(PlayerInfo[i][TempoVip] <= 0)
            {
                PlayerInfo[i][TempoVip] = 0;
                PlayerInfo[i][Vip] = 0;
                SendClientMessage(i, -1,"{FFDC33}=-=-=-=-=-=-=-= {FFFFFF}Info Vip{FFDC33} =-=-=-=-=-=-=-=");
                SendClientMessage(i, -1,"{FFDC33}Info. {FFFFFF}Seu Vip Expirou, Renove-o com Um Staff Em Nosso Discord");
                SendClientMessage(i, -1,"{FFDC33}Info. {FFFFFF}Caso Nao Queira Renovar nao Precisa Entrar em Contato Com um Admin.");
                SendClientMessage(i, -1,"{FFDC33}=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
                GameTextForPlayer(i, "~w~Seu Vip ~r~Expirou!!", 10000, 1);
            }
        }
    }
    return 1;
}



RE: crashdetect - xbruno1000x - 17/04/2024

Existe uma infinidade de arrays aí no seu código, pode ser qualquer um... Vai ter que apelar para o printf e conferir as entradas e saídas.


RE: crashdetect - pushline - 18/04/2024

Crashdetect diz a linha do crash se você compilar com a flag -d3 nos argumentos do compilador.