EVF Include (omp)
unknown
plain_text
a year ago
184 kB
2
Indexable
Never
/********************************************************************************************************************************** * * * )( Extended Vehicle Functions )( * * * * Copyright � 2018 Abyss Morgan. All rights reserved. * * Contributors: Emmet_, Pottus, kvann, Hanger, Freaksken, Gammix, Yashas, Admigo, RIDE2DAY, Katarina Calzaghe * * * * Website: adm.ct8.pl * * Download: adm.ct8.pl/r/download * * * * Plugins: Streamer * * Modules: None * * * * File Version: 3.3.1 * * Streamer Version: 2.9.4 * * * * Functions: * * IsValidVehicleModelID(modelid); * * GetVehiclePanels(vehicleid,&front_left,&front_right,&rear_left,&rear_right,&windshield,&front_bumper,&rear_bumper); * * SetVehiclePanels(vehicleid,front_left,front_right,rear_left,rear_right,windshield,front_bumper,rear_bumper); * * GetVehicleLights(vehicleid,&front_left_light,&front_right_light,&back_lights); * * SetVehicleLights(vehicleid,front_left_light,front_right_light,back_lights); * * GetVehicleDoors(vehicleid,&bonnet,&boot,&driver_door,&passenger_door); * * SetVehicleDoors(vehicleid,bonnet,boot,driver_door,passenger_door); * * GetVehicleTires(vehicleid,&front_left,&front_right,&rear_left,&rear_right); * * SetVehicleTires(vehicleid,front_left,front_right,rear_left,rear_right); * * GetVehicleWindowState(vehicleid,doorid); * * SetVehicleWindowState(vehicleid,doorid,window_state); * * GetVehicleDoorState(vehicleid,doorid); * * SetVehicleDoorState(vehicleid,doorid,door_state); * * IsValidVehicleDoor(vehicleid,doorid); * * GetVehicleModelDoorAmount(modelid); * * GetVehicleDoorAmount(vehicleid); * * SwitchVehicleEngine(vehicleid,bool:engine_status); * * SwitchVehicleLight(vehicleid,bool:light_status); * * SwitchVehicleAlarm(vehicleid,bool:alarm_status); * * SwitchVehicleDoors(vehicleid,bool:doors_status); * * SwitchVehicleBonnet(vehicleid,bool:bonnet_status); * * SwitchVehicleBoot(vehicleid,bool:boot_status); * * SwitchVehicleObjective(vehicleid,bool:objective_status); * * GetVehicleParams(vehicleid,type); * * SetVehicleParams(vehicleid,type,status,delay = 0); * * GetVehicleRandomColors(modelid,&color1,&color2); * * GetNearestVehicleToPos(Float:x,Float:y,Float:z,worldid=-1,interiorid=-1,Float:maxdist=0.0,bool:fast=true,except_vid=0); * * GetNearestVehicleToPlayer(playerid,Float:maxdist=0.0,bool:fast=false); * * GetVehicleDriver(vehicleid); * * Float:GetVehicleModelTopSpeed(modelid); * * Float:GetVehicleTopSpeed(vehicleid); * * SetVehicleInterior(vehicleid,interiorid); * * GetVehicleSeats(vehicleid); * * GetVehicleModelSeats(modelid); * * IsVehicleSeatOccupied(vehicleid,seatid); * * IsValidVehicle(vehicleid); * * RemoveVehiclePaintjob(vehicleid); * * SetVehicleHorn(vehicleid,soundid); * * GetVehicleHorn(vehicleid); * * RestoreVehicleHorn(vehicleid); * * GetVehicleBomb(vehicleid); * * IsVehicleBombed(vehicleid); * * RemoveVehicleBomb(vehicleid); * * SetVehicleBomb(vehicleid,time = 1000); * * IsVehicleBombActivated(vehicleid); * * Float:EVF::GetVehicleSpeed(vehicleid); * * SetVehicleSpeedCap(vehicleid,Float:maxspeed); * * Float:GetVehicleSpeedCap(vehicleid); * * DisableVehicleSpeedCap(vehicleid); * * SetVehicleFuel(vehicleid,fuel); * * GetVehicleFuel(vehicleid); * * ToggleVehicleFuel(vehicleid,bool:toggle); * * IsVehicleFuelToggled(vehicleid); * * ToggleVehicleSticky(vehicleid,bool:toggle); * * IsVehicleSticky(vehicleid); * * ToggleUnoccupiedVehicleDamage(vehicleid,bool:toggle); * * IsUnoccupiedDamageToggled(vehicleid); * * ToggleVehiclePetrolCapDestroy(vehicleid,bool:toggle); * * IsPetrolCapDestroyToggled(vehicleid); * * IsVehicleDamageToggled(vehicleid,type); * * ToggleVehicleDamageUpdate(vehicleid,type,toggle); * * GetVehicleNextSeat(vehicleid,passenger = 1); * * TeleportVehicle(vehicleid,Float:x,Float:y,Float:z,Float:angle,worldid = -1,interiorid = -1); * * GetVehicleSlotAttachedObject(vehicleid,slot); * * IsObjectAttachedToVehicle(objectid,vehicleid); * * EVF::UpdateVehicleDamage(vehicleid,type); * * EVF::UpdateVehicleDamageStatus(vehicleid,type,update); * * EVF::GetVehicleDamageStatus(vehicleid,type); * * SetVehicleNeonLights(vehicleid,bool:enable = true,color = RED_NEON,slotid = 0); * * VehicleSupportsNeonLights(modelid); * * GetVehicleNeonLightsState(vehicleid,slotid = 0); * * IsToggledVehicleBulletproof(vehicleid); * * ToggleVehicleBulletproof(vehicleid,bool:toggle); * * GetComponentName(componentid,name[],len = sizeof(name)); * * GetComponentTypeName(component); * * EVF::IsPlayerInModShop(playerid); * * IsValidComponentForVehicle(vehicleid,componentid); * * GetVehicleComponentPrice(componentid); * * GetVehicleName(vehicleid); * * GetVehicleModelName(modelid); * * EVF::IsTrailer(vehicleid); * * EVF::IsCarBlinking(vehicleid); * * EVF::DisableCarBlinking(vehicleid); * * EVF::SetCarBlinking(vehicleid,side,bool:skip=false); * * EVF::ToggleVehicleBlinking(bool:toggle); * * EVF::IsToggledVehicleBlinking(); * * * * Remote functions: * * EVF_ImportVehicle(vehicleid,modelid,Float:x,Float:y,Float:z,Float:angle,color1,color2,worldid,interiorid,unoccupied_damage); * * EVF_RemoveVehicle(vehicleid); * * * * Compatible with YSF Functions: * * GetVehicleColor(vehicleid,&color1,&color2); * * GetVehiclePaintjob(vehicleid); * * GetVehicleInterior(vehicleid); * * EVF::GetVehicleSpawnInfo(vehicleid,&Float:x,&Float:y,&Float:z,&Float:rotation,&worldid,&interiorid); * * EVF::SetVehicleSpawnInfo(vehicleid,Float:x,Float:y,Float:z,Float:rotation,worldid,interiorid); * * IsVehicleOccupied(vehicleid); * * * * Callbacks: * * OnVehicleCreated(vehicleid); //Called when a vehicle is created. * * OnVehicleDestroyed(vehicleid); //Called when a vehicle is deleted. * * OnTrailerHooked(playerid,vehicleid,trailerid); //Called when a trailer is hooked. * * OnTrailerUnhooked(playerid,vehicleid,trailerid); //Called when a trailer is unhooked. * * OnPlayerShotVehicle(playerid,vehicleid,weaponid,Float:amount,bodypart); //Called when a player shoots at a vehicle. * * OnVehiclePosChange(vehicleid,Float:newx,Float:newy,Float:newz,Float:newangle,Float:oldx,Float:oldy,Float:oldz,Float:oldangle); * * OnVehicleVelocityChange(vehicleid,Float:newx,Float:newy,Float:newz,Float:oldx,Float:oldy,Float:oldz); * * OnVehicleHealthChange(vehicleid,Float:newhealth,Float:oldhealth); * * OnVehicleFuelChange(vehicleid,newfuel,oldfuel); * * OnVehicleBombDeactivate(vehicleid); * * OnVehicleBombExplode(vehicleid); * * OnPlayerEditVehicle(playerid,vehicleid,response,Float:fX,Float:fY,Float:fZ,Float:fRotZ); * * OnPlayerEditVehicleObject(playerid,vehicleid,response,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz); * * OnPlayerReachSpeedCapLimit(playerid,vehicleid,Float:speed); * * OnVehicleBombActivate(vehicleid); * * OnVehicleModEx(playerid,vehicleid,componentid,price,illegal); * * * * Definitions: * * INVALID_SEAT_ID * * INVALID_PAINTJOB_ID * * VEHICLE_UPDATE_INTERVAL * * MAX_VEHICLE_ATTACHED_OBJECTS * * RESET_PAINTJOB_ID * * MAX_VEHICLE_PARAMS * * MAX_VEHICLE_MODELS * * DEFAULT_VEHICLE_FUEL * * VEHICLE_SPEED_MULTIPLIER * * MULTIPLIER_FUEL_SYSTEM * * * * BONNET_HEALTHY_CLOSED * * BONNET_HEALTHY_OPENED * * BONNET_DAMAGED_CLOSED * * BONNET_DAMAGED_OPENED * * BONNET_MISSING * * * * BOOT_HEALTHY_CLOSED * * BOOT_HEALTHY_OPENED * * BOOT_DAMAGED_CLOSED * * BOOT_DAMAGED_OPENED * * BOOT_MISSING * * * * DOOR_HEALTHY_CLOSED * * DOOR_HEALTHY_OPENED * * DOOR_DAMAGED_CLOSED * * DOOR_DAMAGED_OPENED * * DOOR_MISSING * * * * BUMPER_HEALTHY * * BUMPER_CRUSHED * * BUMPER_HANGING * * BUMPER_MISSING * * * * WINDSHIELD_HEALTHY * * WINDSHIELD_DAMAGED * * WINDSHIELD_MISSING * * * * LIGHT_ENABLE * * LIGHT_DISABLE * * * * TIRE_HEALTHY * * TIRE_DAMAGED * * * * DOOR_DRIVER * * DOOR_PASSENGER * * DOOR_BACKLEFF * * DOOR_BACKRIGHT * * * * VEHICLE_DAMAGE_PANELS * * VEHICLE_DAMAGE_DOORS * * VEHICLE_DAMAGE_LIGHTS * * VEHICLE_DAMAGE_TIRES * * * * RED_NEON * * BLUE_NEON * * GREEN_NEON * * YELLOW_NEON * * PINK_NEON * * WHITE_NEON * * * * EVF_CAR_BLINK_NONE * * EVF_CAR_BLINK_LEFT * * EVF_CAR_BLINK_RIGHT * * EVF_CAR_BLINK_EMERGENCY * * * * MIN_VEHICLE_COMPONENT_ID * * MAX_VEHICLE_COMPONENT_ID * * * * Enums: * * enum 'EVF::VehicleProperties' * * # e_VEHICLE_PAINTJOB * * # e_VEHICLE_INTERIOR * * # e_VEHICLE_COLOR_1 * * # e_VEHICLE_COLOR_2 * * # e_VEHICLE_HORN * * # e_VEHICLE_SPAWN_X * * # e_VEHICLE_SPAWN_Y * * # e_VEHICLE_SPAWN_Z * * # e_VEHICLE_SPAWN_A * * # e_VEHICLE_SPAWN_VW * * # e_VEHICLE_SPAWN_INT * * # e_VEHICLE_SPEED_CAP * * # e_VEHICLE_FUEL_USE * * # e_VEHICLE_FUEL * * # e_VEHICLE_STICKY * * # e_VEHICLE_UNO_DAMAGE * * # e_VEHICLE_CAP_DAMAGE * * # e_VEHICLE_EDITOR * * # e_VEHICLE_DAMAGE_PANELS * * # e_VEHICLE_DAMAGE_DOORS * * # e_VEHICLE_DAMAGE_LIGHTS * * # e_VEHICLE_DAMAGE_TIRES * * # e_VEHICLE_BOMB * * # e_VEHICLE_BOMB_TIMER * * # e_VEHICLE_BULLETPROOF * * # e_VEHICLE_STORED * * * * enum 'EVF::VehicleBodyPart' * * # VEHICLE_BODYPART_UNKNOWN * * # VEHICLE_BODYPART_FL_WHEEL - Front Left * * # VEHICLE_BODYPART_FR_WHEEL - Front Right * * # VEHICLE_BODYPART_BL_WHEEL - Back Left * * # VEHICLE_BODYPART_BR_WHEEL - Back Right * * # VEHICLE_BODYPART_PETROLCAP * * * * enum 'EVF::ParamTypes' * * # VEHICLE_TYPE_ENGINE * * # VEHICLE_TYPE_LIGHTS * * # VEHICLE_TYPE_ALARM * * # VEHICLE_TYPE_DOORS * * # VEHICLE_TYPE_BONNET * * # VEHICLE_TYPE_BOOT * * # VEHICLE_TYPE_OBJECTIVE * * * **********************************************************************************************************************************/ /* //Check Version EVF.inc #if !defined _EVF_include #error [ADM] You need EVF.inc v3.3.1 #elseif !defined EVF_Version #error [ADM] Update you EVF.inc to v3.3.1 #elseif (EVF_Version < 30301) #error [ADM] Update you EVF.inc to v3.3.1 #endif */ #if defined _EVF_include #endinput #endif #define _EVF_include /* #if defined _samp_included #if (!defined GetPlayerPoolSize || !defined GetSVarInt) #error [ADM] This include requires SA:MP version 0.3.7 (adm.ct8.pl/r/download) #endif #else #error [ADM] This include requires SA:MP Include #endif */ #if defined _Vehicle_Ex #error [ADM] Please remove deprecated file VehicleEx.inc (already implemented) #endif #if defined gVehiclePetrolCapOffsets #error [ADM] Please remove deprecated file vehicleplus.inc (already implemented) #endif #if ((defined g_anltv_VehicleData) && (defined SetVehicleNeonLights)) #error [ADM] Please remove deprecated file SetVehicleNeonLights.inc (already implemented) #endif //Update Checker #if !defined HTTP #tryinclude <a_http> #endif #if !defined HTTP #error [ADM] Please include a_http.inc before EVF.inc #endif #define EVF_Version (30301) //a.b.c 10000*a+100*b+c #define EVF_SAMP_Version "0.3.7" #define EVF_Function:: stock #define EVF_Public::%0(%1) forward %0(%1); public %0(%1) #define EVF:: EVF_ //Detect Streamer Plugin #if ((defined Streamer_AppendArrayData) && (defined INVALID_STREAMER_ID)) #define EVF_Streamer #endif #if !defined IsValidVehicle native IsValidVehicle(vehicleid); #endif #if !defined isnull #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1])))) #endif #if !defined INVALID_SEAT_ID #define INVALID_SEAT_ID -1 #endif #if !defined INVALID_PAINTJOB_ID #define INVALID_PAINTJOB_ID -1 #endif #if !defined MAX_VEHICLE_ATTACHED_OBJECTS #define MAX_VEHICLE_ATTACHED_OBJECTS 30 #endif #if !defined VEHICLE_UPDATE_INTERVAL #define VEHICLE_UPDATE_INTERVAL 250 #endif #if !defined VEHICLE_SPEED_MULTIPLIER #define VEHICLE_SPEED_MULTIPLIER 170.0 #endif #if !defined MULTIPLIER_FUEL_SYSTEM #define MULTIPLIER_FUEL_SYSTEM 1 #endif #define RESET_PAINTJOB_ID 3 #define MAX_VEHICLE_PARAMS 7 #define MAX_VEHICLE_MODELS 212 #if !defined DEFAULT_VEHICLE_FUEL #define DEFAULT_VEHICLE_FUEL 1000 #endif #define MAX_VEHICLE_FUEL DEFAULT_VEHICLE_FUEL #define BONNET_HEALTHY_CLOSED 0 #define BONNET_HEALTHY_OPENED 1 #define BONNET_DAMAGED_CLOSED 2 #define BONNET_DAMAGED_OPENED 3 #define BONNET_MISSING 4 #define BOOT_HEALTHY_CLOSED 0 #define BOOT_HEALTHY_OPENED 1 #define BOOT_DAMAGED_CLOSED 2 #define BOOT_DAMAGED_OPENED 3 #define BOOT_MISSING 4 #define DOOR_HEALTHY_CLOSED 0 #define DOOR_HEALTHY_OPENED 1 #define DOOR_DAMAGED_CLOSED 2 #define DOOR_DAMAGED_OPENED 3 #define DOOR_MISSING 4 #define BUMPER_HEALTHY 0 #define BUMPER_CRUSHED 1 #define BUMPER_HANGING 2 #define BUMPER_MISSING 3 #define WINDSHIELD_HEALTHY 0 #define WINDSHIELD_DAMAGED 1 #define WINDSHIELD_MISSING 2 #define LIGHT_ENABLE 0 #define LIGHT_DISABLE 1 #define TIRE_HEALTHY 0 #define TIRE_DAMAGED 1 #define DOOR_DRIVER 1 #define DOOR_PASSENGER 2 #define DOOR_BACKLEFF 3 #define DOOR_BACKRIGHT 4 #define VEHICLE_DAMAGE_PANELS 0 #define VEHICLE_DAMAGE_DOORS 1 #define VEHICLE_DAMAGE_LIGHTS 2 #define VEHICLE_DAMAGE_TIRES 3 #define EVF_CAR_BLINK_NONE -1 #define EVF_CAR_BLINK_LEFT 0 #define EVF_CAR_BLINK_RIGHT 1 #define EVF_CAR_BLINK_EMERGENCY 2 #define MAX_VEHICLE_NEON_SLOT 3 #define RED_NEON 18647 #define BLUE_NEON 18648 #define GREEN_NEON 18649 #define YELLOW_NEON 18650 #define PINK_NEON 18651 #define WHITE_NEON 18652 #define MIN_VEHICLE_COMPONENT_ID 1000 #define MAX_VEHICLE_COMPONENT_ID 1193 enum EVF::VehicleProperties { e_VEHICLE_PAINTJOB, e_VEHICLE_INTERIOR, e_VEHICLE_COLOR_1, e_VEHICLE_COLOR_2, e_VEHICLE_HORN, e_VEHICLE_SPAWN_X, e_VEHICLE_SPAWN_Y, e_VEHICLE_SPAWN_Z, e_VEHICLE_SPAWN_A, e_VEHICLE_SPAWN_VW, e_VEHICLE_SPAWN_INT, e_VEHICLE_SPEED_CAP, e_VEHICLE_FUEL_USE, e_VEHICLE_FUEL, e_VEHICLE_STICKY, e_VEHICLE_UNO_DAMAGE, e_VEHICLE_CAP_DAMAGE, e_VEHICLE_EDITOR, e_VEHICLE_DAMAGE_PANELS, e_VEHICLE_DAMAGE_DOORS, e_VEHICLE_DAMAGE_LIGHTS, e_VEHICLE_DAMAGE_TIRES, e_VEHICLE_BOMB, e_VEHICLE_BOMB_TIMER, e_VEHICLE_BULLETPROOF, e_VEHICLE_STORED }; enum EVF::VehicleBodyPart { VEHICLE_BODYPART_UNKNOWN, VEHICLE_BODYPART_FL_WHEEL, //front left VEHICLE_BODYPART_FR_WHEEL, //front right VEHICLE_BODYPART_BL_WHEEL, //back left VEHICLE_BODYPART_BR_WHEEL, //back right VEHICLE_BODYPART_PETROLCAP }; enum EVF::ParamTypes { VEHICLE_TYPE_ENGINE, VEHICLE_TYPE_LIGHTS, VEHICLE_TYPE_ALARM, VEHICLE_TYPE_DOORS, VEHICLE_TYPE_BONNET, VEHICLE_TYPE_BOOT, VEHICLE_TYPE_OBJECTIVE }; enum EVF::VehicleData { #if defined EVF_Streamer STREAMER_TAG_OBJECT:e_attached_object[MAX_VEHICLE_ATTACHED_OBJECTS], #endif Float:e_vel_x, Float:e_vel_y, Float:e_vel_z, Float:e_pos_x, Float:e_pos_y, Float:e_pos_z, Float:e_pos_a, Float:e_health, e_uptime }; enum EVF::PlayerData { e_editor_vehicle #if defined EVF_Streamer , STREAMER_TAG_OBJECT:e_editor_object #endif }; enum EVF::NeonOffset { Float:EVF::NeonX, Float:EVF::NeonY, Float:EVF::NeonZ }; #if defined EVF_Streamer enum EVF::BlinkOffset { Float: EVF::X, Float: EVF::Y, Float: EVF::Z, Float: EVF::rX, Float: EVF::rY, Float: EVF::rZ }; #endif new EVF::VehicleProperty[MAX_VEHICLES][EVF::VehicleProperties]; new const EVF::NeonOffsetData[MAX_VEHICLE_MODELS][EVF::NeonOffset] = { {-0.924999,0.009999,-0.674999}, {-0.979999,0.074999,-0.489999}, {-1.034999,-0.029999,-0.579999}, {-0.884999,1.834998,-1.099999}, {-0.839999,-0.064999,-0.419999}, {-0.914999,0.000000,-0.534999}, {-1.129999,0.354999,-1.219999}, {-1.214999,0.125000,-0.759999}, {-0.664999,0.709999,-0.889999}, {-0.914999,-0.294999,-0.474999}, {-0.879999,0.000000,-0.389999}, {-0.969999,0.004999,-0.559999}, {-0.994999,-0.154999,-0.569999}, {-0.919999,-0.069999,-0.719999}, {-0.759999,-0.469999,-0.524999}, {-0.949999,-0.009999,-0.524999}, {-1.259999,-0.604999,-0.664999}, {-2.255004,0.859999,-0.124999}, {-1.004999,0.089999,-0.829999}, {-0.934999,-0.009999,-0.584999}, {-0.954999,-0.009999,-0.444999}, {-0.929999,-0.029999,-0.589999}, {-0.889999,0.009999,-0.609999}, {-0.999999,0.164999,-0.714999}, {-0.739999,0.039999,-0.234999}, {-0.639999,2.475009,-0.789999}, {-0.969999,0.000000,-0.464999}, {-1.124999,-0.714999,-0.734999}, {-1.124999,0.054999,-0.759999}, {-0.844999,0.004999,-0.474999}, {0.0,0.0,0.0}, {-1.304998,2.300005,-0.714999}, {0.0,0.0,0.0}, {-0.579999,0.994999,-0.874999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-0.859999,-0.024999,-0.489999}, {-1.314998,2.245003,-0.724999}, {-0.969999,-0.034999,-0.674999}, {-0.884999,0.034999,-0.644999}, {-0.914999,-0.045000,-0.899999}, {0.0,0.0,0.0}, {-1.004999,-0.074999,-0.604999}, {-0.809999,2.770015,-1.174999}, {-1.064999,0.000000,0.135000}, {-0.949999,0.000000,-0.519999}, {0.0,0.0,0.0}, {-1.004999,0.259999,-0.769999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-0.984999,-0.194999,-0.519999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-0.579999,0.979999,-0.859999}, {-0.764999,-0.179999,-0.464999}, {0.0,0.0,0.0}, {-0.959999,-0.039999,-0.594999}, {-0.919999,-0.069999,-0.719999}, {-1.399998,0.554999,-1.819998}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-0.989999,-0.064999,-0.489999}, {-0.989999,-0.044999,-0.484999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-1.119999,-0.149999,-0.359999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-0.994999,-0.064999,-0.544999}, {-0.904999,-0.054999,-0.549999}, {0.0,0.0,0.0}, {-0.979999,0.019999,-0.514999}, {-0.804999,0.064999,-0.519999}, {-0.854999,0.090000,-0.454999}, {-0.879999,0.000000,-0.489999}, {0.0,0.0,0.0}, {-0.989999,0.000000,-0.759999}, {-0.834999,-0.149999,-0.744999}, {0.0,0.0,0.0}, {-0.629999,0.164999,-0.374999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-1.019999,0.110000,-0.679999}, {-1.054999,0.125000,-0.604999}, {-0.874999,-0.009999,-0.569999}, {-0.909999,0.000000,-0.459999}, {0.0,0.0,0.0}, {-0.909999,-0.199999,-0.639999}, {-1.024999,0.184999,-0.809999}, {-0.854999,0.029999,-0.469999}, {0.0,0.0,0.0}, {-1.149999,0.269999,-0.654999}, {-0.969999,-1.404998,-0.199999}, {-0.969999,0.189999,-0.574999}, {0.0,0.0,0.0}, {-0.909999,0.029999,-0.639999}, {-0.909999,-0.184999,-0.639999}, {-0.989999,-0.059999,-0.494999}, {-1.019999,0.110000,-0.679999}, {-0.904999,-0.249999,-0.509999}, {-1.084999,-0.024999,-0.589999}, {-1.334998,-0.424999,-0.979999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-0.969999,1.669998,-1.174999}, {-1.454998,0.439999,-1.854998}, {-0.989999,0.024999,-0.584999}, {-0.959999,0.004999,-0.554999}, {-1.049999,0.110000,-0.439999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-0.689999,1.489998,-1.319998}, {-1.054999,0.499999,-0.329999}, {-0.899999,0.000000,-0.564999}, {-0.944999,0.154999,-0.419999}, {-0.924999,0.059999,-0.529999}, {-0.934999,-0.110000,-0.429999}, {0.0,0.0,0.0}, {-0.144999,0.314999,-0.444999}, {0.0,0.0,0.0}, {-0.924999,-0.034999,-0.479999}, {-0.984999,0.164999,-0.564999}, {-1.069999,-0.034999,-0.569999}, {-0.954999,-0.019999,-0.579999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-1.004999,-0.049999,-0.019999}, {-1.024999,-0.090000,-0.639999}, {-0.904999,0.000000,-0.414999}, {-0.894999,0.014999,-0.539999}, {-0.904999,0.009999,-0.409999}, {-1.089999,0.000000,-0.709999}, {-0.939999,-0.029999,-0.564999}, {-1.039999,-0.100000,-0.474999}, {-0.884999,0.059999,-0.479999}, {-1.769998,1.484998,-1.774998}, {-0.949999,0.105000,-0.439999}, {-1.089999,-0.059999,-0.554999}, {-0.964999,0.004999,-0.564999}, {-1.034999,0.749999,-0.254999}, {0.0,0.0,0.0}, {-1.109999,0.009999,-0.534999}, {-0.754999,0.000000,-0.464999}, {-1.119999,0.000000,0.184999}, {-1.129999,0.044999,0.074999}, {-0.894999,-0.089999,-0.374999}, {-0.964999,0.000000,-0.444999}, {-1.004999,0.054999,-0.414999}, {-0.919999,0.130000,-0.574999}, {-0.909999,0.120000,-0.404999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-0.824999,0.000000,-0.414999}, {-0.989999,-0.049999,-0.479999}, {-1.089999,0.309999,-0.609999}, {-0.334999,0.100000,-0.374999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-0.924999,0.004999,-0.334999}, {-1.019999,-0.140000,-0.419999}, {0.0,0.0,0.0}, {-1.429998,-0.649999,-0.879999}, {-1.014999,0.000000,-0.484999}, {-1.089999,0.014999,-0.474999}, {0.0,0.0,0.0}, {-0.984999,-0.194999,-0.709999}, {-0.674999,0.259999,0.130000}, {0.0,0.0,0.0}, {-1.019999,-0.009999,-0.354999}, {0.0,0.0,0.0}, {-1.009999,-0.064999,-0.534999}, {-1.374998,0.000000,-0.664999}, {-0.909999,0.000000,-0.359999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-0.974999,0.000000,-0.469999}, {-0.969999,0.000000,-0.464999}, {-1.004999,-0.014999,-0.414999}, {-1.019999,0.115000,-0.684999}, {-0.959999,0.204999,-0.499999}, {0.0,0.0,0.0}, {-1.024999,0.000000,-0.549999}, {-0.954999,0.034999,-0.629999}, {-0.989999,-0.064999,-0.489999}, {-0.904999,0.009999,-0.409999}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {0.0,0.0,0.0}, {-1.149999,0.269999,-0.654999}, {0.0,0.0,0.0}, {0.0,0.0,0.0} }; #if defined EVF_Streamer new const EVF::BlinkOffsetData[][EVF::BlinkOffset] = { {-0.9001, 2.0490, -0.0965, -0.9605, -2.2404, -0.0965}, {-0.9686, 2.5393, 0.0235, -0.9970, -2.2863, 0.0235}, {-0.8788, 2.5160, -0.0565, -0.9208, -2.5936, 0.0435}, {-1.3897, 3.6007, -0.2194, -1.1904, -0.9415, 1.8389}, {-0.7236, 2.1715, -0.0365, -0.7906, -2.7052, 0.0635}, {-0.9127, 2.2766, -0.0565, -0.8723, -2.6526, -0.0565}, {-2.2165, 4.9242, -0.0332, -2.0785, -5.2054, 0.5468}, {-0.9887, 4.0622, -0.0913, -1.0141, -3.4034, -0.0913}, {-0.9659, 4.7615, -0.2513, -0.8430, -3.9722, -0.5113}, {-0.7859, 3.5522, -0.0313, -0.8027, -3.8228, -0.0313}, {-0.825, 2.105, 0.0635, -0.8723, -2.1926, 0.1235}, {-0.9405, 2.6710, -0.1825, -0.9636, -2.4525, 0.0825}, {-0.8965, 2.6478, -0.0575, -0.9592, -3.4870, -0.1575}, {-0.8669, 2.5464, -0.0913, -0.8209, -2.5829, 0.0687}, {-0.8069, 2.7473, 0.0087, -0.9058, -3.2050, 0.1094}, {-0.8738, 2.4866, -0.2357, -0.7792, -2.3501, 0.0450}, {-0.8469, 2.9073, 0.0087, -1.0352, -3.5937, 1.4522}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-0.9511, 2.3820, -0.2357, -1.0081, -2.4904, -0.1557}, {-1.0742, 2.3978, -0.1757, -0.8127, -2.8620, -0.1557}, {-1.0142, 2.2978, -0.0157, -0.9637, -2.6744, 0.0043}, {-0.9013, 2.5343, -0.1357, -0.5921, -2.9228, -0.1957}, {-0.7813, 2.1543, -0.2657, -0.8985, -2.4349, -0.1057}, {-0.7817, 2.2093, -0.0313, -0.8340, -2.1794, 0.0596}, {-0.7350, 1.4505, 0.1087, -0.7062, -1.4778, 0.2996}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-1.0006, 2.3164, -0.0100, -0.9627, -2.6930, -0.0100}, {-0.8728, 2.5856, 0.1887, -0.9831, -3.8383, -0.3495}, {-0.8728, 2.5856, -0.2103, -0.9045, -2.8871, 1.2466}, {-0.7942, 2.2846, -0.2500, -0.8397, -2.3849, -0.0070}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-0.9771, 5.8479, 0.3497, -1.0300, -5.7043, -0.1041}, {-1.7168, 4.0330, 0.4497, -1.5830, -4.3414, 0.7039}, {-1.2619, 3.7708, -0.2163, -1.2966, -4.6534, -0.1051}, {0.0, 0.0, 0.0, -0.4811, -1.9838, -0.0670}, {0.0000, 0.0000, 0.0000, -1.0697, -3.9690, -1.1053}, //trailer {-0.8495, 2.2519, -0.0070, -0.8948, -2.4838, 0.1130}, {-1.1156, 5.5395, -0.2163, -0.9856, -5.3099, 1.6458}, {-1.1128, 2.3675, -0.2870, -1.0992, -2.4601, -0.2870}, {-0.8381, 2.3101, -0.1470, -0.8221, -2.6534, -0.1070}, {-0.8270, 2.5573, -0.3173, -0.8676, -2.5376, -0.0149}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-1.0354, 2.8278, -0.1870, -1.0226, -3.0877, -0.1270}, {-1.0610, 5.7528, -0.9573, -1.2388, -7.1392, -0.8250}, {-0.9880, 2.7188, 0.6140, -1.0722, -3.0184, 0.7248}, {-0.9590, 2.3460, -0.0840, -0.9773, -2.8049, -0.0840}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, { -0.1992, -0.9229, -0.1270}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, { 0.0000, 0.0000, 0.0000, -1.0697, -3.9690, -1.1053}, //trailer {-0.9826, 1.9642, -0.1399, -0.8894, -2.3991, -0.0199}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, -1.3866, -4.5162, -0.7399}, {0.0000, 0.0000, 0.0000, -1.3045, -4.6123, 0.4601}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-0.9513, 2.4197, -0.1399, -0.9703, -2.7779, 0.0201}, {-0.8214, 2.5716, -0.1274, -0.8760, -2.5775, 0.1127}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, -0.2054, -0.9359, -0.1399}, {-0.2276, 0.7185, 0.3201, -0.1952, -1.0037, 0.1601}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, -1.0201, -2.7994, 0.0401}, {0.0000, 0.0000, 0.0000, -0.9401, -3.0594, 0.1601}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-1.0259, 2.1382, 0.2001, -1.0433, -2.5463, 0.1201}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, -0.9833, -2.7663, -0.0599}, {-0.8681, 2.4086, -0.3399, -0.8632, -2.7629, -0.2399}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-0.8081, 2.6686, -0.1999, -0.9945, -2.6987, 0.0801}, {-1.0938, 2.0255, 0.1001, -1.0579, -2.5378, -0.2799}, {-0.9671, 2.4844, 0.0201, -0.9578, -2.7556, 0.0601}, {-0.5897, 2.2607, -0.4399, -0.9183, -2.3388, -0.1399}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-0.8841, 2.4094, -0.3399, -0.8685, -2.5676, 0.0201}, {-0.7770, 2.6235, -0.0199, -0.6709, -2.7712, -0.1999}, { 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-0.6104, 1.7180, 0.2201, -0.7074, -1.3681, 0.1201}, {0.0000, 0.0000, 0.0000, -0.5919, -3.2353, 0.9601}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-1.1024, 2.5796, 0.0401, -1.1261, -2.6473, 0.1601}, {-1.0971, 3.1462, 0.0401, -1.1327, -3.1055, 0.1601}, {-0.8495, 2.5284, -0.0799, -0.8870, -2.7776, 0.0001}, {-0.7905, 2.4656, -0.0599, -0.9075, -2.8130, 0.0001}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-0.8513, 2.3630, -0.2199, -0.8275, -2.8485, 0.1401}, {-1.0909, 2.3818, 0.0001, -1.1540, -2.1156, -0.0399}, {-0.9219, 2.1787, 0.0401, -0.7095, -2.1087, 0.0801}, {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000}, {-0.8915, 3.0670, 0.2201, -0.9740, -3.0460, 0.3601}, {-0.7725, 2.4576, -0.1999, -1.1318, -3.4186, 0.1401}, {-0.9152, 1.9097, -0.0355, -0.7552, -1.9266, -0.0355}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-0.8723, 2.5986, -0.1770, 0.0, 0.0, 0.0}, {-0.8579, 2.3582, -0.0213, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.1068, 2.5744, 0.0086, -1.1365, -2.6250, 0.1679}, {-0.7672, 2.2106, -0.3185, -0.9113, -2.3474, -0.0273}, {-1.1143, 2.6057, -0.0456, -1.1410, -2.9714, -0.0456}, {-0.7012, 3.0199, -0.6678, -1.3807, -3.3356, 1.2628}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.2341, 4.2204, 0.0806, 0.0, 0.0, 0.0}, {-1.4241, 4.4811, -0.7354, -1.2973, -4.8274, -0.8974}, {-0.9512, 2.7208, -0.0543, -0.9926, -2.7809, -0.0348}, {-0.9401, 2.7868, -0.0726, -1.0208, -2.7461, -0.1324}, {-0.9166, 2.6548, -0.0487, -1.0124, -2.8219, -0.0487}, //fake {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-0.2607, 0.6038, 0.2881, -0.1973, -0.9958, 0.0638}, {-0.9279, 3.6538, -0.0473, -1.3003, -3.9309, -1.0661}, //fake back {-0.8576, 2.9431, 0.1425, -1.0428, -2.9851, -0.1486}, //fake back {-0.9421, 2.3087, -0.1128, -0.9559, -2.2882, -0.0411}, {-0.9351, 2.4078, -0.0242, -0.9825, -2.2344, 0.0844}, {-0.8783, 2.5102, -0.1526, -0.8133, -2.5965, -0.3237}, //fake back {-1.0177, 2.5256, 0.0698, -1.0505, -2.5713, 0.2047}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-0.4216, 1.5030, -0.1191, -0.5225, -1.0517, 0.4484}, //fake {-4.0331, 3.9619, -0.9118, -1.5976, -0.3739, 0.4484}, //fake! {-0.9410, 2.3774, 0.0985, -0.9852, -2.4663, -0.0020}, {-1.0159, 2.9278, -0.1698, -0.8236, -2.7548, -0.0574}, {-0.8265, 2.5014, -0.2084, -0.9267, -2.6058, -0.1784}, {-0.8577, 2.3943, -0.1248, -0.8736, -3.0999, -0.0900}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-0.9827, 2.5810, -0.1248, -1.0597, -2.7121, -0.0842}, {-0.6055, 2.3378, -0.2108, -0.7826, -2.1992, 0.0913}, {-0.9712, 2.6252, -0.0064, -0.8281, -2.9729, -0.0577}, {-0.8414, 2.2904, 0.0719, -0.9831, -2.6214, -0.0116}, //fake front {-0.7346, 3.5720, 0.0200, -0.8597, -3.2242, -0.5918}, {-0.4372, 1.6776, -0.0400, -0.7955, -2.0453, -0.2888}, {-1.1294, 1.0702, 0.0719, -1.0580, -2.6948, 0.0719}, {-0.9582, 2.5222, 0.0271, -0.9937, -2.5915, 0.0719}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-0.9264, 2.4914, 0.0271, -0.9070, -2.5802, 0.0271}, {-1.0477, 2.5642, -0.1807, -1.0302, -2.6549, -0.1297}, {-0.9334, 2.6344, -0.0448, -0.9785, -3.0524, 0.0366}, {-0.8757, 3.0634, 0.3600, -0.9933, -2.9119, 0.4752}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-0.9409, 2.5345, 0.0600, -1.1112, -2.8095, 0.0651}, {-0.9236, 1.1282, -0.0462, 0.0, 0.0, 0.0}, {-0.9686, 2.5396, 0.5800, -1.1128, -2.8895, 0.7691}, {-0.9886, 2.4796, 0.7000, -1.0904, -2.7699, 0.6871}, {-0.9452, 2.0854, 0.0836, -0.9187, -2.4047, 0.3185}, {-0.9037, 2.4333, -0.0168, -0.8819, -2.2910, 0.1482}, {-0.9347, 2.5097, -0.2644, -0.9639, -2.2337, 0.1259}, {-0.9157, 2.5754, -0.0857, -0.9317, -2.5444, -0.0191}, {-0.9299, 2.3759, 0.0201, -0.8575, -2.2773, 0.1659}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-0.8503, 2.0545, 0.0346, -0.9249, -1.9224, 0.0816}, {-0.9539, 2.7226, 0.0346, -0.9506, -2.9199, 0.0346}, {-0.9942, 2.9212, -0.1543, -1.0077, -2.9164, -0.1543}, {-0.2962, 2.0729, -0.0171, -0.2384, -1.2180, 0.0720}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-0.3095, 0.7291, -0.0971, -0.4318, -0.8940, -0.0510}, {-0.7949, 3.0624, -0.3371, -0.8727, -3.0917, -0.4540}, {-0.4348, 1.6912, -0.2171, -0.4277, -1.1358, -0.2069}, {-0.9483, 2.3252, 0.1334, -0.9173, -2.7359, -0.0291}, {-0.9948, 2.4505, 0.1883, -0.9983, -3.1357, -0.0291}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.0478, 4.3687, -0.1800, -1.1188, -5.3472, -0.5099}, {-1.0598, 2.3634, 0.1013, -1.0873, -2.7596, 0.1013}, {-0.7970, 2.6313, -0.2429, -1.0776, -2.8302, 0.1013}, {0.0, 0.0, 0.0, -0.1975, -1.0375, 0.3448}, {-0.8583, 2.4404, -0.0571, -0.9214, -3.3625, 0.0521}, {-0.5225, 1.3799, 0.2429, -0.5486, -1.5684, 0.2462}, {0.0, 0.0, 0.0, -1.0452, -4.3338, -0.7298}, //trailer {-1.0068, 2.7905, 0.0907, -0.9760, -3.0160, 0.2088}, {-0.2872, 0.5383, 0.2009, -0.1703, -1.3533, 0.2784}, {-1.0236, 2.1415, -0.2834, -1.0832, -2.4851, 0.1047}, {-1.0116, 3.3590, 0.1029, -1.0679, -3.9639, -0.3029}, {-0.8107, 2.3905, 0.1834, -0.9605, -2.2799, 0.3761}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, -1.0590, -3.9902, -1.0809}, //trailer {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.0419, 2.2929, -0.0255, -1.0332, -2.6951, 0.0005}, {-1.0419, 2.2929, -0.0255, -1.0332, -2.6951, 0.0005}, {-1.0423, 2.3495, 0.0600, -1.0326, -2.6930, 0.0600}, {-1.0837, 2.5663, 0.0301, -1.1267, -2.6290, 0.1451}, {-0.8782, 2.6525, -0.0344, -1.0586, -2.6696, 0.0596}, {-0.8094, 3.0084, 0.5429, -0.9321, -3.0808, 0.9071}, {-1.0297, 2.0487, -0.0543, -0.8907, -2.5334, -0.3228}, {-0.9069, 2.6672, -0.1335, -0.8647, -2.5991, -0.1335}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, -0.5702, -1.5842, 0.7956}, //trailer {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-0.8972, 3.0244, 0.2629, -0.9349, -2.9809, 0.2791}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0} }; #endif new EVF::VehicleTrailerID[MAX_VEHICLES], EVF::VehicleTempData[MAX_VEHICLES][EVF::VehicleData], EVF::PlayerTempData[MAX_PLAYERS][EVF::PlayerData], EVF::ModShopStatus[MAX_PLAYERS]; #if defined EVF_Streamer new STREAMER_TAG_OBJECT:EVF::VehicleNeon[MAX_VEHICLES][MAX_VEHICLE_NEON_SLOT][2], STREAMER_TAG_OBJECT:EVF::Blink[MAX_VEHICLES][4], EVF::BlinkSide[MAX_VEHICLES], Float:EVF::BlinkR[MAX_VEHICLES], bool:EVF::VehicleBlinking = false; #endif new const Float:EVF::TopSpeed[MAX_VEHICLE_MODELS] = { 157.0, 147.0, 186.0, 110.0, 133.0, 164.0, 110.0, 148.0, 100.0, 158.0, 129.0, 221.0, 168.0, 110.0, 105.0, 192.0, 154.0, 270.0, 115.0, 149.0, 145.0, 154.0, 140.0, 99.0, 135.0, 270.0, 173.0, 165.0, 157.0, 201.0, 190.0, 130.0, 94.0, 110.0, 167.0, 0.0, 149.0, 158.0, 142.0, 168.0, 136.0, 145.0, 139.0, 126.0, 110.0, 164.0, 270.0, 270.0, 111.0, 0.0, 0.0, 193.0, 270.0, 60.0, 135.0, 157.0, 106.0, 95.0, 157.0, 136.0, 270.0, 160.0, 111.0, 142.0, 145.0, 145.0, 147.0, 140.0, 144.0, 270.0, 157.0, 110.0, 190.0, 190.0, 149.0, 173.0, 270.0, 186.0, 117.0, 140.0, 184.0, 73.0, 156.0, 122.0, 190.0, 99.0, 64.0, 270.0, 270.0, 139.0, 157.0, 149.0, 140.0, 270.0, 214.0, 176.0, 162.0, 270.0, 108.0, 123.0, 140.0, 145.0, 216.0, 216.0, 173.0, 140.0, 179.0, 166.0, 108.0, 79.0, 101.0, 270.0, 270.0, 270.0, 120.0, 142.0, 157.0, 157.0, 164.0, 270.0, 270.0, 160.0, 176.0, 151.0, 130.0, 160.0, 158.0, 149.0, 176.0, 149.0, 60.0, 70.0, 110.0, 167.0, 168.0, 158.0, 173.0, 0.0, 0.0, 270.0, 149.0, 203.0, 164.0, 151.0, 150.0, 147.0, 149.0, 142.0, 270.0, 153.0, 145.0, 157.0, 121.0, 270.0, 144.0, 158.0, 113.0, 113.0, 156.0, 178.0, 169.0, 154.0, 178.0, 270.0, 145.0, 165.0, 160.0, 173.0, 146.0, 0.0, 0.0, 93.0, 60.0, 110.0, 60.0, 158.0, 158.0, 270.0, 130.0, 158.0, 153.0, 151.0, 136.0, 85.0, 0.0, 153.0, 142.0, 165.0, 108.0, 162.0, 0.0, 0.0, 270.0, 270.0, 130.0, 190.0, 175.0, 175.0, 175.0, 158.0, 151.0, 110.0, 169.0, 171.0, 148.0, 152.0, 0.0, 0.0, 0.0, 108.0, 0.0, 0.0 }; new const EVF::CarColors[][]={ {16, 004, 001, 123, 001, 113, 001, 101, 001, 075, 001, 062, 001, 040, 001, 036, 001}, {16, 041, 041, 047, 047, 052, 052, 066, 066, 074, 074, 087, 087, 091, 091, 113, 113}, {16, 010, 010, 013, 013, 022, 022, 030, 030, 039, 039, 090, 090, 098, 098, 110, 110}, {16, 036, 001, 037, 001, 030, 001, 028, 001, 025, 001, 040, 001, 101, 001, 113, 001}, {16, 113, 039, 119, 050, 123, 092, 109, 100, 101, 101, 095, 105, 083, 110, 066, 025}, {16, 011, 001, 024, 001, 036, 001, 040, 001, 075, 001, 091, 001, 123, 001, 004, 001}, {2, 001, 001}, {2, 003, 001}, {2, 026, 026}, {2, 001, 001}, {16, 004, 001, 009, 001, 010, 001, 025, 001, 036, 001, 040, 001, 045, 001, 084, 001}, {16, 012, 001, 064, 001, 123, 001, 116, 001, 112, 001, 106, 001, 080, 001, 075, 001}, {16, 009, 001, 010, 008, 011, 001, 025, 008, 027, 001, 029, 008, 030, 001, 037, 008}, {16, 087, 001, 088, 001, 091, 001, 105, 001, 109, 001, 119, 001, 004, 001, 025, 001}, {16, 025, 001, 028, 001, 043, 001, 067, 001, 072, 001, 009, 001, 095, 001, 024, 001}, {16, 020, 001, 025, 001, 036, 001, 040, 001, 062, 001, 075, 001, 092, 001, 000, 001}, {2, 001, 003}, {0, 000, 000}, {16, 119, 119, 117, 227, 114, 114, 108, 108, 095, 095, 081, 081, 061, 061, 041, 041}, {16, 045, 075, 047, 076, 033, 075, 013, 076, 054, 075, 069, 076, 059, 075, 087, 076}, {2, 006, 001}, {16, 004, 001, 013, 001, 025, 001, 030, 001, 036, 001, 040, 001, 075, 001, 095, 001}, {14, 096, 025, 097, 025, 101, 025, 111, 031, 113, 036, 083, 057, 067, 059}, {12, 001, 016, 001, 056, 001, 017, 001, 053, 001, 005, 001, 035}, {16, 001, 000, 002, 002, 003, 002, 003, 006, 006, 016, 015, 030, 024, 053, 035, 061}, {2, 043, 000}, {16, 037, 037, 042, 042, 053, 053, 062, 062, 007, 007, 010, 010, 011, 011, 015, 015}, {2, 000, 001}, {2, 004, 075}, {16, 012, 012, 013, 013, 014, 014, 001, 002, 002, 001, 001, 003, 003, 001, 010, 010}, {2, 046, 026}, {16, 071, 059, 075, 059, 092, 072, 047, 074, 055, 083, 059, 083, 071, 087, 082, 087}, {2, 043, 000}, {2, 043, 000}, {14, 001, 001, 012, 012, 002, 002, 006, 006, 004, 004, 046, 046, 053, 053}, {2, 001, 001}, {14, 083, 001, 087, 001, 092, 001, 095, 001, 109, 001, 119, 045, 011, 001}, {16, 054, 007, 079, 007, 087, 007, 095, 016, 098, 020, 105, 020, 123, 020, 125, 021}, {2, 006, 076}, {16, 057, 008, 008, 017, 043, 021, 054, 038, 067, 008, 037, 078, 065, 079, 025, 078}, {16, 034, 034, 032, 032, 020, 020, 110, 110, 066, 066, 084, 084, 118, 118, 121, 121}, {16, 002, 096, 079, 042, 082, 054, 067, 086, 126, 096, 070, 096, 110, 054, 067, 098}, {16, 000, 000, 011, 105, 025, 109, 036, 000, 040, 036, 075, 036, 000, 036, 000, 109}, {16, 004, 001, 020, 001, 024, 001, 025, 001, 036, 001, 040, 001, 054, 001, 084, 001}, {12, 032, 036, 032, 042, 032, 053, 032, 066, 032, 014, 032, 032}, {16, 034, 034, 035, 035, 037, 037, 039, 039, 041, 041, 043, 043, 045, 045, 047, 047}, {32, 000, 000, 000, 001, 001, 005, 001, 001, 003, 003, 000, 001, 001, 022, 001, 001, 001, 035, 001, 001, 001, 044, 001, 001, 001, 053, 001, 001, 001, 057, 001, 001}, {2, 075, 002}, {2, 001, 003}, {2, 001, 074}, {2, 001, 001}, {16, 123, 123, 125, 125, 036, 036, 016, 016, 018, 018, 046, 046, 061, 061, 075, 075}, {16, 001, 003, 001, 005, 001, 016, 001, 022, 001, 035, 001, 044, 001, 053, 001, 057}, {2, 056, 056}, {2, 026, 026}, {16, 084, 015, 084, 058, 084, 031, 032, 074, 043, 031, 001, 031, 077, 031, 032, 074}, {16, 084, 063, 091, 063, 102, 065, 105, 072, 110, 093, 121, 093, 012, 095, 023, 001}, {16, 058, 001, 002, 001, 063, 001, 018, 001, 032, 001, 045, 001, 013, 001, 034, 001}, {16, 091, 001, 101, 001, 109, 001, 113, 001, 004, 001, 025, 001, 030, 001, 036, 001}, {16, 026, 026, 028, 028, 044, 044, 051, 051, 057, 057, 072, 072, 106, 106, 112, 112}, {16, 001, 003, 001, 009, 001, 018, 001, 030, 017, 023, 046, 023, 046, 032, 057, 034}, {16, 036, 001, 037, 001, 043, 001, 053, 001, 061, 001, 075, 001, 079, 001, 088, 001}, {16, 012, 012, 013, 013, 014, 014, 001, 002, 002, 001, 001, 003, 003, 001, 010, 010}, {16, 079, 079, 084, 084, 007, 007, 011, 011, 019, 019, 022, 022, 036, 036, 053, 053}, {2, 014, 075}, {2, 014, 075}, {16, 067, 076, 068, 076, 078, 076, 002, 076, 016, 076, 018, 076, 025, 076, 045, 088}, {16, 051, 001, 058, 008, 060, 001, 068, 008, 002, 001, 013, 008, 022, 001, 036, 008}, {8, 006, 006, 046, 046, 053, 053, 003, 003}, {0, 000, 000}, {2, 043, 000}, {16, 120, 117, 103, 111, 120, 114, 074, 091, 120, 112, 074, 083, 120, 113, 066, 071}, {4, 056, 015, 056, 053}, {4, 056, 015, 056, 053}, {16, 097, 001, 081, 001, 105, 001, 110, 001, 091, 001, 074, 001, 084, 001, 083, 001}, {16, 002, 039, 009, 039, 017, 001, 021, 001, 033, 000, 037, 000, 041, 029, 056, 029}, {16, 006, 007, 007, 006, 001, 006, 089, 091, 119, 117, 103, 102, 077, 087, 071, 077}, {16, 092, 001, 094, 001, 101, 001, 121, 001, 000, 001, 022, 001, 036, 001, 075, 001}, {16, 072, 001, 066, 001, 059, 001, 045, 001, 040, 001, 039, 001, 035, 001, 020, 001}, {16, 027, 036, 059, 036, 060, 035, 055, 041, 054, 031, 049, 023, 045, 032, 040, 029}, {14, 073, 045, 012, 012, 002, 002, 006, 006, 004, 004, 046, 046, 053, 053}, {16, 001, 001, 003, 003, 006, 006, 046, 046, 065, 009, 014, 001, 012, 009, 026, 001}, {16, 041, 041, 048, 048, 052, 052, 064, 064, 071, 071, 085, 085, 010, 010, 062, 062}, {32, 001, 031, 001, 000, 001, 031, 001, 000, 001, 020, 003, 000, 001, 005, 000, 000, 000, 006, 003, 000, 003, 006, 003, 000, 016, 000, 008, 000, 017, 000, 120, 000}, {8, 012, 035, 050, 032, 040, 026, 066, 036}, {14, 001, 073, 001, 074, 001, 075, 001, 076, 001, 077, 001, 078, 001, 079}, {2, 001, 001}, {16, 026, 014, 029, 042, 026, 057, 054, 029, 026, 003, 003, 029, 012, 039, 074, 035}, {4, 002, 026, 002, 029}, {12, 013, 118, 014, 123, 120, 123, 112, 120, 084, 110, 076, 102}, {2, 000, 000}, {12, 040, 065, 071, 072, 052, 066, 064, 072, 030, 072, 060, 072}, {16, 030, 026, 077, 026, 081, 027, 024, 055, 028, 056, 049, 059, 052, 069, 071, 107}, {2, 036, 013}, {16, 007, 094, 036, 088, 051, 075, 053, 075, 058, 067, 075, 067, 075, 061, 079, 062}, {16, 123, 124, 119, 122, 118, 117, 116, 115, 114, 108, 101, 106, 088, 099, 005, 006}, {16, 074, 072, 066, 072, 053, 056, 037, 019, 022, 022, 020, 020, 009, 014, 000, 000}, {2, 000, 001}, {16, 011, 123, 013, 120, 020, 117, 024, 112, 027, 107, 036, 105, 037, 107, 043, 093}, {16, 109, 025, 109, 032, 112, 032, 010, 032, 030, 044, 032, 052, 084, 066, 084, 069}, {16, 075, 084, 040, 084, 040, 110, 028, 119, 025, 119, 021, 119, 013, 119, 004, 119}, {2, 014, 075}, {16, 083, 066, 087, 074, 087, 075, 098, 083, 101, 100, 103, 101, 117, 116, 123, 036}, {16, 036, 117, 036, 013, 042, 030, 042, 033, 054, 036, 075, 079, 092, 101, 098, 109}, {16, 051, 039, 057, 038, 045, 029, 034, 009, 065, 009, 014, 001, 012, 009, 026, 001}, {12, 013, 118, 014, 123, 120, 123, 112, 120, 084, 110, 076, 102}, {10, 003, 003, 006, 006, 007, 007, 052, 052, 076, 076}, {16, 037, 037, 042, 042, 053, 053, 062, 062, 007, 007, 010, 010, 011, 011, 015, 015}, {2, 001, 001}, {16, 007, 001, 074, 001, 061, 001, 016, 001, 025, 001, 030, 001, 036, 001, 053, 001}, {16, 043, 043, 046, 046, 039, 039, 028, 028, 016, 016, 006, 006, 005, 005, 002, 002}, {16, 003, 090, 004, 090, 007, 068, 008, 066, 012, 060, 027, 097, 034, 051, 037, 051}, {16, 017, 039, 015, 123, 032, 112, 045, 088, 052, 071, 057, 067, 061, 096, 096, 096}, {16, 038, 051, 021, 036, 021, 034, 030, 034, 054, 034, 055, 020, 048, 018, 051, 006}, {16, 010, 001, 025, 001, 028, 001, 036, 001, 040, 001, 054, 001, 075, 001, 113, 001}, {16, 013, 076, 024, 077, 063, 078, 042, 076, 054, 077, 039, 078, 011, 076, 062, 077}, {16, 116, 001, 119, 001, 122, 001, 004, 001, 009, 001, 024, 001, 027, 001, 036, 001}, {16, 037, 036, 036, 036, 040, 036, 043, 041, 047, 041, 051, 072, 054, 075, 055, 084}, {16, 002, 039, 009, 039, 017, 001, 021, 001, 033, 000, 037, 000, 041, 029, 056, 029}, {2, 001, 001}, {0, 000, 000}, {16, 074, 074, 075, 013, 087, 118, 092, 003, 115, 118, 025, 118, 036, 000, 118, 118}, {16, 003, 003, 003, 008, 006, 025, 007, 079, 008, 082, 036, 105, 039, 106, 051, 118}, {0, 000, 000}, {32, 060, 024, 023, 000, 061, 027, 123, 000, 065, 031, 031, 000, 061, 061, 030, 000, 081, 035, 023, 000, 062, 061, 062, 000, 083, 066, 064, 000, 083, 064, 064, 000}, {14, 001, 001, 017, 020, 018, 020, 022, 030, 036, 043, 044, 051, 052, 054}, {16, 002, 039, 009, 039, 017, 001, 021, 001, 033, 000, 037, 000, 041, 029, 056, 029}, {16, 052, 001, 053, 001, 066, 001, 075, 001, 076, 001, 081, 001, 095, 001, 109, 001}, {0, 000, 000}, {16, 037, 037, 042, 042, 053, 053, 062, 062, 007, 007, 010, 010, 011, 011, 015, 015}, {16, 110, 001, 111, 001, 112, 001, 114, 001, 119, 001, 122, 001, 004, 001, 013, 001}, {12, 002, 035, 036, 002, 051, 053, 091, 002, 011, 022, 040, 035}, {0, 000, 000}, {16, 073, 001, 074, 001, 075, 001, 077, 001, 079, 001, 083, 001, 084, 001, 091, 001}, {16, 037, 037, 042, 042, 053, 053, 062, 062, 007, 007, 010, 010, 011, 011, 015, 015}, {16, 003, 001, 028, 001, 031, 001, 055, 001, 066, 001, 097, 001, 123, 001, 118, 001}, {16, 009, 001, 012, 001, 026, 096, 030, 096, 032, 001, 037, 001, 057, 096, 071, 096}, {2, 001, 001}, {2, 001, 001}, {14, 096, 067, 086, 070, 079, 074, 070, 086, 061, 098, 075, 075, 075, 091}, {16, 037, 037, 042, 042, 053, 053, 062, 062, 007, 007, 010, 010, 011, 011, 015, 015}, {16, 051, 001, 058, 008, 060, 001, 068, 008, 002, 001, 013, 008, 022, 001, 036, 008}, {16, 013, 118, 024, 118, 031, 093, 032, 092, 045, 092, 113, 092, 119, 113, 122, 113}, {16, 076, 008, 032, 008, 043, 008, 067, 008, 011, 011, 008, 090, 002, 002, 083, 013}, {2, 003, 001}, {16, 050, 001, 047, 001, 044, 096, 040, 096, 039, 001, 030, 001, 028, 096, 009, 096}, {16, 062, 037, 078, 038, 002, 062, 003, 087, 002, 078, 113, 078, 119, 062, 007, 078}, {16, 122, 001, 123, 001, 125, 001, 010, 001, 024, 001, 037, 001, 055, 001, 066, 001}, {2, 001, 001}, {16, 074, 039, 072, 039, 075, 039, 079, 039, 083, 036, 084, 036, 089, 035, 091, 035}, {16, 037, 037, 042, 042, 053, 053, 062, 062, 007, 007, 010, 010, 011, 011, 015, 015}, {16, 067, 001, 072, 001, 075, 001, 083, 001, 091, 001, 101, 001, 109, 001, 020, 001}, {6, 056, 056, 049, 049, 026, 124}, {16, 038, 009, 055, 023, 061, 074, 071, 087, 091, 087, 098, 114, 102, 119, 111, 003}, {16, 053, 032, 015, 032, 045, 032, 034, 030, 065, 032, 014, 032, 012, 032, 043, 032}, {16, 051, 001, 058, 001, 060, 001, 068, 001, 002, 001, 013, 001, 022, 001, 036, 001}, {2, 001, 001}, {2, 001, 001}, {16, 112, 001, 116, 001, 117, 001, 024, 001, 030, 001, 035, 001, 036, 001, 040, 001}, {16, 051, 001, 058, 008, 060, 001, 068, 008, 002, 001, 013, 008, 022, 001, 036, 008}, {16, 052, 039, 009, 039, 017, 001, 021, 001, 033, 000, 037, 000, 041, 029, 056, 029}, {16, 057, 008, 008, 017, 043, 021, 054, 038, 067, 008, 037, 078, 065, 079, 025, 078}, {16, 036, 001, 035, 001, 017, 001, 011, 001, 116, 001, 113, 001, 101, 001, 092, 001}, {2, 001, 006}, {0, 000, 000}, {16, 037, 037, 042, 042, 053, 053, 062, 062, 007, 007, 010, 010, 011, 011, 015, 015}, {16, 109, 001, 030, 008, 095, 001, 084, 008, 083, 001, 072, 008, 071, 001, 052, 008}, {16, 097, 096, 088, 064, 090, 096, 093, 064, 097, 096, 099, 081, 102, 114, 114, 001}, {16, 002, 039, 009, 039, 017, 001, 021, 001, 033, 000, 037, 000, 041, 029, 056, 029}, {0, 000, 000}, {2, 001, 001}, {12, 002, 035, 036, 002, 051, 053, 091, 002, 011, 022, 040, 035}, {16, 094, 001, 101, 001, 116, 001, 117, 001, 004, 001, 025, 001, 030, 001, 037, 001}, {16, 091, 038, 115, 043, 085, 006, 079, 007, 078, 008, 077, 018, 079, 018, 086, 024}, {2, 026, 026}, {16, 012, 001, 019, 096, 031, 064, 025, 096, 038, 001, 051, 096, 057, 001, 066, 096}, {16, 067, 001, 068, 096, 072, 001, 074, 008, 075, 096, 076, 008, 079, 001, 084, 096}, {12, 001, 003, 008, 007, 008, 010, 008, 016, 023, 031, 040, 044}, {2, 001, 001}, {16, 037, 037, 042, 042, 053, 053, 062, 062, 007, 007, 010, 010, 011, 011, 015, 015}, {18, 092, 092, 081, 081, 067, 067, 066, 066, 061, 061, 053, 053, 051, 051, 047, 047, 043, 043}, {16, 054, 001, 058, 001, 066, 001, 072, 001, 075, 001, 087, 001, 101, 001, 036, 001}, {16, 041, 010, 041, 020, 049, 011, 056, 123, 110, 113, 112, 116, 114, 118, 119, 101}, {2, 001, 001}, {2, 001, 001}, {16, 037, 037, 042, 042, 053, 053, 062, 062, 007, 007, 010, 010, 011, 011, 015, 015}, {16, 119, 001, 122, 001, 008, 001, 010, 001, 013, 001, 025, 001, 027, 001, 032, 001}, {16, 036, 001, 040, 001, 043, 001, 053, 001, 072, 001, 075, 001, 095, 001, 101, 001}, {2, 001, 001}, {16, 037, 037, 031, 031, 023, 023, 022, 022, 007, 007, 124, 124, 114, 114, 112, 112}, {0, 000, 000}, {2, 001, 001}, {2, 001, 001}, {16, 051, 001, 058, 008, 060, 001, 068, 008, 002, 001, 013, 008, 022, 001, 036, 008}, {0, 000, 000}, {2, 112, 020}, {2, 000, 001}, {2, 000, 001}, {2, 000, 001}, {2, 000, 001}, {16, 081, 008, 032, 008, 043, 008, 067, 008, 011, 011, 008, 090, 002, 002, 083, 013}, {2, 001, 001}, {16, 058, 001, 069, 001, 075, 077, 018, 001, 032, 001, 045, 045, 013, 001, 034, 001}, {16, 058, 001, 069, 001, 075, 077, 018, 001, 032, 001, 045, 045, 013, 001, 034, 001}, {16, 067, 076, 068, 076, 078, 076, 002, 076, 016, 076, 018, 076, 025, 076, 045, 088}, {16, 061, 008, 032, 008, 043, 008, 067, 008, 011, 011, 008, 090, 002, 002, 083, 013}, {0, 000, 000}, {0, 000, 000}, {2, 001, 001}, {2, 036, 036}, {0, 000, 000}, {0, 000, 000} }; new const EVF::VehicleSeats[MAX_VEHICLE_MODELS] = { 4,2,2,2,4,4,1,2,2,4,2,2,2,4,2,2,4,2,4,2,4,4,2,2,2,1,4,4,4,2,1,7,1,2,2,0,2,7,4,2,4,1,2,2,2,4,1,2,1,0,0,2,1,1,1,2,2,2,4,4, 2,2,2,2,1,1,4,4,2,2,4,2,1,1,2,2,1,2,2,4,2,1,4,3,1,1,1,4,2,2,4,2,4,1,2,2,2,4,4,2,2,1,2,2,2,2,2,4,2,1,1,2,1,1,2,2,4,2,2,1, 1,2,2,2,2,2,2,2,2,4,1,1,1,2,2,2,2,7,7,1,4,2,2,2,2,2,4,4,2,2,4,4,2,1,2,2,2,2,2,2,4,4,2,2,1,2,4,4,1,0,0,1,1,2,1,2,2,1,2,4, 4,2,4,1,0,4,2,2,2,2,0,0,7,2,2,1,4,4,4,2,2,2,2,2,4,2,0,0,0,4,0,0 }; new const EVF::VehicleDoors[MAX_VEHICLE_MODELS] = { 4,2,2,2,4,4,2,2,2,4,2,2,2,2,2,2,2,2,4,2,4,4,2,2,0,1,4,2,2,0,0,0,0,2,2,0,2,0,4,0,2,0,2,2,2,4,0,2,0,0,0,2,0,0,0,2,2,0,4,2, 0,0,0,0,0,0,4,4,0,2,4,0,0,0,2,2,1,2,2,4,0,0,2,2,0,0,0,4,4,2,4,2,4,0,0,2,2,4,2,2,2,0,0,0,0,2,2,4,2,0,0,2,0,0,2,2,4,2,2,0, 1,0,0,0,2,2,2,2,2,4,0,0,0,0,2,2,0,0,0,0,4,2,2,2,2,2,4,4,0,2,4,4,2,0,2,0,2,2,2,2,4,4,2,2,0,2,4,0,0,0,0,0,0,2,2,0,2,0,2,4, 4,0,2,2,0,4,0,2,2,2,0,0,0,2,0,0,4,4,4,2,2,0,2,2,4,2,0,0,0,2,0,0 }; new const EVF::ComponentPrice[][] = { {1005, 150}, {1004, 100}, {1012, 250}, {1011, 220}, {1143, 150}, {1145, 100}, {1020, 250}, {1021, 200}, {1022, 150}, {1019, 300}, {1018, 350}, {1013, 100}, {1024, 50}, {1008, 500}, {1009, 200}, {1010, 1000}, {1006, 80}, {1001, 550}, {1014, 400}, {1002, 200}, {1023, 350}, {1015, 500}, {1016, 200}, {1003, 250}, {1000, 400}, {1007, 500}, {1017, 500}, {1046, 710}, {1045, 510}, {1153, 1200}, {1152, 910}, {1150, 1090}, {1151, 840}, {1054, 210}, {1053, 130}, {1049, 810}, {1050, 620}, {1047, 670}, {1048, 530}, {1065, 850}, {1066, 750}, {1160, 1050}, {1173, 950}, {1159, 1050}, {1161, 950}, {1067, 250}, {1068, 200}, {1162, 650}, {1158, 550}, {1069, 550}, {1070, 450}, {1034, 790}, {1037, 690}, {1171, 990}, {1172, 900}, {1149, 1000}, {1148, 890}, {1038, 190}, {1035, 150}, {1147, 600}, {1146, 490}, {1036, 500}, {1039, 390}, {1064, 830}, {1059, 720}, {1155, 1030}, {1157, 930}, {1154, 1030}, {1156, 920}, {1055, 230}, {1061, 180}, {1058, 620}, {1060, 530}, {1056, 520}, {1057, 430}, {1028, 770}, {1029, 680}, {1169, 970}, {1170, 880}, {1141, 980}, {1140, 870}, {1032, 170}, {1033, 120}, {1138, 580}, {1139, 470}, {1026, 480}, {1031, 370}, {1092, 750}, {1089, 650}, {1166, 950}, {1165, 850}, {1168, 950}, {1167, 850}, {1088, 150}, {1091, 100}, {1164, 550}, {1163, 450}, {1090, 450}, {1093, 350}, {1128, 3340}, {1103, 3250}, {1184, 2150}, {1183, 2040}, {1182, 2130}, {1181, 2050}, {1104, 1610}, {1105, 1540}, {1108, 780}, {1126, 3340}, {1127, 3250}, {1179, 2150}, {1185, 2040}, {1180, 2130}, {1178, 2050}, {1122, 780}, {1106, 780}, {1100, 940}, {1123, 860}, {1125, 1120}, {1130, 3380}, {1131, 3290}, {1189, 2200}, {1188, 2080}, {1187, 2175}, {1186, 2095}, {1129, 1650}, {1132, 1590}, {1133, 830}, {1044, 500}, {1043, 500}, {1174, 1000}, {1175, 900}, {1176, 1000}, {1177, 900}, {1042, 1000}, {1113, 3340}, {1114, 3250}, {1117, 2040}, {1115, 2130}, {1116, 2050}, {1109, 1610}, {1110, 1540}, {1118, 780}, {1119, 940}, {1136, 1000}, {1135, 1500}, {1191, 1040}, {1190, 1200}, {1192, 940}, {1193, 1100}, {1134, 800}, {1079, 1030}, {1075, 980}, {1077, 1620}, {1083, 1560}, {1082, 820}, {1085, 770}, {1074, 1030}, {1081, 1230}, {1080, 900}, {1073, 1100}, {1078, 1200}, {1076, 1560}, {1084, 1350}, {1025, 1000}, {1096, 1000}, {1097, 620}, {1098, 1140}, {1086, 100}, {1087, 1500} }; new const EVF::ValidComponent[][] = { {400, 1024, 1021, 1020, 1019, 1018, 1013, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {401, 1145, 1144, 1143, 1142, 1020, 1019, 1017, 1013, 1007, 1006, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000}, {402, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {403, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {404, 1021, 1020, 1019, 1017, 1016, 1013, 1007, 1002, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {405, 1023, 1021, 1020, 1019, 1018, 1014, 1001, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {406, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {407, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {408, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {409, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {410, 1024, 1023, 1021, 1020, 1019, 1017, 1013, 1007, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {411, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {412, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {413, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {414, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {415, 1023, 1019, 1018, 1017, 1007, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {416, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {417, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {418, 1021, 1020, 1016, 1006, 1002, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {419, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {420, 1021, 1019, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {421, 1023, 1021, 1020, 1019, 1018, 1016, 1014, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {422, 1021, 1020, 1019, 1017, 1013, 1007, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {423, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {424, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {425, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {426, 1021, 1019, 1006, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {427, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {428, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {429, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {430, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {431, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {432, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {433, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {434, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {435, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {436, 1022, 1021, 1020, 1019, 1017, 1013, 1007, 1006, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {437, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {438, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {439, 1145, 1144, 1143, 1142, 1023, 1017, 1013, 1007, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {440, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {441, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {442, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {443, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {444, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {445, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {446, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {447, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {448, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {449, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {450, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {451, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {452, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {453, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {454, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {455, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {456, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {457, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {458, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {459, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {460, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {461, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {462, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {463, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {464, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {465, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {466, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {467, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {468, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {469, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {470, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {471, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {472, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {473, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {474, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {475, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {476, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {477, 1021, 1020, 1019, 1018, 1017, 1007, 1006, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {478, 1024, 1022, 1021, 1020, 1013, 1012, 1005, 1004, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {479, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {480, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {481, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {482, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {483, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {484, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {485, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {486, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {487, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {488, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {489, 1024, 1020, 1019, 1018, 1016, 1013, 1006, 1005, 1004, 1002, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {490, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {491, 1145, 1144, 1143, 1142, 1023, 1021, 1020, 1019, 1018, 1017, 1014, 1007, 1003, 0000, 0000, 0000, 0000, 0000}, {492, 1016, 1006, 1005, 1004, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {493, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {494, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {495, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {496, 1143, 1142, 1023, 1020, 1019, 1017, 1011, 1007, 1006, 1003, 1002, 1001, 0000, 0000, 0000, 0000, 0000, 0000}, {497, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {498, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {499, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {500, 1024, 1021, 1020, 1019, 1013, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {501, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {502, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {503, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {504, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {505, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {506, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {507, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {508, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {509, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {510, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {511, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {512, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {513, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {514, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {515, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {516, 1021, 1020, 1019, 1018, 1017, 1016, 1015, 1007, 1004, 1002, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {517, 1145, 1144, 1143, 1142, 1023, 1020, 1019, 1018, 1017, 1016, 1007, 1003, 1002, 0000, 0000, 0000, 0000, 0000}, {518, 1145, 1144, 1143, 1142, 1023, 1020, 1018, 1017, 1013, 1007, 1006, 1005, 1003, 1001, 0000, 0000, 0000, 0000}, {519, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {520, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {521, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {522, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {523, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {524, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {525, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {526, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {527, 1021, 1020, 1018, 1017, 1015, 1014, 1007, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {528, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {529, 1023, 1020, 1019, 1018, 1017, 1012, 1011, 1007, 1006, 1003, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {530, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {531, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {532, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {533, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {534, 1185, 1180, 1179, 1178, 1127, 1126, 1125, 1124, 1123, 1122, 1106, 1101, 1100, 0000, 0000, 0000, 0000, 0000}, {535, 1121, 1120, 1119, 1118, 1117, 1116, 1115, 1114, 1113, 1110, 1109, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {536, 1184, 1183, 1182, 1181, 1128, 1108, 1107, 1105, 1104, 1103, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {537, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {538, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {539, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {540, 1145, 1144, 1143, 1142, 1024, 1023, 1020, 1019, 1018, 1017, 1007, 1006, 1004, 1001, 0000, 0000, 0000, 0000}, {541, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {542, 1145, 1144, 1021, 1020, 1019, 1018, 1015, 1014, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {543, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {544, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {545, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {546, 1145, 1144, 1143, 1142, 1024, 1023, 1019, 1018, 1017, 1007, 1006, 1004, 1002, 1001, 0000, 0000, 0000, 0000}, {547, 1143, 1142, 1021, 1020, 1019, 1018, 1016, 1003, 1000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {548, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {549, 1145, 1144, 1143, 1142, 1023, 1020, 1019, 1018, 1017, 1012, 1011, 1007, 1003, 1001, 0000, 0000, 0000, 0000}, {550, 1145, 1144, 1143, 1142, 1023, 1020, 1019, 1018, 1006, 1005, 1004, 1003, 1001, 0000, 0000, 0000, 0000, 0000}, {551, 1023, 1021, 1020, 1019, 1018, 1016, 1006, 1005, 1003, 1002, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {552, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {553, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {554, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {555, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {556, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {557, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {558, 1168, 1167, 1166, 1165, 1164, 1163, 1095, 1094, 1093, 1092, 1091, 1090, 1089, 1088, 0000, 0000, 0000, 0000}, {559, 1173, 1162, 1161, 1160, 1159, 1158, 1072, 1071, 1070, 1069, 1068, 1067, 1066, 1065, 0000, 0000, 0000, 0000}, {560, 1170, 1169, 1141, 1140, 1139, 1138, 1033, 1032, 1031, 1030, 1029, 1028, 1027, 1026, 0000, 0000, 0000, 0000}, {561, 1157, 1156, 1155, 1154, 1064, 1063, 1062, 1061, 1060, 1059, 1058, 1057, 1056, 1055, 0000, 0000, 0000, 0000}, {562, 1172, 1171, 1149, 1148, 1147, 1146, 1041, 1040, 1039, 1038, 1037, 1036, 1035, 1034, 0000, 0000, 0000, 0000}, {563, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {564, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {565, 1153, 1152, 1151, 1150, 1054, 1053, 1052, 1051, 1050, 1049, 1048, 1047, 1046, 1045, 0000, 0000, 0000, 0000}, {566, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {567, 1189, 1188, 1187, 1186, 1133, 1132, 1131, 1130, 1129, 1102, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {568, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {569, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {570, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {571, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {572, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {573, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {574, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {575, 1177, 1176, 1175, 1174, 1099, 1044, 1043, 1042, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {576, 1193, 1192, 1191, 1190, 1137, 1136, 1135, 1134, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {577, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {578, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {579, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {580, 1023, 1020, 1018, 1017, 1007, 1006, 1001, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {581, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {582, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {583, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {584, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {585, 1145, 1144, 1143, 1142, 1020, 1019, 1018, 1013, 1006, 1001, 1023, 1003, 1007, 1017, 0000, 0000, 0000, 0000}, {586, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {587, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {588, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {589, 1145, 1144, 1024, 1020, 1018, 1017, 1016, 1013, 1007, 1006, 1005, 1004, 1000, 0000, 0000, 0000, 0000, 0000}, {590, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {591, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {592, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {593, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {594, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {595, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {596, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {597, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {598, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {599, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {600, 1022, 1020, 1018, 1017, 1013, 1007, 1006, 1005, 1004, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {601, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {602, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {603, 1145, 1144, 1143, 1142, 1024, 1023, 1020, 1019, 1018, 1017, 1007, 1006, 1001, 0000, 0000, 0000, 0000, 0000}, {604, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {605, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {606, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {607, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {608, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {609, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {610, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000}, {611, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000} }; new const EVF::ComponentTypes[][] = { "Spoiler", "Hood", "Roof", "Sideskirt", "Lamps", "Nitro", "Exhaust", "Wheels", "Stereo", "Hydraulics", "Front Bumper", "Rear Bumber", "Right Vent", "Left Vent" }; new const EVF::ComponentNames[][] = { "Pro", "Win", "Drag", "Alpha", "Champ Scoop", "Fury Scoop", "Roof Scoop", "Right Sideskirt", "5x Nitro", "2x Nitro", "10x Nitro", "Race Scoop", "Worx Scoop", "Round Fog", "Champ", "Race", "Worx", "Left Sideskirt", "Upswept", "Twin", "Large", "Medium", "Small", "Fury", "Square Fog", "Offroad", "Right Alien Sideskirt", "Left Alien Sideskirt", "Alien", "X-Flow", "Left X-Flow Sideskirt", "Right X-Flow Sideskirt", "Alien Roof Vent", "X-Flow Roof Vent", "Alien", "X-Flow Roof Vent", "Right Alien Sideskirt", "X-Flow", "Alien Roof Vent", "Left X-Flow Sideskirt", "Left Alien Sideskirt", "Right X-Flow Sideskirt", "Right Chrome Sideskirt", "Slamin", "Chrome", "X-Flow", "Alien", "Right Alien Sideskirt", "Right X-Flow Sideskirt", "Alien", "X-Flow", "Left Alien Sideskirt", "Left X-Flow Sideskirt", "X-Flow", "Alien", "Alien", "Right Alien Sideskirt", "Right X-Flow Sideskirt", "Alien", "X-Flow", "X-Flow", "X-Flow", "Left Alien Sideskirt", "Left X-Flow Sideskirt", "Alien", "Alien", "X-Flow", "Alien", "X-Flow", "Right Alien Sideskirt", "Right X-Flow Sideskirt", "Left Alien Sideskirt", "Left X-Flow Sideskirt", "Shadow", "Mega", "Rimshine", "Wires", "Classic", "Twist", "Cutter", "Switch", "Grove", "Import", "Dollar", "Trance", "Atomic", "Stereo", "Hydraulics", "Alien", "X-Flow", "Right Alien Sideskirt", "X-Flow", "Alien", "Right X-Flow Sideskirt", "Left Alien Sideskirt", "Right X-Flow Sideskirt", "Ahab", "Virtual", "Access", "Left Chrome Sideskirt", "Chrome Grill", "Left Chrome Flames Sideskirt", "Left Chrome Strip Sideskirt", "Covertible", "Chrome", "Slamin", "Right Chrome Arches", "Left Chrome Strip Sideskirt", "Right Chrome Strip Sideskirt", "Chrome", "Slamin", "Little Sign?", "Little Sign?", "Chrome", "Slamin", "Chrome", "Slamin", "Chrome", "Right Chrome Trim Sideskirt", "Right Wheelcovers Sideskirt", "Left Chrome Trim Sideskirt", "Left Wheelcovers Sideskirt", "Right Chrome Flames Sideskirt", "Bullbar Chrome Bars", "Left Chrome Arches Sideskirt", "Bullbar Chrome Lights", "Chrome Exhaust", "Slamin Exhaust", "Vinyl Hardtop", "Chrome", "Hardtop", "Softtop", "Slamin", "Right Chrome Strip Sideskirt", "Right Chrome Strip Sideskirt", "Slamin", "Chrome", "Left Chrome Strip Sideskirt", "Alien", "X-Flow", "X-Flow", "Alien", "Left Oval Vents", "Right Oval Vents", "Left Square Vents", "Right Square Vents", "X-Flow", "Alien", "X-Flow", "Alien", "Alien", "X-Flow", "X-Flow", "Alien", "Alien", "Alien", "X-Flow", "X-Flow", "X-Flow", "Alien", "Alien", "X-Flow", "Alien", "X-Flow", "Alien", "X-Flow", "Alien", "X-Flow", "Alien", "Alien", "X-Flow", "Alien", "X-Flow", "X-Flow", "Chrome", "Slamin", "Chrome", "Slamin", "Slamin", "Chrome", "Chrome", "Slamin", "Chrome", "Slamin", "Chrome", "Slamin", "Slamin", "Chrome", "Slamin", "Chrome", "Slamin", "Chrome", "Chrome", "Slamin" }; #if defined _3D_Tryg #define EVF_WeaponDamage Tryg3D_WeaponDamage #else new const Float:EVF::WeaponDamage[] = { 1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,82.5,0.0,1.0,9.9,46.2,0.0,8.25,13.2,46.2,3.3,3.3,4.95,6.6,8.25, 9.9,9.9,6.6,24.75,41.25,82.5,82.5,1.0,46.2,82.5,0.0,0.33,0.33,0.0,0.0,0.0,0.0,0.0,2.64,9.9,330.0,82.5,1.0,1.0,165.0 }; #endif #if !defined EVF_VehicleName new const EVF::VehicleName[MAX_VEHICLE_MODELS][] = { "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam", "Esperanto", "Taxi", "Washington", "Bobcat", "Mr Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife", "Trailer 1", "Previon", "Coach", "Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer 2", "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", "Boxville", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropdust", "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 LA", "Hustler", "Intruder", "Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster A", "Monster B", "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito", "Freight Flat", "Streak Carriage", "Kart", "Mower", "Duneride", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400", "Newsvan", "Tug", "Trailer 3", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club", "Freight Carriage", "Trailer 3", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car (LSPD)", "Police Car (SFPD)", "Police Car (LVPD)", "Police Ranger", "Picador", "S.W.A.T. Tank", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage Trailer A", "Luggage Trailer B", "Stair Trailer", "Boxville", "Farm Plow", "Utility Trailer" }; #endif #if (defined _FoX_Foreach) #define EVF_Foreach(%0) FoxForeach(%0,Character) #elseif (defined _FOREACH_LOCAL_VERSION) #define EVF_Foreach(%0) foreach(new %0 : Character) #else #define EVF_Foreach(%0) for(new %0 = 0, p_%0 = MAX_PLAYERS; %0 <= p_%0; %0++) if(IsPlayerConnected(%0)) #endif #if (defined _FOREACH_LOCAL_VERSION && defined Vehicle@YSII_Sg) #define EVF_ForeachVehicle(%0) foreach(new %0 : Vehicle) #elseif (defined _FOREACH_LOCAL_VERSION && defined Vehicles@YSII_Sg) #define EVF_ForeachVehicle(%0) foreach(new %0 : Vehicles) #else #define EVF_ForeachVehicle(%0) for(new %0 = 1, %0_upp = MAX_VEHICLES; %0 <= %0_upp; %0++) if(IsValidVehicle(%0)) #endif #define SetVehiclePropertyValue(%0,%1,%2) EVF_VehicleProperty[(%0)][(%1)] = (%2) #define GetVehiclePropertyValue(%0,%1) EVF_VehicleProperty[(%0)][(%1)] #define EVF_GetActiveCount() GetSVarInt("ADM:EVF:ACTIVE") #define IsValidVehicleModelID(%0) (400 <= (%0) <= 611) #define SetVehicleInterior(%0,%1) LinkVehicleToInterior(%0,%1) #define IsValidVehicleDoor(%0,%1) (!((%1) > EVF::VehicleDoors[(GetVehicleModel(%0)-400)])) #define RemoveVehiclePaintjob(%0) ChangeVehiclePaintjob((%0),RESET_PAINTJOB_ID) #define RestoreVehicleHorn(%0) SetVehiclePropertyValue((%0),e_VEHICLE_HORN,0) #define GetVehicleModelSeats(%0) EVF::VehicleSeats[((%0)-400)] #define GetVehicleSeats(%0) GetVehicleModelSeats(GetVehicleModel(%0)) #define GetVehicleModelName(%0) EVF::VehicleName[((%0)-400)] #define GetVehicleName(%0) GetVehicleModelName(GetVehicleModel(%0)) #define GetVehicleModelTopSpeed(%0) EVF::TopSpeed[((%0)-400)] #define GetVehicleTopSpeed(%0) GetVehicleModelTopSpeed(GetVehicleModel(%0)) #define GetVehicleModelDoorAmount(%0) EVF::VehicleDoors[((%0)-400)] #define GetVehicleDoorAmount(%0) GetVehicleModelDoorAmount(GetVehicleModel(%0)) #define SetVehicleSpeedCap(%0,%1) SetVehiclePropertyValue((%0),e_VEHICLE_SPEED_CAP,(_:%1)) #define GetVehicleSpeedCap(%0) Float:GetVehiclePropertyValue((%0),e_VEHICLE_SPEED_CAP) #define DisableVehicleSpeedCap(%0) SetVehicleSpeedCap((%0),0) #define SetVehicleHorn(%0,%1) SetVehiclePropertyValue((%0),e_VEHICLE_HORN,(%1)) #define GetVehicleHorn(%0) GetVehiclePropertyValue((%0),e_VEHICLE_HORN) #define GetVehicleFuel(%0) GetVehiclePropertyValue((%0),e_VEHICLE_FUEL) #define SetVehicleFuel(%0,%1) SetVehiclePropertyValue((%0),e_VEHICLE_FUEL,(%1)) #define IsVehicleFuelToggled(%0) GetVehiclePropertyValue((%0),e_VEHICLE_FUEL_USE) #define ToggleVehicleFuel(%0,%1) SetVehiclePropertyValue((%0),e_VEHICLE_FUEL_USE,(_:%1)) #define IsVehicleSticky(%0) GetVehiclePropertyValue((%0),e_VEHICLE_STICKY) #define ToggleVehicleSticky(%0,%1) SetVehiclePropertyValue((%0),e_VEHICLE_STICKY,(_:%1)) #define IsUnoccupiedDamageToggled(%0) GetVehiclePropertyValue((%0),e_VEHICLE_UNO_DAMAGE) #define ToggleUnoccupiedVehicleDamage(%0,%1) SetVehiclePropertyValue((%0),e_VEHICLE_UNO_DAMAGE,(_:%1)) #define IsPetrolCapDestroyToggled(%0) GetVehiclePropertyValue((%0),e_VEHICLE_CAP_DAMAGE) #define ToggleVehiclePetrolCapDestroy(%0,%1) SetVehiclePropertyValue((%0),e_VEHICLE_CAP_DAMAGE,(_:%1)) #define GetVehicleBomb(%0) GetVehiclePropertyValue((%0),e_VEHICLE_BOMB) #define IsVehicleBombed(%0) (GetVehicleBomb(%0) > 0) #define RemoveVehicleBomb(%0) SetVehicleBomb((%0),0) #define IsToggledVehicleBulletproof(%0) GetVehiclePropertyValue((%0),e_VEHICLE_BULLETPROOF) #define ToggleVehicleBulletproof(%0,%1) SetVehiclePropertyValue((%0),e_VEHICLE_BULLETPROOF,(_:%1)) #if defined EVF_Streamer #define EVF_IsCarBlinking(%0) (EVF::BlinkSide[(%0)] != EVF_CAR_BLINK_NONE) #define EVF_ToggleVehicleBlinking(%0) EVF::VehicleBlinking = (%0) #define EVF_IsToggledVehicleBlinking() EVF::VehicleBlinking #endif //Keys #define EVF_KeyPressed(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) #define EVF_KeyReleased(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0))) #define EVF_KeyHolding(%0) ((newkeys & (%0)) == (%0)) //extra names: #define GetVehicleDoorAmountByModelid GetVehicleModelDoorAmount #define ResetVehiclePaintjob RemoveVehiclePaintjob #define GetVehicleDriverID GetVehicleDriver #define SetVehicleColor ChangeVehicleColor #define MAX_VEHICLE_MODEL MAX_VEHICLE_MODELS #define OnPlayerShootVehicle OnPlayerShotVehicle forward OnVehicleCreated(vehicleid); forward OnVehicleDestroyed(vehicleid); forward OnTrailerHooked(playerid,vehicleid,trailerid); forward OnTrailerUnhooked(playerid,vehicleid,trailerid); forward OnVehicleBombDeactivate(vehicleid); forward OnVehicleBombExplode(vehicleid); forward OnPlayerShotVehicle(playerid,vehicleid,weaponid,Float:amount,bodypart); forward OnPlayerEditVehicle(playerid,vehicleid,response,Float:fX,Float:fY,Float:fZ,Float:fRotZ); forward OnPlayerEditVehicleObject(playerid,vehicleid,response,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz); forward OnPlayerReachSpeedCapLimit(playerid,vehicleid,Float:speed); forward OnVehicleBombActivate(vehicleid); forward OnVehicleModEx(playerid,vehicleid,componentid,price,illegal); forward OnVehicleFuelChange(vehicleid,newfuel,oldfuel); #if defined OnVehiclePosChange forward OnVehiclePosChange(vehicleid,Float:newx,Float:newy,Float:newz,Float:newangle,Float:oldx,Float:oldy,Float:oldz,Float:oldangle); #endif #if defined OnVehicleVelocityChange forward OnVehicleVelocityChange(vehicleid,Float:newx,Float:newy,Float:newz,Float:oldx,Float:oldy,Float:oldz); #endif #if defined OnVehicleHealthChange forward OnVehicleHealthChange(vehicleid,Float:newhealth,Float:oldhealth); #endif EVF::Function:: ResetVehicleProperties(vehicleid){ EVF::VehicleTrailerID[vehicleid] = INVALID_VEHICLE_ID; for(new i = 0; i < _:(EVF::VehicleProperties); i++){ EVF::VehicleProperty[vehicleid][EVF::VehicleProperties:i] = 0; } } EVF::Function:: GetComponentName(componentid,name[],len = sizeof(name)){ if(MIN_VEHICLE_COMPONENT_ID <= componentid <= MAX_VEHICLE_COMPONENT_ID){ componentid -= MIN_VEHICLE_COMPONENT_ID; format(name,len,"%s",EVF::ComponentNames[componentid]); return 1; } name[0] = '\0'; return 0; } EVF::Function:: GetComponentTypeName(component){ new slotid = GetVehicleComponentType(component), EVF::name[32]; if(slotid >= 0 && slotid <= 13){ format(EVF::name,sizeof(EVF::name),"%s",EVF::ComponentTypes[slotid]); } return EVF::name; } EVF::Function:: EVF::IsPlayerInModShop(playerid){ if(IsPlayerConnected(playerid)) return EVF::ModShopStatus[playerid]; return 0; } EVF::Function:: EVF::IsTrailer(vehicleid){ switch(GetVehicleModel(vehicleid)){ case 435, 450, 584, 591, 606: return 1; } return 0; } #if defined EVF_Streamer EVF::Function:: EVF::DisableCarBlinking(vehicleid){ if(!IsValidVehicle(vehicleid)) return 0; if(!EVF::IsCarBlinking(vehicleid)) return 0; if(IsValidDynamicObject(EVF::Blink[vehicleid][0])) DestroyDynamicObject(EVF::Blink[vehicleid][0]); if(IsValidDynamicObject(EVF::Blink[vehicleid][1])) DestroyDynamicObject(EVF::Blink[vehicleid][1]); if(IsValidDynamicObject(EVF::Blink[vehicleid][2])) DestroyDynamicObject(EVF::Blink[vehicleid][2]); if(IsValidDynamicObject(EVF::Blink[vehicleid][3])) DestroyDynamicObject(EVF::Blink[vehicleid][3]); EVF::Blink[vehicleid][0] = EVF::Blink[vehicleid][1] = STREAMER_TAG_OBJECT:INVALID_STREAMER_ID; EVF::Blink[vehicleid][2] = EVF::Blink[vehicleid][3] = STREAMER_TAG_OBJECT:INVALID_STREAMER_ID; EVF::BlinkSide[vehicleid] = EVF_CAR_BLINK_NONE; return 1; } EVF::Function:: EVF::SetCarBlinking(vehicleid,side,bool:skip=false){ if(!IsValidVehicle(vehicleid)) return 0; if(EVF::IsCarBlinking(vehicleid) && !skip) return EVF::DisableCarBlinking(vehicleid); new id = GetVehicleModel(vehicleid)-400, trailerid, STREAMER_TAG_OBJECT:obj[4]; if(!skip) EVF::BlinkSide[vehicleid] = side; GetVehicleZAngle(vehicleid,EVF::BlinkR[vehicleid]); if(id > -1){ if(EVF::BlinkOffsetData[id][EVF::X] != 0.0){ switch(side){ case EVF_CAR_BLINK_LEFT: { obj[0] = CreateDynamicObject(19294,0.0,0.0,-9000.0,0.0,0.0,0.0); EVF::Blink[vehicleid][0] = obj[0]; } case EVF_CAR_BLINK_RIGHT: { obj[2] = CreateDynamicObject(19294,0.0,0.0,0.0,0.0,0.0,0.0); EVF::Blink[vehicleid][2] = obj[2]; } } } if((trailerid = GetVehicleTrailer(vehicleid)) != 0){ if(EVF::IsTrailer(trailerid)){ switch(side){ case EVF_CAR_BLINK_LEFT: { obj[1] = CreateDynamicObject(19294,0.0,0.0,-9000.0,0.0,0.0,0.0); EVF::Blink[vehicleid][1] = obj[1]; } case EVF_CAR_BLINK_RIGHT: { obj[3] = CreateDynamicObject(19294,0.0,0.0,0.0,0.0,0.0,0.0); EVF::Blink[vehicleid][3] = obj[3]; } } } } else { if(EVF::BlinkOffsetData[id][EVF::rX] != 0.0){ switch(side){ case EVF_CAR_BLINK_LEFT: { obj[1] = CreateDynamicObject(19294,0.0,0.0,0.0,0.0,0.0,0.0); EVF::Blink[vehicleid][1] = obj[1]; } case EVF_CAR_BLINK_RIGHT: { obj[3] = CreateDynamicObject(19294,0.0,0.0,0.0,0.0,0.0,0.0); EVF::Blink[vehicleid][3] = obj[3]; } } } } switch(side){ case EVF_CAR_BLINK_LEFT: { if(obj[0] != STREAMER_TAG_OBJECT:INVALID_STREAMER_ID){ AttachDynamicObjectToVehicle(obj[0],vehicleid,EVF::BlinkOffsetData[id][EVF::X],EVF::BlinkOffsetData[id][EVF::Y],EVF::BlinkOffsetData[id][EVF::Z],0.0,0.0,0.0); } if(trailerid != 0){ id = GetVehicleModel(trailerid)-400; AttachDynamicObjectToVehicle(obj[1],trailerid,EVF::BlinkOffsetData[id][EVF::rX],EVF::BlinkOffsetData[id][EVF::rY],EVF::BlinkOffsetData[id][EVF::rZ],0.0,0.0,0.0); } else { if(obj[1] != STREAMER_TAG_OBJECT:INVALID_STREAMER_ID){ AttachDynamicObjectToVehicle(obj[1],vehicleid,EVF::BlinkOffsetData[id][EVF::rX],EVF::BlinkOffsetData[id][EVF::rY],EVF::BlinkOffsetData[id][EVF::rZ],0.0,0.0,0.0); } } } case EVF_CAR_BLINK_RIGHT: { if(obj[2] != STREAMER_TAG_OBJECT:INVALID_STREAMER_ID){ AttachDynamicObjectToVehicle(obj[2],vehicleid,-EVF::BlinkOffsetData[id][EVF::X],EVF::BlinkOffsetData[id][EVF::Y],EVF::BlinkOffsetData[id][EVF::Z],0.0,0.0,0.0); } if(trailerid != 0){ id = GetVehicleModel(trailerid)-400; AttachDynamicObjectToVehicle(obj[3],trailerid,-EVF::BlinkOffsetData[id][EVF::rX],EVF::BlinkOffsetData[id][EVF::rY],EVF::BlinkOffsetData[id][EVF::rZ],0.0,0.0,0.0); } else { if(obj[3] != STREAMER_TAG_OBJECT:INVALID_STREAMER_ID){ AttachDynamicObjectToVehicle(obj[3],vehicleid,-EVF::BlinkOffsetData[id][EVF::rX],EVF::BlinkOffsetData[id][EVF::rY],EVF::BlinkOffsetData[id][EVF::rZ],0.0,0.0,0.0); } } } case EVF_CAR_BLINK_EMERGENCY: { if(obj[0] != STREAMER_TAG_OBJECT:INVALID_STREAMER_ID){ AttachDynamicObjectToVehicle(obj[0],vehicleid,EVF::BlinkOffsetData[id][EVF::X],EVF::BlinkOffsetData[id][EVF::Y],EVF::BlinkOffsetData[id][EVF::Z],0.0,0.0,0.0); } if(trailerid != 0){ id = GetVehicleModel(trailerid)-400; AttachDynamicObjectToVehicle(obj[1],trailerid,EVF::BlinkOffsetData[id][EVF::rX],EVF::BlinkOffsetData[id][EVF::rY],EVF::BlinkOffsetData[id][EVF::rZ],0.0,0.0,0.0); } else { if(obj[1] != STREAMER_TAG_OBJECT:INVALID_STREAMER_ID){ AttachDynamicObjectToVehicle(obj[1],vehicleid,EVF::BlinkOffsetData[id][EVF::rX],EVF::BlinkOffsetData[id][EVF::rY],EVF::BlinkOffsetData[id][EVF::rZ],0.0,0.0,0.0); } } if(obj[2] != STREAMER_TAG_OBJECT:INVALID_STREAMER_ID){ AttachDynamicObjectToVehicle(obj[2],vehicleid,-EVF::BlinkOffsetData[id][EVF::X],EVF::BlinkOffsetData[id][EVF::Y],EVF::BlinkOffsetData[id][EVF::Z],0.0,0.0,0.0); } if(trailerid != 0){ id = GetVehicleModel(trailerid)-400; AttachDynamicObjectToVehicle(obj[3],trailerid,-EVF::BlinkOffsetData[id][EVF::rX],EVF::BlinkOffsetData[id][EVF::rY],EVF::BlinkOffsetData[id][EVF::rZ],0.0,0.0,0.0); } else { if(obj[3] != STREAMER_TAG_OBJECT:INVALID_STREAMER_ID){ AttachDynamicObjectToVehicle(obj[3],vehicleid,-EVF::BlinkOffsetData[id][EVF::rX],EVF::BlinkOffsetData[id][EVF::rY],EVF::BlinkOffsetData[id][EVF::rZ],0.0,0.0,0.0); } } } } } return 1; } #endif EVF::Function:: IsValidComponentForVehicle(vehicleid,componentid){ new modelid = GetVehicleModel(vehicleid); // Check for nitrous, wheels, and hydraulics. if((1008 <= componentid <= 1010) || (componentid == 1025) || (1073 <= componentid <= 1087) || (1096 <= componentid <= 1098)){ switch (modelid){ case 581, 523, 462, 521, 463, 522, 461, 448, 468, 586, 509, 481, 510, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454, 590, 569, 537, 538, 570, 449: return false; default: return true; } } else { modelid -= 400; for(new i = 0; i < sizeof(EVF::ValidComponent[]); i++){ if(EVF::ValidComponent[modelid][i] == componentid) return true; } } return false; } EVF::Function:: GetVehicleComponentPrice(componentid){ for(new i = 0; i < sizeof(EVF::ComponentPrice); i++){ if(EVF::ComponentPrice[i][0] == componentid){ return EVF::ComponentPrice[i][1]; } } return 0; } #if defined EVF_Streamer EVF::Function:: SetVehicleNeonLights(vehicleid,bool:enable = true,color = RED_NEON,slotid = 0){ if(slotid < 0 || slotid >= MAX_VEHICLE_NEON_SLOT) return 0; if(!IsValidVehicle(vehicleid)) return 0; new modelid = GetVehicleModel(vehicleid); if(!IsValidVehicleModelID(modelid)) return 0; modelid -= 400; if(IsValidDynamicObject(EVF::VehicleNeon[vehicleid][slotid][0])) DestroyDynamicObject(EVF::VehicleNeon[vehicleid][slotid][0]); if(IsValidDynamicObject(EVF::VehicleNeon[vehicleid][slotid][1])) DestroyDynamicObject(EVF::VehicleNeon[vehicleid][slotid][1]); EVF::VehicleNeon[vehicleid][slotid][0] = EVF::VehicleNeon[vehicleid][slotid][1] = STREAMER_TAG_OBJECT:INVALID_STREAMER_ID; if(!enable) return 1; if(18647 <= color <= 18652){ EVF::VehicleNeon[vehicleid][slotid][0] = CreateDynamicObject(color,0.0,0.0,0.0,0.0,0.0,0.0); EVF::VehicleNeon[vehicleid][slotid][1] = CreateDynamicObject(color,0.0,0.0,0.0,0.0,0.0,0.0); AttachDynamicObjectToVehicle(EVF::VehicleNeon[vehicleid][slotid][0],vehicleid,EVF::NeonOffsetData[modelid][EVF::NeonX], EVF::NeonOffsetData[modelid][EVF::NeonY],EVF::NeonOffsetData[modelid][EVF::NeonZ],0.0,0.0,0.0); AttachDynamicObjectToVehicle(EVF::VehicleNeon[vehicleid][slotid][1],vehicleid,-EVF::NeonOffsetData[modelid][EVF::NeonX], EVF::NeonOffsetData[modelid][EVF::NeonY],EVF::NeonOffsetData[modelid][EVF::NeonZ],0.0,0.0,0.0); return 1; } return 0; } EVF::Function:: VehicleSupportsNeonLights(modelid){ if(!IsValidVehicleModelID(modelid)) return 0; modelid -= 400; return !(EVF::NeonOffsetData[modelid][EVF::NeonX] == 0.0 && EVF::NeonOffsetData[modelid][EVF::NeonY] == 0.0 && EVF::NeonOffsetData[modelid][EVF::NeonZ] == 0.0); } EVF::Function:: GetVehicleNeonLightsState(vehicleid,slotid = 0){ if(slotid < 0 || slotid >= MAX_VEHICLE_NEON_SLOT) return 0; if(!IsValidVehicle(vehicleid)) return 0; return (IsValidDynamicObject(EVF::VehicleNeon[vehicleid][slotid][0]) && IsValidDynamicObject(EVF::VehicleNeon[vehicleid][slotid][1])); } #endif //Detect YSF.inc #if !defined _YSF_included #define GetVehicleInterior(%0) GetVehiclePropertyValue((%0),e_VEHICLE_INTERIOR) #define GetVehiclePaintjob(%0) GetVehiclePropertyValue((%0),e_VEHICLE_PAINTJOB) EVF::Function:: GetVehicleColor(vehicleid,&color1,&color2){ if(IsValidVehicle(vehicleid)){ color1 = GetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_1); color2 = GetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_2); return 1; } return 0; } EVF::Function:: bool:IsVehicleOccupied(vehicleid){ EVF::Foreach(i){ if(IsPlayerInVehicle(i,vehicleid)){ return true; } } return false; } #endif #define EVF_GetVehicleInterior(%0) GetVehiclePropertyValue((%0),e_VEHICLE_INTERIOR) #define EVF_GetVehiclePaintjob(%0) GetVehiclePropertyValue((%0),e_VEHICLE_PAINTJOB) EVF::Function:: EVF::GetVehicleColor(vehicleid,&color1,&color2){ if(IsValidVehicle(vehicleid)){ color1 = GetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_1); color2 = GetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_2); return 1; } return 0; } EVF::Function:: bool:EVF::IsVehicleOccupied(vehicleid){ EVF::Foreach(i){ if(IsPlayerInVehicle(i,vehicleid)){ return true; } } return false; } EVF::Function:: EVF::GetVehicleSpawnInfo(vehicleid,&Float:x,&Float:y,&Float:z,&Float:rotation,&worldid,&interiorid){ x = Float:GetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_X); y = Float:GetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_Y); z = Float:GetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_Z); rotation = Float:GetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_A); worldid = GetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_VW); interiorid = GetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_INT); return true; } EVF::Function:: EVF::SetVehicleSpawnInfo(vehicleid,Float:x,Float:y,Float:z,Float:rotation,worldid,interiorid){ SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_X,_:x); SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_Y,_:y); SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_Z,_:z); SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_A,_:rotation); SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_VW,worldid); SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_INT,interiorid); } EVF::Function:: SetVehicleBomb(vehicleid,time = 1000){ if(IsVehicleBombed(vehicleid)){ SetVehicleParams(vehicleid,VEHICLE_TYPE_ALARM,0); if(GetVehiclePropertyValue(vehicleid,e_VEHICLE_BOMB_TIMER) != -1){ KillTimer(GetVehiclePropertyValue(vehicleid,e_VEHICLE_BOMB_TIMER)); SetVehiclePropertyValue(vehicleid,e_VEHICLE_BOMB_TIMER,-1); } } return SetVehiclePropertyValue(vehicleid,e_VEHICLE_BOMB,time); } EVF::Function:: IsVehicleBombActivated(vehicleid){ if(IsVehicleBombed(vehicleid)){ if(GetVehiclePropertyValue(vehicleid,e_VEHICLE_BOMB_TIMER) != -1){ return 1; } } return 0; } EVF::Function:: EVF::UpdateVehicleDamage(vehicleid,type){ new panels, doors, lights, tires; GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); switch(type){ case VEHICLE_DAMAGE_PANELS: panels = 0x03331111; case VEHICLE_DAMAGE_DOORS: doors = 0x04040404; case VEHICLE_DAMAGE_LIGHTS: lights = 0x0000000F; } UpdateVehicleDamageStatus(vehicleid,panels,doors,lights,tires); return 1; } EVF::Function:: EVF::UpdateVehicleDamageStatus(vehicleid,type,update){ new panels, doors, lights, tires; GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); switch(type){ case VEHICLE_DAMAGE_PANELS: return UpdateVehicleDamageStatus(vehicleid,update,doors,lights,tires); case VEHICLE_DAMAGE_DOORS: return UpdateVehicleDamageStatus(vehicleid,panels,update,lights,tires); case VEHICLE_DAMAGE_LIGHTS: return UpdateVehicleDamageStatus(vehicleid,panels,doors,update,tires); case VEHICLE_DAMAGE_TIRES: return UpdateVehicleDamageStatus(vehicleid,panels,doors,lights,update); } return false; } EVF::Function:: EVF::GetVehicleDamageStatus(vehicleid,type){ new panels,doors,lights,tires; GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); switch(type){ case VEHICLE_DAMAGE_PANELS: return panels; case VEHICLE_DAMAGE_DOORS: return doors; case VEHICLE_DAMAGE_LIGHTS: return lights; case VEHICLE_DAMAGE_TIRES: return tires; } return -1; } EVF::Function:: Float:EVF::GetVehicleSpeed(vehicleid){ new Float:x,Float:y,Float:z; GetVehicleVelocity(vehicleid,x,y,z); return floatmul(VectorSize(x,y,z),VEHICLE_SPEED_MULTIPLIER); } EVF::Function:: GetVehicleRandomColors(modelid,&color1,&color2){ if(!IsValidVehicleModelID(modelid)) return 0; static index = 0; color1 = color2 = 0; modelid -= 400; if(!EVF::CarColors[modelid][0]) return 0; if(EVF::CarColors[modelid][0] == 2){ color1 = EVF::CarColors[modelid][1]; color2 = EVF::CarColors[modelid][2]; } else { index = random(EVF::CarColors[modelid][0]) & -2; color1 = EVF::CarColors[modelid][++index]; color2 = EVF::CarColors[modelid][++index]; } return 1; } EVF::Function:: GetVehicleParams(vehicleid,EVF::ParamTypes:type){ new bool:EVF::params[MAX_VEHICLE_PARAMS]; GetVehicleParamsEx(vehicleid,EVF::params[0],EVF::params[1],EVF::params[2],EVF::params[3],EVF::params[4],EVF::params[5],EVF::params[6]); return EVF::params[_:type]; } EVF::Function:: SetVehicleParams(vehicleid,EVF::ParamTypes:type,bool:status,delay = 0){ new bool:EVF::params[MAX_VEHICLE_PARAMS]; if(GetVehicleParamsEx(vehicleid,EVF::params[0],EVF::params[1],EVF::params[2],EVF::params[3],EVF::params[4],EVF::params[5],EVF::params[6])){ EVF::params[_:type] = status; if(delay > 0){ SetTimerEx("EVF::SetVehicleParamsEx",delay,false,"iiiiiiii",vehicleid,EVF::params[0],EVF::params[1],EVF::params[2],EVF::params[3],EVF::params[4],EVF::params[5],EVF::params[6]); } else { SetVehicleParamsEx(vehicleid,EVF::params[0],EVF::params[1],EVF::params[2],EVF::params[3],EVF::params[4],EVF::params[5],EVF::params[6]); } return 1; } return 0; } EVF::Function:: ToggleVehicleDamageUpdate(vehicleid,type,toggle){ if(!toggle){ if(GetVehicleParams(vehicleid,VEHICLE_TYPE_ENGINE)){ SetVehicleParams(vehicleid,VEHICLE_TYPE_ENGINE,false); } } switch(type){ case VEHICLE_DAMAGE_PANELS: return SetVehiclePropertyValue(vehicleid,e_VEHICLE_DAMAGE_PANELS,_:toggle); case VEHICLE_DAMAGE_DOORS: return SetVehiclePropertyValue(vehicleid,e_VEHICLE_DAMAGE_DOORS,_:toggle); case VEHICLE_DAMAGE_LIGHTS: return SetVehiclePropertyValue(vehicleid,e_VEHICLE_DAMAGE_LIGHTS,_:toggle); case VEHICLE_DAMAGE_TIRES: return SetVehiclePropertyValue(vehicleid,e_VEHICLE_DAMAGE_TIRES,_:toggle); } return 0; } EVF::Function:: IsVehicleDamageToggled(vehicleid,type){ switch(type){ case VEHICLE_DAMAGE_PANELS: return GetVehiclePropertyValue(vehicleid,e_VEHICLE_DAMAGE_PANELS); case VEHICLE_DAMAGE_DOORS: return GetVehiclePropertyValue(vehicleid,e_VEHICLE_DAMAGE_DOORS); case VEHICLE_DAMAGE_LIGHTS: return GetVehiclePropertyValue(vehicleid,e_VEHICLE_DAMAGE_LIGHTS); case VEHICLE_DAMAGE_TIRES: return GetVehiclePropertyValue(vehicleid,e_VEHICLE_DAMAGE_TIRES); } return 0; } EVF::Function:: GetNearestVehicleToPos(Float:x,Float:y,Float:z,worldid=-1,interiorid=-1,Float:maxdist=0.0,bool:fast=true,except_vid=0){ new Float:distance = -1.0, foundvid = INVALID_VEHICLE_ID, Float:px, Float:py, Float:pz, Float:tmpdistance; EVF::ForeachVehicle(vehicleid){ if(except_vid == vehicleid) continue; if(GetVehicleModel(vehicleid) == 590) continue; if(worldid != -1 && GetVehicleVirtualWorld(vehicleid) != worldid) continue; if(interiorid != -1 && GetVehicleInterior(vehicleid) != interiorid) continue; GetVehiclePos(vehicleid,px,py,pz); tmpdistance = GetDistanceBetweenPoints3D(x,y,z,px,py,pz); if(maxdist > 0.0 && tmpdistance > maxdist) continue; if(fast && (distance == -1.0 || tmpdistance < distance) && (maxdist == 0.0 || (tmpdistance < maxdist))) return vehicleid; if(distance == -1.0 || tmpdistance < distance){ distance = tmpdistance; foundvid = vehicleid; } } return foundvid; } EVF::Function:: GetNearestVehicleToPlayer(playerid,Float:maxdist=0.0,bool:fast=false){ new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); return GetNearestVehicleToPos(x,y,z,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid),maxdist,fast); } EVF::Function:: GetVehicleDriver1(vehicleid){ EVF::Foreach(i){ if(GetPlayerState(i) == PLAYER_STATE_DRIVER && IsPlayerInVehicle(i,vehicleid)){ return i; } } return INVALID_PLAYER_ID; } EVF::Function:: IsVehicleSeatOccupied(vehicleid,seatid){ if(!GetVehicleModel(vehicleid)) return 0; EVF::Foreach(i){ if(IsPlayerInVehicle(i,vehicleid) && GetPlayerVehicleSeat(i) == seatid){ return 1; } } return 0; } EVF::Function:: GetVehicleNextSeat(vehicleid,passenger = 1){ new seats = GetVehicleSeats(vehicleid); if(seats > 1){ for(new i = passenger; i < seats; i++){ if(!IsVehicleSeatOccupied(vehicleid,i)){ return i; } } } return INVALID_SEAT_ID; } #if defined EVF_Streamer EVF::Function:: STREAMER_TAG_OBJECT:GetVehicleSlotAttachedObject(vehicleid,slot){ if(!IsValidDynamicObject(EVF::VehicleTempData[vehicleid][e_attached_object][slot])) return STREAMER_TAG_OBJECT:INVALID_STREAMER_ID; return EVF::VehicleTempData[vehicleid][e_attached_object][slot]; } EVF::Function:: IsObjectAttachedToVehicle(STREAMER_TAG_OBJECT:objectid,vehicleid){ for(new i = 0; i < MAX_VEHICLE_ATTACHED_OBJECTS; i++){ if(IsValidDynamicObject(EVF::VehicleTempData[vehicleid][e_attached_object][i])){ if(EVF::VehicleTempData[vehicleid][e_attached_object][i] == objectid) return 1; } } return 0; } EVF::Function:: EditVehicle(playerid,vehicleid){ if(IsValidDynamicObject(STREAMER_TAG_OBJECT:GetVehiclePropertyValue(vehicleid,e_VEHICLE_EDITOR))) return false; new Float:pos[3]; GetVehiclePos(vehicleid,pos[0],pos[1],pos[2]); SetVehiclePropertyValue(vehicleid,e_VEHICLE_EDITOR,_:CreateDynamicObject(19300,pos[0],pos[1],pos[2],0.0,0.0,0.0)); EditDynamicObject(playerid,STREAMER_TAG_OBJECT:GetVehiclePropertyValue(vehicleid,e_VEHICLE_EDITOR)); EVF::PlayerTempData[playerid][e_editor_vehicle] = vehicleid; EVF::PlayerTempData[playerid][e_editor_object] = STREAMER_TAG_OBJECT:INVALID_STREAMER_ID; return true; } EVF::Function:: EditVehicleObject(playerid,vehicleid,STREAMER_TAG_OBJECT:objectid){ if(IsValidDynamicObject(STREAMER_TAG_OBJECT:GetVehiclePropertyValue(vehicleid,e_VEHICLE_EDITOR))) return false; if(!IsValidDynamicObject(objectid)) return false; SetVehiclePropertyValue(vehicleid,e_VEHICLE_EDITOR,_:objectid); new Float:pos[3]; GetVehiclePos(vehicleid,pos[0],pos[1],pos[2]); new Float:angle; GetVehicleZAngle(vehicleid,angle); new model = Streamer_GetIntData(STREAMER_TYPE_OBJECT,objectid,E_STREAMER_MODEL_ID); DestroyDynamicObject(objectid); SetVehiclePropertyValue(vehicleid,e_VEHICLE_EDITOR,_:CreateDynamicObject(model,pos[0],pos[1],pos[2],angle,0.0,0.0)); EditDynamicObject(playerid,STREAMER_TAG_OBJECT:GetVehiclePropertyValue(vehicleid,e_VEHICLE_EDITOR)); SetVehicleZAngle(vehicleid,0.0); EVF::PlayerTempData[playerid][e_editor_vehicle] = vehicleid; EVF::PlayerTempData[playerid][e_editor_object] = objectid; return true; } #endif EVF::Function:: TeleportVehicle(vehicleid,Float:x,Float:y,Float:z,Float:angle,worldid = -1,interiorid = -1){ EVF::Foreach(i){ if(GetPlayerVehicleID(i) == vehicleid){ if(worldid != -1){ SetPlayerVirtualWorld(i,worldid); } else { SetPlayerVirtualWorld(i,GetVehicleVirtualWorld(vehicleid)); } if(interiorid != -1){ SetPlayerInterior(i,interiorid); } else { SetPlayerInterior(i,GetVehicleInterior(vehicleid)); } } } if(worldid != -1) SetVehicleVirtualWorld(vehicleid,worldid); if(interiorid != -1) SetVehicleInterior(vehicleid,interiorid); SetVehiclePos(vehicleid,x,y,z); SetVehicleZAngle(vehicleid,angle); return 1; } EVF::Function:: GetVehiclePanels(vehicleid,&front_left,&front_right,&rear_left,&rear_right,&windshield,&front_bumper,&rear_bumper){ new panels,doors,lights,tires; GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); front_left = (panels & 0xF); front_right = (panels >> 4) & 0xF; rear_left = (panels >> 8) & 0xF; rear_right = (panels >> 12) & 0xF; windshield = (panels >> 16) & 0xF; front_bumper = (panels >> 20) & 0xF; rear_bumper = (panels >> 24) & 0xF; } EVF::Function:: SetVehiclePanels(vehicleid,front_left,front_right,rear_left,rear_right,windshield,front_bumper,rear_bumper){ new panels,doors,lights,tires; GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); panels = (front_left | (front_right << 4) | (rear_left << 8) | (rear_right << 12) | (windshield << 16) | (front_bumper << 20) | (rear_bumper << 24)); UpdateVehicleDamageStatus(vehicleid,panels,doors,lights,tires); } //Update by Freaksken EVF::Function:: GetVehicleLights(vehicleid,&front_left_light,&front_right_light,&back_lights){ new panels,doors,lights,tires; GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); front_left_light = (lights & 0x1); front_right_light = (lights >> 2 & 0x1); back_lights = (lights >> 6 & 0x1); } //Update by Freaksken EVF::Function:: SetVehicleLights(vehicleid,front_left_light,front_right_light,back_lights){ new panels,doors,lights,tires; GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); lights = (front_left_light | (front_right_light << 2) | (back_lights << 6)); UpdateVehicleDamageStatus(vehicleid,panels,doors,lights,tires); } EVF::Function:: GetVehicleDoors(vehicleid,&bonnet,&boot,&driver_door,&passenger_door){ new panels,doors,lights,tires; GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); bonnet = (doors & 0x7); boot = ((doors >> 8) & 0x7); driver_door = ((doors >> 16) & 0x7); passenger_door = ((doors >> 24) & 0x7); } EVF::Function:: SetVehicleDoors(vehicleid,bonnet,boot,driver_door,passenger_door){ new panels,doors,lights,tires; GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); doors = (bonnet | (boot << 8) | (driver_door << 16) | (passenger_door << 24)); UpdateVehicleDamageStatus(vehicleid,panels,doors,lights,tires); } EVF::Function:: GetVehicleTires(vehicleid,&front_left,&front_right,&rear_left,&rear_right){ new panels,doors,lights,tires; GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); rear_right = (tires & 0x1); front_right = (tires >> 1 & 0x1); rear_left = (tires >> 2 & 0x1); front_left = (tires >> 3 & 0x1); } EVF::Function:: SetVehicleTires(vehicleid,front_left,front_right,rear_left,rear_right){ new panels,doors,lights,tires; GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); tires = (rear_right | (front_right << 1) | (rear_left << 2) | (front_left << 3)); UpdateVehicleDamageStatus(vehicleid,panels,doors,lights,tires); } EVF::Function:: SwitchVehicleEngine(vehicleid,bool:engine_status){ new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vehicleid,_:engine_status,lights,alarm,doors,bonnet,boot,objective); } EVF::Function:: SwitchVehicleLight(vehicleid,bool:light_status){ new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vehicleid,engine,_:light_status,alarm,doors,bonnet,boot,objective); } EVF::Function:: SwitchVehicleAlarm(vehicleid,bool:alarm_status){ new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vehicleid,engine,lights,_:alarm_status,doors,bonnet,boot,objective); } EVF::Function:: SwitchVehicleDoors(vehicleid,bool:doors_status){ new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vehicleid,engine,lights,alarm,_:doors_status,bonnet,boot,objective); } EVF::Function:: SwitchVehicleBonnet(vehicleid,bool:bonnet_status){ new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,_:bonnet_status,boot,objective); } EVF::Function:: SwitchVehicleBoot(vehicleid,bool:boot_status){ new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,_:boot_status,objective); } EVF::Function:: SwitchVehicleObjective(vehicleid,bool:objective_status){ new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,_:objective_status); } EVF::Function:: GetVehicleWindowState(vehicleid,doorid){ new driver,passenger,backleft,backright; GetVehicleParamsCarWindows(vehicleid,driver,passenger,backleft,backright); switch(doorid){ case DOOR_DRIVER: return (driver > 0); case DOOR_PASSENGER: return (passenger > 0); case DOOR_BACKLEFF: return (backleft > 0); case DOOR_BACKRIGHT: return (backright > 0); } return 0; } EVF::Function:: SetVehicleWindowState(vehicleid,doorid,window_state){ if(!IsValidVehicleDoor(vehicleid,doorid)) return 0; new driver,passenger,backleft,backright; driver = GetVehicleWindowState(vehicleid,DOOR_DRIVER); passenger = GetVehicleWindowState(vehicleid,DOOR_PASSENGER); backleft = GetVehicleWindowState(vehicleid,DOOR_BACKLEFF); backright = GetVehicleWindowState(vehicleid,DOOR_BACKRIGHT); switch(doorid){ case DOOR_DRIVER: SetVehicleParamsCarWindows(vehicleid,window_state,passenger,backleft,backright); case DOOR_PASSENGER: SetVehicleParamsCarWindows(vehicleid,driver,window_state,backleft,backright); case DOOR_BACKLEFF: SetVehicleParamsCarWindows(vehicleid,driver,passenger,window_state,backright); case DOOR_BACKRIGHT: SetVehicleParamsCarWindows(vehicleid,driver,passenger,backleft,window_state); } return 1; } EVF::Function:: GetVehicleDoorState(vehicleid,doorid){ new driver,passenger,backleft,backright; GetVehicleParamsCarDoors(vehicleid,driver,passenger,backleft,backright); switch(doorid){ case DOOR_DRIVER: return (driver > 0); case DOOR_PASSENGER: return (passenger > 0); case DOOR_BACKLEFF: return (backleft > 0); case DOOR_BACKRIGHT: return (backright > 0); } return 0; } EVF::Function:: SetVehicleDoorState(vehicleid,doorid,door_state){ if(!IsValidVehicleDoor(vehicleid,doorid)) return 0; new driver,passenger,backleft,backright; driver = GetVehicleDoorState(vehicleid,DOOR_DRIVER); passenger = GetVehicleDoorState(vehicleid,DOOR_PASSENGER); backleft = GetVehicleDoorState(vehicleid,DOOR_BACKLEFF); backright = GetVehicleDoorState(vehicleid,DOOR_BACKRIGHT); switch(doorid){ case DOOR_DRIVER: SetVehicleParamsCarDoors(vehicleid,door_state,passenger,backleft,backright); case DOOR_PASSENGER: SetVehicleParamsCarDoors(vehicleid,driver,door_state,backleft,backright); case DOOR_BACKLEFF: SetVehicleParamsCarDoors(vehicleid,driver,passenger,door_state,backright); case DOOR_BACKRIGHT: SetVehicleParamsCarDoors(vehicleid,driver,passenger,backleft,door_state); } return 1; } EVF::Public:: OnVehicleTimeUpdate(){ new Float:EVF::Vec[4]; EVF::ForeachVehicle(vehicleid){ if(EVF::VehicleProperty[vehicleid][e_VEHICLE_STORED]){ GetVehiclePos(vehicleid,EVF::Vec[0],EVF::Vec[1],EVF::Vec[2]); GetVehicleZAngle(vehicleid,EVF::Vec[3]); if(IsVehicleSticky(vehicleid)){ if(VectorSize(EVF::Vec[0]-EVF::VehicleTempData[vehicleid][e_pos_x],EVF::Vec[1]-EVF::VehicleTempData[vehicleid][e_pos_y],EVF::Vec[2]-EVF::VehicleTempData[vehicleid][e_pos_z]) >= 2.0 || VectorSize(EVF::Vec[3]-EVF::VehicleTempData[vehicleid][e_pos_a],0.0,0.0) >= 1.0){ return TeleportVehicle(vehicleid,EVF::VehicleTempData[vehicleid][e_pos_x],EVF::VehicleTempData[vehicleid][e_pos_y],EVF::VehicleTempData[vehicleid][e_pos_z],EVF::VehicleTempData[vehicleid][e_pos_a],GetVehicleInterior(vehicleid),GetVehicleVirtualWorld(vehicleid)); } } #if defined OnVehiclePosChange if(VectorSize(EVF::Vec[0]-EVF::VehicleTempData[vehicleid][e_pos_x],EVF::Vec[1]-EVF::VehicleTempData[vehicleid][e_pos_y],EVF::Vec[2]-EVF::VehicleTempData[vehicleid][e_pos_z]) >= 2.0){ if(CallRemoteFunction("OnVehiclePosChange","iffffffff",vehicleid,EVF::Vec[0],EVF::Vec[1],EVF::Vec[2],EVF::Vec[3],EVF::VehicleTempData[vehicleid][e_pos_x],EVF::VehicleTempData[vehicleid][e_pos_y],EVF::VehicleTempData[vehicleid][e_pos_z],EVF::VehicleTempData[vehicleid][e_pos_a])){ EVF::VehicleTempData[vehicleid][e_pos_x] = EVF::Vec[0]; EVF::VehicleTempData[vehicleid][e_pos_y] = EVF::Vec[1]; EVF::VehicleTempData[vehicleid][e_pos_z] = EVF::Vec[2]; EVF::VehicleTempData[vehicleid][e_pos_a] = EVF::Vec[3]; } else { return TeleportVehicle(vehicleid,EVF::VehicleTempData[vehicleid][e_pos_x],EVF::VehicleTempData[vehicleid][e_pos_y],EVF::VehicleTempData[vehicleid][e_pos_z],EVF::VehicleTempData[vehicleid][e_pos_a],GetVehicleInterior(vehicleid),GetVehicleVirtualWorld(vehicleid)); } } #endif GetVehicleVelocity(vehicleid,EVF::Vec[0],EVF::Vec[1],EVF::Vec[2]); if(IsVehicleFuelToggled(vehicleid)){ //fuel system new Float:vehicle_speed = EVF::GetVehicleSpeed(vehicleid); //if vehicle out of fuel if(GetVehicleFuel(vehicleid) <= 0){ SetVehicleParams(vehicleid,VEHICLE_TYPE_ENGINE,false); new vehicle_driver = GetVehicleDriverID(vehicleid); if(IsPlayerConnected(vehicle_driver)){ GameTextForPlayer(vehicle_driver,"~r~Vehicle out of fuel !",5000,3); } } else { //if vehicle has some EVF::Vecitive fuel EVF::VehicleTempData[vehicleid][e_uptime] += 1; if(EVF::VehicleTempData[vehicleid][e_uptime] > 20){ // 250 ms * 20 = 5 seconds EVF::VehicleTempData[vehicleid][e_uptime] = 0; new fuel_consumption_level = 0; if(vehicle_speed == 0.0){ if(GetVehicleParams(vehicleid,VEHICLE_TYPE_ENGINE)){ fuel_consumption_level = MULTIPLIER_FUEL_SYSTEM; } } else { for(new i = 20, j = floatround(GetVehicleTopSpeed(vehicleid)); i <= j; i += 20){ if(vehicle_speed > i){ fuel_consumption_level += MULTIPLIER_FUEL_SYSTEM; } } } if(fuel_consumption_level > 0){ new old_fuel = GetVehicleFuel(vehicleid), new_fuel = (old_fuel - fuel_consumption_level - 1); if(new_fuel < 0) new_fuel = 0; CallRemoteFunction("OnVehicleFuelChange","iii",vehicleid,new_fuel,old_fuel); SetVehicleFuel(vehicleid,new_fuel); } } } } #if defined OnVehicleVelocityChange if(CallRemoteFunction("OnVehicleVelocityChange","iffffff",vehicleid,EVF::Vec[0],EVF::Vec[1],EVF::Vec[2],EVF::VehicleTempData[vehicleid][e_vel_x],EVF::VehicleTempData[vehicleid][e_vel_y],EVF::VehicleTempData[vehicleid][e_vel_z])){ EVF::VehicleTempData[vehicleid][e_vel_x] = EVF::Vec[0]; EVF::VehicleTempData[vehicleid][e_vel_y] = EVF::Vec[1]; EVF::VehicleTempData[vehicleid][e_vel_z] = EVF::Vec[2]; } else { return SetVehicleVelocity(vehicleid,EVF::VehicleTempData[vehicleid][e_vel_x],EVF::VehicleTempData[vehicleid][e_vel_y],EVF::VehicleTempData[vehicleid][e_vel_z]); } #endif GetVehicleHealth(vehicleid,EVF::Vec[0]); #if defined OnVehicleHealthChange if(EVF::Vec[0] != EVF::VehicleTempData[vehicleid][e_health]){ if(CallRemoteFunction("OnVehicleHealthChange","iff",vehicleid,EVF::Vec[0],EVF::VehicleTempData[vehicleid][e_health])){ EVF::VehicleTempData[vehicleid][e_health] = EVF::Vec[0]; } else { return SetVehicleHealth(vehicleid,EVF::VehicleTempData[vehicleid][e_health]); } } #endif } } return 1; } EVF::Public:: EVF::SetVehicleParamsEx(vehicleid,bool:engine,bool:lights,bool:alarm,bool:doors,bool:bonnet,bool:boot,bool:objective){ SetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); } EVF::Public:: EVF::OnVehicleBombActivate(playerid,vehicleid){ SetVehicleParams(vehicleid,VEHICLE_TYPE_ALARM,true); SetVehiclePropertyValue(vehicleid,e_VEHICLE_BOMB_TIMER,SetTimerEx("EVF_OnVehicleBombExplode",1750,false,"ii",playerid,vehicleid)); return 1; } EVF::Public:: EVF::ImportVehicle(vehicleid,modelid,Float:x,Float:y,Float:z,Float:angle,color1,color2,worldid,interiorid,unoccupied_damage){ EVF::VehicleProperty[vehicleid][e_VEHICLE_SPAWN_X] = _:x; EVF::VehicleProperty[vehicleid][e_VEHICLE_SPAWN_Y] = _:y; EVF::VehicleProperty[vehicleid][e_VEHICLE_SPAWN_Z] = _:z; EVF::VehicleProperty[vehicleid][e_VEHICLE_SPAWN_A] = _:angle; EVF::VehicleProperty[vehicleid][e_VEHICLE_PAINTJOB] = RESET_PAINTJOB_ID; EVF::VehicleProperty[vehicleid][e_VEHICLE_INTERIOR] = interiorid; EVF::VehicleProperty[vehicleid][e_VEHICLE_COLOR_1] = color1; EVF::VehicleProperty[vehicleid][e_VEHICLE_COLOR_2] = color2; EVF::VehicleProperty[vehicleid][e_VEHICLE_HORN] = 0; EVF::VehicleProperty[vehicleid][e_VEHICLE_SPAWN_VW] = worldid; EVF::VehicleProperty[vehicleid][e_VEHICLE_SPAWN_INT] = interiorid; EVF::VehicleProperty[vehicleid][e_VEHICLE_SPEED_CAP] = 0; EVF::VehicleProperty[vehicleid][e_VEHICLE_FUEL_USE] = 0; EVF::VehicleProperty[vehicleid][e_VEHICLE_FUEL] = 0; EVF::VehicleProperty[vehicleid][e_VEHICLE_STICKY] = 0; EVF::VehicleProperty[vehicleid][e_VEHICLE_UNO_DAMAGE] = ((unoccupied_damage)?(1):(0)); EVF::VehicleProperty[vehicleid][e_VEHICLE_CAP_DAMAGE] = 0; EVF::VehicleProperty[vehicleid][e_VEHICLE_EDITOR] = 0; EVF::VehicleProperty[vehicleid][e_VEHICLE_DAMAGE_PANELS] = 1; EVF::VehicleProperty[vehicleid][e_VEHICLE_DAMAGE_DOORS] = 1; EVF::VehicleProperty[vehicleid][e_VEHICLE_DAMAGE_LIGHTS] = 1; EVF::VehicleProperty[vehicleid][e_VEHICLE_DAMAGE_TIRES] = 1; EVF::VehicleProperty[vehicleid][e_VEHICLE_BOMB] = 0; EVF::VehicleProperty[vehicleid][e_VEHICLE_BOMB_TIMER] = -1; EVF::VehicleProperty[vehicleid][e_VEHICLE_BULLETPROOF] = 0; EVF::VehicleTempData[vehicleid][e_pos_x] = x; EVF::VehicleTempData[vehicleid][e_pos_y] = y; EVF::VehicleTempData[vehicleid][e_pos_z] = z; EVF::VehicleTempData[vehicleid][e_pos_a] = angle; EVF::VehicleTempData[vehicleid][e_vel_x] = 0.0; EVF::VehicleTempData[vehicleid][e_vel_y] = 0.0; EVF::VehicleTempData[vehicleid][e_vel_z] = 0.0; EVF::VehicleTempData[vehicleid][e_health] = 1000.0; EVF::VehicleTempData[vehicleid][e_uptime] = 0; SetVehiclePropertyValue(vehicleid,e_VEHICLE_STORED,1); return 1; } EVF::Public:: EVF::RemoveVehicle(vehicleid){ SetVehiclePropertyValue(vehicleid,e_VEHICLE_STORED,0); return 1; } EVF::Public:: EVF::OnVehicleBombExplode(playerid,vehicleid){ if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER){ if(!CallRemoteFunction("OnVehicleBombDeactivate","i",vehicleid)){ return SetVehicleParams(vehicleid,VEHICLE_TYPE_ALARM,false); } } CallRemoteFunction("OnVehicleBombExplode","i",vehicleid); SetVehicleParams(vehicleid,VEHICLE_TYPE_ALARM,false); new Float:pos[3]; GetVehiclePos(vehicleid,pos[0],pos[1],pos[2]); #if defined _3D_Tryg CreateDynamicExplosion(pos[0],pos[1],pos[2],3,30.0,GetVehicleVirtualWorld(vehicleid),GetVehicleInterior(vehicleid),-1,200.0); #else CreateExplosion(pos[0],pos[1],pos[2],3,30.0); #endif SetVehicleToRespawn(vehicleid); if(GetPlayerVehicleID(playerid) == vehicleid){ SetPlayerHealth(playerid,0.0); GameTextForPlayer(playerid,"~r~Bombed !",3500,3); } SetVehiclePropertyValue(vehicleid,e_VEHICLE_BOMB_TIMER,-1); return 1; } //Hook: SetVehicleHealth EVF::Function:: EVF::SetVehicleHealth(vehicleid,Float:health){ if(SetVehicleHealth(vehicleid,health)){ EVF::VehicleTempData[vehicleid][e_health] = health; return 1; } return 0; } #if defined _ALS_SetVehicleHealth #undef SetVehicleHealth #else #define _ALS_SetVehicleHealth #endif #define SetVehicleHealth EVF_SetVehicleHealth //Hook: SetVehiclePos EVF::Function:: EVF::SetVehiclePos(vehicleid,Float:x,Float:y,Float:z){ if(SetVehiclePos(vehicleid,Float:x,Float:y,Float:z)){ EVF::VehicleTempData[vehicleid][e_pos_x] = x; EVF::VehicleTempData[vehicleid][e_pos_y] = y; EVF::VehicleTempData[vehicleid][e_pos_z] = z; return 1; } return 0; } #if defined _ALS_SetVehiclePos #undef SetVehiclePos #else #define _ALS_SetVehiclePos #endif #define SetVehiclePos EVF_SetVehiclePos //Hook: SetVehicleZAngle EVF::Function:: EVF::SetVehicleZAngle(vehicleid,Float:angle){ if(SetVehicleZAngle(vehicleid,angle)){ EVF::VehicleTempData[vehicleid][e_pos_a] = angle; return 1; } return 0; } #if defined _ALS_SetVehicleZAngle #undef SetVehicleZAngle #else #define _ALS_SetVehicleZAngle #endif #define SetVehicleZAngle EVF_SetVehicleZAngle //Hook: LinkVehicleToInterior EVF::Function:: EVF::LinkVehicleToInterior(vehicleid,interiorid){ if(LinkVehicleToInterior(vehicleid,interiorid)){ SetVehiclePropertyValue(vehicleid,e_VEHICLE_INTERIOR,interiorid); return 1; } return 0; } #if defined _ALS_LinkVehicleToInterior #undef LinkVehicleToInterior #else #define _ALS_LinkVehicleToInterior #endif #define LinkVehicleToInterior EVF_LinkVehicleToInterior //Hook: ChangeVehicleColor EVF::Function:: EVF::ChangeVehicleColor(vehicleid,color1,color2){ new randcolor1, randcolor2; if(GetVehicleRandomColors(GetVehicleModel(vehicleid),randcolor1,randcolor2)){ if(color1 == -1) color1 = randcolor1; if(color2 == -1) color2 = randcolor2; } if(ChangeVehicleColours(vehicleid,color1,color2)){ SetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_1,color1); SetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_2,color2); return 1; } return 0; } #if defined _ALS_ChangeVehicleColor #undef ChangeVehicleColor #else #define _ALS_ChangeVehicleColor #endif #define ChangeVehicleColor EVF_ChangeVehicleColor //Hook: ChangeVehiclePaintjob EVF::Function:: EVF::ChangeVehiclePaintjob(vehicleid,paintjobid){ if(ChangeVehiclePaintjob(vehicleid,paintjobid)){ SetVehiclePropertyValue(vehicleid,e_VEHICLE_PAINTJOB,paintjobid); if(paintjobid == RESET_PAINTJOB_ID){ new color1,color2; if(EVF::GetVehicleColor(vehicleid,color1,color2)){ ChangeVehicleColours(vehicleid,color1,color2); } } return 1; } return 0; } #if defined _ALS_ChangeVehiclePaintjob #undef ChangeVehiclePaintjob #else #define _ALS_ChangeVehiclePaintjob #endif #define ChangeVehiclePaintjob EVF_ChangeVehiclePaintjob //Hook: OnVehicleRespray public OnVehicleRespray(playerid,vehicleid,colour1,colour2){ SetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_1,colour1); SetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_2,colour2); #if defined EVF_OnVehicleRespray EVF::OnVehicleRespray(playerid,vehicleid,colour1,colour2); #endif return 1; } #if defined _ALS_OnVehicleRespray #undef OnVehicleRespray #else #define _ALS_OnVehicleRespray #endif #define OnVehicleRespray EVF_OnVehicleRespray #if defined EVF_OnVehicleRespray forward EVF_OnVehicleRespray(playerid,vehicleid,colour1,colour2); #endif //Hook: OnVehiclePaintjob public OnVehiclePaintjob(playerid,vehicleid,paintjob){ SetVehiclePropertyValue(vehicleid,e_VEHICLE_PAINTJOB,paintjob); #if defined EVF_OnVehiclePaintjob EVF::OnVehiclePaintjob(playerid,vehicleid,paintjob); #endif return 1; } #if defined _ALS_OnVehiclePaintjob #undef OnVehiclePaintjob #else #define _ALS_OnVehiclePaintjob #endif #define OnVehiclePaintjob EVF_OnVehiclePaintjob #if defined EVF_OnVehiclePaintjob forward EVF_OnVehiclePaintjob(playerid,vehicleid,paintjob); #endif //Hook: CreateVehicle EVF::Function:: EVF::CreateVehicle(modelid,Float:x,Float:y,Float:z,Float:angle,color1,color2,respawn_delay,bool:addsiren = false,worldid = 0,interiorid = 0,bool:unoccupied_damage = false){ if(!IsValidVehicleModelID(modelid)) return INVALID_VEHICLE_ID; new vehicleid = INVALID_VEHICLE_ID, randcolor1, randcolor2; if(GetVehicleRandomColors(modelid,randcolor1,randcolor2)){ if(color1 == -1) color1 = randcolor1; if(color2 == -1) color2 = randcolor2; } switch(modelid){ case 569, 570, 537, 538: vehicleid = AddStaticVehicleEx(modelid,x,y,z,angle,color1,color2,respawn_delay,addsiren); default: vehicleid = CreateVehicle(modelid,x,y,z,angle,color1,color2,respawn_delay,addsiren); } if(vehicleid == INVALID_VEHICLE_ID || !IsValidVehicle(vehicleid)){ printf("[ADM] Error: Your server have reached MAX_VEHICLES limit (%i).",MAX_VEHICLES); return INVALID_VEHICLE_ID; } ResetVehicleProperties(vehicleid); #if defined EVF_Streamer for(new i = 0; i < MAX_VEHICLE_ATTACHED_OBJECTS; i++){ EVF::VehicleTempData[vehicleid][e_attached_object][i] = STREAMER_TAG_OBJECT:INVALID_STREAMER_ID; } #endif EVF::VehicleTempData[vehicleid][e_pos_x] = x; EVF::VehicleTempData[vehicleid][e_pos_y] = y; EVF::VehicleTempData[vehicleid][e_pos_z] = z; EVF::VehicleTempData[vehicleid][e_pos_a] = angle; EVF::VehicleTempData[vehicleid][e_vel_x] = 0.0; EVF::VehicleTempData[vehicleid][e_vel_y] = 0.0; EVF::VehicleTempData[vehicleid][e_vel_z] = 0.0; EVF::VehicleTempData[vehicleid][e_health] = 1000.0; EVF::VehicleTempData[vehicleid][e_uptime] = 0; LinkVehicleToInterior(vehicleid,interiorid); SetVehicleVirtualWorld(vehicleid,worldid); SetVehicleHorn(vehicleid,0); SetVehicleFuel(vehicleid,DEFAULT_VEHICLE_FUEL); SetVehicleSpeedCap(vehicleid,0.0); ToggleUnoccupiedVehicleDamage(vehicleid,unoccupied_damage); ToggleVehicleSticky(vehicleid,0); ToggleVehiclePetrolCapDestroy(vehicleid,0); ToggleVehicleFuel(vehicleid,0); SetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_1,color1); SetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_2,color2); SetVehiclePropertyValue(vehicleid,e_VEHICLE_PAINTJOB,RESET_PAINTJOB_ID); SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_X,_:x); SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_Y,_:y); SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_Z,_:z); SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_A,_:angle); SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_VW,worldid); SetVehiclePropertyValue(vehicleid,e_VEHICLE_SPAWN_INT,interiorid); SetVehiclePropertyValue(vehicleid,e_VEHICLE_EDITOR,0); SetVehiclePropertyValue(vehicleid,e_VEHICLE_BOMB,0); SetVehiclePropertyValue(vehicleid,e_VEHICLE_BOMB_TIMER,-1); SetVehiclePropertyValue(vehicleid,e_VEHICLE_BULLETPROOF,0); SetVehiclePropertyValue(vehicleid,e_VEHICLE_STORED,1); for(new i = 0; i < 4; i++) ToggleVehicleDamageUpdate(vehicleid,i,1); CallRemoteFunction("OnVehicleCreated","i",vehicleid); return vehicleid; } #if defined _ALS_CreateVehicle #undef CreateVehicle #else #define _ALS_CreateVehicle #endif #define CreateVehicle EVF_CreateVehicle //Hook: AddStaticVehicle EVF::Function:: EVF::AddStaticVehicle(modelid,Float:spawn_x,Float:spawn_y,Float:spawn_z,Float:z_angle,color1,color2){ return EVF::CreateVehicle(modelid,spawn_x,spawn_y,spawn_z,z_angle,color1,color2,-1); } #if defined _ALS_AddStaticVehicle #undef AddStaticVehicle #else #define _ALS_AddStaticVehicle #endif #define AddStaticVehicle EVF_AddStaticVehicle //Hook: AddStaticVehicleEx EVF::Function:: EVF::AddStaticVehicleEx(modelid,Float:spawn_x,Float:spawn_y,Float:spawn_z,Float:z_angle,color1,color2,respawn_delay,addsiren=0){ return EVF::CreateVehicle(modelid,spawn_x,spawn_y,spawn_z,z_angle,color1,color2,respawn_delay,addsiren); } #if defined _ALS_AddStaticVehicleEx #undef AddStaticVehicleEx #else #define _ALS_AddStaticVehicleEx #endif #define AddStaticVehicleEx EVF_CreateVehicle //Hook: DestroyVehicle EVF::Function:: EVF::DestroyVehicle(vehicleid){ if(!IsValidVehicle(vehicleid)) return 0; EVF::Foreach(i){ if(EVF::PlayerTempData[i][e_editor_vehicle] == GetVehiclePropertyValue(vehicleid,e_VEHICLE_EDITOR)){ CancelEdit(i); } } #if defined EVF_Streamer new objectid = GetVehiclePropertyValue(vehicleid,e_VEHICLE_EDITOR); DestroyDynamicObject(STREAMER_TAG_OBJECT:objectid); for(new i = 0; i < MAX_VEHICLE_ATTACHED_OBJECTS; i++){ if(IsValidDynamicObject(EVF::VehicleTempData[vehicleid][e_attached_object][i])){ DestroyDynamicObject(EVF::VehicleTempData[vehicleid][e_attached_object][i]); EVF::VehicleTempData[vehicleid][e_attached_object][i] = STREAMER_TAG_OBJECT:INVALID_STREAMER_ID; } } for(new slotid = 0; slotid < MAX_VEHICLE_NEON_SLOT; slotid++){ SetVehicleNeonLights(vehicleid,false,RED_NEON,slotid); } #endif EVF::VehicleTempData[vehicleid][e_uptime] = 0; CallRemoteFunction("OnVehicleDestroyed","i",vehicleid); ResetVehicleProperties(vehicleid); return DestroyVehicle(vehicleid); } #if defined _ALS_DestroyVehicle #undef DestroyVehicle #else #define _ALS_DestroyVehicle #endif #define DestroyVehicle EVF_DestroyVehicle //Hook: OnPlayerWeaponShot public OnPlayerWeaponShot(playerid,weaponid,hittype,hitid,Float:fX,Float:fY,Float:fZ){ if(hittype == BULLET_HIT_TYPE_VEHICLE){ if(IsToggledVehicleBulletproof(hitid)) return 0; new Float:fHealth, bodypart = _:VEHICLE_BODYPART_UNKNOWN, Float:fDamage = EVF::WeaponDamage[GetPlayerWeapon(playerid)]; GetVehicleHealth(hitid,fHealth); if(fHealth > 249.0){ new fModelid = GetVehicleModel(hitid), Float:fOffSet[3], fUpdate; if(IsUnoccupiedDamageToggled(hitid)){ //front wheels GetVehicleModelInfo(fModelid,VEHICLE_MODEL_INFO_WHEELSFRONT,fOffSet[0],fOffSet[1],fOffSet[2]); if(VectorSize(fX+fOffSet[0],fY-fOffSet[1],fZ-fOffSet[2]) <= 0.4){ //left fUpdate = EVF::GetVehicleDamageStatus(hitid,VEHICLE_DAMAGE_TIRES) + 8; if(fUpdate > 15){ EVF::UpdateVehicleDamageStatus(hitid,VEHICLE_DAMAGE_TIRES,fUpdate); } bodypart = _:VEHICLE_BODYPART_FL_WHEEL; } else if(VectorSize(fX-fOffSet[0],fY-fOffSet[1],fZ-fOffSet[2]) <= 0.4){ //right fUpdate = EVF::GetVehicleDamageStatus(hitid,VEHICLE_DAMAGE_TIRES) + 2; if(fUpdate > 15){ EVF::UpdateVehicleDamageStatus(hitid,VEHICLE_DAMAGE_TIRES,fUpdate); } bodypart = _:VEHICLE_BODYPART_FR_WHEEL; } else { //back wheels GetVehicleModelInfo(fModelid,VEHICLE_MODEL_INFO_WHEELSREAR,fOffSet[0],fOffSet[1],fOffSet[2]); if(VectorSize(fX+fOffSet[0],fY-fOffSet[1],fZ-fOffSet[2]) <= 0.4){ //left fUpdate = EVF::GetVehicleDamageStatus(hitid,VEHICLE_DAMAGE_TIRES) + 4; if(fUpdate > 15){ EVF::UpdateVehicleDamageStatus(hitid,VEHICLE_DAMAGE_TIRES,fUpdate); } bodypart = _:VEHICLE_BODYPART_BL_WHEEL; } else if(VectorSize(fX-fOffSet[0],fY-fOffSet[1],fZ-fOffSet[2]) <= 0.4){ //right fUpdate = EVF::GetVehicleDamageStatus(hitid,VEHICLE_DAMAGE_TIRES) + 1; if(fUpdate > 15){ EVF::UpdateVehicleDamageStatus(hitid,VEHICLE_DAMAGE_TIRES,fUpdate); } bodypart = _:VEHICLE_BODYPART_BR_WHEEL; } } } if(!bodypart){ //petrolcap GetVehicleModelInfo(fModelid,VEHICLE_MODEL_INFO_PETROLCAP,fOffSet[0],fOffSet[1],fOffSet[2]); if(VectorSize(fX-fOffSet[0],fY-fOffSet[1],fZ-fOffSet[2]) <= 0.2){ if(IsPetrolCapDestroyToggled(hitid)){ if(IsUnoccupiedDamageToggled(hitid) || IsVehicleOccupied(hitid)){ bodypart = _:VEHICLE_BODYPART_PETROLCAP; new Float:pos[3]; GetVehiclePos(hitid,pos[0],pos[1],pos[2]); #if defined _3D_Tryg CreateDynamicExplosion(pos[0],pos[1],pos[2],3,25.0,GetVehicleVirtualWorld(hitid),GetVehicleInterior(hitid),-1,200.0); #else CreateExplosion(pos[0],pos[1],pos[2],3,25.0); #endif return SetVehicleToRespawn(hitid); } } else { fHealth -= fDamage; SetVehicleHealth(hitid,fHealth); switch(floatround(fHealth)){ case 251..399: return EVF::UpdateVehicleDamage(hitid,VEHICLE_DAMAGE_DOORS); case 400..599: return EVF::UpdateVehicleDamage(hitid,VEHICLE_DAMAGE_PANELS); case 600..700: return EVF::UpdateVehicleDamage(hitid,VEHICLE_DAMAGE_LIGHTS); } } } } if(!bodypart){ if(IsUnoccupiedDamageToggled(hitid)){ fHealth -= fDamage; SetVehicleHealth(hitid,fHealth); switch(floatround(fHealth)){ case 251..399: return EVF::UpdateVehicleDamage(hitid,VEHICLE_DAMAGE_DOORS); case 400..599: return EVF::UpdateVehicleDamage(hitid,VEHICLE_DAMAGE_PANELS); case 600..700: return EVF::UpdateVehicleDamage(hitid,VEHICLE_DAMAGE_LIGHTS); } } } } CallRemoteFunction("OnPlayerShotVehicle","dddfd",playerid,hitid,weaponid,fDamage,bodypart); } #if defined EVF_OnPlayerWeaponShot EVF::OnPlayerWeaponShot(playerid,weaponid,hittype,hitid,fX,fY,fZ); #endif return 1; } #if defined _ALS_OnPlayerWeaponShot #undef OnPlayerWeaponShot #else #define _ALS_OnPlayerWeaponShot #endif #define OnPlayerWeaponShot EVF_OnPlayerWeaponShot #if defined EVF_OnPlayerWeaponShot forward EVF_OnPlayerWeaponShot(playerid,weaponid,hittype,hitid,Float:fX,Float:fY,Float:fZ); #endif //Hook: OnPlayerConnect public OnPlayerConnect(playerid){ EVF::ModShopStatus[playerid] = false; #if defined EVF_OnPlayerConnect return EVF::OnPlayerConnect(playerid); #else return 1; #endif } #if defined _ALS_OnPlayerConnect #undef OnPlayerConnect #else #define _ALS_OnPlayerConnect #endif #define OnPlayerConnect EVF_OnPlayerConnect #if defined EVF_OnPlayerConnect forward EVF_OnPlayerConnect(playerid); #endif //Hook: OnEnterExitModShop public OnEnterExitModShop(playerid,enterexit,interiorid){ EVF::ModShopStatus[playerid] = enterexit; #if defined EVF_OnEnterExitModShop return EVF::OnEnterExitModShop(playerid, enterexit, interiorid); #else return 1; #endif } #if defined _ALS_OnEnterExitModShop #undef OnEnterExitModShop #else #define _ALS_OnEnterExitModShop #endif #define OnEnterExitModShop EVF_OnEnterExitModShop #if defined EVF_OnEnterExitModShop forward EVF_OnEnterExitModShop(playerid, enterexit, interiorid); #endif //Hook: OnVehicleMod public OnVehicleMod(playerid,vehicleid,component){ if(!IsValidComponentForVehicle(vehicleid,component) || !EVF::ModShopStatus[playerid] || GetPlayerState(playerid) == PLAYER_STATE_PASSENGER){ CallRemoteFunction("OnVehicleModEx","iiiii",playerid,vehicleid,component,GetVehicleComponentPrice(component),true); return 0; } CallRemoteFunction("OnVehicleModEx","iiiii",playerid,vehicleid,component,GetVehicleComponentPrice(component),false); #if defined EVF_OnVehicleMod return EVF::OnVehicleMod(playerid,vehicleid,component); #else return 1; #endif } #if defined _ALS_OnVehicleMod #undef OnVehicleMod #else #define _ALS_OnVehicleMod #endif #define OnVehicleMod EVF_OnVehicleMod #if defined EVF_OnVehicleMod forward EVF_OnVehicleMod(playerid, vehicleid, component); #endif #if defined EVF_Streamer EVF::Function:: EVF::AttachObjectToVehicle(STREAMER_TAG_OBJECT:objectid,vehicleid,Float:OffsetX,Float:OffsetY,Float:OffsetZ,Float:RotX,Float:RotY,Float:RotZ){ for(new i = 0; i < MAX_VEHICLE_ATTACHED_OBJECTS; i++){ if(!IsValidDynamicObject(EVF::VehicleTempData[vehicleid][e_attached_object][i])){ if(AttachDynamicObjectToVehicle(objectid,vehicleid,OffsetX,OffsetY,OffsetZ,RotX,RotY,RotZ)){ EVF::VehicleTempData[vehicleid][e_attached_object][i] = objectid; return true; } } } return false; } #if defined _ALS_AttachDynamicObjectToV #undef AttachDynamicObjectToVehicle #else #define _ALS_AttachDynamicObjectToV #endif #define AttachDynamicObjectToVehicle EVF_AttachObjectToVehicle //Hook: OnPlayerEditDynamicObject public OnPlayerEditDynamicObject(playerid,STREAMER_TAG_OBJECT:objectid,response,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz){ if(IsValidVehicle(EVF::PlayerTempData[playerid][e_editor_vehicle])){ if(EVF::PlayerTempData[playerid][e_editor_object] == STREAMER_TAG_OBJECT:INVALID_STREAMER_ID){ if(GetVehiclePropertyValue(EVF::PlayerTempData[playerid][e_editor_vehicle],e_VEHICLE_EDITOR) == _:objectid){ SetVehiclePos(EVF::PlayerTempData[playerid][e_editor_vehicle],x,y,z); SetVehicleZAngle(EVF::PlayerTempData[playerid][e_editor_vehicle],rz); CallLocalFunction("OnPlayerEditVehicle","iiiffff",playerid,EVF::PlayerTempData[playerid][e_editor_vehicle],response,x,y,z,rz); switch(response){ case EDIT_RESPONSE_CANCEL, EDIT_RESPONSE_FINAL:{ DestroyDynamicObject(objectid); SetVehiclePropertyValue(EVF::PlayerTempData[playerid][e_editor_vehicle],e_VEHICLE_EDITOR,INVALID_STREAMER_ID); SetVehicleVelocity(EVF::PlayerTempData[playerid][e_editor_vehicle],0.0,0.0,0.0); EVF::PlayerTempData[playerid][e_editor_vehicle] = INVALID_VEHICLE_ID; EVF::PlayerTempData[playerid][e_editor_object] = STREAMER_TAG_OBJECT:INVALID_STREAMER_ID; } } } } else { if(GetVehiclePropertyValue(EVF::PlayerTempData[playerid][e_editor_vehicle],e_VEHICLE_EDITOR) == _:objectid){ switch(response){ case EDIT_RESPONSE_CANCEL, EDIT_RESPONSE_FINAL:{ new Float:pos[4]; GetVehiclePos(EVF::PlayerTempData[playerid][e_editor_vehicle],pos[0],pos[1],pos[2]); GetVehicleZAngle(EVF::PlayerTempData[playerid][e_editor_vehicle],pos[3]); new Float:new_pos[4]; new_pos[0] = x - pos[0]; new_pos[1] = y - pos[1]; new_pos[2] = z - pos[2]; new_pos[3] = rz - pos[3]; new Float:final_pos[2]; final_pos[0] = (new_pos[0] * floatcos(new_pos[3],degrees)) + (new_pos[1] * floatsin(new_pos[3],degrees)); final_pos[1] = (new_pos[1] * floatcos(new_pos[3],degrees)) - (new_pos[0] * floatsin(new_pos[3],degrees)); AttachDynamicObjectToVehicle(EVF::PlayerTempData[playerid][e_editor_object],EVF::PlayerTempData[playerid][e_editor_vehicle],final_pos[0],final_pos[1],new_pos[2],rx,ry,new_pos[3]); SetVehiclePropertyValue(EVF::PlayerTempData[playerid][e_editor_vehicle],e_VEHICLE_EDITOR,0); CallLocalFunction("OnPlayerEditVehicleObject","iiiffffff",playerid,EVF::PlayerTempData[playerid][e_editor_vehicle],response,final_pos[0],final_pos[1],new_pos[2],rx,ry,new_pos[3]); EVF::PlayerTempData[playerid][e_editor_vehicle] = INVALID_VEHICLE_ID; EVF::PlayerTempData[playerid][e_editor_object] = STREAMER_TAG_OBJECT:INVALID_STREAMER_ID; } default: { CallLocalFunction("OnPlayerEditVehicleObject","iiiffffff",playerid,EVF::PlayerTempData[playerid][e_editor_vehicle],response,x,y,z,rx,ry,rz); } } } } } #if defined EVF_OnPlayerEditDynamicObject EVF::OnPlayerEditDynamicObject(playerid,objectid,response,x,y,z,rx,ry,rz); #endif return 1; } #if defined _ALS_OnPlayerEditDynamicObject #undef OnPlayerEditDynamicObject #else #define _ALS_OnPlayerEditDynamicObject #endif #define OnPlayerEditDynamicObject EVF_OnPlayerEditDynamicObject #if defined EVF_OnPlayerEditDynamicObject forward EVF_OnPlayerEditDynamicObject(playerid,STREAMER_TAG_OBJECT:objectid,response,Float:x,Float:y,Float:z,Float:rx,Float:ry,Float:rz); #endif #endif //Hook: OnPlayerUpdate public OnPlayerUpdate(playerid){ if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER){ new vehicleid = GetPlayerVehicleID(playerid), Float:speedcap = GetVehicleSpeedCap(vehicleid); if(speedcap != 0.0){ new Float:vel[3], Float:speed; GetVehicleVelocity(vehicleid,vel[0],vel[1],vel[2]); speed = EVF::GetVehicleSpeed(vehicleid); if(speed > speedcap && speed > 0.0){ CallRemoteFunction("OnPlayerReachSpeedCapLimit","iif",playerid,vehicleid,speed); vel[0] = (vel[0] / speed) * speedcap; vel[1] = (vel[1] / speed) * speedcap; vel[2] = (vel[2] / speed) * speedcap; SetVehicleVelocity(vehicleid,vel[0],vel[1],vel[2]); } } new trailerid = GetVehicleTrailer(vehicleid); if(EVF::VehicleTrailerID[vehicleid] != trailerid){ if(trailerid != 0){ CallRemoteFunction("OnTrailerHooked","iii",playerid,vehicleid,trailerid); #if defined EVF_Streamer EVF::SetCarBlinking(trailerid,EVF::BlinkSide[vehicleid]); #endif } else { if(EVF::VehicleTrailerID[vehicleid] != INVALID_VEHICLE_ID){ CallRemoteFunction("OnTrailerUnhooked","iii",playerid,vehicleid,EVF::VehicleTrailerID[vehicleid]); #if defined EVF_Streamer if(GetPlayerVehicleSeat(playerid) == 0){ EVF::DisableCarBlinking(EVF::VehicleTrailerID[vehicleid]); } #endif } } EVF::VehicleTrailerID[vehicleid] = trailerid; } } #if defined EVF_OnPlayerUpdate EVF::OnPlayerUpdate(playerid); #endif return 1; } #if defined EVF_OnPlayerUpdate forward EVF_OnPlayerUpdate(playerid); #endif #if defined _ALS_OnPlayerUpdate #undef OnPlayerUpdate #else #define _ALS_OnPlayerUpdate #endif #define OnPlayerUpdate EVF_OnPlayerUpdate //Hook: OnPlayerStateChange public OnPlayerStateChange(playerid,newstate,oldstate){ if(newstate == PLAYER_STATE_DRIVER){ new vehicleid = GetPlayerVehicleID(playerid); if(IsVehicleBombed(vehicleid)){ if(!IsVehicleBombActivated(vehicleid)){ CallRemoteFunction("OnVehicleBombActivate","i",vehicleid); new interval = (GetVehicleBomb(vehicleid) - 1750); if(interval < 1750){ SetVehicleParams(vehicleid,VEHICLE_TYPE_ALARM,true); SetVehiclePropertyValue(vehicleid,e_VEHICLE_BOMB_TIMER,SetTimerEx("EVF_OnVehicleBombExplode",GetVehicleBomb(vehicleid),false,"ii",playerid,vehicleid)); } else { SetVehiclePropertyValue(vehicleid,e_VEHICLE_BOMB_TIMER,SetTimerEx("EVF_OnVehicleBombActivate",interval,false,"ii",playerid,vehicleid)); } } } if(IsVehicleSticky(vehicleid)){ SetVehicleParams(vehicleid,VEHICLE_TYPE_ENGINE,false); } } if(oldstate == PLAYER_STATE_DRIVER){ new vehicleid = GetPlayerVehicleID(playerid); if(IsVehicleSticky(vehicleid)){ SetVehicleParams(vehicleid,VEHICLE_TYPE_ENGINE,true); } #if defined EVF_Streamer EVF::DisableCarBlinking(vehicleid); new trailerid = GetVehicleTrailer(vehicleid); if(IsValidVehicle(trailerid)) EVF::DisableCarBlinking(trailerid); #endif } #if defined EVF_OnPlayerStateChange EVF::OnPlayerStateChange(playerid,newstate,oldstate); #endif return 1; } #if defined EVF_OnPlayerStateChange forward EVF_OnPlayerStateChange(playerid,newstate,oldstate); #endif #if defined _ALS_OnPlayerStateChange #undef OnPlayerStateChange #else #define _ALS_OnPlayerStateChange #endif #define OnPlayerStateChange EVF_OnPlayerStateChange //Hook: OnPlayerKeyStateChange public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){ if(newkeys & KEY_CROUCH){ if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER){ new horn = GetVehicleHorn(GetPlayerVehicleID(playerid)); if(horn != 0){ new Float:pos[3]; GetPlayerPos(playerid,pos[0],pos[1],pos[2]); EVF::Foreach(i){ if(IsPlayerInRangeOfPoint(i,35.0,pos[0],pos[1],pos[2])){ PlayerPlaySound(playerid,horn,pos[0],pos[1],pos[2]); } } } } } #if defined EVF_Streamer if(EVF::IsToggledVehicleBlinking()){ new vehicleid = GetPlayerVehicleID(playerid); if(IsValidVehicle(vehicleid)){ if(GetPlayerVehicleSeat(playerid) == 0){ if(EVF::KeyPressed(KEY_LOOK_BEHIND)){ if(!EVF::IsCarBlinking(vehicleid)){ EVF::SetCarBlinking(vehicleid,EVF_CAR_BLINK_EMERGENCY); } else { EVF::DisableCarBlinking(vehicleid); } } if(EVF::KeyPressed(KEY_LOOK_LEFT)){ if(!EVF::IsCarBlinking(vehicleid)){ EVF::SetCarBlinking(vehicleid,EVF_CAR_BLINK_LEFT); } else { EVF::DisableCarBlinking(vehicleid); } } else if(EVF::KeyPressed(KEY_LOOK_RIGHT)){ if(!EVF::IsCarBlinking(vehicleid)){ EVF::SetCarBlinking(vehicleid,EVF_CAR_BLINK_RIGHT); } else { EVF::DisableCarBlinking(vehicleid); } } if(EVF::IsCarBlinking(vehicleid)){ new Float:tmp_a, Float:tmp_b = EVF::BlinkR[vehicleid]; GetVehicleZAngle(vehicleid,tmp_a); switch(EVF::BlinkSide[vehicleid]){ case EVF_CAR_BLINK_LEFT: { tmp_b += 55.0; if(tmp_b > 360.0) tmp_b -= 360.0; if(tmp_a < tmp_b-180.0) tmp_a = tmp_a+360.0; if(tmp_b < tmp_a-180.0) tmp_b = tmp_b+360.0; if(tmp_a > tmp_b){ EVF::DisableCarBlinking(vehicleid); } } case EVF_CAR_BLINK_RIGHT: { tmp_b -= 55.0; if(tmp_b < 0.0) tmp_b = 360.0 + tmp_b; if(tmp_a < tmp_b-180.0) tmp_a = tmp_a+360.0; if(tmp_b < tmp_a-180.0) tmp_b = tmp_b+360.0; if(tmp_a < tmp_b){ EVF::DisableCarBlinking(vehicleid); } } } } } } } #endif #if defined EVF_OnPlayerKeyStateChange EVF::OnPlayerKeyStateChange(playerid, newkeys, oldkeys); #endif return 1; } #if defined EVF_OnPlayerKeyStateChange forward EVF_OnPlayerKeyStateChange(playerid, newkeys, oldkeys); #endif #if defined _ALS_OnPlayerKeyStateChange #undef OnPlayerKeyStateChange #else #define _ALS_OnPlayerKeyStateChange #endif #define OnPlayerKeyStateChange EVF_OnPlayerKeyStateChange //Hook: OnVehicleDamageStatusUpdate public OnVehicleDamageStatusUpdate(vehicleid, playerid){ new panels, doors, lights, tires; GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires); if(!IsVehicleDamageToggled(vehicleid,VEHICLE_DAMAGE_PANELS)) EVF::UpdateVehicleDamageStatus(vehicleid,VEHICLE_DAMAGE_PANELS,0); if(!IsVehicleDamageToggled(vehicleid,VEHICLE_DAMAGE_DOORS)) EVF::UpdateVehicleDamageStatus(vehicleid,VEHICLE_DAMAGE_DOORS,0); if(!IsVehicleDamageToggled(vehicleid,VEHICLE_DAMAGE_LIGHTS)) EVF::UpdateVehicleDamageStatus(vehicleid,VEHICLE_DAMAGE_LIGHTS,0); if(!IsVehicleDamageToggled(vehicleid,VEHICLE_DAMAGE_TIRES)) EVF::UpdateVehicleDamageStatus(vehicleid,VEHICLE_DAMAGE_TIRES,0); #if defined EVF_OVDSU EVF::OVDSU(vehicleid,playerid); #endif return 1; } #if defined EVF_OVDSU forward EVF_OVDSU(vehicleid, playerid); #endif #if defined _ALS_OnVehicleDamageStatusU #undef OnVehicleDamageStatusUpdate #else #define _ALS_OnVehicleDamageStatusU #endif #define OnVehicleDamageStatusUpdate EVF_OVDSU //Hook: OnVehicleSpawn public OnVehicleSpawn(vehicleid){ SetVehiclePropertyValue(vehicleid,e_VEHICLE_PAINTJOB,RESET_PAINTJOB_ID); new color1,color2; if(EVF::GetVehicleColor(vehicleid,color1,color2)){ ChangeVehicleColor(vehicleid,color1,color2); } #if defined EVF_Streamer EVF::DisableCarBlinking(vehicleid); #endif new Float:pos[3]; GetVehiclePos(vehicleid,pos[0],pos[1],pos[2]); new Float:angle; GetVehicleZAngle(vehicleid,angle); new Float:vehicle_pos[3],Float:vehicle_angle,vehicle_worldid,vehicle_interiorid; EVF::GetVehicleSpawnInfo(vehicleid,vehicle_pos[0],vehicle_pos[1],vehicle_pos[2],vehicle_angle,vehicle_worldid,vehicle_interiorid); if(vehicle_pos[0] != 0.0 && vehicle_pos[1] != 0.0 && vehicle_pos[2] != 0.0){ if(pos[0] != vehicle_pos[0] || pos[1] != vehicle_pos[1] || pos[2] != vehicle_pos[2] || angle != vehicle_angle || vehicle_worldid != GetVehicleVirtualWorld(vehicleid) || vehicle_interiorid != GetVehicleInterior(vehicleid)){ TeleportVehicle(vehicleid,vehicle_pos[0],vehicle_pos[1],vehicle_pos[2],vehicle_angle,vehicle_worldid,vehicle_interiorid); } } #if defined EVF_OnVehicleSpawn EVF::OnVehicleSpawn(vehicleid); #endif return 1; } #if defined EVF_OnVehicleSpawn forward EVF_OnVehicleSpawn(vehicleid); #endif #if defined _ALS_OnVehicleSpawn #undef OnVehicleSpawn #else #define _ALS_OnVehicleSpawn #endif #define OnVehicleSpawn EVF_OnVehicleSpawn //Hook: OnVehicleDeath public OnVehicleDeath(vehicleid,killerid){ #if defined EVF_Streamer EVF::DisableCarBlinking(vehicleid); #endif #if defined EVF_OnVehicleDeath EVF::OnVehicleDeath(vehicleid,killerid); #endif return 1; } #if defined EVF_OnVehicleDeath forward EVF_OnVehicleDeath(vehicleid,killerid); #endif #if defined _ALS_OnVehicleDeath #undef OnVehicleDeath #else #define _ALS_OnVehicleDeath #endif #define OnVehicleDeath EVF_OnVehicleDeath EVF::Public:: EVF::OnRequestResponse(index, response_code, data[]){ if(response_code == 200){ if(isnull(data)) return 0; new EVF::version[16], EVF::ver, EVF::file_ver = EVF_Version; strmid(EVF::version,data,0,strlen(data)); EVF::ver = strval(EVF::version); if(EVF::ver > EVF::file_ver){ print(" "); printf("[ADM] Info: Please update your EVF include to v%d.%d.%d from here:",(EVF::ver / 10000),((EVF::ver % 10000) / 100),((EVF::ver % 10000) % 100)); print("http://adm.ct8.pl/d/EVF.inc"); print(" "); } } return 1; } new EVF::UpdateTimer = -1; EVF::Function:: EVF::Init(){ SetSVarInt("ADM:EVF:ACTIVE",EVF::GetActiveCount()+1); //Welcome to EVF new EVF::ver_name[16]; format(EVF::ver_name,sizeof(EVF::ver_name),"%d.%d.%d",(EVF_Version / 10000),((EVF_Version % 10000) / 100),((EVF_Version % 10000) % 100)); if(GetSVarInt("ADM:EVF:INIT") == 0){ SetSVarInt("ADM:EVF:INIT",1); printf("[ADM] Info: Load EVF v%s for SA:MP %s by Abyss Morgan",EVF::ver_name,EVF_SAMP_Version); } if(GetSVarInt("ADM:EVF:VERCHECK") == 0){ SetSVarInt("ADM:EVF:VERCHECK",1); new EVF::send_data[128]; format(EVF::send_data,sizeof(EVF::send_data),"adm.ct8.pl/detector/_check.php?module=EVF&version=%d",EVF_Version); HTTP(0,HTTP_GET,EVF::send_data,"","EVF_OnRequestResponse"); } EVF::UpdateTimer = SetTimerEx("OnVehicleTimeUpdate",VEHICLE_UPDATE_INTERVAL,true,""); } EVF::Function:: EVF::Exit(){ SetSVarInt("ADM:EVF:ACTIVE",EVF::GetActiveCount()-1); //Goodbye EVF new EVF::ver_name[16]; format(EVF::ver_name,sizeof(EVF::ver_name),"%d.%d.%d",(EVF_Version / 10000),((EVF_Version % 10000) / 100),((EVF_Version % 10000) % 100)); if(EVF::GetActiveCount() == 0){ SetSVarInt("ADM:EVF:INIT",0); printf("[ADM] Info: Unload EVF v%s for SA:MP %s by Abyss Morgan",EVF::ver_name,EVF_SAMP_Version); } if(EVF::UpdateTimer != -1) KillTimer(EVF::UpdateTimer); } new bool:CRC_EVFInit = true, bool:CRC_EVFExit = true; //Hook: OnFilterScriptInit public OnFilterScriptInit(){ if(CRC_EVFInit){ CRC_EVFInit = false; EVF::Init(); } #if defined EVF_OnFilterScriptInit EVF::OnFilterScriptInit(); #endif return 1; } #if defined _ALS_OnFilterScriptInit #undef OnFilterScriptInit #else #define _ALS_OnFilterScriptInit #endif #define OnFilterScriptInit EVF_OnFilterScriptInit #if defined EVF_OnFilterScriptInit forward EVF_OnFilterScriptInit(); #endif //Hook: OnGameModeInit public OnGameModeInit(){ if(CRC_EVFInit){ CRC_EVFInit = false; EVF::Init(); } #if defined EVF_OnGameModeInit EVF::OnGameModeInit(); #endif return 1; } #if defined _ALS_OnGameModeInit #undef OnGameModeInit #else #define _ALS_OnGameModeInit #endif #define OnGameModeInit EVF_OnGameModeInit #if defined EVF_OnGameModeInit forward EVF_OnGameModeInit(); #endif //Hook: OnFilterScriptExit public OnFilterScriptExit(){ if(CRC_EVFExit){ CRC_EVFExit = false; EVF::Exit(); } #if defined EVF_OnFilterScriptExit EVF::OnFilterScriptExit(); #endif return 1; } #if defined _ALS_OnFilterScriptExit #undef OnFilterScriptExit #else #define _ALS_OnFilterScriptExit #endif #define OnFilterScriptExit EVF_OnFilterScriptExit #if defined EVF_OnFilterScriptExit forward EVF_OnFilterScriptExit(); #endif //Hook: OnGameModeExit public OnGameModeExit(){ if(CRC_EVFExit){ CRC_EVFExit = false; EVF::Exit(); } #if defined EVF_OnGameModeExit EVF::OnGameModeExit(); #endif return 1; } #if defined _ALS_OnGameModeExit #undef OnGameModeExit #else #define _ALS_OnGameModeExit #endif #define OnGameModeExit EVF_OnGameModeExit #if defined EVF_OnGameModeExit forward EVF_OnGameModeExit(); #endif #pragma unused EVF_VehicleName #pragma unused EVF_TopSpeed #pragma unused EVF_PlayerTempData #pragma unused EVF_NeonOffsetData #if !defined _3D_Tryg #pragma unused EVF_WeaponDamage #endif //EOF