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

Error:
pawn Код:
[11:23:15] [debug] Run time error 4: "Array index out of bounds"
[11:23:15] [debug]  Accessing element at negative index -400
[11:23:15] [debug] AMX backtrace:
[11:23:15] [debug] #0 0000a5f0 in public OnDialogResponse (0x00000000, 0x00000005, 0x00000001, 0xffffffff, 0x000c42f4) from admin.amx
When I use OnDialogResponse
pawn Код:
if(dialogid == DIALOG_VEHICLE)
    {
        if(!response)
        {
            ShowPlayerDialog(playerid, DIALOG_PCAR, DIALOG_STYLE_LIST, "Private Vehicle Menu", "Create a private car\nBring your private car\nDelete your private car", "Okay", "Cancel");
        }
        if(response)
        {
            if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, ""SERVER"You cannot create a private car as long as you are in a vehicle!");
            new veh = GetVehicleModelID(inputtext);
            if(veh < 400 || veh > 611)
            {
                 ShowPlayerDialog(playerid, DIALOG_VEHICLE, DIALOG_STYLE_INPUT, "Enter your vehicle name", "Please enter the vehicle name you want", "Create", "Back");
                 SendClientMessage(playerid, -1, ""SERVER"This is not a valid vehicle name");
            }
            new Float: px, Float: py, Float: pz, Float: pa;
            new world = GetPlayerVirtualWorld(playerid);
            GetPlayerPos(playerid, px, py, pz);
            GetPlayerFacingAngle(playerid, pa);
            CreateVehicle(veh, px + 1, py + 1, pz, pa, -1, -1, -1);
            LinkVehicleToInterior(veh, GetPlayerInterior(playerid));
            SetVehicleVirtualWorld(veh, world);
            PutPlayerInVehicle(playerid, veh, 0);
            new query[500];
            mysql_format(chandle, query, sizeof(query), "INSERT INTO `pcars` (`Owner`, `VehicleName`, `VehicleID`, `CarColor`, `xPos`, `yPos`, `zPos`, `aPos`) VALUES ('%e', '%e', '%d', '-1', '%f', '%f', '%f', '%f')", GetName(playerid), VehicleNames[GetVehicleModel(GetPlayerVehicleID(playerid))-400], veh, px + 1, py + 1, pz, pa);
            mysql_tquery(chandle, query);
        }
    }
Reply
#2

Edit: Wrong..... -_-
Reply
#3

Edit: fixed

Changed

VehicleNames[GetVehicleModel(GetPlayerVehicleID(playerid))-400]

to

inputtext
Reply
#4

pawn Код:
if(response)
        {
            if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, ""SERVER"You cannot create a private car as long as you are in a vehicle!");
            new veh = GetVehicleModelID(inputtext);
            if(veh < 400 || veh > 611)
            {
                 ShowPlayerDialog(playerid, DIALOG_VEHICLE, DIALOG_STYLE_INPUT, "Enter your vehicle name", "Please enter the vehicle name you want", "Create", "Back");
                 SendClientMessage(playerid, -1, ""SERVER"This is not a valid vehicle name");
            }
            new Float: px, Float: py, Float: pz, Float: pa;
            new world = GetPlayerVirtualWorld(playerid);
            GetPlayerPos(playerid, px, py, pz);
            GetPlayerFacingAngle(playerid, pa);
            CreateVehicle(veh, px + 1, py + 1, pz, pa, -1, -1, -1);
            LinkVehicleToInterior(veh, GetPlayerInterior(playerid));
            SetVehicleVirtualWorld(veh, world);
            PutPlayerInVehicle(playerid, veh, 0);
            new query[500];
            mysql_format(chandle, query, sizeof(query), "INSERT INTO `pcars` (`Owner`, `VehicleName`, `VehicleID`, `CarColor`, `xPos`, `yPos`, `zPos`, `aPos`) VALUES ('%e', '%e', '%d', '-1', '%f', '%f', '%f', '%f')", GetName(playerid), VehicleNames[GetVehicleModel(GetPlayerVehicleID(playerid))-400], veh, px + 1, py + 1, pz, pa);
            mysql_tquery(chandle, query);
        }
pawn Код:
if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, ""SERVER"You cannot create a private car as long as you are in a vehicle!");
//.....
mysql_format(chandle, query, sizeof(query), "IN......",....VehicleNames[GetVehicleModel(GetPlayerVehicleID(playerid))-400], veh, px + 1, py + 1, pz, pa);
look, on top you're checking if the player "IsInAnyVehicle" and stop the code from precessing if they are.
but now later on in your mysql_format you're using the function "GetPlayerVehicleID"
you're basically doing: VehicleNames[0-400] (cuz GetPlayerVehicle ID returned 0 & GetVehicleModel after this 0)

you have to get the vehicle model from somewhere else (variables or other stuff)
if you want the player to be outside while the code is processing
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)