Run time error 4: "Array index out of bounds"
#1

Код:
[21:57:52] [debug] Run time error 4: "Array index out of bounds"
[21:57:52] [debug]  Accessing element at index 63 past array upper bound 62
[21:57:52] [debug] AMX backtrace:
[21:57:52] [debug] #0 0003706c in ?? (0) from dayz.amx
[21:57:52] [debug] #1 00046024 in ?? (0) from dayz.amx
[21:57:52] [debug] #2 00025f94 in ?? (0, 65535, 255) from dayz.amx
[21:57:52] [debug] #3 00013a40 in public OnPlayerDeath (0, 65535, 255) from dayz.amx
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
    SendDeathMessage(killerid, playerid, reason);
    if(killerid != INVALID_PLAYER_ID)
    {
        SetPlayerBandit(killerid);
        PlayerInfo[killerid][pKills]++;
    }
    PlayerInfo[playerid][pDeaths]++;
    PlayerInfo[playerid][pFirstSpawn] = 0;
    ResetAllInfo(playerid);
    ForceDrop(playerid);
    return 1;
}
Need help!
Reply
#2

https://github.com/Zeex/samp-plugin-...ith-debug-info
Do what's written in that article, then cause the error again.
Your error is probably somewhere in ResetAllInfo or ForceDrop, can't tell without debug information.
Reply
#3

pawn Код:
stock ResetAllInfo(playerid)
{
    KillTimer(healthUpdaterHunger[playerid]);
    KillTimer(healthUpdaterThirst[playerid]);
    KillTimer(progressUpdaterHunger[playerid]);
    KillTimer(progressUpdaterThirst[playerid]);
    KillTimer(Bleedingtimer[playerid]);
    TextDrawHideForPlayer(playerid,txtTimeDisp);
    TextDrawHideForPlayer(playerid, LegBroken[playerid]);
    TextDrawHideForPlayer(playerid,Textdraw0);
    TextDrawHideForPlayer(playerid,Textdraw1);
    TextDrawHideForPlayer(playerid,Textdraw2);
    return 1;
}

stock ForceDrop(playerid)
{
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    for(new i; i < 99; i++)
    {
        if(PlayerHasItem(playerid, ItemInfo[i][Item_Name]))
        {
            CreateDrop(ItemInfo[i][Item_ID], X+random(3), Y+random(5), Z);
        }
    }
    return 1;
}
Here ya go
Reply
#4

Show how you declaring all the variables used in ForceDrop and ResetAllInfo
Reply
#5

Okey so I got this:

Код:
[22:24:03] [debug] Run time error 4: "Array index out of bounds"
[22:24:03] [debug]  Accessing element at index 63 past array upper bound 62
[22:24:03] [debug] AMX backtrace:
[22:24:03] [debug] #0 00043f10 in ForceDrop (playerid=0) at C:\Users\Lenovo\Desktop\dayz\gamemodes\dayz.pwn:5127
[22:24:03] [debug] #1 0002e7c0 in ?? (... <3 arguments>) at C:\Users\Lenovo\Desktop\dayz\gamemodes\dayz.pwn:3449
[22:24:03] [debug] #2 00017dc8 in public OnPlayerDeath (playerid=0, killerid=65535, reason=255) at C:\Users\Lenovo\Desktop\dayz\pawno\include\YSI\y_hooks/impl.inc:753
That means that problem is in ForceDrop which drops loots:
pawn Код:
stock ForceDrop(playerid)
{
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    for(new i; i < 99; i++)
    {
        if(PlayerHasItem(playerid, ItemInfo[i][Item_Name])) // LINE IN ERROR
        {
            CreateDrop(ItemInfo[i][Item_ID], X+random(3), Y+random(5), Z);
        }
    }
    return 1;
}

stock PlayerHasItem(playerid,ItemName[])
{
    for(new item;item < MAX_INV_ITEMS; item++)
    {
        if(!_GetItemAmountPVar(playerid,item))continue;
        if(!strcmp(_GetItemNamePVar(playerid,item),ItemName,false))return _GetItemAmountPVar(playerid,item);
    }
    return 0;
}

stock CreateDrop(itemid, Float:X, Float:Y, Float:Z)
{
    if(itemid != -1)
    {
        for(new i; i < MAX_DROPS; i++)
        {
            if(DropInfo[i][dPosX] == 0.0 && DropInfo[i][dPosY] == 0.0 && DropInfo[i][dPosZ] == 0.0)
            {
                new str[100];

                DropInfo[i][dPosX] = X, DropInfo[i][dPosY] = Y, DropInfo[i][dPosZ] = Z-0.92;

                DropInfo[i][DropItemID] = itemid;

                format(str, sizeof(str), "{FFFFFF}[{27E6E6}%s{FFFFFF}]\nPress [{27E6E6}C{FFFFFF}] {FFFFFF}to Pickup.", ItemInfo[itemid][Item_Name]);
                DropInfo[i][DropLabel] = CreateDynamic3DTextLabel(str, -1, DropInfo[i][dPosX], DropInfo[i][dPosY], DropInfo[i][dPosZ], 1.5);
                DropInfo[i][DropObj] = CreateDynamicObject(ItemInfo[itemid][Item_Obj], DropInfo[i][dPosX], DropInfo[i][dPosY], DropInfo[i][dPosZ], ItemInfo[itemid][Item_RotX], ItemInfo[itemid][Item_RotY], ItemInfo[itemid][Item_RotZ]);
                return 1;
            }
        }
    }
    return 0;
}
Reply
#6

....
Quote:
Originally Posted by Shinja
Посмотреть сообщение
Show how you declaring all the variables used in ForceDrop
Reply
#7

Quote:
Originally Posted by Shinja
Посмотреть сообщение
....
pawn Код:
enum Item_Data
{
    Item_ID,
    Item_Obj,
    Item_Name[MAX_ITEM_NAME],
    Float:Item_RotX,
    Float:Item_RotY,
    Float:Item_RotZ,
};
new ItemInfo[][Item_Data] =
{
    /* id, object, name, rotate x, rotate y, rotate z */
   
    {0,   3026,       "Taloon Backpack",    -88.399, 0.0, 0.0 },
    {1,   1310,       "Hunting Backpack",   -90.299, 0.0, 0.0 },
    {2,   19559,      "Hiker Backpack",     -91.799, 0.0, 0.0 },
    {3,   1550,       "Drybag Backpack",    0.0, -94.899, 0.0 },
   
    {4,   11738,      "Medical Kit",        0.0, 0.0, 0.0     },
    {5,   11748,      "Bandage",            0.0, 0.0, 0.0     },
    {6,   2752,       "Morphine Injector",  0.0, 0.0, 0.0     },
    {7,   2709,       "Painkiller",         0.0, 0.0, 0.0     },
    {8,   1580,       "Blood Bag",          0.0, 0.0, 0.0     },
   
    {9,    19570,     "Fresh Milk",         0.0, 0.0, 0.0     },
    {10,   2683,      "Water Canteen",      0.0, 0.0, 0.0     },
    {11,   1546,      "Sprunk Can",         0.0, 0.0, 0.0     },
    {12,   19823,     "Whisky Bottle",      0.0, 0.0, 0.0     },
    {13,   19563,     "Orange Juice",       0.0, 0.0, 0.0     },
    {14,   19564,     "Apple Juice",        0.0, 0.0, 0.0     },
    {15,   19835,     "Coffee Cup",         0.0, 0.0, 0.0     },
   
    {16,   19847,     "Leg Ham",            0.0, 0.0, 0.0     },
    {17,   19883,     "Bread Slice",        0.0, 0.0, 0.0     },
    {18,   2768,      "Burger",             0.0, 0.0, 0.0     },
    {19,   19561,     "Cereal Box",         0.0, 0.0, 0.0     },
    {20,   19580,     "Pizza",              0.0, 0.0, 0.0     },
    {21,   2769,      "Taco",               0.0, 0.0, 0.0     },
    {22,   19567,     "Ice Cream",          0.0, 0.0, 0.0     },
    {23,   2858,      "Chinese Food",       0.0, 0.0, 0.0     },
    {24,   19574,     "Orange",             0.0, 0.0, 0.0     },
    {25,   19575,     "Apple",              0.0, 0.0, 0.0     },
    {26,   19576,     "Green Apple",        0.0, 0.0, 0.0     },
    {27,   19577,     "Tomato",             0.0, 0.0, 0.0     },
    {28,   19578,     "Banana",             0.0, 0.0, 0.0     },
   
    {29,   348,       "Pistol .50",         90.0, 0.0, 0.0    },
    {30,   346,       "Glock 19",           90.0, 0.0, 0.0    },
    {31,   347,       "M9 SD",              90.0, 0.0, 0.0    },
    {32,   357,       "Mosin 9130",         90.0, 0.0, 0.0    },
    {33,   358,       "Hunting Rifle",      90.0, 0.0, 0.0    },
    {34,   356,       "AR-15",              90.0, 0.0, 0.0    },
    {35,   355,       "AKS-74U",            90.0, 0.0, 0.0    },
    {36,   349,       "MP-133 Shotgun",     90.0, 0.0, 0.0    },
    {37,   350,       "Sawed-off IZH-43",   90.0, 0.0, 0.0    },
    {38,   351,       "Pump Shotgun",       90.0, 0.0, 0.0    },
    {39,   372,       "CZ61 Skorpion",      90.0, 0.0, 0.0    },
    {40,   352,       "PDW",                90.0, 0.0, 0.0    },
    {41,   353,       "MP5-K",              90.0, 0.0, 0.0    },
   
    {42,   336,       "Baseball Bat",       90.0, 0.0, 0.0    },
    {43,   339,       "Sword",              90.0, 0.0, 0.0    },
    {44,   335,       "Combat Knife",       90.0, 0.0, 0.0    },
    {45,   337,       "Shovel",             90.0, 0.0, 0.0    },
   
    {46,   342,       "Frag Grenade",       0.0, 0.0, 0.0     },
   
    {47,   3013,      "Assault Ammo",       0.0, 0.0, 0.0     },
    {48,   2043,      "Shotgun Ammo",       0.0, 0.0, 0.0     },
    {49,   2042,      "SMG Ammo",           0.0, 0.0, 0.0     },
    {50,   2037,      "Pistol Ammo",        0.0, 0.0, 0.0     },
    {51,   2038,      "Sniper Ammo",        0.0, 0.0, 0.0     },
   
    {52,   18875,     "GPS",                0.0, 0.0, 0.0     },
    {53,   2386,      "Clothing",           0.0, 0.0, 0.0     },
    {54,   1010,      "Engine",             0.0, 0.0, 0.0     },
    {55,   19921,     "Toolbox",            0.0, 0.0, 0.0     },
    {56,   2967,      "Radio Device",       0.0, 0.0, 0.0     },
    {57,   19515,     "Armour Vest",        90.0, 0.0, 0.0    },
    {58,   19472,     "Gas Mask",           0.0, 0.0, 0.0     },
    {59,   18976,     "Helmet",             0.0, 0.0, 0.0     },
    {60,   1650,      "Fuel Canister",      90.0, 0.0, 0.0    },
   
    {61,   2683,  "Empty Water Canteen",    0.0, 0.0, 0.0     },
    {62,   1650,  "Empty Fuel Canister",    90.0, 0.0, 0.0    }
};

This?
Reply
#8

And this if you need

pawn Код:
enum Drop_Data
{
    DropItemID,
    DropObj,
    Text3D:DropLabel,
    Float:dPosX,
    Float:dPosY,
    Float:dPosZ,
};

new DropInfo[MAX_DROPS][Drop_Data];


stock CreateDrop(itemid, Float:X, Float:Y, Float:Z)
{
    if(itemid != -1)
    {
        for(new i; i < MAX_DROPS; i++)
        {
            if(DropInfo[i][dPosX] == 0.0 && DropInfo[i][dPosY] == 0.0 && DropInfo[i][dPosZ] == 0.0)
            {
                new str[100];

                DropInfo[i][dPosX] = X, DropInfo[i][dPosY] = Y, DropInfo[i][dPosZ] = Z-0.92;

                DropInfo[i][DropItemID] = itemid;

                format(str, sizeof(str), "{FFFFFF}[{27E6E6}%s{FFFFFF}]\nPress [{27E6E6}C{FFFFFF}] {FFFFFF}to Pickup.", ItemInfo[itemid][Item_Name]);
                DropInfo[i][DropLabel] = CreateDynamic3DTextLabel(str, -1, DropInfo[i][dPosX], DropInfo[i][dPosY], DropInfo[i][dPosZ], 1.5);
                DropInfo[i][DropObj] = CreateDynamicObject(ItemInfo[itemid][Item_Obj], DropInfo[i][dPosX], DropInfo[i][dPosY], DropInfo[i][dPosZ], ItemInfo[itemid][Item_RotX], ItemInfo[itemid][Item_RotY], ItemInfo[itemid][Item_RotZ]);
                return 1;
            }
        }
    }
    return 0;
}
Reply
#9

PHP код:
stock ForceDrop(playerid)
{
    new 
Float:XFloat:YFloat:Z;
    
GetPlayerPos(playeridXYZ);
    for(new 
isizeof(ItemInfo); i++)
    {
        if(
PlayerHasItem(playeridItemInfo[i][Item_Name])) // LINE IN ERROR
        
{
            
CreateDrop(ItemInfo[i][Item_ID], X+random(3), Y+random(5), Z);
        }
    }
    return 
1;

Reply
#10

+rep seems to be working no debug error but it doesnt show in console like
Tom_Redlake died 255
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)