| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620 |
- /**********************************************************************************************************************************
- * *
- * )( Extended Vehicle Functions )( *
- * *
- * Copyright © 2018 Abyss Morgan. All rights reserved. *
- * Contributors: Emmet_, Pottus, kvann, Hanger, Freaksken, Gammix, Yashas, Admigo, RIDE2DAY *
- * *
- * Download: https://github.com/AbyssMorgan/SA-MP/tree/master/include/ADM *
- * Publication: http://forum.sa-mp.com/showthread.php?t=611142 *
- * Website: http://8.ct8.pl *
- * *
- * Plugins: Streamer *
- * Modules: None *
- * *
- * File Version: 3.2.1 *
- * Streamer Version: 2.9.1 *
- * *
- * 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); *
- * VehicleSupportsNeonLights(modelid); *
- * GetVehicleNeonLightsState(vehicleid); *
- * 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.2.1
- #elseif !defined EVF_Version
- #error [ADM] Update you EVF.inc to v3.2.1
- #elseif (EVF_Version < 30201)
- #error [ADM] Update you EVF.inc to v3.2.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 (github.com/AbyssMorgan/SA-MP/blob/master/samp/include)
- #endif
- #elseif defined _rwmp_included
- #error [ADM] This game currently is not supported
- #else
- #error [ADM] Not found any general game includes
- #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 (30201) //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
- #define DEFAULT_VEHICLE_FUEL 1000
- #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 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][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 = GetPlayerPoolSize(); %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 = GetVehiclePoolSize(); %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: {
- EVF::SetCarBlinking(vehicleid,EVF_CAR_BLINK_LEFT,true);
- EVF::SetCarBlinking(vehicleid,EVF_CAR_BLINK_RIGHT,true);
- }
- }
- }
- 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){
- if(!IsValidVehicle(vehicleid)) return 0;
- new modelid = GetVehicleModel(vehicleid);
- if(!IsValidVehicleModelID(modelid)) return 0;
- modelid -= 400;
-
- if(IsValidDynamicObject(EVF::VehicleNeon[vehicleid][0])) DestroyDynamicObject(EVF::VehicleNeon[vehicleid][0]);
- if(IsValidDynamicObject(EVF::VehicleNeon[vehicleid][1])) DestroyDynamicObject(EVF::VehicleNeon[vehicleid][1]);
- EVF::VehicleNeon[vehicleid][0] = EVF::VehicleNeon[vehicleid][1] = STREAMER_TAG_OBJECT INVALID_STREAMER_ID;
-
- if(!enable) return 1;
- if(18647 <= color <= 18652){
- EVF::VehicleNeon[vehicleid][0] = CreateDynamicObject(color,0.0,0.0,0.0,0.0,0.0,0.0);
- EVF::VehicleNeon[vehicleid][1] = CreateDynamicObject(color,0.0,0.0,0.0,0.0,0.0,0.0);
- AttachDynamicObjectToVehicle(EVF::VehicleNeon[vehicleid][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][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){
- if(!IsValidVehicle(vehicleid)) return 0;
- return (IsValidDynamicObject(EVF::VehicleNeon[vehicleid][0]) && IsValidDynamicObject(EVF::VehicleNeon[vehicleid][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;
- new 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 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] <= 0));
- }
- EVF::Function:: SetVehicleParams(vehicleid,EVF::ParamTypes:type,status,delay = 0){
- new 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,0);
- }
- }
- 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:: GetVehicleDriver(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,0);
- 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 the vehicle speed is quiet high
- new fuel_consumption_level = 0;
-
- if(vehicle_speed == 0.0 && GetVehicleParams(vehicleid,VEHICLE_TYPE_ENGINE)){
- fuel_consumption_level = MULTIPLIER_FUEL_SYSTEM;
- } else if(vehicle_speed > 0.0){
- for(new i = 20, j = floatround(GetVehicleTopSpeed(vehicleid)); i <= j; i += 20){
- if(vehicle_speed > i){
- fuel_consumption_level += MULTIPLIER_FUEL_SYSTEM;
- }
- }
- }
-
- 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 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,engine,lights,alarm,doors,bonnet,boot,objective){
- SetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
- }
- EVF::Public:: EVF::OnVehicleBombActivate(playerid,vehicleid){
- SetVehicleParams(vehicleid,VEHICLE_TYPE_ALARM,1);
- 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,0);
- }
- }
- CallRemoteFunction("OnVehicleBombExplode","i",vehicleid);
- SetVehicleParams(vehicleid,VEHICLE_TYPE_ALARM,0);
- 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(ChangeVehicleColor(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)){
- ChangeVehicleColor(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,color1,color2){
- SetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_1,color1);
- SetVehiclePropertyValue(vehicleid,e_VEHICLE_COLOR_2,color2);
- #if defined EVF_OnVehicleRespray
- EVF::OnVehicleRespray(playerid,vehicleid,color1,color2);
- #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,color1,color2);
- #endif
- //Hook: OnVehiclePaintjob
- public OnVehiclePaintjob(playerid,vehicleid,paintjobid){
- SetVehiclePropertyValue(vehicleid,e_VEHICLE_PAINTJOB,paintjobid);
- #if defined EVF_OnVehiclePaintjob
- EVF::OnVehiclePaintjob(playerid,vehicleid,paintjobid);
- #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,paintjobid);
- #endif
- //Hook: CreateVehicle
- EVF::Function:: EVF::CreateVehicle(modelid,Float:x,Float:y,Float:z,Float:angle,color1,color2,respawn_delay,addsiren = 0,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;
- }
- }
- #endif
- SetVehicleNeonLights(vehicleid,false);
- 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,componentid){
- if(!IsValidComponentForVehicle(vehicleid,componentid) || !EVF::ModShopStatus[playerid] || GetPlayerState(playerid) == PLAYER_STATE_PASSENGER){
- CallRemoteFunction("OnVehicleModEx","iiiii",playerid,vehicleid,componentid,GetVehicleComponentPrice(componentid),true);
- return 0;
- }
- CallRemoteFunction("OnVehicleModEx","iiiii",playerid,vehicleid,componentid,GetVehicleComponentPrice(componentid),false);
- #if defined EVF_OnVehicleMod
- return EVF::OnVehicleMod(playerid,vehicleid,componentid);
- #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, componentid);
- #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);
- EVF::PlayerTempData[playerid][e_editor_vehicle] = INVALID_VEHICLE_ID;
- EVF::PlayerTempData[playerid][e_editor_object] = STREAMER_TAG_OBJECT INVALID_STREAMER_ID;
- return 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]);
- }
- }
- 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,1);
- 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,0);
- }
- }
- if(oldstate == PLAYER_STATE_DRIVER){
- new vehicleid = GetPlayerVehicleID(playerid);
- if(IsVehicleSticky(vehicleid)){
- SetVehicleParams(vehicleid,VEHICLE_TYPE_ENGINE,1);
- }
- #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: 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://8.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[50];
- format(EVF::send_data,sizeof(EVF::send_data),"8.ct8.pl/evf/check.php?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
|