Advertisement
Guest User

Untitled

a guest
Nov 14th, 2016
557
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.33 KB | None | 0 0
  1. //------------------------------------------------------------------------------
  2. //
  3. //
  4. // Dynamic mechanic garage system
  5. // by Adel
  6. //
  7. //
  8. //------------------------------------------------------------------------------
  9.  
  10. #include <a_samp>
  11. #include <Dini>
  12. #define FILTERSCRIPT
  13.  
  14. //------------------------------------------------------------------------------
  15.  
  16. #define CREATEGARAGE 500
  17. #define LABELCOLOR 501
  18. #define FIXPRICE 502
  19. #define COLORPRICE 503
  20. #define FIX 504
  21. #define COLORCHANGE 505
  22. #define MAX_GARAGES 50
  23. #define OBJECTM 12929
  24.  
  25. //------------------------------------------------------------------------------
  26.  
  27. enum gr
  28. {
  29. Float:xgarage,
  30. Float:ygarage,
  31. Float:zgarage,
  32. Float:xrgarage,
  33. Float:yrgarage,
  34. Float:zrgarage,
  35. fixprice,
  36. colorprice,
  37. garag,
  38. Text3D:label,
  39. labelcolor,
  40. };
  41.  
  42. new Garage[MAX_GARAGES][gr];
  43. new editing[MAX_PLAYERS];
  44. new repair[MAX_PLAYERS];
  45.  
  46. //------------------------------------------------------------------------------
  47. #if defined FILTERSCRIPT
  48.  
  49. public OnFilterScriptInit()
  50. {
  51. print("Dynamic mechanic garage system by Adel loaded");
  52. LoadG();
  53. return 1;
  54. }
  55.  
  56. public OnFilterScriptExit()
  57. {
  58. return 1;
  59. }
  60.  
  61. #else
  62.  
  63. main()
  64. {
  65. print("\n----------------------------------");
  66. print(" Blank Gamemode by your name here");
  67. print("----------------------------------\n");
  68. }
  69.  
  70. #endif
  71.  
  72. public OnGameModeInit()
  73. {
  74. return 1;
  75. }
  76.  
  77. public OnGameModeExit()
  78. {
  79. return 1;
  80. }
  81.  
  82. public OnPlayerRequestClass(playerid, classid)
  83. {
  84. return 1;
  85. }
  86.  
  87. public OnPlayerConnect(playerid)
  88. {
  89. return 1;
  90. }
  91.  
  92. public OnPlayerDisconnect(playerid, reason)
  93. {
  94. return 1;
  95. }
  96.  
  97. public OnPlayerSpawn(playerid)
  98. {
  99. return 1;
  100. }
  101.  
  102. public OnPlayerDeath(playerid, killerid, reason)
  103. {
  104. return 1;
  105. }
  106.  
  107. public OnVehicleSpawn(vehicleid)
  108. {
  109. return 1;
  110. }
  111.  
  112. public OnVehicleDeath(vehicleid, killerid)
  113. {
  114. return 1;
  115. }
  116.  
  117. public OnPlayerText(playerid, text[])
  118. {
  119. return 1;
  120. }
  121.  
  122. public OnPlayerCommandText(playerid, cmdtext[])
  123. {
  124. if(strcmp("/mgcreate", cmdtext, true, 9) == 0)
  125. {
  126. if(IsPlayerAdmin(playerid))
  127. {
  128. ShowPlayerDialog(playerid, CREATEGARAGE, DIALOG_STYLE_LIST, "Mechanic garage", "Create garage\nEdit garage\nDestroy garage\nChange label color\nSet fix price\nSet color change price", "Ok", "Exit");
  129. }
  130. return 1;
  131. }
  132. if(strcmp("/fix", cmdtext, true, 4) == 0)
  133. {
  134. for(new i = 0; i < MAX_GARAGES; i++)
  135. {
  136. if(IsPlayerInRangeOfPoint(playerid, 3.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
  137. {
  138. new s[60];
  139. format(s, 60, "Fix car | %d$\nChange color | %d$", Garage[i][fixprice], Garage[i][colorprice]);
  140. ShowPlayerDialog(playerid, FIX, DIALOG_STYLE_LIST, "Mechanic garage", s, "Ok", "Exit");
  141. repair[playerid] = i;
  142. }
  143. }
  144. return 1;
  145. }
  146. return 0;
  147. }
  148.  
  149. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  150. {
  151. return 1;
  152. }
  153.  
  154. public OnPlayerExitVehicle(playerid, vehicleid)
  155. {
  156. return 1;
  157. }
  158.  
  159. public OnPlayerStateChange(playerid, newstate, oldstate)
  160. {
  161. return 1;
  162. }
  163.  
  164. public OnPlayerEnterCheckpoint(playerid)
  165. {
  166. return 1;
  167. }
  168.  
  169. public OnPlayerLeaveCheckpoint(playerid)
  170. {
  171. return 1;
  172. }
  173.  
  174. public OnPlayerEnterRaceCheckpoint(playerid)
  175. {
  176. return 1;
  177. }
  178.  
  179. public OnPlayerLeaveRaceCheckpoint(playerid)
  180. {
  181. return 1;
  182. }
  183.  
  184. public OnRconCommand(cmd[])
  185. {
  186. return 1;
  187. }
  188.  
  189. public OnPlayerRequestSpawn(playerid)
  190. {
  191. return 1;
  192. }
  193.  
  194. public OnObjectMoved(objectid)
  195. {
  196. return 1;
  197. }
  198.  
  199. public OnPlayerObjectMoved(playerid, objectid)
  200. {
  201. return 1;
  202. }
  203.  
  204. public OnPlayerPickUpPickup(playerid, pickupid)
  205. {
  206. return 1;
  207. }
  208.  
  209. public OnVehicleMod(playerid, vehicleid, componentid)
  210. {
  211. return 1;
  212. }
  213.  
  214. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  215. {
  216. return 1;
  217. }
  218.  
  219. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  220. {
  221. return 1;
  222. }
  223.  
  224. public OnPlayerSelectedMenuRow(playerid, row)
  225. {
  226. return 1;
  227. }
  228.  
  229. public OnPlayerExitedMenu(playerid)
  230. {
  231. return 1;
  232. }
  233.  
  234. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  235. {
  236. return 1;
  237. }
  238.  
  239. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  240. {
  241. return 1;
  242. }
  243.  
  244. public OnRconLoginAttempt(ip[], password[], success)
  245. {
  246. return 1;
  247. }
  248.  
  249. public OnPlayerUpdate(playerid)
  250. {
  251. return 1;
  252. }
  253.  
  254. public OnPlayerStreamIn(playerid, forplayerid)
  255. {
  256. return 1;
  257. }
  258.  
  259. public OnPlayerStreamOut(playerid, forplayerid)
  260. {
  261. return 1;
  262. }
  263.  
  264. public OnVehicleStreamIn(vehicleid, forplayerid)
  265. {
  266. return 1;
  267. }
  268.  
  269. public OnVehicleStreamOut(vehicleid, forplayerid)
  270. {
  271. return 1;
  272. }
  273.  
  274. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  275. {
  276. if(dialogid == CREATEGARAGE)
  277. {
  278. if(response)
  279. {
  280. if(listitem == 0)
  281. {
  282. new id = GarageID(), s[20];
  283. format(s, 20, "Garages/%d.ini", id);
  284. if(!fexist(s))
  285. {
  286. dini_Create(s);
  287. GetPlayerPos(playerid, Garage[id][xgarage], Garage[id][ygarage], Garage[id][zgarage]);
  288. Garage[id][garag] = CreateObject(OBJECTM, Garage[id][xgarage], Garage[id][ygarage], Garage[id][zgarage], 0, 0 , 0, 96.0);
  289. Garage[id][label] = Create3DTextLabel("{00BFFF}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[id][xgarage], Garage[id][ygarage], Garage[id][zgarage], 40.0, 0, 0);
  290. EditObject(playerid, Garage[id][garag]);
  291. editing[playerid] = id;
  292. SGarage(id);
  293. }
  294. }
  295. else if(listitem == 1)
  296. {
  297. for(new i = 0; i < MAX_GARAGES; i++)
  298. {
  299. if(IsPlayerInRangeOfPoint(playerid, 10.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
  300. {
  301. editing[playerid] = i;
  302. EditObject(playerid,Garage[i][garag]);
  303. }
  304. }
  305. SendClientMessage(playerid, -1, "You are editing a mechanic garage.");
  306. }
  307. else if(listitem == 2)
  308. {
  309. for(new i = 0; i < MAX_GARAGES; i++)
  310. {
  311. if(IsPlayerInRangeOfPoint(playerid, 10.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
  312. {
  313. new s[30];
  314. format(s, 30,"Garages/%d.ini", i);
  315. if(fexist(s))
  316. {
  317. dini_Remove(s);
  318. Delete3DTextLabel(Garage[i][label]);
  319. DestroyObject(Garage[i][garag]);
  320. format(s, 30,"Mechanic garage %d destroyed.", i);
  321. SendClientMessage(playerid, -1, s);
  322. }
  323. }
  324. }
  325. }
  326. else if(listitem == 3)
  327. {
  328. for(new i = 0; i < MAX_GARAGES; i++)
  329. {
  330. if(IsPlayerInRangeOfPoint(playerid, 10.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
  331. {
  332. editing[playerid] = i;
  333. ShowPlayerDialog(playerid, LABELCOLOR, DIALOG_STYLE_LIST, "Label color", "Blue\nGreen\nRed\nYellow", "Ok", "Exit");
  334. }
  335. }
  336. }
  337. else if(listitem == 4)
  338. {
  339. for(new i = 0; i < MAX_GARAGES; i++)
  340. {
  341. if(IsPlayerInRangeOfPoint(playerid, 10.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
  342. {
  343. editing[playerid] = i;
  344. ShowPlayerDialog(playerid, FIXPRICE, DIALOG_STYLE_INPUT, "Fix price", "Input fix price:", "Ok", "Exit");
  345. }
  346. }
  347. }
  348. else if(listitem == 5)
  349. {
  350. for(new i = 0; i < MAX_GARAGES; i++)
  351. {
  352. if(IsPlayerInRangeOfPoint(playerid, 10.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
  353. {
  354. editing[playerid] = i;
  355. ShowPlayerDialog(playerid, COLORPRICE, DIALOG_STYLE_INPUT, "Color change price", "Input color change price:", "Ok", "Exit");
  356. }
  357. }
  358. }
  359. }
  360. }
  361. if(dialogid == LABELCOLOR)
  362. {
  363. if(response)
  364. {
  365. if(listitem == 0)
  366. {
  367. Garage[editing[playerid]][labelcolor] = 0;
  368. Delete3DTextLabel(Garage[editing[playerid]][label]);
  369. Create3DTextLabel("{00BFFF}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
  370. SGarage(editing[playerid]);
  371. SendClientMessage(playerid, -1, "Label color changed.");
  372. }
  373. else if(listitem == 1)
  374. {
  375. Garage[editing[playerid]][labelcolor] = 1;
  376. Delete3DTextLabel(Garage[editing[playerid]][label]);
  377. Create3DTextLabel("{00FF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
  378. SGarage(editing[playerid]);
  379. SendClientMessage(playerid,-1,"Label color changed.");
  380. }
  381. else if(listitem == 2)
  382. {
  383. Garage[editing[playerid]][labelcolor] = 2;
  384. Delete3DTextLabel(Garage[editing[playerid]][label]);
  385. Create3DTextLabel("{FF0000}Mechanic garage\n/fix", 0xFFFFFFFF,Garage[editing[playerid]][xgarage],Garage[editing[playerid]][ygarage],Garage[editing[playerid]][zgarage], 30.0, 0, 0);
  386. SGarage(editing[playerid]);
  387. SendClientMessage(playerid, -1, "Label color changed.");
  388. }
  389. else if(listitem == 3)
  390. {
  391. Garage[editing[playerid]][labelcolor] = 3;
  392. Delete3DTextLabel(Garage[editing[playerid]][label]);
  393. Create3DTextLabel("{FFFF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
  394. SGarage(editing[playerid]);
  395. SendClientMessage(playerid, -1, "Label color changed.");
  396. }
  397. }
  398. }
  399. if(dialogid == FIXPRICE)
  400. {
  401. if(response)
  402. {
  403. new s[35];
  404. Garage[editing[playerid]][fixprice] = strval(inputtext);
  405. format(s, 35, "You set the fix price to %d$.", strval(inputtext));
  406. SendClientMessage(playerid, -1, s);
  407. }
  408. }
  409. if(dialogid == COLORPRICE)
  410. {
  411. if(response)
  412. {
  413. new s[42];
  414. Garage[editing[playerid]][colorprice] = strval(inputtext);
  415. format(s, 42, "You set the color change price to %d$.", strval(inputtext));
  416. SendClientMessage(playerid, -1, s);
  417. }
  418. }
  419. if(dialogid == FIX)
  420. {
  421. if(response)
  422. {
  423. if(listitem == 0)
  424. {
  425. if(GetPlayerMoney(playerid) >= Garage[repair[playerid]][fixprice])
  426. {
  427. SetVehicleHealth(GetPlayerVehicleID(playerid), 1000);
  428. RepairVehicle(GetPlayerVehicleID(playerid));
  429. GivePlayerMoney(playerid, -Garage[repair[playerid]][fixprice]);
  430. SendClientMessage(playerid, -1, "Car fixed.");
  431. }
  432. else return SendClientMessage(playerid, -1, "You have not money.");
  433. }
  434. else if(listitem == 1)
  435. {
  436. ShowPlayerDialog(playerid, COLORCHANGE, DIALOG_STYLE_INPUT, "Mechanic garage", "Enter vehicle color:", "Ok", "Exit");
  437. }
  438. }
  439. }
  440. if(dialogid == COLORCHANGE)
  441. {
  442. if(response)
  443. {
  444. if(GetPlayerMoney(playerid) >= Garage[repair[playerid]][colorprice])
  445. {
  446. ChangeVehicleColor(GetPlayerVehicleID(playerid), strval(inputtext), strval(inputtext));
  447. SetVehicleHealth(GetPlayerVehicleID(playerid), 1000);
  448. RepairVehicle(GetPlayerVehicleID(playerid));
  449. GivePlayerMoney(playerid,-Garage[repair[playerid]][colorprice]);
  450. SendClientMessage(playerid,-1,"Car color changed.");
  451. }
  452. else return SendClientMessage(playerid, -1, "You have not money.");
  453. }
  454. }
  455. return 1;
  456. }
  457.  
  458. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  459. {
  460. return 1;
  461. }
  462.  
  463. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
  464. {
  465. if(response == EDIT_RESPONSE_FINAL)
  466. {
  467. if(objectid == Garage[editing[playerid]][garag])
  468. {
  469. SetObjectPos(objectid, fX, fY, fZ);
  470. SetObjectRot(objectid, fRotX, fRotY, fRotZ);
  471. Garage[editing[playerid]][xgarage] = fX;
  472. Garage[editing[playerid]][ygarage] = fY;
  473. Garage[editing[playerid]][zgarage] = fZ;
  474. Garage[editing[playerid]][xrgarage] = fRotX;
  475. Garage[editing[playerid]][yrgarage] = fRotY;
  476. Garage[editing[playerid]][zrgarage] = fRotZ;
  477. SGarage(editing[playerid]);
  478. Delete3DTextLabel(Garage[editing[playerid]][label]);
  479. if(Garage[editing[playerid]][labelcolor] == 0)
  480. {
  481. Garage[editing[playerid]][label] = Create3DTextLabel("{00BFFF}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
  482. }
  483. else if(Garage[editing[playerid]][labelcolor] == 1)
  484. {
  485. Garage[editing[playerid]][label] = Create3DTextLabel("{00FF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
  486. }
  487. else if(Garage[editing[playerid]][labelcolor] == 2)
  488. {
  489. Garage[editing[playerid]][label] = Create3DTextLabel("{FF0000}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
  490. }
  491. else if(Garage[editing[playerid]][labelcolor] == 3)
  492. {
  493. Garage[editing[playerid]][label] = Create3DTextLabel("{FFFF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
  494. }
  495. SendClientMessage(playerid, -1, "Mechanic garage edited.");
  496. }
  497. }
  498. }
  499.  
  500. stock GarageID()
  501. {
  502. new s[20];
  503. for(new i= 0; i < MAX_GARAGES; i++)
  504. {
  505. format(s, 20, "Garages/%d.ini", i);
  506. if(!fexist(s)) return i;
  507. }
  508. return true;
  509. }
  510.  
  511. stock SGarage(id)
  512. {
  513. new s[20];
  514. format(s, 20, "Garages/%d.ini", id);
  515. if(fexist(s))
  516. {
  517. dini_FloatSet(s, "GX", Garage[id][xgarage]);
  518. dini_FloatSet(s, "GY", Garage[id][ygarage]);
  519. dini_FloatSet(s, "GZ", Garage[id][zgarage]);
  520. dini_FloatSet(s, "GXR",Garage[id][xrgarage]);
  521. dini_FloatSet(s, "GYR",Garage[id][yrgarage]);
  522. dini_FloatSet(s, "GZR",Garage[id][zrgarage]);
  523. dini_IntSet(s, "Gprice",Garage[id][fixprice]);
  524. dini_IntSet(s, "Cprice",Garage[id][colorprice]);
  525. dini_IntSet(s, "Labelcolor",Garage[id][labelcolor]);
  526. }
  527. return 1;
  528. }
  529.  
  530. stock LoadG()
  531. {
  532. new s[20];
  533. for(new i = 0; i < MAX_GARAGES; i++)
  534. {
  535. format(s, 20, "Garages/%d.ini", i);
  536. if(fexist(s))
  537. {
  538. Garage[i][xgarage] = dini_Float(s, "GX");
  539. Garage[i][ygarage] = dini_Float(s, "GY");
  540. Garage[i][zgarage] = dini_Float(s, "GZ");
  541. Garage[i][xrgarage] = dini_Float(s, "GXR");
  542. Garage[i][yrgarage] = dini_Float(s, "GYR");
  543. Garage[i][zrgarage] = dini_Float(s, "GZR");
  544. Garage[i][fixprice] = dini_Int(s, "Gprice");
  545. Garage[i][colorprice] = dini_Int(s, "Cprice");
  546. Garage[i][labelcolor] = dini_Int(s, "Labelcolor");
  547. Garage[i][garag] = CreateObject(OBJECTM, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage], Garage[i][xrgarage], Garage[i][yrgarage], Garage[i][zrgarage], 96.0);
  548. if(Garage[i][labelcolor] == 0)
  549. {
  550. Garage[i][label] = Create3DTextLabel("{00BFFF}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage], 30.0, 0, 0);
  551. }
  552. if(Garage[i][labelcolor] == 1)
  553. {
  554. Garage[i][label] = Create3DTextLabel("{00FF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage], 30.0, 0, 0);
  555. }
  556. if(Garage[i][labelcolor] == 2)
  557. {
  558. Garage[i][label] = Create3DTextLabel("{FF0000}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage], 30.0, 0, 0);
  559. }
  560. if(Garage[i][labelcolor] == 3)
  561. {
  562. Garage[i][label] = Create3DTextLabel("{FFFF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage], 30.0, 0, 0);
  563. }
  564. }
  565. }
  566. return 1;
  567. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement