Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #undef MAX_PLAYERS
- #define MAX_PLAYERS 500
- new Text:speedo1[MAX_PLAYERS];
- new Text:speedo2[MAX_PLAYERS];
- new Text:speedo3[MAX_PLAYERS];
- new Text:speedo4[MAX_PLAYERS];
- new CarFuel[MAX_VEHICLES];
- new Float:PlayerPos[3][MAX_PLAYERS];
- new PlayerTotalDistance[MAX_PLAYERS];
- new GotFuelMessage[MAX_PLAYERS];
- #define DEF_GAS (100) //Default gas level for the vehicles in the server when the filterscript is loaded. (DEFAULT: 100)
- #define DISTANCE (250) //Distance in which FUEL_INCREMENT will be removed from the fuel (DEFAULT: 250)
- #define FUEL_INCREMENT (1) //The value that will be removed from the fuel when DISTANCE is met. (DEFAULT: 1)
- #define TEXT_DRAW_FONT (2) //Font for the text draw. It's recomended that you not change this. (DEFAULT: 2)
- #define TEXT_DRAW_X_FACTOR (0.4) // Font size X factor (DEFAULT: 0.4) (RECOMENDED NOT TO CHANGE)
- #define TEXT_DRAW_Y_FACTOR (0.8) // Font size Y factor (DEFAULT: 0.8) (RECOMENDED NOT TO CHANGE)
- #define EXIT_VEHICLE_ON_NO_GAS (true) // If the player should exit the vehicle when the fuel is 0, set this true.
- #define WARNING (20) // Number at which to send a warning to the player. (DEFAULT: 20)
- #define WARNING_LIMIT (10000) // Time to wait before sending another message about low fuel. (DEFAULT: 10000)
- #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
- new CarName[][] =
- {
- "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
- "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
- "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
- "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
- "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
- "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
- "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
- "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
- "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
- "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
- "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
- "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
- "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
- "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking",
- "Blista Compact", "Police Maverick", "Boxvillde", "Benson", "Mesa", "RC Goblin",
- "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT",
- "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
- "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
- "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
- "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
- "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
- "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
- "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
- "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratium",
- "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
- "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
- "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
- "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
- "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
- "Police Car", "Police Car", "Police Ranger", "Picador", "S.W.A.T", "Alpha",
- "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
- "Tiller", "Utility Trailer"
- };
- public OnFilterScriptInit()
- {
- for (new i = 0; i <MAX_VEHICLES; i++) {
- CarFuel[i] = DEF_GAS;
- }
- for (new i = 0; i < MAX_PLAYERS; i++) {
- GotFuelMessage[i] = -1;
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- for ( new i = 0; i < MAX_PLAYERS; i++) {
- TextDrawHideForPlayer(i, speedo1[i]);
- TextDrawHideForPlayer(i, speedo2[i]);
- TextDrawHideForPlayer(i, speedo3[i]);
- TextDrawHideForPlayer(i, speedo4[i]);
- TextDrawDestroy(speedo1[i]);
- TextDrawDestroy(speedo2[i]);
- TextDrawDestroy(speedo3[i]);
- TextDrawDestroy(speedo4[i]);
- }
- return 1;
- }
- stock Float:GetPlayerSpeed(playerid, bool:Z = true)
- {
- new Float:SpeedX, Float:SpeedY, Float:SpeedZ;
- new Float:Speed;
- if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid), SpeedX, SpeedY, SpeedZ);
- else GetPlayerVelocity(playerid, SpeedX, SpeedY, SpeedZ);
- if(Z) Speed = floatsqroot(floatadd(floatpower(SpeedX, 2.0), floatadd(floatpower(SpeedY, 2.0), floatpower(SpeedZ, 2.0))));
- else Speed = floatsqroot(floatadd(floatpower(SpeedX, 2.0), floatpower(SpeedY, 2.0)));
- Speed = floatround(Speed * 100 * 1.61);
- return Speed;
- }
- stock DamageColor(Float: h) {
- new str[5];
- if (h <= 30)
- format(str, sizeof(str), "r");
- else if (h < 60)
- format(str, sizeof(str), "y");
- else
- format(str, sizeof(str), "g");
- return str;
- }
- stock FuelColor(vid) {
- new str[5];
- if (CarFuel[vid] <= 20)
- format(str, sizeof(str), "r");
- else if (CarFuel[vid] < 40)
- format(str, sizeof(str), "y");
- else
- format(str, sizeof(str), "g");
- return str;
- }
- stock GetDistance( Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2 )
- {
- return floatround( floatsqroot( ( ( x1 - x2 ) * ( x1 - x2 ) ) + ( ( y1 - y2 ) * ( y1 - y2 ) ) + ( ( z1 - z2 ) * ( z1 - z2 ) ) ) ) ;
- }
- public OnPlayerUpdate(playerid) {
- if (IsPlayerInAnyVehicle(playerid)) {
- new Float:vh, Float:s;
- new vid = GetPlayerVehicleID(playerid);
- new h, string[80];
- GetVehicleHealth(vid, vh);
- h = floatround(vh) / 10;
- format(string, sizeof(string), "Health: ~%s~%d \%", DamageColor(h), h);
- TextDrawSetString(speedo2[playerid], string);
- s = GetPlayerSpeed(playerid);
- new ss = floatround(s);
- format(string, sizeof(string), "Speed: ~g~%d km/h", ss);
- TextDrawSetString(speedo3[playerid], string);
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- format(string, sizeof(string), "Gas: ~%s~%d \%", FuelColor(vid), CarFuel[vid]);
- TextDrawSetString(speedo4[playerid], string);
- new distance = GetDistance(x, y, z, PlayerPos[0][playerid], PlayerPos[1][playerid], PlayerPos[2][playerid]);
- PlayerPos[0][playerid] = x;
- PlayerPos[1][playerid] = y;
- PlayerPos[2][playerid] = z;
- PlayerTotalDistance[playerid] += distance;
- if (PlayerTotalDistance[playerid] > DISTANCE) {
- CarFuel[vid] -= FUEL_INCREMENT;
- PlayerTotalDistance[playerid] = 0;
- }
- }
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate) {
- if ( (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) && oldstate == PLAYER_STATE_ONFOOT ) {
- new str[50];
- new vid = GetPlayerVehicleID(playerid);
- format(str, sizeof(str), "Vehicle: ~g~%s", CarName[GetVehicleModel(vid)-400]);
- speedo1[playerid] = TextDrawCreate(470.0, 390.0, " ");
- TextDrawSetString(speedo1[playerid], str);
- TextDrawSetShadow(speedo1[playerid], false);
- TextDrawSetOutline(speedo1[playerid], 1);
- TextDrawLetterSize(speedo1[playerid], TEXT_DRAW_X_FACTOR, TEXT_DRAW_Y_FACTOR);
- TextDrawSetProportional(speedo1[playerid], 1);
- TextDrawFont(speedo1[playerid], TEXT_DRAW_FONT);
- TextDrawShowForPlayer(playerid, speedo1[playerid]);
- new Float:vh;
- GetVehicleHealth(vid, vh);
- new h = floatround(vh) / 10;
- format(str, sizeof(str), "Health: ~g~%d \%", h);
- speedo2[playerid] = TextDrawCreate(470.0, 400.0, " ");
- TextDrawSetString(speedo2[playerid], str);
- TextDrawSetShadow(speedo2[playerid], false);
- TextDrawSetOutline(speedo2[playerid], 1);
- TextDrawLetterSize(speedo2[playerid], TEXT_DRAW_X_FACTOR, TEXT_DRAW_Y_FACTOR);
- TextDrawSetProportional(speedo2[playerid], 1);
- TextDrawFont(speedo2[playerid], TEXT_DRAW_FONT);
- TextDrawShowForPlayer(playerid, speedo2[playerid]);
- new Float:s = GetPlayerSpeed(playerid);
- new ss = floatround(s);
- format(str, sizeof(str), "Speed: ~%s~%d km/h", DamageColor(h), ss);
- speedo3[playerid] = TextDrawCreate(470.0, 410.0, " ");
- TextDrawSetString(speedo3[playerid], str);
- TextDrawSetShadow(speedo3[playerid], false);
- TextDrawSetOutline(speedo3[playerid], 1);
- TextDrawLetterSize(speedo3[playerid], TEXT_DRAW_X_FACTOR, TEXT_DRAW_Y_FACTOR);
- TextDrawSetProportional(speedo3[playerid], 1);
- TextDrawFont(speedo3[playerid], TEXT_DRAW_FONT);
- TextDrawShowForPlayer(playerid, speedo3[playerid]);
- format(str, sizeof(str), "Gas: ~%s~%d \%", FuelColor(vid), CarFuel[vid]);
- speedo4[playerid] = TextDrawCreate(470.0, 420.0, " ");
- TextDrawSetString(speedo4[playerid], str);
- TextDrawSetShadow(speedo4[playerid], false);
- TextDrawSetOutline(speedo4[playerid], 1);
- TextDrawLetterSize(speedo4[playerid], TEXT_DRAW_X_FACTOR, TEXT_DRAW_Y_FACTOR);
- TextDrawSetProportional(speedo4[playerid], 1);
- TextDrawFont(speedo4[playerid], TEXT_DRAW_FONT);
- TextDrawShowForPlayer(playerid, speedo4[playerid]);
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- PlayerPos[0][playerid] = x;
- PlayerPos[1][playerid] = y;
- PlayerPos[2][playerid] = z;
- }
- if (newstate == PLAYER_STATE_ONFOOT && ( oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_ONFOOT ) ) {
- TextDrawHideForPlayer(playerid, speedo1[playerid]);
- TextDrawHideForPlayer(playerid, speedo2[playerid]);
- TextDrawHideForPlayer(playerid, speedo3[playerid]);
- TextDrawHideForPlayer(playerid, speedo4[playerid]);
- }
- return 1;
- }
- public OnPlayerConnect(playerid) {
- GotFuelMessage[playerid] = -1;
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement