Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ---------------------------------------------
- Easy Vehicle Selector
- -----------------------------
- coded by:
- - MX_Master (icq:4894700)
- for:
- - SA:MP 0.2 server
- may used as:
- - filterscript only
- while coding used:
- - PHP Expert Editor 4.2
- - PawnoX
- - SA:MP server 0.2.2
- - SA:MP client 0.2.2 R3
- - brains :)
- release date:
- 12.11.2008
- --------
- */
- // some includes
- #include <a_samp>
- // max string length (if not defined in a_samp.inc )
- #if !defined MAX_STRING
- #define MAX_STRING 255
- #endif
- // redefining codes of some buttons
- #undef KEY_UP
- #undef KEY_DOWN
- #undef KEY_LEFT
- #undef KEY_RIGHT
- #define KEY_UP 65408
- #define KEY_DOWN 128
- #define KEY_LEFT 65408
- #define KEY_RIGHT 128
- // player's info textDraw params
- #define plInfoTDposX 600.0
- #define plInfoTDposY 380.0
- #define plInfoTDletterXsize 0.3
- #define plInfoTDletterYsize 1.2
- #define plInfoTDalignment 3
- #define plInfoTDoutlineSize 1
- #define plTempInfoDelay 3000 // msec
- // player info textDraw messages
- #define vehInfoPattern "Name: ~g~~h~%s ~w~( model: ~y~~h~%d ~w~)~n~Category: ~g~~h~%s ~y~~h~%d~n~~n~~w~Modifications: ~g~~h~%s~n~~w~Colours: ~y~~h~%d %d~n~ "
- #define notInVeh "Enter ~g~~h~any vehicle ~w~first~n~ "
- #define vehDestroyed "Vehicle ~r~~h~destroyed~n~ "
- // chat colors
- #define cInfoTitle 0xFF6600AA
- #define cMainInfo 0xFFFF99AA
- #define cOtherInfo 0xDDDDDDAA
- #define cBad 0xFF4646AA
- // chat messages
- #define typeNextCommandToStart "Type /vSel in chat box to enter vehicle selector, help - /vHelp"
- // FS help messages
- #define cmdList "easyVehicleSelector CHAT COMMANDS:"
- #define cmdStr1 " /vHelp - help info; /vInfo - show current vehicle's info"
- #define cmdStr2 " /vSel - enter vehicle selector; /vDel - destroy current vehicle"
- #define cmdStr3 " /save {comment} - export to file '{GTASA dir}/savedpositions.txt' current vehicle's data"
- #define buttonsList "easyVehicleSelector KEYS:"
- #define buttonsStr1 " VEHICLE ENTER / EXIT - quit from vehicle selector"
- #define buttonsStr2 " SPRINT - create selected vehicle"
- #define buttonsStr3 " WS - list vehicle categories; AD - list vehicles of selected category"
- #define buttonsStr4 " WASD + WALK - change vehicle's color 1 / 2"
- // some params
- #define vCount 206 // originally is 212, but my sa-mp R3 client will crashed if one of RC vehicles selected
- #define vNameLen 32 // string length, do not change
- #define vCatCount 14 // originally is 15, but my sa-mp R3 client will crashed if last category selected
- #define vCatNameLen 16 // string length, do not change
- #define vModCount 4 // do not change
- #define vModNameLen 20 // string length, do not change
- #define vColorCount 128 // do not change
- #define metersUp 0.0 // selected vehicle will be created at player's current pos + "metersUp" meters up
- #define keyCheckInterval 200 // msec, key check delay
- // player/vehicle pos
- enum
- {
- Float:xPos,
- Float:yPos,
- Float:zPos,
- Float:zAngle
- }
- // vehicle selector's params for every player
- enum vSelParams
- {
- vSelModeEnabled,
- vCurCat,
- vCurID[vCatCount],
- Float:vSavedPos[4],
- vSavedWorld,
- vSavedInterior,
- vSavedVehicleID,
- vKeyCheckerTimer,
- vVehID,
- vVehColor1[vCount],
- vVehColor2[vCount]
- }
- stock
- vSel[MAX_PLAYERS][vSelParams],
- Text:infoTD[MAX_PLAYERS],
- infoTDcreated[MAX_PLAYERS char]
- ;
- // vehicle categories
- enum
- {
- bike,
- sport,
- saloon,
- convertible,
- stationWagon,
- lowrider,
- offRoad,
- industrial,
- publicService,
- unique,
- helicopter,
- airplane,
- boat,
- trailer/*,
- rcVehicle*/ // my sa-mp R3 client will crashed if this category selected
- }
- stock vCatName[vCatCount][vCatNameLen] =
- {
- "Bike",
- "Sport",
- "Saloon",
- "Convertible",
- "Station Wagon",
- "Lowrider",
- "Off Road",
- "Industrial",
- "Public Service",
- "Unique",
- "Helicopter",
- "Airplane",
- "Boat",
- "Trailer"/*,
- "RC Vehicle"*/ // my sa-mp R3 client will crashed if this category selected
- };
- // vehicle modifications
- enum
- {
- none,
- transfender,
- locoLowCo,
- wheelArchAngels
- }
- stock vModName[vModCount][vModNameLen] =
- {
- "None",
- "Transfender",
- "Loco Low Co",
- "Wheel Arch Angels"
- };
- // vehicle ID ranges for each category in "vData" array
- enum vIDparams
- {
- vCatMinID,
- vCatMaxID
- }
- stock vID[vCatCount][vIDparams] =
- {
- { 0, 12 },
- { 13, 32 },
- { 33, 66 },
- { 67, 70 },
- { 71, 75 },
- { 76, 83 },
- { 84, 95 },
- { 96, 120 },
- { 121, 139 },
- { 140, 163 },
- { 164, 172 },
- { 173, 183 },
- { 184, 193 },
- { 194, 205 }/*,
- { 205, 211 }*/ // my sa-mp R3 client will crashed if one of this vehicles selected
- };
- // each vehicle params
- enum vParams
- {
- vCat,
- vName[vNameLen],
- vModel,
- vMod
- }
- stock vData[vCount][vParams] =
- {
- // cat, name, model, modifications
- { bike, "Bike", 509, none }, // 0 - 12
- { bike, "BMX", 481, none },
- { bike, "Mountain Bike", 510, none },
- { bike, "Faggio", 462, none },
- { bike, "Pizzaboy", 448, none },
- { bike, "Sanchez", 468, none },
- { bike, "BF-400", 581, none },
- { bike, "PCJ-600", 461, none },
- { bike, "FCR-900", 521, none },
- { bike, "NRG-500", 522, none },
- { bike, "Freeway", 463, none },
- { bike, "Wayfarer", 586, none },
- { bike, "Quad", 471, none },
- { sport, "Flash", 565, wheelArchAngels }, // 13 - 32
- { sport, "Club", 589, transfender },
- { sport, "Blista Compact", 496, transfender },
- { sport, "Uranus", 558, wheelArchAngels },
- { sport, "Sabre", 475, transfender },
- { sport, "Phoenix", 603, transfender },
- { sport, "ZR-350", 477, transfender },
- { sport, "Alpha", 602, transfender },
- { sport, "Euros", 587, wheelArchAngels },
- { sport, "Jester", 559, wheelArchAngels },
- { sport, "Banshee Banger", 429, none },
- { sport, "Buffalo", 402, transfender },
- { sport, "Cheetah", 415, transfender },
- { sport, "Turismo", 451, transfender },
- { sport, "Super GT", 506, transfender },
- { sport, "Bullet", 541, transfender },
- { sport, "Infernus", 411, transfender },
- { sport, "Hotring Racer 1", 502, none },
- { sport, "Hotring Racer 2", 503, none },
- { sport, "Hotring", 494, none },
- { saloon, "Manana", 410, transfender }, // 33 - 66
- { saloon, "Previon", 436, transfender },
- { saloon, "Fortune", 526, transfender },
- { saloon, "Cadrona", 527, transfender },
- { saloon, "Bravura", 401, transfender },
- { saloon, "Virgo", 491, transfender },
- { saloon, "Esperanto", 419, transfender },
- { saloon, "Clover", 542, transfender },
- { saloon, "Tampa", 549, transfender },
- { saloon, "Buccaneer", 518, transfender },
- { saloon, "Majestic", 517, transfender },
- { saloon, "Picador", 600, transfender },
- { saloon, "Sentinel", 405, transfender },
- { saloon, "Washington", 421, transfender },
- { saloon, "Premier", 426, transfender },
- { saloon, "Admiral", 445, transfender },
- { saloon, "Greenwood", 492, transfender },
- { saloon, "Elegant", 507, transfender },
- { saloon, "Nebula", 516, transfender },
- { saloon, "Willard", 529, transfender },
- { saloon, "Vincent", 540, transfender },
- { saloon, "Intruder", 546, transfender },
- { saloon, "Primo", 547, transfender },
- { saloon, "Sunrise", 550, transfender },
- { saloon, "Merit", 551, transfender },
- { saloon, "Emperor", 585, transfender },
- { saloon, "Glendale", 466, transfender },
- { saloon, "Bloodring Banger", 504, none },
- { saloon, "Glendale Shit", 604, none },
- { saloon, "Oceanic", 467, transfender },
- { saloon, "Hermes", 474, transfender },
- { saloon, "Stafford", 580, transfender },
- { saloon, "Sultan", 560, wheelArchAngels },
- { saloon, "Elegy", 562, wheelArchAngels },
- { convertible, "Comet", 480, transfender }, // 67 - 70
- { convertible, "Stallion", 439, transfender },
- { convertible, "Feltzer", 533, transfender },
- { convertible, "Windsor", 555, transfender },
- { stationWagon, "Perenniel", 404, transfender }, // 71 - 75
- { stationWagon, "Solair", 458, transfender },
- { stationWagon, "Regina", 479, transfender },
- { stationWagon, "Stratum", 561, wheelArchAngels },
- { stationWagon, "Moonbeam", 418, transfender },
- { lowrider, "Tahoma", 566, locoLowCo }, // 76 - 83
- { lowrider, "Voodoo", 412, locoLowCo },
- { lowrider, "Blade", 536, locoLowCo },
- { lowrider, "Savanna", 567, locoLowCo },
- { lowrider, "Remington", 534, locoLowCo },
- { lowrider, "Broadway", 575, transfender },
- { lowrider, "Tornado", 576, locoLowCo },
- { lowrider, "Slamvan", 535, locoLowCo },
- { offRoad, "Bandito", 568, none }, // 84 - 95
- { offRoad, "BF Injection", 424, transfender },
- { offRoad, "Mesa", 500, transfender },
- { offRoad, "Landstalker", 400, transfender },
- { offRoad, "Rancher", 489, transfender },
- { offRoad, "Ranchlure", 505, transfender },
- { offRoad, "Huntley", 579, transfender },
- { offRoad, "Sandking", 495, none },
- { offRoad, "Monster", 444, none },
- { offRoad, "Monster 'A'", 556, none },
- { offRoad, "Monster 'B'", 557, none },
- { offRoad, "Dune", 573, none },
- { industrial, "Tractor", 531, none }, // 96 - 120
- { industrial, "Bobcat", 422, transfender },
- { industrial, "Sadler", 543, none },
- { industrial, "Sadler Shit", 605, none },
- { industrial, "Yosemite", 554, none },
- { industrial, "Walton", 478, transfender },
- { industrial, "Utility Van", 552, none },
- { industrial, "Pony", 413, none },
- { industrial, "Burrito", 482, none },
- { industrial, "Topfun", 459, none },
- { industrial, "Rumpo", 440, none },
- { industrial, "Newsvan", 582, none },
- { industrial, "Benson", 499, none },
- { industrial, "Mule", 414, none },
- { industrial, "DFT-30", 578, none },
- { industrial, "Boxville", 498, none },
- { industrial, "Boxburg", 609, none },
- { industrial, "Yankee", 456, none },
- { industrial, "Trashmaster", 408, none },
- { industrial, "Flatbed", 455, none },
- { industrial, "Petrol Tanker", 514, none },
- { industrial, "Roadtrain", 515, none },
- { industrial, "Linerunner", 403, none },
- { industrial, "Cement Truck", 524, none },
- { industrial, "Packer", 443, none },
- { publicService, "Bus", 431, none }, // 121 - 139
- { publicService, "Coach", 437, none },
- { publicService, "Taxi", 420, transfender },
- { publicService, "Cabbie", 438, transfender },
- { publicService, "Ambulance", 416, none },
- { publicService, "Firetruck", 544, none },
- { publicService, "Firetruck", 407, none },
- { publicService, "Cop Bike HPV1000", 523, none },
- { publicService, "Police Car (LSPD)", 596, none },
- { publicService, "Police Car (SFPD)", 597, none },
- { publicService, "Police Car (LVPD)", 598, none },
- { publicService, "Ranger", 599, none },
- { publicService, "FBI Truck", 528, none },
- { publicService, "Enforcer", 427, none },
- { publicService, "FBI Rancher", 490, none },
- { publicService, "S.W.A.T.", 601, none },
- { publicService, "Patriot", 470, none },
- { publicService, "Barracks", 433, none },
- { publicService, "Rhino", 432, none },
- { unique, "Kart", 571, none }, // 140 - 163
- { unique, "Vortex", 539, none },
- { unique, "Caddy", 457, none },
- { unique, "Forklift", 530, none },
- { unique, "Baggage", 485, none },
- { unique, "Tug", 583, none },
- { unique, "Sweeper", 574, none },
- { unique, "Towtruck", 525, none },
- { unique, "Mower", 572, none },
- { unique, "Hustler", 545, transfender },
- { unique, "Hotknife", 434, none },
- { unique, "Stretch", 409, transfender },
- { unique, "Romero", 442, transfender },
- { unique, "Camper", 483, none },
- { unique, "Journey", 508, none },
- { unique, "Hotdog", 588, none },
- { unique, "Mr Whoopee", 423, none },
- { unique, "Securicar", 428, none },
- { unique, "Tram", 449, none },
- { unique, "Dozer", 486, none },
- { unique, "Combine Harvester", 532, none },
- { unique, "Dumper", 406, none },
- { unique, "Freight (Train)", 537, none },
- { unique, "Brownstreak (Train)", 538, none },
- { helicopter, "Sparrow", 469, none }, // 164 - 172
- { helicopter, "Seasparrow", 447, none },
- { helicopter, "San News Maverick", 488, none },
- { helicopter, "Maverick", 487, none },
- { helicopter, "Police Maverick", 497, none },
- { helicopter, "Hunter", 425, none },
- { helicopter, "Cargobob", 548, none },
- { helicopter, "Raindance", 563, none },
- { helicopter, "Leviathan", 417, none },
- { airplane, "Rustler", 476, none }, // 173 - 183
- { airplane, "Dodo", 593, none },
- { airplane, "Skimmer", 460, none },
- { airplane, "Stuntplane", 513, none },
- { airplane, "Cropduster", 512, none },
- { airplane, "Beagle", 511, none },
- { airplane, "Hydra", 520, none },
- { airplane, "Shamal", 519, none },
- { airplane, "Nevada", 553, none },
- { airplane, "AT400", 577, none },
- { airplane, "Andromada", 592, none },
- { boat, "Dinghy", 473, none }, // 184 - 193
- { boat, "Coastguard", 472, none },
- { boat, "Speeder", 452, none },
- { boat, "Predator", 430, none },
- { boat, "Squallo", 446, none },
- { boat, "Jetmax", 493, none },
- { boat, "Marquis", 484, none },
- { boat, "Launch", 595, none },
- { boat, "Reefer", 453, none },
- { boat, "Tropic", 454, none },
- { trailer, "Tug Stairs Trailer", 608, none }, // 194 - 205
- { trailer, "Baggage Trailer 'B'", 607, none },
- { trailer, "Baggage Trailer 'A'", 606, none },
- { trailer, "Utility Trailer", 611, none },
- { trailer, "Farm Trailer", 610, none },
- { trailer, "Petrol Trailer", 584, none },
- { trailer, "Article Trailer 2", 450, none },
- { trailer, "Article Trailer", 435, none },
- { trailer, "Article Trailer 3", 591, none },
- { trailer, "Freight Flat Trailer (Train)", 569, none },
- { trailer, "Freight Box Trailer (Train)", 590, none },
- { trailer, "Streak Trailer (Train)", 570, none }/*,
- { rcVehicle, "RC Bandit", 441, none }, // 206 - 211, my sa-mp R3 client will crashed if one of this vehicles selected
- { rcVehicle, "RC Tiger", 564, none },
- { rcVehicle, "RC Baron", 464, none },
- { rcVehicle, "RC Raider", 465, none },
- { rcVehicle, "RC Goblin", 501, none },
- { rcVehicle, "RC Cam", 594, none }*/
- };
- public OnFilterScriptInit()
- {
- // default values for some vars for each player
- for ( new playerid = 0; playerid < MAX_PLAYERS; playerid++ )
- {
- vSel[playerid][vSavedVehicleID] = INVALID_VEHICLE_ID;
- for ( new cat = 0; cat < vCatCount; cat++ ) vSel[playerid][vCurID][cat] = vID[cat][vCatMinID];
- for ( new v = 0; v < vCount; v++ )
- {
- vSel[playerid][vVehColor1][v] = 1;
- vSel[playerid][vVehColor2][v] = 1;
- }
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- SendClientMessage( playerid, cInfoTitle, typeNextCommandToStart );
- return 1;
- }
- public OnPlayerDisconnect ( playerid, reason )
- {
- // default values for some vars for each player
- vSel[playerid][vSelModeEnabled] = 0;
- vSel[playerid][vCurCat] = 0;
- for ( new cat = 0; cat < vCatCount; cat++ ) vSel[playerid][vCurID][cat] = vID[cat][vCatMinID];
- for ( new v = 0; v < vCount; v++ )
- {
- vSel[playerid][vVehColor1][v] = 1;
- vSel[playerid][vVehColor2][v] = 1;
- }
- return 1;
- }
- public OnPlayerCommandText( playerid, cmdtext[] )
- {
- // chat help
- if( strcmp( cmdtext, "/vHelp", true ) == 0 )
- {
- SendClientMessage( playerid, cInfoTitle, cmdList );
- SendClientMessage( playerid, cMainInfo, cmdStr1 );
- SendClientMessage( playerid, cMainInfo, cmdStr2 );
- SendClientMessage( playerid, cMainInfo, cmdStr3 );
- SendClientMessage( playerid, cMainInfo, " " );
- SendClientMessage( playerid, cInfoTitle, buttonsList );
- SendClientMessage( playerid, cMainInfo, buttonsStr1 );
- SendClientMessage( playerid, cMainInfo, buttonsStr2 );
- SendClientMessage( playerid, cMainInfo, buttonsStr3 );
- SendClientMessage( playerid, cMainInfo, buttonsStr4 );
- return 1;
- }
- // current vehicle's info
- if ( strcmp( cmdtext, "/vInfo", true ) == 0 )
- {
- if ( !IsPlayerInAnyVehicle(playerid) )
- {
- // show to player TextDraw "enter any veh first"
- showPlayerInfoTD( playerid, notInVeh );
- SetTimerEx( "hidePlayerInfoTD", plTempInfoDelay, 0, "d", playerid );
- return 1;
- }
- // show veh stats to player
- showVehicleInfoToPlayer(playerid);
- return 1;
- }
- // destroy current vehicle
- if ( strcmp( cmdtext, "/vDel", true ) == 0 )
- {
- if ( !IsPlayerInAnyVehicle(playerid) )
- {
- // show to player TextDraw "enter any veh first"
- showPlayerInfoTD( playerid, notInVeh );
- SetTimerEx( "hidePlayerInfoTD", plTempInfoDelay, 0, "d", playerid );
- return 1;
- }
- // show to player TextDraw "veh destroyed"
- showPlayerInfoTD( playerid, vehDestroyed );
- SetTimerEx( "hidePlayerInfoTD", plTempInfoDelay, 0, "d", playerid );
- // destroying
- DestroyVehicle( GetPlayerVehicleID(playerid) );
- return 1;
- }
- // toggle veh mode ON
- if ( strcmp( cmdtext, "/vSel", true ) == 0 )
- {
- if ( vSel[playerid][vSelModeEnabled] == 1 ) return 1;
- vSel[playerid][vSelModeEnabled] = 1;
- // key state checker enabled
- vSelKeyStateCheckStart(playerid);
- // save player's pos, interior, world
- vSel[playerid][vSavedVehicleID] = IsPlayerInAnyVehicle(playerid) ? GetPlayerVehicleID(playerid) : INVALID_VEHICLE_ID;
- vSel[playerid][vSavedWorld] = GetPlayerVirtualWorld(playerid);
- vSel[playerid][vSavedInterior] = GetPlayerInterior(playerid);
- GetPlayerFacingAngle( playerid, vSel[playerid][vSavedPos][zAngle] );
- GetPlayerPos( playerid, vSel[playerid][vSavedPos][xPos], vSel[playerid][vSavedPos][yPos], vSel[playerid][vSavedPos][zPos] );
- // create car
- vSel[playerid][vVehID] = CreateVehicle
- (
- vData[ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ][vModel],
- vSel[playerid][vSavedPos][xPos],
- vSel[playerid][vSavedPos][yPos],
- vSel[playerid][vSavedPos][zPos] + metersUp,
- vSel[playerid][vSavedPos][zAngle],
- vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ],
- vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ],
- 50000
- );
- SetVehicleVirtualWorld( vSel[playerid][vVehID], playerid + 1 );
- LinkVehicleToInterior( vSel[playerid][vVehID], vSel[playerid][vSavedInterior] );
- // show veh stats to player
- updateVehicleInfo(playerid);
- // toggle spectating created vehicle
- SetPlayerVirtualWorld( playerid, playerid + 1 );
- TogglePlayerSpectating( playerid, 1 );
- PlayerSpectateVehicle( playerid, vSel[playerid][vVehID], SPECTATE_MODE_NORMAL );
- return 1;
- }
- return 0;
- }
- public OnPlayerKeyStateChange ( playerid, newkeys, oldkeys )
- {
- if ( vSel[playerid][vSelModeEnabled] == 1 )
- {
- // toggle veh mode OFF
- if ( newkeys == KEY_SECONDARY_ATTACK )
- {
- // key state checker disabled
- vSelKeyStateCheckStop(playerid);
- // hide vehicle stats
- hidePlayerInfoTD(playerid);
- // return player's pos, interior, world
- SetTimerEx( "returnPlayerBack", 100, 0, "d", playerid );
- // stop cpectating
- TogglePlayerSpectating( playerid, 0 );
- // destroy car
- DestroyVehicle( vSel[playerid][vVehID] );
- vSel[playerid][vSelModeEnabled] = 0;
- return 1;
- }
- // create selected vehicle
- if ( newkeys == KEY_SPRINT )
- {
- // key state checker disabled
- vSelKeyStateCheckStop(playerid);
- // hide vehicle stats
- hidePlayerInfoTD(playerid);
- // return player's pos, interior, world
- SetTimerEx( "putPlayerInSelectedVehicle", 100, 0, "d", playerid );
- // stop cpectating
- TogglePlayerSpectating( playerid, 0 );
- vSel[playerid][vSelModeEnabled] = 0;
- }
- }
- return 1;
- }
- forward updateVehicleInfo ( playerid );
- public updateVehicleInfo ( playerid )
- {
- // update veh's info TextDraw
- new infoText[MAX_STRING];
- format
- (
- infoText, MAX_STRING,
- vehInfoPattern,
- vData[ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ][vName],
- vData[ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ][vModel],
- vCatName[ vSel[playerid][vCurCat] ],
- vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] - vID[ vSel[playerid][vCurCat] ][vCatMinID] + 1,
- vModName[ vData[ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ][vMod] ],
- vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ],
- vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ]
- );
- showPlayerInfoTD( playerid, infoText );
- return 1;
- }
- forward vSelKeyStateCheckStart ( playerid );
- public vSelKeyStateCheckStart ( playerid )
- {
- vSel[playerid][vKeyCheckerTimer] = SetTimerEx( "vSelKeyStateCheck", keyCheckInterval, 1, "d", playerid );
- return 1;
- }
- stock vSelKeyStateCheckStop ( playerid )
- {
- KillTimer( vSel[playerid][vKeyCheckerTimer] );
- }
- forward vSelKeyStateCheck ( playerid );
- public vSelKeyStateCheck ( playerid )
- {
- // get player's pressed buttons
- new keys, updown, leftright;
- GetPlayerKeys( playerid, keys, updown, leftright );
- // pressed keys check ( do not change any of this ;) )
- if ( updown != 0 || leftright != 0 )
- {
- // WS keys
- if ( updown == KEY_UP )
- {
- if ( keys == KEY_WALK ) // color1++
- {
- vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ]++;
- if ( vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] >= vColorCount )
- vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] = 0;
- ChangeVehicleColor( vSel[playerid][vVehID], vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ], vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] );
- }
- else // cat++
- {
- vSel[playerid][vCurCat]++;
- if ( vSel[playerid][vCurCat] >= vCatCount ) vSel[playerid][vCurCat] = 0;
- showSelectedVehicleToPlayer(playerid);
- }
- }
- else if ( updown == KEY_DOWN )
- {
- if ( keys == KEY_WALK ) // color1--
- {
- vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ]--;
- if ( vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] < 0 )
- vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] = vColorCount - 1;
- ChangeVehicleColor( vSel[playerid][vVehID], vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ], vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] );
- }
- else // cat--
- {
- vSel[playerid][vCurCat]--;
- if ( vSel[playerid][vCurCat] < 0 ) vSel[playerid][vCurCat] = vCatCount - 1;
- showSelectedVehicleToPlayer(playerid);
- }
- }
- // AD keys
- if ( leftright == KEY_LEFT )
- {
- if ( keys == KEY_WALK ) // color2--
- {
- vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ]--;
- if ( vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] < 0 )
- vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] = vColorCount - 1;
- ChangeVehicleColor( vSel[playerid][vVehID], vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ], vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] );
- }
- else // veh--
- {
- vSel[playerid][vCurID][ vSel[playerid][vCurCat] ]--;
- if ( vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] < vID[ vSel[playerid][vCurCat] ][vCatMinID] )
- vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] = vID[ vSel[playerid][vCurCat] ][vCatMaxID];
- showSelectedVehicleToPlayer(playerid);
- }
- }
- else if ( leftright == KEY_RIGHT )
- {
- if ( keys == KEY_WALK ) // color2++
- {
- vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ]++;
- if ( vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] >= vColorCount )
- vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] = 0;
- ChangeVehicleColor( vSel[playerid][vVehID], vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ], vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ] );
- }
- else // veh++
- {
- vSel[playerid][vCurID][ vSel[playerid][vCurCat] ]++;
- if ( vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] > vID[ vSel[playerid][vCurCat] ][vCatMaxID] )
- vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] = vID[ vSel[playerid][vCurCat] ][vCatMinID];
- showSelectedVehicleToPlayer(playerid);
- }
- }
- updateVehicleInfo(playerid);
- }
- return 1;
- }
- stock showPlayerInfoTD ( playerid, text[] )
- {
- if ( infoTDcreated{playerid} == 1 )
- {
- TextDrawHideForPlayer( playerid, infoTD[playerid] );
- TextDrawSetString( infoTD[playerid], text );
- }
- else
- {
- createPlayerInfoTD( playerid, text );
- infoTDcreated{playerid} = 1;
- }
- TextDrawShowForPlayer( playerid, infoTD[playerid] );
- }
- forward hidePlayerInfoTD ( playerid );
- public hidePlayerInfoTD ( playerid )
- {
- TextDrawHideForPlayer( playerid, infoTD[playerid] );
- return 1;
- }
- stock createPlayerInfoTD ( playerid, text[] = ":)" )
- {
- infoTD[playerid] = TextDrawCreate( plInfoTDposX, plInfoTDposY, text );
- TextDrawLetterSize( infoTD[playerid], plInfoTDletterXsize, plInfoTDletterYsize );
- TextDrawAlignment( infoTD[playerid], plInfoTDalignment );
- TextDrawSetOutline( infoTD[playerid], plInfoTDoutlineSize );
- }
- forward returnPlayerBack ( playerid );
- public returnPlayerBack ( playerid )
- {
- if ( vSel[playerid][vSavedVehicleID] != INVALID_VEHICLE_ID ) PutPlayerInVehicle( playerid, vSel[playerid][vSavedVehicleID], 0 );
- else setPlayerPos( playerid, vSel[playerid][vSavedPos][xPos], vSel[playerid][vSavedPos][yPos], vSel[playerid][vSavedPos][zPos], vSel[playerid][vSavedPos][zAngle], vSel[playerid][vSavedInterior], vSel[playerid][vSavedWorld] );
- }
- stock setPlayerPos ( playerid, Float:x = -6666.0, Float:y = -6666.0, Float:z = -6666.0, Float:angle = -6666.0, interior = -1, world = -1 )
- {
- if ( world != -1 && world != GetPlayerVirtualWorld(playerid) ) SetPlayerVirtualWorld( playerid, world );
- if ( interior != -1 && interior != GetPlayerInterior(playerid) ) SetPlayerInterior( playerid, interior );
- if ( angle != -6666.0 )
- {
- SetPlayerFacingAngle( playerid, angle );
- SetCameraBehindPlayer(playerid);
- }
- if ( x == -6666.0 || y == -6666.0 || z == -6666.0 )
- {
- new Float:curX, Float:curY, Float:curZ;
- GetPlayerPos( playerid, curX, curY, curZ );
- if ( x == -6666.0 ) x = curX;
- if ( y == -6666.0 ) y = curY;
- if ( z == -6666.0 ) z = curZ;
- }
- SetPlayerPos( playerid, x, y, z );
- }
- stock showSelectedVehicleToPlayer ( playerid )
- {
- new oldVeh = vSel[playerid][vVehID];
- SetVehicleVirtualWorld( oldVeh, playerid + 300 );
- vSel[playerid][vVehID] = CreateVehicle
- (
- vData[ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ][vModel],
- vSel[playerid][vSavedPos][xPos],
- vSel[playerid][vSavedPos][yPos],
- vSel[playerid][vSavedPos][zPos] + metersUp,
- vSel[playerid][vSavedPos][zAngle],
- vSel[playerid][vVehColor1][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ],
- vSel[playerid][vVehColor2][ vSel[playerid][vCurID][ vSel[playerid][vCurCat] ] ],
- 50000
- );
- SetVehicleVirtualWorld( vSel[playerid][vVehID], playerid + 1 );
- LinkVehicleToInterior( vSel[playerid][vVehID], vSel[playerid][vSavedInterior] );
- updateVehicleInfo(playerid);
- PlayerSpectateVehicle( playerid, vSel[playerid][vVehID], SPECTATE_MODE_NORMAL );
- DestroyVehicle( oldVeh );
- }
- forward putPlayerInSelectedVehicle ( playerid );
- public putPlayerInSelectedVehicle ( playerid )
- {
- if ( vSel[playerid][vSavedVehicleID] != INVALID_VEHICLE_ID ) DestroyVehicle( vSel[playerid][vSavedVehicleID] );
- SetVehicleVirtualWorld( vSel[playerid][vVehID], vSel[playerid][vSavedWorld] );
- LinkVehicleToInterior( vSel[playerid][vVehID], vSel[playerid][vSavedInterior] );
- SetPlayerVirtualWorld( playerid, vSel[playerid][vSavedWorld] );
- SetPlayerInterior( playerid, vSel[playerid][vSavedInterior] );
- PutPlayerInVehicle( playerid, vSel[playerid][vVehID], 0 );
- SetVehiclePos( vSel[playerid][vVehID], vSel[playerid][vSavedPos][xPos], vSel[playerid][vSavedPos][yPos], vSel[playerid][vSavedPos][zPos] );
- SetVehicleZAngle( vSel[playerid][vVehID], vSel[playerid][vSavedPos][zAngle] );
- return 1;
- }
- stock showVehicleInfoToPlayer ( playerid )
- {
- new infoText[MAX_STRING], v, vehModel;
- vehModel = GetVehicleModel( GetPlayerVehicleID(playerid) );
- for ( v = 0; v < vCount; v++ ) if ( vehModel == vData[v][vModel] ) break;
- format
- (
- infoText, MAX_STRING,
- vehInfoPattern,
- vData[v][vName],
- vehModel,
- vCatName[ vData[v][vCat] ],
- v - vID[ vData[v][vCat] ][vCatMinID] + 1,
- vModName[ vData[v][vMod] ],
- -1,
- -1
- );
- showPlayerInfoTD( playerid, infoText );
- SetTimerEx( "hidePlayerInfoTD", plTempInfoDelay + 3000, 0, "d", playerid );
- }
Advertisement
Add Comment
Please, Sign In to add comment