Advertisement
Guest User

Untitled

a guest
Feb 26th, 2011
2,367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 57.72 KB | None | 0 0
  1. /* SA:MP PAWN Debug -
  2. * Debugging Filterscript used
  3. * for creation of gamemode.
  4. *
  5. * Simon Campbell
  6. * 10/03/2007, 6:31pm
  7. */
  8.  
  9. //==============================================================================
  10.  
  11. #include <a_samp>
  12.  
  13. #undef KEY_UP
  14. #undef KEY_DOWN
  15. #undef KEY_LEFT
  16. #undef KEY_RIGHT
  17.  
  18. #define KEY_UP 65408
  19. #define KEY_DOWN 128
  20. #define KEY_LEFT 65408
  21. #define KEY_RIGHT 128
  22.  
  23. #define DEBUG_VERSION "0.5c"
  24.  
  25. #define SKIN_SELECT true
  26. #define VEHI_SELECT true
  27. #define WORL_SELECT true
  28. #define CAME_SELECT true
  29. #define OBJE_SELECT true
  30.  
  31. #define MISCEL_CMDS true
  32. #define ADMINS_ONLY false
  33.  
  34. #define SKIN_SEL_STAT 1
  35. #define VEHI_SEL_STAT 2
  36. #define WORL_SEL_STAT 3
  37. #define CAME_SEL_STAT 4
  38. #define OBJE_SEL_STAT 5
  39.  
  40. #define COLOR_RED 0xFF4040FF
  41. #define COLOR_GREEN 0x40FF40FF
  42. #define COLOR_BLUE 0x4040FFFF
  43.  
  44. #define COLOR_CYAN 0x40FFFFFF
  45. #define COLOR_PINK 0xFF40FFFF
  46. #define COLOR_YELLOW 0xFFFF40FF
  47.  
  48. #define COLOR_WHITE 0xFFFFFFFF
  49. #define COLOR_BLACK 0x000000FF
  50. #define COLOR_NONE 0x00000000
  51.  
  52. #define MIN_SKIN_ID 0
  53. #define MAX_SKIN_ID 299
  54.  
  55. #define MIN_VEHI_ID 400
  56. #define MAX_VEHI_ID 611
  57.  
  58. #define MIN_TIME_ID 0
  59. #define MAX_TIME_ID 23
  60.  
  61. #define MIN_WEAT_ID 0
  62. #define MAX_WEAT_ID 45
  63.  
  64. #define MIN_OBJE_ID 615
  65. #define MAX_OBJE_ID 13563
  66.  
  67. #define DEFAULT_GRA 0.008
  68.  
  69. #define VEHI_DIS 5.0
  70. #define OBJE_DIS 10.0
  71.  
  72. #define CMODE_A 0
  73. #define CMODE_B 1
  74.  
  75. #define O_MODE_SELECTOR 0
  76. #define O_MODE_MOVER 1
  77. #define O_MODE_ROTATOR 2
  78.  
  79. #define PI 3.14159265
  80.  
  81. #define CAMERA_TIME 40
  82.  
  83. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  84.  
  85. //==============================================================================
  86.  
  87. new gPlayerStatus[MAX_PLAYERS]; // Player Status
  88. new gPlayerTimers[MAX_PLAYERS]; // Player TimerID's for keypresses
  89. new gWorldStatus[3] = {12, 4}; // Time, Weather
  90.  
  91. new curPlayerSkin[MAX_PLAYERS] = {MIN_SKIN_ID, ...}; // Current Player Skin ID
  92. new curPlayerVehM[MAX_PLAYERS] = {MIN_VEHI_ID, ...}; // Current Player Vehicle ID
  93. new curPlayerVehI[MAX_PLAYERS] = {-1, ...};
  94.  
  95. enum E_OBJECT
  96. {
  97. OBJ_MOD,
  98. OBJ_MDL,
  99. Float:OBJ_X,
  100. Float:OBJ_Y,
  101. Float:OBJ_Z,
  102. Float:OBJ_RX,
  103. Float:OBJ_RY,
  104. Float:OBJ_RZ
  105. }
  106.  
  107. enum E_OBJ_RATE
  108. {
  109. Float:OBJ_RATE_ROT,
  110. Float:OBJ_RATE_MOVE
  111. }
  112.  
  113. new pObjectRate[ MAX_PLAYERS ][ E_OBJ_RATE ];
  114. new curPlayerObjM[ MAX_PLAYERS ][ E_OBJECT ];
  115. new curPlayerObjI[ MAX_PLAYERS ] = {-1, ...};
  116.  
  117. enum P_CAMERA_D {
  118. CMODE,
  119. Float:RATE,
  120. Float:CPOS_X,
  121. Float:CPOS_Y,
  122. Float:CPOS_Z,
  123. Float:CLOO_X,
  124. Float:CLOO_Y,
  125. Float:CLOO_Z
  126. };
  127.  
  128. new curPlayerCamD[MAX_PLAYERS][P_CAMERA_D];
  129.  
  130. enum CURVEHICLE {
  131. bool:spawn,
  132. vmodel,
  133. vInt
  134. };
  135.  
  136. new curServerVehP[MAX_VEHICLES][CURVEHICLE];
  137.  
  138. new aSelNames[5][] = { // Menu selection names
  139. {"SkinSelect"},
  140. {"VehicleSelect"},
  141. {"WeatherSelect"},
  142. {"CameraSelect"},
  143. {"ObjectSelect"}
  144. };
  145.  
  146. new aWeaponNames[][32] = {
  147. {"Unarmed (Fist)"}, // 0
  148. {"Brass Knuckles"}, // 1
  149. {"Golf Club"}, // 2
  150. {"Night Stick"}, // 3
  151. {"Knife"}, // 4
  152. {"Baseball Bat"}, // 5
  153. {"Shovel"}, // 6
  154. {"Pool Cue"}, // 7
  155. {"Katana"}, // 8
  156. {"Chainsaw"}, // 9
  157. {"Purple Dildo"}, // 10
  158. {"Big White Vibrator"}, // 11
  159. {"Medium White Vibrator"}, // 12
  160. {"Small White Vibrator"}, // 13
  161. {"Flowers"}, // 14
  162. {"Cane"}, // 15
  163. {"Grenade"}, // 16
  164. {"Teargas"}, // 17
  165. {"Molotov"}, // 18
  166. {" "}, // 19
  167. {" "}, // 20
  168. {" "}, // 21
  169. {"Colt 45"}, // 22
  170. {"Colt 45 (Silenced)"}, // 23
  171. {"Desert Eagle"}, // 24
  172. {"Normal Shotgun"}, // 25
  173. {"Sawnoff Shotgun"}, // 26
  174. {"Combat Shotgun"}, // 27
  175. {"Micro Uzi (Mac 10)"}, // 28
  176. {"MP5"}, // 29
  177. {"AK47"}, // 30
  178. {"M4"}, // 31
  179. {"Tec9"}, // 32
  180. {"Country Rifle"}, // 33
  181. {"Sniper Rifle"}, // 34
  182. {"Rocket Launcher"}, // 35
  183. {"Heat-Seeking Rocket Launcher"}, // 36
  184. {"Flamethrower"}, // 37
  185. {"Minigun"}, // 38
  186. {"Satchel Charge"}, // 39
  187. {"Detonator"}, // 40
  188. {"Spray Can"}, // 41
  189. {"Fire Extinguisher"}, // 42
  190. {"Camera"}, // 43
  191. {"Night Vision Goggles"}, // 44
  192. {"Infrared Vision Goggles"}, // 45
  193. {"Parachute"}, // 46
  194. {"Fake Pistol"} // 47
  195. };
  196.  
  197.  
  198. new aVehicleNames[212][] = { // Vehicle Names - Betamaster
  199. {"Landstalker"},
  200. {"Bravura"},
  201. {"Buffalo"},
  202. {"Linerunner"},
  203. {"Perrenial"},
  204. {"Sentinel"},
  205. {"Dumper"},
  206. {"Firetruck"},
  207. {"Trashmaster"},
  208. {"Stretch"},
  209. {"Manana"},
  210. {"Infernus"},
  211. {"Voodoo"},
  212. {"Pony"},
  213. {"Mule"},
  214. {"Cheetah"},
  215. {"Ambulance"},
  216. {"Leviathan"},
  217. {"Moonbeam"},
  218. {"Esperanto"},
  219. {"Taxi"},
  220. {"Washington"},
  221. {"Bobcat"},
  222. {"Mr Whoopee"},
  223. {"BF Injection"},
  224. {"Hunter"},
  225. {"Premier"},
  226. {"Enforcer"},
  227. {"Securicar"},
  228. {"Banshee"},
  229. {"Predator"},
  230. {"Bus"},
  231. {"Rhino"},
  232. {"Barracks"},
  233. {"Hotknife"},
  234. {"Trailer 1"}, //artict1
  235. {"Previon"},
  236. {"Coach"},
  237. {"Cabbie"},
  238. {"Stallion"},
  239. {"Rumpo"},
  240. {"RC Bandit"},
  241. {"Romero"},
  242. {"Packer"},
  243. {"Monster"},
  244. {"Admiral"},
  245. {"Squalo"},
  246. {"Seasparrow"},
  247. {"Pizzaboy"},
  248. {"Tram"},
  249. {"Trailer 2"}, //artict2
  250. {"Turismo"},
  251. {"Speeder"},
  252. {"Reefer"},
  253. {"Tropic"},
  254. {"Flatbed"},
  255. {"Yankee"},
  256. {"Caddy"},
  257. {"Solair"},
  258. {"Berkley's RC Van"},
  259. {"Skimmer"},
  260. {"PCJ-600"},
  261. {"Faggio"},
  262. {"Freeway"},
  263. {"RC Baron"},
  264. {"RC Raider"},
  265. {"Glendale"},
  266. {"Oceanic"},
  267. {"Sanchez"},
  268. {"Sparrow"},
  269. {"Patriot"},
  270. {"Quad"},
  271. {"Coastguard"},
  272. {"Dinghy"},
  273. {"Hermes"},
  274. {"Sabre"},
  275. {"Rustler"},
  276. {"ZR-350"},
  277. {"Walton"},
  278. {"Regina"},
  279. {"Comet"},
  280. {"BMX"},
  281. {"Burrito"},
  282. {"Camper"},
  283. {"Marquis"},
  284. {"Baggage"},
  285. {"Dozer"},
  286. {"Maverick"},
  287. {"News Chopper"},
  288. {"Rancher"},
  289. {"FBI Rancher"},
  290. {"Virgo"},
  291. {"Greenwood"},
  292. {"Jetmax"},
  293. {"Hotring"},
  294. {"Sandking"},
  295. {"Blista Compact"},
  296. {"Police Maverick"},
  297. {"Boxville"},
  298. {"Benson"},
  299. {"Mesa"},
  300. {"RC Goblin"},
  301. {"Hotring Racer A"}, //hotrina
  302. {"Hotring Racer B"}, //hotrinb
  303. {"Bloodring Banger"},
  304. {"Rancher"},
  305. {"Super GT"},
  306. {"Elegant"},
  307. {"Journey"},
  308. {"Bike"},
  309. {"Mountain Bike"},
  310. {"Beagle"},
  311. {"Cropdust"},
  312. {"Stunt"},
  313. {"Tanker"}, //petro
  314. {"Roadtrain"},
  315. {"Nebula"},
  316. {"Majestic"},
  317. {"Buccaneer"},
  318. {"Shamal"},
  319. {"Hydra"},
  320. {"FCR-900"},
  321. {"NRG-500"},
  322. {"HPV1000"},
  323. {"Cement Truck"},
  324. {"Tow Truck"},
  325. {"Fortune"},
  326. {"Cadrona"},
  327. {"FBI Truck"},
  328. {"Willard"},
  329. {"Forklift"},
  330. {"Tractor"},
  331. {"Combine"},
  332. {"Feltzer"},
  333. {"Remington"},
  334. {"Slamvan"},
  335. {"Blade"},
  336. {"Freight"},
  337. {"Streak"},
  338. {"Vortex"},
  339. {"Vincent"},
  340. {"Bullet"},
  341. {"Clover"},
  342. {"Sadler"},
  343. {"Firetruck LA"}, //firela
  344. {"Hustler"},
  345. {"Intruder"},
  346. {"Primo"},
  347. {"Cargobob"},
  348. {"Tampa"},
  349. {"Sunrise"},
  350. {"Merit"},
  351. {"Utility"},
  352. {"Nevada"},
  353. {"Yosemite"},
  354. {"Windsor"},
  355. {"Monster A"}, //monstera
  356. {"Monster B"}, //monsterb
  357. {"Uranus"},
  358. {"Jester"},
  359. {"Sultan"},
  360. {"Stratum"},
  361. {"Elegy"},
  362. {"Raindance"},
  363. {"RC Tiger"},
  364. {"Flash"},
  365. {"Tahoma"},
  366. {"Savanna"},
  367. {"Bandito"},
  368. {"Freight Flat"}, //freiflat
  369. {"Streak Carriage"}, //streakc
  370. {"Kart"},
  371. {"Mower"},
  372. {"Duneride"},
  373. {"Sweeper"},
  374. {"Broadway"},
  375. {"Tornado"},
  376. {"AT-400"},
  377. {"DFT-30"},
  378. {"Huntley"},
  379. {"Stafford"},
  380. {"BF-400"},
  381. {"Newsvan"},
  382. {"Tug"},
  383. {"Trailer 3"}, //petrotr
  384. {"Emperor"},
  385. {"Wayfarer"},
  386. {"Euros"},
  387. {"Hotdog"},
  388. {"Club"},
  389. {"Freight Carriage"}, //freibox
  390. {"Trailer 3"}, //artict3
  391. {"Andromada"},
  392. {"Dodo"},
  393. {"RC Cam"},
  394. {"Launch"},
  395. {"Police Car (LSPD)"},
  396. {"Police Car (SFPD)"},
  397. {"Police Car (LVPD)"},
  398. {"Police Ranger"},
  399. {"Picador"},
  400. {"S.W.A.T. Van"},
  401. {"Alpha"},
  402. {"Phoenix"},
  403. {"Glendale"},
  404. {"Sadler"},
  405. {"Luggage Trailer A"}, //bagboxa
  406. {"Luggage Trailer B"}, //bagboxb
  407. {"Stair Trailer"}, //tugstair
  408. {"Boxville"},
  409. {"Farm Plow"}, //farmtr1
  410. {"Utility Trailer"} //utiltr1
  411. };
  412.  
  413. //==============================================================================
  414.  
  415. forward SkinSelect(playerid);
  416. forward VehicleSelect(playerid);
  417. forward WorldSelect(playerid);
  418. forward CameraSelect(playerid);
  419. forward ObjectSelect( playerid );
  420.  
  421. //==============================================================================
  422.  
  423. dcmd_debug(playerid, params[]) {
  424. if(strcmp(params, "help", true, 4) == 0) {
  425. SendClientMessage(playerid, COLOR_BLUE, "[DEBUG]: Debug Mode 0.2 - HELP");
  426. SendClientMessage(playerid, COLOR_CYAN, "[DEBUG]: Debug Mode 0.2 is a filterscript which allows scripters");
  427. SendClientMessage(playerid, COLOR_CYAN, "[DEBUG]: or people who wish to explore SA:MP 0.2\'s features to have access");
  428. SendClientMessage(playerid, COLOR_CYAN, "[DEBUG]: to many commands and \"menu\'s\".");
  429. SendClientMessage(playerid, COLOR_YELLOW, "[DEBUG]: This filterscript was designed for SA:MP version 0.2");
  430. SendClientMessage(playerid, COLOR_PINK, "[DEBUG]: For the command list type \"/debug commands\"");
  431.  
  432. return true;
  433. }
  434. if(strcmp(params, "commands", true, 8) == 0) {
  435. SendClientMessage(playerid, COLOR_BLUE, "[DEBUG]: Debug Mode 0.2 - COMMANDS");
  436. SendClientMessage(playerid, COLOR_CYAN, "[WORLD]: /w, /weather, /t, /time, /wsel, /g, /gravity");
  437. SendClientMessage(playerid, COLOR_CYAN, "[VEHICLES]: /v, /vehicle, /vsel");
  438. SendClientMessage(playerid, COLOR_CYAN, "[PLAYER]: /s, /skin, /ssel, /weapon, /w2");
  439. SendClientMessage(playerid, COLOR_CYAN, "[PLAYER]: /goto, /warpto, /bring, /setloc");
  440. SendClientMessage(playerid, COLOR_CYAN, "[CAMERA]: /camera, /csel");
  441.  
  442. return true;
  443. }
  444.  
  445. if(strcmp(params, "dump", true, 4) == 0) {
  446. SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS]: All current server data dumped to a file.");
  447. new File:F_DUMP = fopen("DEBUG-DUMP.txt", io_append);
  448. if(F_DUMP) {
  449. new h, m, s, Y, M, D, cString[256];
  450.  
  451. getdate(Y, M, D);
  452. gettime(h, m, s);
  453.  
  454. format(cString, 256, "// %d-%d-%d @ %d:%d:%d\r\n", D, M, Y, h, m, s);
  455. fwrite(F_DUMP, cString);
  456.  
  457. for(new i = 0; i < MAX_VEHICLES; i++) {
  458. if(curServerVehP[i][spawn] == true) {
  459. new Float:vx, Float:vy, Float:vz, Float:va;
  460. GetVehiclePos(i, vx, vy, vz);
  461. GetVehicleZAngle(i, va);
  462. format(cString, 256, "CreateVehicle(%d, %f, %f, %f, %f, -1, -1, 5000); // Interior(%d), %s\r\n", curServerVehP[i][vmodel], vx, vy, vz, va, curServerVehP[i][vInt], aVehicleNames[curServerVehP[i][vmodel] - MIN_VEHI_ID]);
  463. fwrite(F_DUMP, cString);
  464. }
  465. }
  466. print("** Dumped current server information.");
  467. fclose(F_DUMP);
  468. }
  469. else {
  470. print("** Failed to create the file \"DEBUG-DUMP.txt\".\n");
  471. }
  472. return true;
  473. }
  474. return false;
  475. }
  476.  
  477. #if CAME_SELECT == true
  478.  
  479. dcmd_object(playerid, params[])
  480. {
  481. new cString[ 128 ], idx;
  482. cString = strtok( params, idx );
  483.  
  484. if ( !strlen( cString ) || !strlen( params[ idx + 1 ] ) )
  485. {
  486. SendClientMessage( playerid, COLOR_WHITE, "[USAGE]: /object [RRATE/MRATE/CAMERA] [RATE/ID]");
  487.  
  488. return 1;
  489. }
  490.  
  491. if ( strcmp( cString, "rrate", true ) == 0 )
  492. {
  493. pObjectRate[ playerid ][ OBJ_RATE_ROT ] = floatstr( params[ idx + 1 ] );
  494.  
  495. format( cString, 128, "[SUCCESS]: Object rotation rate changed to %f.", pObjectRate[ playerid ][ OBJ_RATE_ROT ] );
  496. SendClientMessage( playerid, COLOR_GREEN, cString );
  497.  
  498. return 1;
  499. }
  500.  
  501. if ( strcmp( cString, "mrate", true ) == 0 )
  502. {
  503. pObjectRate[ playerid ][ OBJ_RATE_MOVE ] = floatstr( params[ idx + 1 ] );
  504.  
  505. format( cString, 128, "[SUCCESS]: Object movement rate changed to %f.", pObjectRate[ playerid ][ OBJ_RATE_MOVE ] );
  506. SendClientMessage( playerid, COLOR_GREEN, cString );
  507.  
  508. return 1;
  509. }
  510.  
  511. if ( strcmp( cString, "mode", true ) == 0 )
  512. {
  513. new fuck = strval( params[ idx + 1 ] );
  514.  
  515. if ( fuck >= O_MODE_SELECTOR || fuck <= O_MODE_ROTATOR )
  516. {
  517. curPlayerObjM[ playerid ][ OBJ_MOD ] = fuck;
  518.  
  519. switch ( fuck )
  520. {
  521. case O_MODE_SELECTOR: SendClientMessage( playerid, COLOR_GREEN, "[SUCCESS]: Object mode changed to Object Selection." );
  522. case O_MODE_MOVER: SendClientMessage( playerid, COLOR_GREEN, "[SUCCESS]: Object mode changed to Object Mover." );
  523. case O_MODE_ROTATOR: SendClientMessage( playerid, COLOR_GREEN, "[SUCCESS]: Object mode changed to Object Rotator." );
  524. }
  525.  
  526. return 1;
  527. }
  528. else
  529. {
  530. SendClientMessage( playerid, COLOR_RED, "[ERROR]: Invalid modeid." );
  531.  
  532. return 1;
  533. }
  534. }
  535.  
  536. if ( strcmp( cString, "focus", true ) == 0 )
  537. {
  538. new objectid = strval( params[ idx + 1 ] );
  539.  
  540. if ( !IsValidObject( objectid ) )
  541. {
  542. SendClientMessage( playerid, COLOR_RED, "[ERROR]: Enter a valid objectid." );
  543.  
  544. return 1;
  545. }
  546.  
  547. else
  548. {
  549. curPlayerObjI[ playerid ] = objectid;
  550.  
  551. GetObjectPos( objectid, curPlayerObjM[ playerid ][ OBJ_X ], curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ] );
  552. GetObjectRot( objectid, curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ] );
  553.  
  554. curPlayerCamD[playerid][CPOS_X] = curPlayerObjM[ playerid ][ OBJ_X ] + 5.0;
  555. curPlayerCamD[playerid][CPOS_Y] = curPlayerObjM[ playerid ][ OBJ_Y ] - 20.0;
  556. curPlayerCamD[playerid][CPOS_Z] = curPlayerObjM[ playerid ][ OBJ_Z ] + 30.0;
  557.  
  558. curPlayerCamD[playerid][CLOO_X] = curPlayerObjM[ playerid ][ OBJ_X ];
  559. curPlayerCamD[playerid][CLOO_Y] = curPlayerObjM[ playerid ][ OBJ_Y ];
  560. curPlayerCamD[playerid][CLOO_Z] = curPlayerObjM[ playerid ][ OBJ_Z ];
  561.  
  562. if ( gPlayerStatus[ playerid ] == OBJE_SEL_STAT )
  563. {
  564. SetPlayerCameraPos( playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z] );
  565. SetPlayerCameraLookAt( playerid, curPlayerObjM[ playerid ][ OBJ_X ], curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ] );
  566. }
  567.  
  568. return 1;
  569. }
  570. }
  571.  
  572. if ( strcmp( cString, "camera", true ) == 0 )
  573. {
  574. new cameraid = strval( params[ idx + 1 ] );
  575.  
  576. if ( cameraid >= 0 && cameraid < 4 )
  577. {
  578. switch ( cameraid )
  579. {
  580. case 0:
  581. {
  582. curPlayerCamD[playerid][CPOS_X] = curPlayerObjM[ playerid ][ OBJ_X ] + 7.0;
  583. curPlayerCamD[playerid][CPOS_Y] = curPlayerObjM[ playerid ][ OBJ_Y ] - 20.0;
  584. curPlayerCamD[playerid][CPOS_Z] = curPlayerObjM[ playerid ][ OBJ_Z ] + 30.0;
  585. }
  586.  
  587. case 1:
  588. {
  589. curPlayerCamD[playerid][CPOS_X] = curPlayerObjM[ playerid ][ OBJ_X ] + 7.0;
  590. curPlayerCamD[playerid][CPOS_Y] = curPlayerObjM[ playerid ][ OBJ_Y ] + 15.0;
  591. curPlayerCamD[playerid][CPOS_Z] = curPlayerObjM[ playerid ][ OBJ_X ] + 15.0;
  592. }
  593.  
  594. case 2:
  595. {
  596. curPlayerCamD[playerid][CPOS_X] = curPlayerObjM[ playerid ][ OBJ_X ] - 20.0;
  597. curPlayerCamD[playerid][CPOS_Y] = curPlayerObjM[ playerid ][ OBJ_Y ] + 20.0;
  598. curPlayerCamD[playerid][CPOS_Z] = curPlayerObjM[ playerid ][ OBJ_X ] + 20.0;
  599. }
  600.  
  601. case 3:
  602. {
  603. curPlayerCamD[playerid][CPOS_X] = curPlayerObjM[ playerid ][ OBJ_X ] - 10.0;
  604. curPlayerCamD[playerid][CPOS_Y] = curPlayerObjM[ playerid ][ OBJ_Y ] + 25.0;
  605. curPlayerCamD[playerid][CPOS_Z] = curPlayerObjM[ playerid ][ OBJ_X ] + 15.0;
  606. }
  607. }
  608.  
  609. SetPlayerCameraPos( playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z] );
  610. SetPlayerCameraLookAt( playerid, curPlayerObjM[ playerid ][ OBJ_X ], curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ] );
  611.  
  612. return 1;
  613. }
  614. else
  615. {
  616. SendClientMessage( playerid, COLOR_RED, "[ERROR]: Invalid object camera id.");
  617.  
  618. return 1;
  619. }
  620. }
  621. return 0;
  622. }
  623.  
  624. dcmd_osel(playerid, params[])
  625. {
  626. #pragma unused params
  627.  
  628. new cString[ 128 ];
  629.  
  630. if ( gPlayerStatus[ playerid ] != 0 )
  631. {
  632. format( cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[ gPlayerStatus[ playerid ] - 1 ] );
  633. SendClientMessage(playerid, COLOR_RED, cString);
  634.  
  635. return 1;
  636. }
  637.  
  638. new Float:a;
  639.  
  640. gPlayerStatus[playerid] = OBJE_SEL_STAT;
  641.  
  642. GetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  643. curPlayerCamD[playerid][CPOS_Z] += 5.0;
  644. SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  645.  
  646. GetXYInFrontOfPlayer(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], OBJE_DIS);
  647.  
  648. curPlayerCamD[playerid][CLOO_Z] = curPlayerCamD[playerid][CPOS_Z] - 5.0;
  649.  
  650. SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
  651.  
  652. TogglePlayerControllable(playerid, 0);
  653.  
  654. GetPlayerFacingAngle(playerid, a);
  655.  
  656. curPlayerObjM[ playerid ][ OBJ_X ] = curPlayerCamD[playerid][CLOO_X];
  657. curPlayerObjM[ playerid ][ OBJ_Y ] = curPlayerCamD[playerid][CLOO_Y];
  658. curPlayerObjM[ playerid ][ OBJ_Z ] = curPlayerCamD[playerid][CLOO_Z];
  659. curPlayerObjM[ playerid ][ OBJ_RX ] = 0.0;
  660. curPlayerObjM[ playerid ][ OBJ_RY ] = 0.0;
  661. curPlayerObjM[ playerid ][ OBJ_RZ ] = 0.0;
  662.  
  663. curPlayerObjI[ playerid ] = CreateObject( curPlayerObjM[ playerid ][ OBJ_MDL ], curPlayerObjM[ playerid ][ OBJ_X ],
  664. curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ],
  665. curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ]
  666. );
  667.  
  668. gPlayerTimers[ playerid ] = SetTimerEx("ObjectSelect", 200, 1, "i", playerid);
  669.  
  670. return 1;
  671. }
  672.  
  673. dcmd_camera(playerid, params[]) {
  674. new idx; new cString[128];
  675.  
  676. cString = strtok(params, idx);
  677.  
  678. if (!strlen(cString)) {
  679. SendClientMessage(playerid, COLOR_RED, "[USAGE]: /camera [RATE/MODE] [RATE/MODEID]");
  680.  
  681. return true;
  682. }
  683.  
  684. if (strcmp(cString, "rate", true, 4) == 0) {
  685. curPlayerCamD[playerid][RATE] = floatstr(params[idx+1]);
  686.  
  687. return true;
  688. }
  689.  
  690. if (strcmp(cString, "mode", true, 4) == 0) {
  691. curPlayerCamD[playerid][CMODE] = strval(params[idx+1]);
  692.  
  693. return true;
  694. }
  695.  
  696. return true;
  697. }
  698.  
  699. dcmd_csel(playerid, params[]) {
  700. #pragma unused params
  701.  
  702. new cString[128];
  703.  
  704. if (gPlayerStatus[playerid] != 0) {
  705. format(cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
  706. SendClientMessage(playerid, COLOR_RED, cString);
  707.  
  708. return true;
  709. }
  710.  
  711. gPlayerStatus[playerid] = CAME_SEL_STAT;
  712.  
  713. TogglePlayerControllable(playerid, 0);
  714.  
  715. GetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  716. GetXYInFrontOfPlayer(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], 5.0);
  717.  
  718. curPlayerCamD[playerid][CLOO_Z] = curPlayerCamD[playerid][CPOS_Z];
  719.  
  720. gPlayerTimers[playerid] = SetTimerEx("CameraSelect", 200, 1, "i", playerid);
  721.  
  722. return true;
  723. }
  724.  
  725. #endif
  726.  
  727. #if WORL_SELECT == true
  728. dcmd_g(playerid, params[]) {
  729. new cString[128];
  730.  
  731. if (!strlen(params[0]))
  732. {
  733. SendClientMessage(playerid, COLOR_RED, "[USAGE]: /g GRAVITY or /gravity GRAVITY");
  734. return true;
  735. }
  736.  
  737. new Float:grav = floatstr(params[0]);
  738.  
  739. SetGravity(grav);
  740.  
  741. format(cString, 128, "[SUCCESS]: World gravity changed to %f", grav);
  742. SendClientMessage(playerid, COLOR_GREEN, cString);
  743.  
  744. return true;
  745. }
  746.  
  747. dcmd_gravity(playerid, params[])
  748. return dcmd_g(playerid, params);
  749.  
  750. dcmd_w(playerid, params[]) {
  751. new idx, iString[128];
  752. iString = strtok(params, idx);
  753.  
  754. if (!strlen(iString)) {
  755. SendClientMessage(playerid, COLOR_RED, "[USAGE]: /w WEATHERID or /weather WEATHERID");
  756. return true;
  757. }
  758.  
  759. idx = strval(iString);
  760.  
  761. if (idx < MIN_WEAT_ID || idx > MAX_WEAT_ID) {
  762. SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid WEATHERID");
  763. return true;
  764. }
  765.  
  766. gWorldStatus[1] = idx;
  767.  
  768. SetWeather(idx);
  769.  
  770. format(iString, 128, "[SUCCESS]: Weather has changed to WEATHERID %d", idx);
  771. SendClientMessage(playerid, COLOR_GREEN, iString);
  772.  
  773. return true;
  774. }
  775.  
  776. dcmd_weather(playerid, params[])
  777. return dcmd_w(playerid, params);
  778.  
  779. dcmd_t(playerid, params[]) {
  780. new idx, iString[128];
  781. iString = strtok(params, idx);
  782.  
  783. if (!strlen(iString)) {
  784. SendClientMessage(playerid, COLOR_RED, "[USAGE]: /t HOUR or /time HOUR");
  785. return true;
  786. }
  787.  
  788. idx = strval(iString);
  789.  
  790. if (idx < MIN_TIME_ID || idx > MAX_TIME_ID) {
  791. SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid HOUR");
  792. return true;
  793. }
  794.  
  795. gWorldStatus[0] = idx;
  796.  
  797. SetWorldTime(idx);
  798.  
  799. format(iString, 128, "[SUCCESS]: Time has changed to HOUR %d", idx);
  800. SendClientMessage(playerid, COLOR_GREEN, iString);
  801.  
  802. return true;
  803. }
  804.  
  805. dcmd_time(playerid, params[])
  806. return dcmd_t(playerid, params);
  807.  
  808. dcmd_wsel(playerid, params[]) {
  809. #pragma unused params
  810.  
  811. new cString[128];
  812.  
  813. if (gPlayerStatus[playerid] != 0) {
  814. format(cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
  815. SendClientMessage(playerid, COLOR_RED, cString);
  816. return true;
  817. }
  818.  
  819. new Float:x, Float:y, Float:z;
  820.  
  821. gPlayerStatus[playerid] = WORL_SEL_STAT;
  822.  
  823. GetPlayerPos(playerid, x, y, z);
  824. SetPlayerCameraPos(playerid, x, y, z + 40.0);
  825.  
  826. GetXYInFrontOfPlayer(playerid, x, y, 100.0);
  827.  
  828. SetPlayerCameraLookAt(playerid, x, y, z + 5.0);
  829.  
  830. TogglePlayerControllable(playerid, 0);
  831.  
  832. gPlayerTimers[playerid] = SetTimerEx("WorldSelect", 200, 1, "i", playerid);
  833.  
  834. GameTextForPlayer(playerid, "WorldSelect", 1500, 3);
  835.  
  836. return true;
  837. }
  838. #endif
  839.  
  840. #if VEHI_SELECT == true
  841.  
  842. dcmd_v(playerid, params[])
  843. {
  844. new
  845. idx,
  846. iString[ 128 ];
  847.  
  848. if ( gPlayerStatus[ playerid ] != 0 )
  849. {
  850. format ( iString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[ gPlayerStatus[ playerid ] - 1 ] );
  851. SendClientMessage ( playerid, COLOR_RED, iString );
  852.  
  853. return true;
  854. }
  855.  
  856. if ( params[ 0 ] == '\0' ) // Same effect as a !strlen check.
  857. return SendClientMessage( playerid, COLOR_RED, "[USAGE]: /v MODELID/NAME or /vehicle MODELID/NAME" );
  858.  
  859. //***************
  860. // Fix by Mike! *
  861. //***************
  862.  
  863. idx = GetVehicleModelIDFromName( params );
  864.  
  865. if( idx == -1 )
  866. {
  867. idx = strval(iString);
  868.  
  869. if ( idx < MIN_VEHI_ID || idx > MAX_VEHI_ID )
  870. return SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid MODELID/NAME");
  871. }
  872.  
  873. new
  874. Float:x,
  875. Float:y,
  876. Float:z,
  877. Float:a;
  878.  
  879. GetPlayerPos(playerid, x, y, z);
  880. GetXYInFrontOfPlayer(playerid, x, y, VEHI_DIS);
  881. GetPlayerFacingAngle(playerid, a);
  882.  
  883. curPlayerVehM[playerid] = idx;
  884.  
  885. curPlayerVehI[playerid] = CreateVehicle(idx, x, y, z + 2.0, a + 90.0, -1, -1, 5000);
  886. LinkVehicleToInterior(curPlayerVehI[playerid], GetPlayerInterior(playerid));
  887.  
  888. curServerVehP[curPlayerVehI[playerid]][spawn] = true;
  889. curServerVehP[curPlayerVehI[playerid]][vmodel] = idx;
  890. curServerVehP[curPlayerVehI[playerid]][vInt] = GetPlayerInterior(playerid);
  891.  
  892. format(iString, 128, "[SUCCESS]: Spawned a \"%s\" (MODELID: %d, VEHICLEID: %d)", aVehicleNames[idx - MIN_VEHI_ID], idx, curPlayerVehI[playerid]);
  893.  
  894. SendClientMessage(playerid, COLOR_GREEN, iString);
  895.  
  896. return true;
  897. }
  898.  
  899. dcmd_vehicle(playerid, params[])
  900. return dcmd_v(playerid, params);
  901.  
  902. dcmd_vsel(playerid, params[])
  903. {
  904. // /vsel allows players to select a vehicle using playerkeys.
  905. #pragma unused params
  906.  
  907. new cString[128];
  908.  
  909. if (gPlayerStatus[playerid] != 0) {
  910. format(cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
  911. SendClientMessage(playerid, COLOR_RED, cString);
  912. return true;
  913. }
  914.  
  915. new Float:x, Float:y, Float:z, Float:a;
  916.  
  917. gPlayerStatus[playerid] = VEHI_SEL_STAT;
  918.  
  919. GetPlayerPos(playerid, x, y, z);
  920. SetPlayerCameraPos(playerid, x, y, z + 3.0);
  921.  
  922. GetXYInFrontOfPlayer(playerid, x, y, VEHI_DIS);
  923. SetPlayerCameraLookAt(playerid, x, y, z);
  924.  
  925. TogglePlayerControllable(playerid, 0);
  926.  
  927. GetPlayerFacingAngle(playerid, a);
  928.  
  929. curPlayerVehI[playerid] = CreateVehicle(curPlayerVehM[playerid], x, y, z + 2.0, a + 90.0, -1, -1, 5000);
  930. printf( "vsel vehicle start id = %d", curPlayerVehI[playerid] );
  931.  
  932. LinkVehicleToInterior(curPlayerVehI[playerid], GetPlayerInterior(playerid));
  933.  
  934. curServerVehP[curPlayerVehI[playerid]][spawn] = true;
  935. curServerVehP[curPlayerVehI[playerid]][vmodel] = curPlayerVehM[playerid];
  936. curServerVehP[curPlayerVehI[playerid]][vInt] = GetPlayerInterior(playerid);
  937.  
  938. gPlayerTimers[playerid] = SetTimerEx("VehicleSelect", 200, 1, "i", playerid);
  939.  
  940. return true;
  941. }
  942.  
  943. #endif
  944.  
  945. #if SKIN_SELECT == true
  946.  
  947. dcmd_ssel(playerid, params[])
  948. {
  949. // /ssel allows players to select a skin using playerkeys.
  950. #pragma unused params
  951.  
  952. new cString[128];
  953.  
  954. if (gPlayerStatus[playerid] != 0) {
  955. format(cString, 128, "[ERROR]: You are already using \"%s\".", aSelNames[gPlayerStatus[playerid] - 1]);
  956. SendClientMessage(playerid, COLOR_RED, cString);
  957. return true;
  958. }
  959.  
  960. new Float:x, Float:y, Float:z;
  961.  
  962. gPlayerStatus[playerid] = SKIN_SEL_STAT;
  963.  
  964. GetPlayerPos(playerid, x, y, z);
  965. SetPlayerCameraLookAt(playerid, x, y, z);
  966.  
  967. GetXYInFrontOfPlayer(playerid, x, y, 3.5);
  968. SetPlayerCameraPos(playerid, x, y, z);
  969.  
  970. TogglePlayerControllable(playerid, 0);
  971.  
  972. gPlayerTimers[playerid] = SetTimerEx("SkinSelect", 200, 1, "i", playerid);
  973.  
  974. return true;
  975. }
  976.  
  977. dcmd_s(playerid, params[])
  978. {
  979. // /s SKINID allows players to directly select a skin using it's ID.
  980. new idx, iString[128];
  981. iString = strtok(params, idx);
  982.  
  983. if (!strlen(iString)) {
  984. SendClientMessage(playerid, COLOR_RED, "[USAGE]: /s SKINID");
  985. return true;
  986. }
  987.  
  988. idx = strval(iString);
  989.  
  990. if (IsInvalidSkin(idx) || idx < MIN_SKIN_ID || idx > MAX_SKIN_ID) {
  991. SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid SKINID");
  992. return true;
  993. }
  994.  
  995. SetPlayerSkin(playerid, idx);
  996. curPlayerSkin[playerid] = idx;
  997. format(iString, 128, "[SUCCESS]: Changed skin to SKINID %d", idx);
  998.  
  999. SendClientMessage(playerid, COLOR_GREEN, iString);
  1000.  
  1001. return true;
  1002. }
  1003.  
  1004. dcmd_skin(playerid, params[])
  1005. {
  1006. dcmd_s(playerid, params);
  1007.  
  1008. return true;
  1009. }
  1010.  
  1011. #endif
  1012.  
  1013. #if MISCEL_CMDS == true
  1014. dcmd_goto(playerid, params[])
  1015. {
  1016. new idx, iString[128];
  1017. iString = strtok(params, idx);
  1018.  
  1019. if (!strlen(iString)) {
  1020. SendClientMessage(playerid, COLOR_RED, "[USAGE]: /goto PLAYERID (X_OFFSET Y_OFFSET Z_OFFSET)");
  1021. return true;
  1022. }
  1023.  
  1024. new ID = strval(iString);
  1025.  
  1026. if (!IsPlayerConnected(ID)) {
  1027. SendClientMessage(playerid, COLOR_RED, "[ERROR]: Not connected PLAYERID.");
  1028. return true;
  1029. }
  1030.  
  1031. new Float:X, Float:Y, Float:Z;
  1032. new Interior = GetPlayerInterior(ID);
  1033.  
  1034. GetPlayerPos(ID, X, Y, Z);
  1035.  
  1036. iString = strtok(params, idx);
  1037.  
  1038. if (!strlen(iString)) {
  1039. GetXYInFrontOfPlayer(ID, X, Y, 1.5);
  1040. SetPlayerInterior(playerid, Interior);
  1041. SetPlayerPos(playerid, X, Y, Z);
  1042.  
  1043. GetPlayerName(ID, iString, 128);
  1044. format(iString, 128, "[SUCCESS]: You have warped to %s (ID: %d).", iString, ID);
  1045. SendClientMessage(playerid, COLOR_GREEN, iString);
  1046.  
  1047. return true;
  1048. }
  1049.  
  1050. X += floatstr(iString);
  1051. iString = strtok(params, idx);
  1052.  
  1053. if (!strlen(iString)) {
  1054. goto fwarpto;
  1055. }
  1056.  
  1057. Y += floatstr(iString);
  1058. iString = strtok(params, idx);
  1059.  
  1060. if (!strlen(iString)) {
  1061. goto fwarpto;
  1062. }
  1063.  
  1064. Z += floatstr(iString);
  1065.  
  1066. fwarpto:
  1067.  
  1068. new pVID = GetPlayerVehicleID( playerid );
  1069.  
  1070. if ( pVID )
  1071. {
  1072. SetVehiclePos( pVID, X, Y, Z );
  1073. LinkVehicleToInterior( pVID, Interior );
  1074. }
  1075. else
  1076. {
  1077. SetPlayerPos( playerid, X, Y, Z);
  1078. }
  1079.  
  1080. SetPlayerInterior( playerid, Interior);
  1081.  
  1082. GetPlayerName(ID, iString, 128);
  1083. format(iString, 128, "[SUCCESS]: You have warped to %s (ID: %d).", iString, ID);
  1084. SendClientMessage(playerid, COLOR_GREEN, iString);
  1085.  
  1086. return true;
  1087. }
  1088.  
  1089. dcmd_warpto(playerid, params[])
  1090. {
  1091. dcmd_goto(playerid, params);
  1092.  
  1093. return true;
  1094. }
  1095.  
  1096. dcmd_setloc(playerid, params[])
  1097. {
  1098. new idx, iString[128];
  1099. iString = strtok(params, idx);
  1100.  
  1101. if (!strlen(iString)) {
  1102. SendClientMessage(playerid, COLOR_RED, "[USAGE]: /setloc X Y Z INTERIOR");
  1103. return true;
  1104. }
  1105.  
  1106. new Float:X, Float:Y, Float:Z;
  1107. new Interior;
  1108.  
  1109. X = floatstr(iString);
  1110. Y = floatstr(strtok(params,idx));
  1111. Z = floatstr(strtok(params,idx));
  1112. Interior = strval(strtok(params,idx));
  1113.  
  1114. new pVID = GetPlayerVehicleID( playerid );
  1115.  
  1116. if ( pVID )
  1117. {
  1118. SetVehiclePos( pVID, X, Y, Z );
  1119. LinkVehicleToInterior( pVID, Interior );
  1120. }
  1121. else
  1122. {
  1123. SetPlayerPos( playerid, X, Y, Z );
  1124. }
  1125.  
  1126. SetPlayerInterior(playerid, Interior);
  1127.  
  1128. return true;
  1129.  
  1130.  
  1131. }
  1132.  
  1133. dcmd_bring(playerid, params[])
  1134. {
  1135. new idx, iString[128];
  1136. iString = strtok(params, idx);
  1137.  
  1138. if (!strlen(iString)) {
  1139. SendClientMessage(playerid, COLOR_RED, "[USAGE]: /bring PLAYERID (X_OFFSET Y_OFFSET Z_OFFSET)");
  1140. return true;
  1141. }
  1142.  
  1143. new ID = strval(iString);
  1144.  
  1145. if (!IsPlayerConnected(ID)) {
  1146. SendClientMessage(playerid, COLOR_RED, "[ERROR]: Not connected PLAYERID.");
  1147. return true;
  1148. }
  1149.  
  1150. new Float:X, Float:Y, Float:Z;
  1151. new Interior = GetPlayerInterior(playerid);
  1152.  
  1153. GetPlayerPos(playerid, X, Y, Z);
  1154.  
  1155. iString = strtok(params, idx);
  1156.  
  1157. if (!strlen(iString)) {
  1158. GetXYInFrontOfPlayer(playerid, X, Y, 1.5);
  1159. SetPlayerInterior(ID, Interior);
  1160. SetPlayerPos(ID, X, Y, Z);
  1161.  
  1162. GetPlayerName(ID, iString, 128);
  1163. format(iString, 128, "[SUCCESS]: You have brought %s (ID: %d) to you.", iString, ID);
  1164. SendClientMessage(playerid, COLOR_GREEN, iString);
  1165.  
  1166. return true;
  1167. }
  1168.  
  1169. X += floatstr(iString);
  1170. iString = strtok(params, idx);
  1171.  
  1172. if (!strlen(iString)) {
  1173. goto fbring;
  1174. }
  1175.  
  1176. Y += floatstr(iString);
  1177. iString = strtok(params, idx);
  1178.  
  1179. if (!strlen(iString)) {
  1180. goto fbring;
  1181. }
  1182.  
  1183. Z += floatstr(iString);
  1184.  
  1185. fbring:
  1186.  
  1187. new pVID = GetPlayerVehicleID( ID );
  1188.  
  1189. if ( pVID )
  1190. {
  1191. SetVehiclePos( pVID, X, Y, Z );
  1192. LinkVehicleToInterior( pVID, Interior );
  1193. }
  1194. else
  1195. {
  1196. SetPlayerPos( ID, X, Y, Z );
  1197. }
  1198.  
  1199. SetPlayerInterior(ID, Interior);
  1200.  
  1201. GetPlayerName(ID, iString, 128);
  1202. format(iString, 128, "[SUCCESS]: You have brought %s (ID: %d) to you.", iString, ID);
  1203. SendClientMessage(playerid, COLOR_GREEN, iString);
  1204.  
  1205. return true;
  1206. }
  1207.  
  1208. dcmd_weapon(playerid, params[])
  1209. {
  1210. dcmd_w2(playerid, params);
  1211.  
  1212. return true;
  1213. }
  1214.  
  1215. dcmd_w2(playerid, params[])
  1216. {
  1217. new idx, iString[128];
  1218. iString = strtok(params, idx);
  1219.  
  1220. if (!strlen(iString)) {
  1221. SendClientMessage(playerid, COLOR_RED, "[USAGE]: /w2 WEAPONID/NAME (AMMO) or /weapon WEAPONID/NAME (AMMO)");
  1222. return true;
  1223. }
  1224.  
  1225. new weaponid = GetWeaponModelIDFromName(iString);
  1226.  
  1227. if (weaponid == -1) {
  1228. weaponid = strval(iString);
  1229. if (weaponid < 0 || weaponid > 47) {
  1230. SendClientMessage(playerid, COLOR_RED, "[ERROR]: Invalid WEAPONID/NAME");
  1231. return true;
  1232. }
  1233. }
  1234.  
  1235. if (!strlen(params[idx+1])) {
  1236. GivePlayerWeapon(playerid, weaponid, 500);
  1237.  
  1238. format(iString, 128, "[SUCCESS]: You were given weapon %s (ID: %d) with 500 ammo.", aWeaponNames[weaponid], weaponid);
  1239. SendClientMessage(playerid, COLOR_GREEN, iString);
  1240.  
  1241. return true;
  1242. }
  1243.  
  1244. idx = strval(params[idx+1]);
  1245.  
  1246. GivePlayerWeapon(playerid, weaponid, idx);
  1247.  
  1248. format(iString, 128, "[SUCCESS]: You were given weapon %s (ID: %d) with %d ammo.", aWeaponNames[weaponid], weaponid, idx);
  1249. SendClientMessage(playerid, COLOR_GREEN, iString);
  1250.  
  1251. return true;
  1252. }
  1253. #endif
  1254.  
  1255. public OnFilterScriptInit()
  1256. {
  1257. print("\n *********************\n * SA:MP DEBUG 0.2 *");
  1258. print(" * By Simon Campbell *\n *********************");
  1259. printf(" * Version: %s *\n *********************", DEBUG_VERSION);
  1260. print(" * -- LOADED *\n *********************\n");
  1261.  
  1262. for ( new i = 0; i < MAX_PLAYERS; i++ )
  1263. {
  1264. curPlayerObjM[ i ][ OBJ_MDL ] = MIN_OBJE_ID;
  1265. pObjectRate[ i ][ OBJ_RATE_ROT ] = 1.0;
  1266. pObjectRate[ i ][ OBJ_RATE_MOVE ] = 1.0;
  1267. }
  1268.  
  1269. AllowAdminTeleport(1);
  1270. }
  1271.  
  1272. public OnFilterScriptExit()
  1273. {
  1274. print("\n *********************\n * SA:MP DEBUG 0.2 *");
  1275. print(" * -- SHUTDOWN *\n *********************\n");
  1276. }
  1277.  
  1278. public OnPlayerCommandText(playerid, cmdtext[])
  1279. {
  1280. #if ADMINS_ONLY == true
  1281. if(IsPlayerAdmin(playerid)) {
  1282. #endif
  1283.  
  1284. #if SKIN_SELECT == true
  1285. dcmd(s, 1, cmdtext);
  1286. dcmd(ssel, 4, cmdtext);
  1287. dcmd(skin, 4, cmdtext);
  1288. #endif
  1289.  
  1290. #if VEHI_SELECT == true
  1291. dcmd(v, 1, cmdtext);
  1292. dcmd(vsel, 4, cmdtext);
  1293. dcmd(vehicle, 7, cmdtext);
  1294. #endif
  1295.  
  1296. #if WORL_SELECT == true
  1297. dcmd(w, 1, cmdtext);
  1298. dcmd(t, 1, cmdtext);
  1299. dcmd(g, 1, cmdtext);
  1300. dcmd(wsel, 4, cmdtext);
  1301. dcmd(time, 4, cmdtext);
  1302. dcmd(weather, 7, cmdtext);
  1303. dcmd(gravity, 7, cmdtext);
  1304. #endif
  1305.  
  1306. #if MISCEL_CMDS == true
  1307. dcmd(w2, 2, cmdtext);
  1308. dcmd(goto, 4, cmdtext);
  1309. dcmd(bring, 5, cmdtext);
  1310. dcmd(warpto, 6, cmdtext);
  1311. dcmd(weapon, 6, cmdtext);
  1312. dcmd(setloc, 6, cmdtext);
  1313. #endif
  1314.  
  1315. #if CAME_SELECT == true
  1316. dcmd(csel, 4, cmdtext);
  1317. dcmd(camera, 6, cmdtext);
  1318. #endif
  1319.  
  1320. dcmd(osel, 4, cmdtext);
  1321. dcmd(object, 6, cmdtext);
  1322. dcmd(debug, 5, cmdtext);
  1323.  
  1324. #if ADMINS_ONLY == true
  1325. }
  1326. #endif
  1327.  
  1328. return 0;
  1329. }
  1330.  
  1331. public OnPlayerDisconnect(playerid,reason)
  1332. {
  1333. KillTimer(gPlayerTimers[playerid]);
  1334.  
  1335. gPlayerStatus[playerid] = 0;
  1336. gPlayerTimers[playerid] = 0;
  1337.  
  1338. curPlayerSkin[playerid] = MIN_SKIN_ID; // Current Player Skin ID
  1339. curPlayerVehM[playerid] = MIN_VEHI_ID; // Current Player Vehicle ID
  1340. curPlayerVehI[playerid] = -1;
  1341.  
  1342. return 0;
  1343. }
  1344.  
  1345. public OnPlayerConnect(playerid)
  1346. {
  1347. curPlayerCamD[playerid][CMODE] = CMODE_A;
  1348. curPlayerCamD[playerid][RATE] = 2.0;
  1349.  
  1350. #if ADMINS_ONLY == false
  1351. AllowPlayerTeleport(playerid, 1);
  1352. #endif
  1353.  
  1354. return 0;
  1355. }
  1356.  
  1357. //==============================================================================
  1358.  
  1359. #if WORL_SELECT == true
  1360. public WorldSelect(playerid)
  1361. { // Created by Simon
  1362. /*
  1363. // Make sure the player is not in world selection before continuing
  1364. if (gPlayerStatus[playerid] != WORL_SEL_STAT) {
  1365. KillTimer(skinTimerID[playerid]);
  1366. return;
  1367. }
  1368. */
  1369.  
  1370. new keys, updown, leftright;
  1371.  
  1372. GetPlayerKeys(playerid, keys, updown, leftright);
  1373.  
  1374. new cString[128];
  1375.  
  1376. // Right key increases World Time
  1377. if (leftright == KEY_RIGHT) {
  1378. if(gWorldStatus[0] == MAX_TIME_ID) {
  1379. gWorldStatus[0] = MIN_TIME_ID;
  1380. }
  1381. else {
  1382. gWorldStatus[0]++;
  1383. }
  1384. format(cString, 128, "World Time: %d~n~Weather ID: %d", gWorldStatus[0], gWorldStatus[1]);
  1385. GameTextForPlayer(playerid, cString, 1500, 3);
  1386. SetWorldTime(gWorldStatus[0]);
  1387. }
  1388.  
  1389. // Left key decreases World Time
  1390. if (leftright == KEY_LEFT) {
  1391. if(gWorldStatus[0] == MIN_TIME_ID) {
  1392. gWorldStatus[0] = MAX_TIME_ID;
  1393. }
  1394. else {
  1395. gWorldStatus[0]--;
  1396. }
  1397. format(cString, 128, "World Time: %d~n~Weather ID: %d", gWorldStatus[0], gWorldStatus[1]);
  1398. GameTextForPlayer(playerid, cString, 1500, 3);
  1399. SetWorldTime(gWorldStatus[0]);
  1400. }
  1401.  
  1402. // Up key increases Weather ID
  1403. if(updown == KEY_UP) {
  1404. if(gWorldStatus[1] == MAX_WEAT_ID) {
  1405. gWorldStatus[1] = MIN_WEAT_ID;
  1406. }
  1407. else {
  1408. gWorldStatus[1]++;
  1409. }
  1410. format(cString, 128, "World Time: %d~n~Weather ID: %d", gWorldStatus[0], gWorldStatus[1]);
  1411. GameTextForPlayer(playerid, cString, 1500, 3);
  1412. SetWeather(gWorldStatus[1]);
  1413. }
  1414.  
  1415. // Down key decreases Weather ID
  1416. if(updown == KEY_DOWN) {
  1417. if(gWorldStatus[1] == MIN_WEAT_ID) {
  1418. gWorldStatus[1] = MAX_WEAT_ID;
  1419. }
  1420. else {
  1421. gWorldStatus[1]--;
  1422. }
  1423. format(cString, 128, "World Time: %d~n~Weather ID: %d", gWorldStatus[0], gWorldStatus[1]);
  1424. GameTextForPlayer(playerid, cString, 1500, 3);
  1425. SetWeather(gWorldStatus[1]);
  1426. }
  1427.  
  1428. // Action key exits WorldSelection
  1429. if(keys & KEY_ACTION) {
  1430. SetCameraBehindPlayer(playerid);
  1431. TogglePlayerControllable(playerid, 1);
  1432.  
  1433. format(cString, 128, "[SUCCESS]: Time changed to %d hours and weather changed to WEATHERID %d", gWorldStatus[0], gWorldStatus[1]);
  1434. SendClientMessage(playerid, COLOR_GREEN, cString);
  1435.  
  1436. new File:F_WORLD = fopen("TIME-WEATHER.txt", io_append);
  1437.  
  1438. if(F_WORLD) {
  1439. new h, m, s, Y, M, D;
  1440.  
  1441. getdate(Y, M, D);
  1442. gettime(h, m, s);
  1443.  
  1444. format(cString, 128, "// %d-%d-%d @ %d:%d:%d\r\nSetWeather(%d);\r\nSetWorldTime(%d);\r\n", D, M, Y, h, m, s);
  1445.  
  1446. fwrite(F_WORLD, cString);
  1447. fclose(F_WORLD);
  1448. printf("\n%s\n",cString);
  1449. }
  1450. else {
  1451. print("Failed to create the file \"TIME-WEATHER.txt\".\n");
  1452. }
  1453.  
  1454. gPlayerStatus[playerid] = 0;
  1455. KillTimer(gPlayerTimers[playerid]);
  1456.  
  1457. return;
  1458. }
  1459. }
  1460.  
  1461. #endif
  1462.  
  1463. #if SKIN_SELECT == true
  1464. public SkinSelect(playerid)
  1465. { // Created by Simon
  1466. /*
  1467. // Make sure the player is not in skin selection before continuing
  1468. if (gPlayerStatus[playerid] != SKIN_SEL_STAT) {
  1469. KillTimer(skinTimerID[playerid]);
  1470. return;
  1471. }
  1472. */
  1473.  
  1474. new keys, updown, leftright;
  1475.  
  1476. GetPlayerKeys(playerid, keys, updown, leftright);
  1477.  
  1478. new cString[128];
  1479.  
  1480. // Right key increases Skin ID
  1481. if (leftright == KEY_RIGHT) {
  1482. if(curPlayerSkin[playerid] == MAX_SKIN_ID) {
  1483. curPlayerSkin[playerid] = MIN_SKIN_ID;
  1484. }
  1485. else {
  1486. curPlayerSkin[playerid]++;
  1487. }
  1488. while(IsInvalidSkin(curPlayerSkin[playerid])) {
  1489. curPlayerSkin[playerid]++;
  1490. }
  1491.  
  1492. format(cString, 128, "Skin ID: %d", curPlayerSkin[playerid]);
  1493. GameTextForPlayer(playerid, cString, 1500, 3);
  1494. SetPlayerSkin(playerid, curPlayerSkin[playerid]);
  1495. }
  1496.  
  1497. // Left key decreases Skin ID
  1498. if(leftright == KEY_LEFT) {
  1499. if(curPlayerSkin[playerid] == MIN_SKIN_ID) {
  1500. curPlayerSkin[playerid] = MAX_SKIN_ID;
  1501. }
  1502. else {
  1503. curPlayerSkin[playerid]--;
  1504. }
  1505. while(IsInvalidSkin(curPlayerSkin[playerid])) {
  1506. curPlayerSkin[playerid]--;
  1507. }
  1508.  
  1509. format(cString, 128, "Skin ID: %d", curPlayerSkin[playerid]);
  1510. GameTextForPlayer(playerid, cString, 1500, 3);
  1511. SetPlayerSkin(playerid, curPlayerSkin[playerid]);
  1512. }
  1513.  
  1514. // Action key exits skin selection
  1515. if(keys & KEY_ACTION)
  1516. {
  1517. SetCameraBehindPlayer(playerid);
  1518. TogglePlayerControllable(playerid, 1);
  1519.  
  1520. format(cString, 128, "[SUCCESS]: You have changed to SKINID %d", curPlayerSkin[playerid]);
  1521. SendClientMessage(playerid, COLOR_GREEN, cString);
  1522.  
  1523. gPlayerStatus[playerid] = 0;
  1524. KillTimer(gPlayerTimers[playerid]);
  1525. }
  1526. }
  1527. #endif
  1528.  
  1529. #if CAME_SELECT == true
  1530. public CameraSelect(playerid)
  1531. {
  1532. // CMODE_A 0 Up/Down = IncreaseZ/DecreaseZ; Left/Right = IncreaseX/DecreaseX; Num4/Num6 = IncreaseY/DecreaseY
  1533. // CMODE_B 1 Up/Down = Rotate Up/Down; Left/Right = Rotate Left/Right; Num4/Num6 = Move Left/Right
  1534.  
  1535. new keys, updown, leftright;
  1536.  
  1537. GetPlayerKeys(playerid, keys, updown, leftright);
  1538.  
  1539. printf("Player (%d) keys = %d, updown = %d, leftright = %d", playerid, keys, updown, leftright);
  1540.  
  1541. if (curPlayerCamD[playerid][CMODE] == CMODE_A)
  1542. {
  1543. if (leftright == KEY_RIGHT) {
  1544. curPlayerCamD[playerid][CPOS_X] += curPlayerCamD[playerid][RATE];
  1545. curPlayerCamD[playerid][CLOO_X] += curPlayerCamD[playerid][RATE];
  1546.  
  1547. SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1548.  
  1549. SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1550. SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
  1551. }
  1552.  
  1553. if (leftright == KEY_LEFT) {
  1554. curPlayerCamD[playerid][CPOS_X] -= curPlayerCamD[playerid][RATE];
  1555. curPlayerCamD[playerid][CLOO_X] -= curPlayerCamD[playerid][RATE];
  1556.  
  1557. SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1558.  
  1559. SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1560. SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
  1561. }
  1562.  
  1563. if (updown == KEY_UP) {
  1564. curPlayerCamD[playerid][CPOS_Z] += curPlayerCamD[playerid][RATE];
  1565. curPlayerCamD[playerid][CLOO_Z] += curPlayerCamD[playerid][RATE];
  1566.  
  1567. SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1568.  
  1569. SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1570. SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
  1571. }
  1572.  
  1573. if (updown == KEY_DOWN) {
  1574. curPlayerCamD[playerid][CPOS_Z] -= curPlayerCamD[playerid][RATE];
  1575. curPlayerCamD[playerid][CLOO_Z] -= curPlayerCamD[playerid][RATE];
  1576.  
  1577. SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1578.  
  1579. SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1580. SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
  1581. }
  1582.  
  1583. if (keys & KEY_ANALOG_RIGHT) {
  1584. curPlayerCamD[playerid][CPOS_Y] += curPlayerCamD[playerid][RATE];
  1585. curPlayerCamD[playerid][CLOO_Y] += curPlayerCamD[playerid][RATE];
  1586.  
  1587. SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1588.  
  1589. SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1590. SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
  1591. }
  1592.  
  1593.  
  1594. if (keys & KEY_ANALOG_LEFT) {
  1595. curPlayerCamD[playerid][CPOS_Y] -= curPlayerCamD[playerid][RATE];
  1596. curPlayerCamD[playerid][CLOO_Y] -= curPlayerCamD[playerid][RATE];
  1597.  
  1598. SetPlayerPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1599.  
  1600. SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1601. SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
  1602. }
  1603. }
  1604.  
  1605.  
  1606. if(curPlayerCamD[playerid][CMODE] == CMODE_B)
  1607. {
  1608. if (leftright == KEY_RIGHT) {
  1609. // Rotate Y +
  1610. }
  1611.  
  1612. if (leftright == KEY_LEFT) {
  1613. // Rotate Y -
  1614. }
  1615.  
  1616. if (updown == KEY_UP) {
  1617. // Rotate X +
  1618. }
  1619.  
  1620. if (updown == KEY_DOWN) {
  1621. // Rotate X -
  1622. }
  1623.  
  1624. if (keys & KEY_ANALOG_RIGHT) {
  1625. // Rotate Z +
  1626. }
  1627.  
  1628. if (keys & KEY_ANALOG_LEFT) {
  1629. // Rotate Z -
  1630. }
  1631. }
  1632.  
  1633. if (keys & KEY_ACTION)
  1634. {
  1635. SetCameraBehindPlayer(playerid);
  1636.  
  1637. new
  1638. File:F_CAMERA = fopen("CAMERA.txt", io_append);
  1639.  
  1640. if( F_CAMERA )
  1641. {
  1642. new
  1643. cString[512], h, m, s, Y, M, D;
  1644.  
  1645. getdate(Y, M, D);
  1646. gettime(h, m, s);
  1647.  
  1648. format(cString, sizeof( cString ), "// %d-%d-%d @ %d:%d:%d\r\nSetPlayerCameraPos(playerid, %f, %f, %f);\r\nSetPlayerCameraLookAt(playerid, %f, %f, %f);\r\n", D, M, Y, h, m, s,curPlayerCamD[playerid][CPOS_X],curPlayerCamD[playerid][CPOS_Y],curPlayerCamD[playerid][CPOS_Z],curPlayerCamD[playerid][CLOO_X],curPlayerCamD[playerid][CLOO_Y],curPlayerCamD[playerid][CLOO_Z]);
  1649.  
  1650. fwrite(F_CAMERA, cString);
  1651. fclose(F_CAMERA);
  1652.  
  1653. printf("\n%s\n",cString);
  1654.  
  1655. SendClientMessage( playerid, COLOR_GREEN, "Current camera data saved to 'CAMERA.txt'" );
  1656. }
  1657. else
  1658. print("Failed to create the file \"CAMERA.txt\".\n");
  1659.  
  1660. TogglePlayerControllable(playerid, 1);
  1661.  
  1662. KillTimer(gPlayerTimers[playerid]);
  1663.  
  1664. gPlayerStatus[playerid] = 0;
  1665. }
  1666. }
  1667.  
  1668. #endif
  1669.  
  1670. #if VEHI_SELECT == true
  1671. public VehicleSelect(playerid)
  1672. {
  1673. /*
  1674. // Make sure the player is not in skin selection before continuing
  1675. if (gPlayerStatus[playerid] != VEHI_SEL_STAT) {
  1676. KillTimer(skinTimerID[playerid]);
  1677. return;
  1678. }
  1679. */
  1680.  
  1681. new keys, updown, leftright;
  1682.  
  1683. GetPlayerKeys(playerid, keys, updown, leftright);
  1684.  
  1685. new cString[128];
  1686.  
  1687. // Right key increases Vehicle MODELID
  1688. if (leftright == KEY_RIGHT) {
  1689. if(curPlayerVehM[playerid] == MAX_VEHI_ID) {
  1690. curPlayerVehM[playerid] = MIN_VEHI_ID;
  1691. }
  1692. else {
  1693. curPlayerVehM[playerid]++;
  1694. }
  1695.  
  1696. format(cString, 128, "Model ID: %d~n~Vehicle Name: %s", curPlayerVehM, aVehicleNames[curPlayerVehM[playerid] - MIN_VEHI_ID]);
  1697. GameTextForPlayer(playerid, cString, 1500, 3);
  1698.  
  1699. new Float:x, Float:y, Float:z, Float:a;
  1700.  
  1701. GetPlayerPos(playerid, x, y, z);
  1702. GetXYInFrontOfPlayer(playerid, x, y, VEHI_DIS);
  1703. GetPlayerFacingAngle(playerid, a);
  1704.  
  1705. DestroyVehicle(curPlayerVehI[playerid]);
  1706. curServerVehP[curPlayerVehI[playerid]][spawn] = false;
  1707.  
  1708. curPlayerVehI[playerid] = CreateVehicle(curPlayerVehM[playerid], x, y, z + 2.0, a + 90.0, -1, -1, 5000);
  1709. printf( "vsel vehicle select id = %d", curPlayerVehI[playerid] );
  1710.  
  1711. LinkVehicleToInterior(curPlayerVehI[playerid], GetPlayerInterior(playerid));
  1712.  
  1713. curServerVehP[curPlayerVehI[playerid]][spawn] = true;
  1714. curServerVehP[curPlayerVehI[playerid]][vmodel] = curPlayerVehM[playerid];
  1715. curServerVehP[curPlayerVehI[playerid]][vInt] = GetPlayerInterior(playerid);
  1716. }
  1717.  
  1718. // Left key decreases Vehicle MODELID
  1719. if(leftright == KEY_LEFT) {
  1720. if(curPlayerVehM[playerid] == MIN_VEHI_ID) {
  1721. curPlayerVehM[playerid] = MAX_VEHI_ID;
  1722. }
  1723. else {
  1724. curPlayerVehM[playerid]--;
  1725. }
  1726.  
  1727. format(cString, 128, "Model ID: %d~n~Vehicle Name: %s", curPlayerVehM, aVehicleNames[curPlayerVehM[playerid] - MIN_VEHI_ID]);
  1728. GameTextForPlayer(playerid, cString, 1500, 3);
  1729.  
  1730. new Float:x, Float:y, Float:z, Float:a;
  1731.  
  1732. GetPlayerPos(playerid, x, y, z);
  1733. GetXYInFrontOfPlayer(playerid, x, y, VEHI_DIS);
  1734. GetPlayerFacingAngle(playerid, a);
  1735.  
  1736. DestroyVehicle(curPlayerVehI[playerid]);
  1737. curServerVehP[curPlayerVehI[playerid]][spawn] = false;
  1738.  
  1739. curPlayerVehI[playerid] = CreateVehicle(curPlayerVehM[playerid], x, y, z + 2.0, a + 90.0, -1, -1, 5000);
  1740. printf( "vsel vehicle select id = %d", curPlayerVehI[playerid] );
  1741.  
  1742. LinkVehicleToInterior(curPlayerVehI[playerid], GetPlayerInterior(playerid));
  1743.  
  1744. curServerVehP[curPlayerVehI[playerid]][spawn] = true;
  1745. curServerVehP[curPlayerVehI[playerid]][vmodel] = curPlayerVehM[playerid];
  1746. curServerVehP[curPlayerVehI[playerid]][vInt] = GetPlayerInterior(playerid);
  1747. }
  1748.  
  1749. // Action key exits vehicle selection
  1750. if(keys & KEY_ACTION)
  1751. {
  1752. SetCameraBehindPlayer(playerid);
  1753. TogglePlayerControllable(playerid, 1);
  1754.  
  1755. format(cString, 128, "[SUCCESS]: Spawned a \"%s\" (MODELID: %d, VEHICLEID: %d)", aVehicleNames[curPlayerVehM[playerid] - MIN_VEHI_ID], curPlayerVehM[playerid], curPlayerVehI[playerid]);
  1756. SendClientMessage(playerid, COLOR_GREEN, cString);
  1757.  
  1758. gPlayerStatus[playerid] = 0;
  1759. KillTimer(gPlayerTimers[playerid]);
  1760. }
  1761. }
  1762. #endif
  1763.  
  1764. #if OBJE_SELECT == true
  1765. public ObjectSelect( playerid )
  1766. {
  1767. new keys, updown, leftright;
  1768.  
  1769. GetPlayerKeys( playerid, keys, updown, leftright );
  1770.  
  1771. new cString[ 128 ];
  1772.  
  1773. switch ( curPlayerObjM[ playerid ][ OBJ_MOD ] )
  1774. {
  1775. case O_MODE_SELECTOR:
  1776. {
  1777. if ( updown == KEY_UP)
  1778. {
  1779. curPlayerObjM[ playerid ][ OBJ_MDL ] += 10;
  1780.  
  1781. if ( curPlayerObjM[ playerid ][ OBJ_MDL ] >= MAX_OBJE_ID )
  1782. {
  1783. curPlayerObjM[ playerid ][ OBJ_MDL ] = MIN_OBJE_ID;
  1784. }
  1785.  
  1786. while ( !IsValidModel( curPlayerObjM[ playerid ][ OBJ_MDL ] ) )
  1787. {
  1788. curPlayerObjM[ playerid ][ OBJ_MDL ]++;
  1789. }
  1790.  
  1791. DestroyObject( curPlayerObjI[ playerid ] );
  1792. curPlayerObjI[ playerid ] = CreateObject( curPlayerObjM[ playerid ][ OBJ_MDL ], curPlayerObjM[ playerid ][ OBJ_X ],
  1793. curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ],
  1794. curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ]
  1795. );
  1796.  
  1797. format( cString, 128, "Model ID: %d", curPlayerObjM[ playerid ][ OBJ_MDL ] );
  1798. GameTextForPlayer(playerid, cString, 1500, 3);
  1799. }
  1800.  
  1801. if ( updown == KEY_DOWN)
  1802. {
  1803. curPlayerObjM[ playerid ][ OBJ_MDL ] -= 10;
  1804.  
  1805. if ( curPlayerObjM[ playerid ][ OBJ_MDL ] <= MIN_OBJE_ID )
  1806. {
  1807. curPlayerObjM[ playerid ][ OBJ_MDL ] = MAX_OBJE_ID;
  1808. }
  1809.  
  1810. while ( !IsValidModel( curPlayerObjM[ playerid ][ OBJ_MDL ] ) )
  1811. {
  1812. curPlayerObjM[ playerid ][ OBJ_MDL ]--;
  1813. }
  1814.  
  1815. DestroyObject( curPlayerObjI[ playerid ] );
  1816. curPlayerObjI[ playerid ] = CreateObject( curPlayerObjM[ playerid ][ OBJ_MDL ], curPlayerObjM[ playerid ][ OBJ_X ],
  1817. curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ],
  1818. curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ]
  1819. );
  1820.  
  1821. format( cString, 128, "Model ID: %d", curPlayerObjM[ playerid ][ OBJ_MDL ] );
  1822. GameTextForPlayer(playerid, cString, 1500, 3);
  1823. }
  1824.  
  1825. if ( leftright == KEY_LEFT)
  1826. {
  1827. curPlayerObjM[ playerid ][ OBJ_MDL ]--;
  1828.  
  1829. if ( curPlayerObjM[ playerid ][ OBJ_MDL ] <= MIN_OBJE_ID )
  1830. {
  1831. curPlayerObjM[ playerid ][ OBJ_MDL ] = MAX_OBJE_ID;
  1832. }
  1833.  
  1834. while ( !IsValidModel( curPlayerObjM[ playerid ][ OBJ_MDL ] ) )
  1835. {
  1836. curPlayerObjM[ playerid ][ OBJ_MDL ]--;
  1837. }
  1838.  
  1839. DestroyObject( curPlayerObjI[ playerid ] );
  1840. curPlayerObjI[ playerid ] = CreateObject( curPlayerObjM[ playerid ][ OBJ_MDL ], curPlayerObjM[ playerid ][ OBJ_X ],
  1841. curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ],
  1842. curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ]
  1843. );
  1844.  
  1845. format( cString, 128, "Model ID: %d", curPlayerObjM[ playerid ][ OBJ_MDL ] );
  1846. GameTextForPlayer(playerid, cString, 1500, 3);
  1847. }
  1848.  
  1849. if ( leftright == KEY_RIGHT)
  1850. {
  1851. curPlayerObjM[ playerid ][ OBJ_MDL ]++;
  1852.  
  1853. if ( curPlayerObjM[ playerid ][ OBJ_MDL ] >= MAX_OBJE_ID )
  1854. {
  1855. curPlayerObjM[ playerid ][ OBJ_MDL ] = MIN_OBJE_ID;
  1856. }
  1857.  
  1858. while ( !IsValidModel( curPlayerObjM[ playerid ][ OBJ_MDL ] ) )
  1859. {
  1860. curPlayerObjM[ playerid ][ OBJ_MDL ]++;
  1861. }
  1862.  
  1863. DestroyObject( curPlayerObjI[ playerid ] );
  1864. curPlayerObjI[ playerid ] = CreateObject( curPlayerObjM[ playerid ][ OBJ_MDL ], curPlayerObjM[ playerid ][ OBJ_X ],
  1865. curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ],
  1866. curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ]
  1867. );
  1868.  
  1869. format( cString, 128, "Model ID: %d", curPlayerObjM[ playerid ][ OBJ_MDL ] );
  1870. GameTextForPlayer(playerid, cString, 1500, 3);
  1871. }
  1872. }
  1873.  
  1874. case O_MODE_MOVER:
  1875. {
  1876. if ( updown == KEY_UP)
  1877. {
  1878. curPlayerObjM[ playerid ][ OBJ_Z ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1879. curPlayerCamD[ playerid ][ CPOS_Z ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1880. curPlayerCamD[ playerid ][ CLOO_Z ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1881. }
  1882.  
  1883. if ( updown == KEY_DOWN)
  1884. {
  1885. curPlayerObjM[ playerid ][ OBJ_Z ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1886. curPlayerCamD[ playerid ][ CPOS_Z ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1887. curPlayerCamD[ playerid ][ CLOO_Z ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1888. }
  1889.  
  1890. if ( leftright == KEY_LEFT)
  1891. {
  1892. curPlayerObjM[ playerid ][ OBJ_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1893. curPlayerCamD[ playerid ][ CPOS_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1894. curPlayerCamD[ playerid ][ CLOO_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1895. }
  1896.  
  1897. if ( leftright == KEY_RIGHT)
  1898. {
  1899. curPlayerObjM[ playerid ][ OBJ_Y ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1900. curPlayerCamD[ playerid ][ CPOS_Y ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1901. curPlayerCamD[ playerid ][ CLOO_Y ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1902. }
  1903.  
  1904. if ( keys & KEY_ANALOG_LEFT )
  1905. {
  1906. curPlayerObjM[ playerid ][ OBJ_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1907. curPlayerCamD[ playerid ][ CPOS_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1908. curPlayerCamD[ playerid ][ CLOO_Y ] -= pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1909. }
  1910.  
  1911. if ( keys & KEY_ANALOG_LEFT )
  1912. {
  1913. curPlayerObjM[ playerid ][ OBJ_X ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1914. curPlayerCamD[ playerid ][ CPOS_X ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1915. curPlayerCamD[ playerid ][ CLOO_X ] += pObjectRate[ playerid ][ OBJ_RATE_MOVE ];
  1916. }
  1917.  
  1918. SetPlayerPos( playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z] );
  1919. SetObjectPos( curPlayerObjI[ playerid ], curPlayerObjM[ playerid ][ OBJ_X ], curPlayerObjM[ playerid ][ OBJ_Y ], curPlayerObjM[ playerid ][ OBJ_Z ] );
  1920. SetPlayerCameraPos(playerid, curPlayerCamD[playerid][CPOS_X], curPlayerCamD[playerid][CPOS_Y], curPlayerCamD[playerid][CPOS_Z]);
  1921. SetPlayerCameraLookAt(playerid, curPlayerCamD[playerid][CLOO_X], curPlayerCamD[playerid][CLOO_Y], curPlayerCamD[playerid][CLOO_Z]);
  1922. }
  1923.  
  1924. case O_MODE_ROTATOR:
  1925. {
  1926. if ( updown == KEY_UP)
  1927. {
  1928. curPlayerObjM[ playerid ][ OBJ_RZ ] += pObjectRate[ playerid ][ OBJ_RATE_ROT ];
  1929. }
  1930.  
  1931. if ( updown == KEY_DOWN)
  1932. {
  1933. curPlayerObjM[ playerid ][ OBJ_RZ ] -= pObjectRate[ playerid ][ OBJ_RATE_ROT ];
  1934.  
  1935. }
  1936.  
  1937. if ( leftright == KEY_LEFT)
  1938. {
  1939. curPlayerObjM[ playerid ][ OBJ_RY ] -= pObjectRate[ playerid ][ OBJ_RATE_ROT ];
  1940. }
  1941.  
  1942. if ( leftright == KEY_RIGHT)
  1943. {
  1944. curPlayerObjM[ playerid ][ OBJ_RY ] += pObjectRate[ playerid ][ OBJ_RATE_ROT ];
  1945. }
  1946.  
  1947. if ( keys & KEY_ANALOG_LEFT )
  1948. {
  1949. curPlayerObjM[ playerid ][ OBJ_RY ] -= pObjectRate[ playerid ][ OBJ_RATE_ROT ];
  1950. }
  1951.  
  1952. if ( keys & KEY_ANALOG_LEFT )
  1953. {
  1954. curPlayerObjM[ playerid ][ OBJ_RX ] += pObjectRate[ playerid ][ OBJ_RATE_ROT ];
  1955. }
  1956.  
  1957. SetObjectRot( curPlayerObjI[ playerid ], curPlayerObjM[ playerid ][ OBJ_RX ], curPlayerObjM[ playerid ][ OBJ_RY ], curPlayerObjM[ playerid ][ OBJ_RZ ] );
  1958. }
  1959. }
  1960.  
  1961. if ( keys & KEY_ACTION )
  1962. {
  1963. gPlayerStatus[ playerid ] = 0;
  1964. TogglePlayerControllable( playerid, 1 );
  1965. SetCameraBehindPlayer( playerid );
  1966. KillTimer( gPlayerTimers[playerid] );
  1967. }
  1968.  
  1969. }
  1970. #endif
  1971.  
  1972. IsInvalidSkin(skinid)
  1973. { // Created by Simon
  1974. // Checks whether the skinid parsed is crashable or not.
  1975.  
  1976. #define MAX_BAD_SKINS 14
  1977.  
  1978. new badSkins[MAX_BAD_SKINS] = {
  1979. 3, 4, 5, 6, 8, 42, 65, 74, 86,
  1980. 119, 149, 208, 273, 289
  1981. };
  1982.  
  1983. for (new i = 0; i < MAX_BAD_SKINS; i++) {
  1984. if (skinid == badSkins[i]) return true;
  1985. }
  1986.  
  1987. return false;
  1988. }
  1989.  
  1990. GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
  1991. { // Created by Y_Less
  1992.  
  1993. new Float:a;
  1994.  
  1995. GetPlayerPos(playerid, x, y, a);
  1996. GetPlayerFacingAngle(playerid, a);
  1997.  
  1998. if (GetPlayerVehicleID(playerid)) {
  1999. GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
  2000. }
  2001.  
  2002. x += (distance * floatsin(-a, degrees));
  2003. y += (distance * floatcos(-a, degrees));
  2004. }
  2005.  
  2006. strtok(const string[], &index)
  2007. { // Created by Compuphase
  2008.  
  2009. new length = strlen(string);
  2010. while ((index < length) && (string[index] <= ' '))
  2011. {
  2012. index++;
  2013. }
  2014.  
  2015. new offset = index;
  2016. new result[20];
  2017. while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  2018. {
  2019. result[index - offset] = string[index];
  2020. index++;
  2021. }
  2022. result[index - offset] = EOS;
  2023. return result;
  2024. }
  2025.  
  2026. GetVehicleModelIDFromName(vname[])
  2027. {
  2028. for(new i = 0; i < 211; i++)
  2029. {
  2030. if ( strfind(aVehicleNames[i], vname, true) != -1 )
  2031. return i + MIN_VEHI_ID;
  2032. }
  2033. return -1;
  2034. }
  2035.  
  2036. GetWeaponModelIDFromName(wname[])
  2037. {
  2038. for(new i = 0; i < 48; i++) {
  2039. if (i == 19 || i == 20 || i == 21) continue;
  2040. if (strfind(aWeaponNames[i], wname, true) != -1) {
  2041. return i;
  2042. }
  2043. }
  2044. return -1;
  2045. }
  2046.  
  2047. IsValidModel(modelid)
  2048. {
  2049. // Created by Y_Less.
  2050.  
  2051. static modeldat[] =
  2052. {
  2053. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128,
  2054. -515899393, -134217729, -1, -1, 33554431, -1, -1, -1, -14337, -1, -33,
  2055. 127, 0, 0, 0, 0, 0, -8388608, -1, -1, -1, -16385, -1, -1, -1, -1, -1,
  2056. -1, -1, -33, -1, -771751937, -1, -9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  2057. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  2058. -1, -1, -1, -1, -1, -1, -1, -1, 33554431, -25, -1, -1, -1, -1, -1, -1,
  2059. -1073676289, -2147483648, 34079999, 2113536, -4825600, -5, -1, -3145729,
  2060. -1, -16777217, -63, -1, -1, -1, -1, -201326593, -1, -1, -1, -1, -1,
  2061. -257, -1, 1073741823, -133122, -1, -1, -65, -1, -1, -1, -1, -1, -1,
  2062. -2146435073, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1073741823, -64, -1,
  2063. -1, -1, -1, -2635777, 134086663, 0, -64, -1, -1, -1, -1, -1, -1, -1,
  2064. -536870927, -131069, -1, -1, -1, -1, -1, -1, -1, -1, -16384, -1,
  2065. -33554433, -1, -1, -1, -1, -1, -1610612737, 524285, -128, -1,
  2066. 2080309247, -1, -1, -1114113, -1, -1, -1, 66977343, -524288, -1, -1, -1,
  2067. -1, -2031617, -1, 114687, -256, -1, -4097, -1, -4097, -1, -1,
  2068. 1010827263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32768, -1, -1, -1, -1, -1,
  2069. 2147483647, -33554434, -1, -1, -49153, -1148191169, 2147483647,
  2070. -100781080, -262145, -57, 134217727, -8388608, -1, -1, -1, -1, -1, -1,
  2071. -1, -1, -1, -1, -1, -1, -1, -1, -1048577, -1, -449, -1017, -1, -1, -1,
  2072. -1, -1, -1, -1, -1, -1, -1, -1, -1835009, -2049, -1, -1, -1, -1, -1, -1,
  2073. -8193, -1, -536870913, -1, -1, -1, -1, -1, -87041, -1, -1, -1, -1, -1,
  2074. -1, -209860, -1023, -8388609, -2096897, -1, -1048577, -1, -1, -1, -1,
  2075. -1, -1, -897, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1610612737,
  2076. -3073, -28673, -1, -1, -1, -1537, -1, -1, -13, -1, -1, -1, -1, -1985,
  2077. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1056964609, -1, -1, -1,
  2078. -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  2079. -236716037, -1, -1, -1, -1, -1, -1, -1, -536870913, 3, 0, 0, 0, 0, 0, 0,
  2080. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  2081. 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  2082. -1, -1, -1, -1, -1, -2097153, -2109441, -1, 201326591, -4194304, -1, -1,
  2083. -241, -1, -1, -1, -1, -1, -1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  2084. 0, -32768, -1, -1, -1, -2, -671096835, -1, -8388609, -66323585, -13,
  2085. -1793, -32257, -247809, -1, -1, -513, 16252911, 0, 0, 0, -131072,
  2086. 33554383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  2087. 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  2088. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8356095, 0, 0, 0, 0, 0,
  2089. 0, -256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  2090. -268435449, -1, -1, -2049, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  2091. 92274627, -65536, -2097153, -268435457, 591191935, 1, 0, -16777216, -1,
  2092. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127
  2093. };
  2094. if ((modelid >= 0) && ((modelid / 32) < sizeof (modeldat)) && (modeldat[modelid / 32] & (1 << (modelid % 32))))
  2095. {
  2096. return 1;
  2097. }
  2098. return 0;
  2099. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement