Amx Backtrace
#1

Hello guys! I've a problem with the debug.

Quote:

[02:23:54] [debug] Run time error 4: "Array index out of bounds"
[02:23:54] [debug] Accessing element at index 999 past array upper bound 499
[02:23:54] [debug] AMX backtrace:
[02:23:54] [debug] #0 0000f008 in public OnObjectMoved (0x00000182) from gamemode.amx

This is the callback :/

pawn Код:
public OnObjectMoved(objectid)
{
    new i = Baller;
    if(ShootingBall == 2)
    {
        BallDown2(i);
        return 1;
    }
    else if(ShootingBall == 3)
    {
        BallDown3(i);
        return 1;
    }
    else if(ShootingBall == 4)
    {
        BallDown4(i);
        return 1;
    }
    else if(ShootingBall == 5)
    {
        BallDown5(i);
        return 1;
    }
    else if(ShootingBall == 6)
    {
        ApplyAnimation(i,"BSKTBALL","BBALL_walk",4.1,1,1,1,1,1);
        HavingBall[i] = 1;
        Anim[i] = 0;
    }
    if(BallBounce == 1)
    {
        new Float:x, Float:y, Float:z;
        GetObjectPos(BasketBall, x, y, z);
        MoveObject(BasketBall, x, y, z+1.2, 4);
        BallBounce = 2;
    }
    else if(BallBounce == 2)
    {
        new Float:x, Float:y, Float:z;
        GetObjectPos(BasketBall, x, y, z);
        MoveObject(BasketBall, x, y, z-1.2, 4);
        BallBounce = 3;
    }
    else if(BallBounce == 3)
    {
        new Float:x, Float:y, Float:z;
        GetObjectPos(BasketBall, x, y, z);
        MoveObject(BasketBall, x, y, z+0.8, 3);
        BallBounce = 4;
    }
    else if(BallBounce == 4)
    {
        new Float:x, Float:y, Float:z;
        GetObjectPos(BasketBall, x, y, z);
        MoveObject(BasketBall, x, y, z-0.8, 3);
        BallBounce = 5;
    }
    else if(BallBounce == 5)
    {
        new Float:x, Float:y, Float:z;
        GetObjectPos(BasketBall, x, y, z);
        MoveObject(BasketBall, x, y, z+0.5, 2);
        BallBounce = 6;
    }
    else if(BallBounce == 6)
    {
        new Float:x, Float:y, Float:z;
        GetObjectPos(BasketBall, x, y, z);
        MoveObject(BasketBall, x, y, z-0.5, 2);
        BallBounce = 7;
    }
    else if(BallBounce == 7)
    {
        new Float:x, Float:y, Float:z;
        GetObjectPos(BasketBall, x, y, z);
        MoveObject(BasketBall, x, y, z+0.2, 1);
        BallBounce = 8;
    }
    else if(BallBounce == 8)
    {
        new Float:x, Float:y, Float:z;
        GetObjectPos(BasketBall, x, y, z);
        MoveObject(BasketBall, x, y, z-0.2, 1);
        BallBounce = 0;
    }
    if(!HavingBall[i]) return 1;
    new Keys, ud, lr;
    GetPlayerKeys(i, Keys, ud, lr);
    if(Anim[i])
    {
        switch(BallStatus)
        {
            case 0:
            {
                BallStatus = 1;
                new Float:x, Float:y, Float:z;
                GetPlayerPos(i, x, y, z);
                StopObject(BasketBall);
                new Float:x2, Float:y2;
                GetXYInFrontOfPlayer(i, x2, y2, 0.4);
                MoveObject(BasketBall, x2, y2, z+0.1, 5.5);
            }
            case 1:
            {
                BallStatus = 0;
                new Float:x, Float:y, Float:z;
                GetPlayerPos(i, x, y, z);
                StopObject(BasketBall);
                new Float:x2, Float:y2;
                GetXYInFrontOfPlayer(i, x2, y2, 0.4);
                MoveObject(BasketBall, x2, y2, z-0.8, 5.5);
            }
        }
        return 1;
    }
    if(Keys & KEY_SPRINT)
    {
        ApplyAnimation(i,"BSKTBALL","BBALL_run",4.1,1,1,1,1,1);
        switch(BallStatus)
        {
            case 0:
            {
                BallStatus = 1;
                new Float:x, Float:y, Float:z;
                GetPlayerPos(i, x, y, z);
                StopObject(BasketBall);
                new Float:x2, Float:y2;
                GetXYInFrontOfPlayer(i, x2, y2, 1.5);
                MoveObject(BasketBall, x2, y2, z+0.1, 8);
            }
            case 1:
            {
                BallStatus = 0;
                new Float:x, Float:y, Float:z;
                GetPlayerPos(i, x, y, z);
                StopObject(BasketBall);
                new Float:x2, Float:y2;
                GetXYInFrontOfPlayer(i, x2, y2, 1.5);
                MoveObject(BasketBall, x2, y2, z-0.8, 8);
            }
        }
        return 1;
    }
    else
    {
        ApplyAnimation(i,"BSKTBALL","BBALL_walk",4.1,1,1,1,1,1);
    }
    switch(BallStatus)
    {
        case 0:
        {
            BallStatus = 1;
            new Float:x, Float:y, Float:z;
            GetPlayerPos(i, x, y, z);
            StopObject(BasketBall);
            new Float:x2, Float:y2;
            GetXYInFrontOfPlayer(i, x2, y2, 1.2);
            MoveObject(BasketBall, x2, y2, z+0.1, 5);
        }
        case 1:
        {
            BallStatus = 0;
            new Float:x, Float:y, Float:z;
            GetPlayerPos(i, x, y, z);
            StopObject(BasketBall);
            new Float:x2, Float:y2;
            GetXYInFrontOfPlayer(i, x2, y2, 1.2);
            MoveObject(BasketBall, x2, y2, z-0.8, 5);
        }
    }
    return 1;
}
Reply
#2

If Baller can be over 499, then make sure that HavingBall and Anim both have over 499 cells.
Reply
#3

Thanks, fixed!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)