01.08.2016, 18:46
Hi, I've added rental vehicles to my server today, added a check to /engine if player has keys to the rental vehicle, and now I'm getting unknown command when I try to /engine a vehicle that I don't rent, it works when I /engine a vehicle that I rent. Everything works except that when I /engine an unrented vehicle.
Here's the code:
Crashdetect outputs this:
I already had this problem, but I could fix it somehow, now it happens again. Does anyone know how to fix it?
Here's the code:
Код:
CMD:engine(playerid, params[]) { new vehicleid, carid, model; if (IsPlayerInAnyVehicle(playerid)) { vehicleid = GetPlayerVehicleID(playerid); model = GetVehicleModel(vehicleid); carid = Car_GetID(vehicleid); } else return SendErrorMessage(playerid, "You are not in any vehicle."); if (!IsEngineVehicle(vehicleid)) return SendErrorMessage(playerid, "This vehicle doesn't have an engine."); if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You can't do this as you're not the driver."); if (PlayerData[playerid][pInjured]) return SendErrorMessage(playerid, "You can't do this while being injured or dead."); if (ReturnVehicleHealth(vehicleid) <= 300) return SendErrorMessage(playerid, "This vehicle is totalled and can't be started."); if (CoreVehicles[vehicleid][vehFuel] < 1) return SendErrorMessage(playerid, "The fuel tank is empty."); if (carid != -1 && Car_IsOwner(playerid, carid) || CoreVehicles[vehicleid][vehTemporary] || CoreVehicles[vehicleid][vehRental] && PlayerData[playerid][pRentedVehicle] == vehicleid || CoreVehicles[vehicleid][vehJob] || (PlayerData[playerid][pFaction] != -1 && CarData[carid][carFaction] == GetFactionType(playerid)) || PlayerData[playerid][pCarKeys] == carid) { switch (GetEngineStatus(vehicleid)) { case false: { SetEngineStatus(vehicleid, true); ShowPlayerFooter(playerid, "You have ~g~started~w~ the engine!"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s inserts the key into the ignition and starts the engine of the %s.", ReturnName(playerid, 0), ReturnVehicleModelName(model)); } case true: { SetEngineStatus(vehicleid, false); ShowPlayerFooter(playerid, "You have ~r~stopped~w~ the engine!"); SendNearbyMessage(playerid, 30.0, COLOR_PURPLE, "** %s inserts the key into the ignition and stops the engine of the %s.", ReturnName(playerid, 0), ReturnVehicleModelName(model)); } } } else SendErrorMessage(playerid, "You don't have the keys to this vehicle."); return 1; }
Код:
[14:21:12] [debug] Run time error 4: "Array index out of bounds" [14:21:12] [debug] Accessing element at negative index -1 [14:21:12] [debug] AMX backtrace: [14:21:12] [debug] #0 0018a534 in public cmd_engine (4, 7397284) from LSLRP.amx [14:21:12] [debug] #1 native CallLocalFunction () from samp03svr [14:21:12] [debug] #2 00017ca8 in public OnPlayerCommandText (4, 7397252) from LSLRP.amx