SA-MP Forums Archive
[AYUDA]crash del servidor - 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: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [AYUDA]crash del servidor (/showthread.php?tid=302654)



[AYUDA]crash del servidor - Fluid016 - 10.12.2011

Hola Forum samp, Bueno mi problema es que mi sv crashea despuйs de 20 mil lineas que hise (algunas del ladmin) y cuando instale el crashdetect en el log me puso esto
[21:39:45]: Script[filterscripts\LuxAdmin.amx]: During execution of PingKick():
[21:39:45]: Script[filterscripts\LuxAdmin.amx]: Run time error 4: "Array index out of bounds"
[21:39:45]: Additional information:
[21:39:45]: Array max index is 3 but accessing an element at 4
[21:39:45]: Call stack (most recent call first):
[21:39:45]: public PingKick()
el public pingkick es del ladmin pero no se como arreglarlo espero que me ayuden

Gracias de ante mano.

EDIT: Me habнa olvidado como pregunte en pawno scriting y nadie respondiу pensй de preguntar acб


Respuesta: [AYUDA]crash del servidor - TheChaoz - 10.12.2011

Es un overflow del buffer. Darnos el codigo del "PingKick()" para que podamos decirte donde esta el problema.


Respuesta: [AYUDA]crash del servidor - Fluid016 - 10.12.2011

Acб esta el codigo

pawn Код:
public PingKick()
{
    if(ServerInfo[MaxPing] != 0)
    {
        PingPos++; if(PingPos > PING_MAX_EXCEEDS) PingPos = 0;
       
        for(new i=0; i<MAX_PLAYERS; i++)
        {
            AccInfo[i][pPing][PingPos] = GetPlayerPing(i);
           
            if(GetPlayerPing(i) > ServerInfo[MaxPing])
            {
                if(AccInfo[i][PingCount] == 0) AccInfo[i][PingTime] = TimeStamp();

                AccInfo[i][PingCount]++;
                if(TimeStamp() - AccInfo[i][PingTime] > PING_TIMELIMIT)
                {
                    AccInfo[i][PingTime] = TimeStamp();
                    AccInfo[i][PingCount] = 1;
                }
                else if(AccInfo[i][PingCount] >= PING_MAX_EXCEEDS)
                {
                    new Sum, Average, x, string[128];
                    while (x < PING_MAX_EXCEEDS) {
                        Sum += AccInfo[i][pPing][x];
                        x++;
                    }
                    Average = (Sum / PING_MAX_EXCEEDS);
                    format(string,sizeof(string),"**Jugador %s (ID:%d) ha sido Automaticamente Kickeado. | Razon: Ping Alto - %d (Promedio - %d | Max Permitido - %d)", PlayerName2(i),i, GetPlayerPing(i), Average, ServerInfo[MaxPing]);
                    SendClientMessageToAll(COLOR_GRIS,string);
                    SaveIn("KickLog",string);
                    Kick(i);
                }
            }
            else if(GetPlayerPing(i) < 1 && ServerInfo[AntiBot] == 1)
            {
                AccInfo[i][BotPing]++;
                if(AccInfo[i][BotPing] >= 3) BotCheck(i);
            }
            else
            {
                AccInfo[i][BotPing] = 0;
            }
        }
    }
}