Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // This is a comment
- // uncomment the line below if you want to write a filterscript
- //#define FILTERSCRIPT
- #include <a_samp>
- #define RELEASED(%0) \
- (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
- new Float:VehHP[MAX_PLAYERS];
- //Seatbelt-related vars
- new SeatbeltTimer[MAX_PLAYERS], PlayerSeatbeltTry[MAX_PLAYERS], SeatBeltOn[MAX_PLAYERS], PlayerSeatbeltState[MAX_PLAYERS], LastCheckedID[MAX_PLAYERS];
- //Burnout-related vars
- new BurnoutStarted[MAX_PLAYERS], BurnoutTimer[MAX_PLAYERS];
- //Engine-related vars
- new PlayerCar[MAX_PLAYERS], EngineMustBeStarted[MAX_PLAYERS], EngineRandom[MAX_PLAYERS], EngineHotWireState[MAX_PLAYERS], EngineStartupState[MAX_PLAYERS], VehEngineDead[MAX_PLAYERS];
- new Text:ProgressText, Text:ProgressBar[MAX_PLAYERS];
- public OnFilterScriptInit()
- {
- print("\n ************************************");
- print(" Vehicle Behavior System by King_Hual V. 1.0");
- print(" ************************************\n");
- ProgressText = TextDrawCreate(516.000000,359.000000,"Hotwire:");
- TextDrawAlignment(ProgressText,0);
- TextDrawBackgroundColor(ProgressText,0x000000ff);
- TextDrawFont(ProgressText,1);
- TextDrawLetterSize(ProgressText,0.599999,1.499999);
- TextDrawColor(ProgressText,0x00ff0099);
- TextDrawSetOutline(ProgressText,1);
- TextDrawSetProportional(ProgressText,1);
- TextDrawSetShadow(ProgressText,1);
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- PlayerCar[playerid] = INVALID_VEHICLE_ID;
- LastCheckedID[playerid] = INVALID_PLAYER_ID;
- ProgressBar[playerid] = TextDrawCreate(520.000000,298.000000,"..........");
- TextDrawAlignment(ProgressBar[playerid],0);
- TextDrawBackgroundColor(ProgressBar[playerid],0x000000ff);
- TextDrawFont(ProgressBar[playerid],3);
- TextDrawLetterSize(ProgressBar[playerid],0.799999,12.899990);
- TextDrawColor(ProgressBar[playerid],0xffffffff);
- TextDrawSetOutline(ProgressBar[playerid],1);
- TextDrawSetProportional(ProgressBar[playerid],1);
- TextDrawSetShadow(ProgressBar[playerid],1);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- EngineHotWireState[playerid] = 0;
- EngineStartupState[playerid] = 0;
- EngineRandom[playerid] = 0;
- EngineMustBeStarted[playerid] = 0;
- SeatBeltOn[playerid] = 0;
- PlayerSeatbeltState[playerid] = 0;
- PlayerSeatbeltTry[playerid] = 0;
- KillTimer(SeatbeltTimer[playerid]);
- BurnoutStarted[playerid] = 0;
- KillTimer(BurnoutTimer[playerid]);
- TextDrawDestroy(ProgressBar[playerid]);
- VehEngineDead[playerid] = 0;
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- if (BurnoutStarted[playerid] == 1)
- {
- KillTimer(BurnoutTimer[playerid]);
- BurnoutStarted[playerid] = 0;
- }
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- if (newstate == PLAYER_STATE_DRIVER)
- {
- new engine,lights,alarm,doors,bonn,boot,obj;
- GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonn,boot,obj);
- if (PlayerCar[playerid] != GetPlayerVehicleID(playerid))
- {
- SetVehicleParamsEx(GetPlayerVehicleID(playerid),0,lights,1,doors,bonn,boot,obj);
- EngineRandom[playerid] = random(30) + 15;
- EngineMustBeStarted[playerid] = 1;
- EngineStartupState[playerid] = 0;
- PlayerSeatbeltTry[playerid] = 0;
- PlayerSeatbeltState[playerid] = 0;
- SeatBeltOn[playerid] = 0;
- UpdateBar(playerid);
- TextDrawShowForPlayer(playerid, ProgressBar[playerid]);
- TextDrawShowForPlayer(playerid, ProgressText);
- }
- else
- {
- SetVehicleParamsEx(GetPlayerVehicleID(playerid),1,lights,alarm,doors,bonn,boot,obj);
- }
- }
- if (oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
- {
- EngineHotWireState[playerid] = 0;
- EngineStartupState[playerid] = 0;
- EngineRandom[playerid] = 0;
- EngineMustBeStarted[playerid] = 0;
- SeatBeltOn[playerid] = 0;
- PlayerSeatbeltState[playerid] = 0;
- PlayerSeatbeltTry[playerid] = 0;
- VehEngineDead[playerid] = 0;
- TextDrawHideForPlayer(playerid, ProgressText);
- TextDrawHideForPlayer(playerid, ProgressBar[playerid]);
- PlayerPlaySound(playerid, 1099, 0, 0, 0);
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if ((newkeys & KEY_SPRINT) && (newkeys & KEY_JUMP) && IsPlayerInAnyVehicle(playerid))
- {
- new Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,final_speed_int;
- GetVehicleVelocity(GetPlayerVehicleID(playerid),speed_x,speed_y,speed_z);
- final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*136.666667;
- final_speed_int = floatround(final_speed,floatround_round);
- BurnoutStarted[playerid] = 1;
- BurnoutTimer[playerid] = SetTimerEx("BurnoutFunc", 7000 + (final_speed_int * 20), 0, "i", playerid);
- }
- if (RELEASED( KEY_SPRINT | KEY_JUMP ))
- {
- if (IsPlayerInAnyVehicle(playerid) && BurnoutStarted[playerid] == 1)
- {
- BurnoutStarted[playerid] = 0;
- KillTimer(BurnoutTimer[playerid]);
- }
- }
- if (newkeys & KEY_SPRINT)
- {
- if (IsPlayerInAnyVehicle(playerid) && (EngineMustBeStarted[playerid] == 1) && (EngineStartupState[playerid] == 1 || EngineStartupState[playerid] == 0))
- {
- EngineHotWireState[playerid]++;
- EngineStartupState[playerid] = 2;
- if (EngineHotWireState[playerid] == floatround(0.20 * EngineRandom[playerid]))
- {
- PlayerPlaySound(playerid, 1165, 0, 0, 0);
- }
- else if (EngineHotWireState[playerid] == floatround(0.40 * EngineRandom[playerid]))
- {
- PlayerPlaySound(playerid, 1166, 0, 0, 0);
- }
- else if (EngineHotWireState[playerid] == floatround(0.60 * EngineRandom[playerid]))
- {
- PlayerPlaySound(playerid, 1165, 0, 0, 0);
- }
- else if (EngineHotWireState[playerid] == floatround(0.80 * EngineRandom[playerid]))
- {
- PlayerPlaySound(playerid, 1166, 0, 0, 0);
- }
- UpdateBar(playerid);
- if (EngineHotWireState[playerid] == EngineRandom[playerid])
- {
- EngineHotWireState[playerid] = 0;
- EngineStartupState[playerid] = 0;
- EngineRandom[playerid] = 0;
- EngineMustBeStarted[playerid] = 0;
- PlayerCar[playerid] = GetPlayerVehicleID(playerid);
- new engine,lights,alarm,doors,bonn,boot,obj;
- GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonn,boot,obj);
- SetVehicleParamsEx(GetPlayerVehicleID(playerid),1,lights,0,doors,bonn,boot,obj);
- TextDrawHideForPlayer(playerid, ProgressText);
- TextDrawHideForPlayer(playerid, ProgressBar[playerid]);
- }
- }
- }
- if (newkeys & KEY_JUMP)
- {
- if (IsPlayerInAnyVehicle(playerid) && (EngineMustBeStarted[playerid] == 1) && (EngineStartupState[playerid] == 2 || EngineStartupState[playerid] == 0))
- {
- EngineHotWireState[playerid]++;
- EngineStartupState[playerid] = 1;
- if (EngineHotWireState[playerid] == floatround(0.20 * EngineRandom[playerid]))
- {
- PlayerPlaySound(playerid, 1165, 0, 0, 0);
- }
- else if (EngineHotWireState[playerid] == floatround(0.40 * EngineRandom[playerid]))
- {
- PlayerPlaySound(playerid, 1166, 0, 0, 0);
- }
- else if (EngineHotWireState[playerid] == floatround(0.60 * EngineRandom[playerid]))
- {
- PlayerPlaySound(playerid, 1165, 0, 0, 0);
- }
- else if (EngineHotWireState[playerid] == floatround(0.80 * EngineRandom[playerid]))
- {
- PlayerPlaySound(playerid, 1166, 0, 0, 0);
- }
- UpdateBar(playerid);
- if (EngineHotWireState[playerid] == EngineRandom[playerid])
- {
- EngineHotWireState[playerid] = 0;
- EngineStartupState[playerid] = 0;
- EngineRandom[playerid] = 0;
- EngineMustBeStarted[playerid] = 0;
- PlayerCar[playerid] = GetPlayerVehicleID(playerid);
- new engine,lights,alarm,doors,bonn,boot,obj;
- GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonn,boot,obj);
- SetVehicleParamsEx(GetPlayerVehicleID(playerid),1,lights,0,doors,bonn,boot,obj);
- TextDrawHideForPlayer(playerid, ProgressText);
- TextDrawHideForPlayer(playerid, ProgressBar[playerid]);
- }
- }
- }
- if ((newkeys & KEY_SUBMISSION) && !(oldkeys & KEY_SUBMISSION))
- {
- if (IsPlayerInAnyVehicle(playerid) && SeatBeltOn[playerid] == 0)
- {
- new Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,final_speed_int;
- GetVehicleVelocity(GetPlayerVehicleID(playerid),speed_x,speed_y,speed_z);
- final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*136.666667;
- final_speed_int = floatround(final_speed,floatround_round);
- if (final_speed_int < 50)
- {
- PlayerSeatbeltState[playerid] = 0;
- PlayerSeatbeltTry[playerid] = 1;
- SeatbeltTimer[playerid] = SetTimerEx("SeatBeltFunc", 3000, 0, "i", playerid);
- PlayerPlaySound(playerid, 1190, 0, 0, 0);
- SeatBeltOn[playerid] = 0;
- SendClientMessage(playerid, 0xFF0000FF, "You are putting your seatbelt on. Please hold the button.");
- }
- else
- {
- SendClientMessage(playerid, 0xFF0000FF, "You are moving too fast to put your seatbelt on.");
- }
- }
- }
- if ((oldkeys & KEY_SUBMISSION) && !(newkeys & KEY_SUBMISSION))
- {
- if (IsPlayerInAnyVehicle(playerid) && SeatBeltOn[playerid] == 0 && PlayerSeatbeltTry[playerid] == 1)
- {
- KillTimer(SeatbeltTimer[playerid]);
- PlayerSeatbeltState[playerid] = 0;
- SeatBeltOn[playerid] = 0;
- PlayerSeatbeltTry[playerid] = 0;
- SendClientMessage(playerid, 0xFF0000FF, "You failed to put your seatbelt on.");
- }
- }
- return 1;
- }
- forward BurnoutFunc(playerid);
- public BurnoutFunc(playerid)
- {
- new panels,doors,lights,tires;
- GetVehicleDamageStatus(GetPlayerVehicleID(playerid),panels,doors,lights,tires);
- UpdateVehicleDamageStatus(GetPlayerVehicleID(playerid), panels, doors, lights, 5);
- PlayerPlaySound(playerid, 1140, 0, 0, 0);
- }
- public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
- {
- if (IsPlayerInAnyVehicle(playerid) && PlayerSeatbeltTry[playerid] == 1)
- {
- KillTimer(SeatbeltTimer[playerid]);
- PlayerSeatbeltState[playerid] = 0;
- SeatBeltOn[playerid] = 0;
- PlayerSeatbeltTry[playerid] = 0;
- SendClientMessage(playerid, 0xFF0000FF, "You have been hit and you failed to put your seatbelt on.");
- }
- }
- forward SeatBeltFunc(playerid);
- public SeatBeltFunc(playerid)
- {
- new Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,final_speed_int;
- GetVehicleVelocity(GetPlayerVehicleID(playerid),speed_x,speed_y,speed_z);
- final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*136.666667;
- final_speed_int = floatround(final_speed,floatround_round);
- if (final_speed_int < 50)
- {
- SendClientMessage(playerid, 0xFF0000FF, "You have put your seatbelt on");
- SeatBeltOn[playerid] = 1;
- PlayerSeatbeltTry[playerid] = 0;
- }
- else
- {
- PlayerSeatbeltState[playerid] = 0;
- SeatBeltOn[playerid] = 0;
- PlayerSeatbeltTry[playerid] = 0;
- SendClientMessage(playerid, 0xFF0000FF, "You failed to put your seatbelt on because you are moving too fast.");
- }
- }
- public OnPlayerUpdate(playerid)
- {
- if(IsPlayerInAnyVehicle(playerid))
- {
- new Float:TempVehHP, Float:HPDiff;
- GetVehicleHealth(GetPlayerVehicleID(playerid), TempVehHP);
- HPDiff = floatsub(VehHP[playerid], TempVehHP);
- if ((floatcmp(VehHP[playerid], TempVehHP) == 1) && TempVehHP != 0)
- {
- if ((floatcmp(HPDiff,80.0) == 1) && (TempVehHP <= 400) && VehEngineDead[playerid] == 0)
- {
- new EngineRand = random(3);
- if (EngineRand == 1)
- {
- new engine,lights,alarm,doors,bonn,boot,obj;
- GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonn,boot,obj);
- SetVehicleParamsEx(GetPlayerVehicleID(playerid),0,lights,alarm,doors,bonn,boot,obj);
- EngineRandom[playerid] = random(30) + 15;
- EngineMustBeStarted[playerid] = 1;
- EngineStartupState[playerid] = 0;
- PlayerCar[playerid] = INVALID_VEHICLE_ID;
- VehEngineDead[playerid] = 1;
- TextDrawShowForPlayer(playerid, ProgressBar[playerid]);
- TextDrawShowForPlayer(playerid, ProgressText);
- UpdateBar(playerid);
- }
- }
- if ((floatcmp(HPDiff,85.0) == 1) && SeatBeltOn[playerid] == 0)
- {
- new Float:PlayerHP;
- GetPlayerHealth(playerid, PlayerHP);
- SetPlayerHealth(playerid, PlayerHP - (HPDiff / 25));
- }
- }
- VehHP[playerid] = TempVehHP;
- }
- else
- {
- VehHP[playerid] = 0;
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- if (playerid != clickedplayerid)
- {
- if (GetPlayerDistanceToPlayer(playerid, clickedplayerid) <= 3 && IsPlayerInAnyVehicle(clickedplayerid) && LastCheckedID[playerid] != clickedplayerid /* && gTeam[playerid] == TEAM_POLICE && gTeam[clickedplayerid] == TEAM_CIVILIAN*/)
- {
- if (SeatBeltOn[clickedplayerid] == 0 && PlayerSeatbeltTry[clickedplayerid] == 0)
- {
- new pname[MAX_PLAYER_NAME], string[164];
- GetPlayerName(clickedplayerid, pname, sizeof(pname));
- format(string, sizeof(string), "%s has no seatbelt on. He is a suspect", pname);
- SendClientMessage(playerid, 0xFFFF00FF, string);
- GetPlayerName(playerid, pname, sizeof(pname));
- format(string, sizeof(string), "%s checked your seatbelt and since you do not have a seatbelt you are a suspect. You should put your seatbelt on every time you enter a car.", pname);
- SendClientMessage(clickedplayerid, 0xFFFF00FF, string);
- if (GetPlayerWantedLevel(clickedplayerid) < 6)
- {
- SetPlayerWantedLevel(clickedplayerid, GetPlayerWantedLevel(playerid) + 1);
- }
- }
- if (SeatBeltOn[clickedplayerid] == 1 && PlayerSeatbeltTry[clickedplayerid] == 0)
- {
- new pname[MAX_PLAYER_NAME], string[64];
- GetPlayerName(clickedplayerid, pname, sizeof(pname));
- format(string, sizeof(string), "%s has a seatbelt. He is clean.", pname);
- SendClientMessage(playerid, 0xFFFF00FF, string);
- GetPlayerName(playerid, pname, sizeof(pname));
- format(string, sizeof(string), "%s checked your seatbelt and saw that you've put it on.", pname);
- SendClientMessage(clickedplayerid, 0xFFFF00FF, string);
- }
- }
- else if (LastCheckedID[playerid] == clickedplayerid)
- {
- SendClientMessage(playerid, 0xFF0000FF, "You already checked that player.");
- }
- if (!IsPlayerInAnyVehicle(clickedplayerid))
- {
- SendClientMessage(playerid, 0xFF0000FF, "That player is not driving.");
- }
- }
- else
- {
- SendClientMessage(playerid, 0xFF0000FF, "ERROR: You cannot check yourself!");
- }
- return 1;
- }
- stock GetPlayerDistanceToPlayer(player1, player2)
- {
- new Float:x1,Float:y1,Float:z1; GetPlayerPos(player1,x1,y1,z1);
- new Float:x2, Float:y2, Float:z2; GetPlayerPos(player2,x2,y2,z2);
- new Float:tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2.0)+
- floatpower(floatabs(floatsub(y2,y1)),2.0));
- return floatround(tmpdis);
- }
- stock UpdateBar(playerid)
- {
- new str[30];
- if(EngineHotWireState[playerid] <= 0.10 * EngineRandom[playerid]) format(str,sizeof(str),"~w~..........");
- else if(EngineHotWireState[playerid] >= 0.10 * EngineRandom[playerid] && EngineHotWireState[playerid] <= 0.20 * EngineRandom[playerid]) format(str,sizeof(str),"~r~.~w~.........");
- else if(EngineHotWireState[playerid] >= 0.20 * EngineRandom[playerid] && EngineHotWireState[playerid] <= 0.30 * EngineRandom[playerid]) format(str,sizeof(str),"~h~~r~..~w~........");
- else if(EngineHotWireState[playerid] >= 0.30 * EngineRandom[playerid] && EngineHotWireState[playerid] <= 0.40 * EngineRandom[playerid]) format(str,sizeof(str),"~h~~h~~r~...~w~.......");
- else if(EngineHotWireState[playerid] >= 0.40 * EngineRandom[playerid] && EngineHotWireState[playerid] <= 0.50 * EngineRandom[playerid]) format(str,sizeof(str),"~h~~h~~h~~r~....~w~......");
- else if(EngineHotWireState[playerid] >= 0.50 * EngineRandom[playerid] && EngineHotWireState[playerid] <= 0.60 * EngineRandom[playerid]) format(str,sizeof(str),"~h~~h~~h~~h~~r~.....~w~.....");
- else if(EngineHotWireState[playerid] >= 0.60 * EngineRandom[playerid] && EngineHotWireState[playerid] <= 0.70 * EngineRandom[playerid]) format(str,sizeof(str),"~g~......~w~....");
- else if(EngineHotWireState[playerid] >= 0.70 * EngineRandom[playerid] && EngineHotWireState[playerid] <= 0.80 * EngineRandom[playerid]) format(str,sizeof(str),"~h~~g~.......~w~...");
- else if(EngineHotWireState[playerid] >= 0.80 * EngineRandom[playerid] && EngineHotWireState[playerid] <= 0.90 * EngineRandom[playerid]) format(str,sizeof(str),"~h~~h~~g~........~w~..");
- else if(EngineHotWireState[playerid] >= 0.90 * EngineRandom[playerid] && EngineHotWireState[playerid] <= 0.99 * EngineRandom[playerid]) format(str,sizeof(str),"~h~~h~~h~~g~.........~w~.");
- else if(EngineHotWireState[playerid] >= 0.99 * EngineRandom[playerid]) format(str,sizeof(str),"~h~~h~~h~~h~~g~.........~w~.");
- TextDrawSetString(ProgressBar[playerid], str);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement