08.05.2013, 23:55
(
Last edited by NathNathii; 09/05/2013 at 12:03 PM.
)
I'm adding a Engine system, and when I compile the gamemode it crashes?
The script.
The script.
pawn Code:
forward StartEngine(playerid);
forward DamagedEngine(playerid);
OnPlayerStateChange:
public OnPlayerStateChange(playerid,newstate,oldstate)
{
new vid, Name[24], Msg[128], engine, lights, alarm, doors, bonnet, boot, objective;
switch (newstate)
{
case PLAYER_STATE_DRIVER:
{
vid = GetPlayerVehicleID(playerid);
GetPlayerName(playerid, Name, sizeof(Name));
if (AVehicleData[vid][Owned] == true)
{
if (strcmp(AVehicleData[vid][Owner], Name, false) != 0)
{
RemovePlayerFromVehicle(playerid);
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
format(Msg, 128, TXT_SpeedometerCannotUseVehicle, AVehicleData[vid][Owner]);
SendClientMessage(playerid, 0xFFFFFFFF, Msg);
}
if (AVehicleData[vid][Clamped] == true)
{
RemovePlayerFromVehicle(playerid);
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
format(Msg, 128, TXT_SpeedometerClampedVehicle);
SendClientMessage(playerid, 0xFFFFFFFF, Msg);
format(Msg, 128, TXT_SpeedometerClampedVehicle2);
SendClientMessage(playerid, 0xFFFFFFFF, Msg);
}
}
if (APlayerData[playerid][PlayerClass] != ClassPolice)
{
if (AVehicleData[vid][StaticVehicle] == true)
{
switch (GetVehicleModel(vid))
{
case VehiclePoliceLSPD, VehiclePoliceSFPD, VehiclePoliceLVPD, VehicleHPV1000, VehiclePoliceRanger:
{
RemovePlayerFromVehicle(playerid);
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Error: {FFFFFF}You can not use a police vehicle!");
}
}
}
}
if (APlayerData[playerid][PlayerClass] != ClassPilot)
{
if (AVehicleData[vid][StaticVehicle] == true)
{
switch (GetVehicleModel(vid))
{
case VehicleShamal, VehicleNevada, VehicleStuntPlane, VehicleDodo, VehicleMaverick, VehicleCargobob:
{
// Force the player out of the vehicle
RemovePlayerFromVehicle(playerid);
// Turn off the lights and engine
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
// Let the player know he cannot use a cop car
SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Error: {FFFFFF}You can not use a pilot vehicle!");
}
}
}
}
}
}
new vehicleid = GetPlayerVehicleID(playerid);
if(newstate == PLAYER_STATE_DRIVER)
{
if(VehicleEngine[vehicleid] == 0)
{
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Note: {FFFFFF}Your vehicle is not started!");
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Press SHIFT to start the engine.");
}
else if(VehicleEngine[vehicleid] == 1)
{
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Engine is currently running..");
}
}
return 1;
}
Look for OnPlayerKeyStateChange:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
switch (APlayerData[playerid][PlayerClass])
{
case ClassPolice:
{
if (((newkeys & KEY_HANDBRAKE) && !(oldkeys & KEY_HANDBRAKE)) && (GetPlayerVehicleID(playerid) == 0))
Police_FineNearbyPlayers(playerid);
if (((newkeys & KEY_ACTION) && !(oldkeys & KEY_ACTION)) && (GetPlayerVehicleID(playerid) != 0))
Police_WarnNearbyPlayers(playerid);
}
case ClassAssistance:
{
if (((newkeys & KEY_HANDBRAKE) && !(oldkeys & KEY_HANDBRAKE)) && (GetPlayerVehicleID(playerid) == 0))
Assistance_FixVehicle(playerid);
if (((newkeys & KEY_ACTION) && !(oldkeys & KEY_ACTION)) && (GetPlayerVehicleID(playerid) != 0))
Assistance_FixOwnVehicle(playerid);
}
}
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == VehicleTowTruck)
{
if(newkeys & KEY_FIRE)
{
new closest = GetClosestVehicle(playerid);
if(VehicleToPlayer(playerid, closest) < 10)
AttachTrailerToVehicle(closest, GetPlayerVehicleID(playerid));
}
}
new vehicleid = GetPlayerVehicleID(playerid);
if(IsPlayerInAnyVehicle(playerid))
{
if(VehicleEngine[vehicleid] == 0)
{
if(newkeys == KEY_JUMP)
{
VehicleEngine[vehicleid] = 2;
SetTimerEx("StartEngine", 3000, 0, "i", playerid);
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Starting {FFFFFF}engine..");
}
}
if(newkeys == KEY_SECONDARY_ATTACK)
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
}
return 1;
}
Put dis under of gamemode:
public StartEngine(playerid)
{
new vehicleid = GetPlayerVehicleID(playerid);
new Float:health;
new rand = random(2);
GetVehicleHealth(vehicleid, health);
if(IsPlayerInAnyVehicle(playerid))
{
if(VehicleEngine[vehicleid] == 2)
{
if(health > 300)
{
if(rand == 0)
{
VehicleEngine[vehicleid] = 1;
TogglePlayerControllable(playerid, 1);
SetTimerEx("DamagedEngine", 1000, 1, "i", playerid);
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Engine started!");
}
if(rand == 1)
{
VehicleEngine[vehicleid] = 0;
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Engine failed to start!");
}
}
else
{
VehicleEngine[vehicleid] = 0;
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Error: {FFFFFF}The vehicle failed to start because of too much damage!");
}
}
}
return 1;
}
public DamagedEngine(playerid)
{
new vehicleid = GetPlayerVehicleID(playerid);
new Float:health;
GetVehicleHealth(vehicleid, health);
if(IsPlayerInAnyVehicle(playerid))
{
if(VehicleEngine[vehicleid] == 1)
{
if(health < 300)
{
VehicleEngine[vehicleid] = 0;
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Vehicle stopped because of too much damage!");
}
}
}
return 1;
}