Advertisement
Guest User

FV

a guest
Oct 8th, 2011
745
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.44 KB | None | 0 0
  1. /* Vlasnistvo Vozila by fearless (v.1.0) */
  2.  
  3. #define FILTERSCRIPT
  4.  
  5. #include <a_samp>
  6. #include <sscanf2>
  7. #include <zcmd>
  8.  
  9. #if !defined MAX_VEHICLES
  10. #define MAX_VEHICLES 200 // maksimalni broj vozila u gamemodeu(plovila+letjelice+auti)
  11. #endif
  12. #define MAX_INT_LEN (11)
  13. #define VO_MAX_LINE_LEN MAX_PLAYER_NAME+(MAX_INT_LEN*2)+(11*7)+(3*3)
  14. #define VEHICLE_FILE "vehicles.txt" // ime datoteke u scriptfiles/ folderu
  15. #define COS_RESPAWN_DELAY 3*60 // respawn vrijeme za sva vozila(default: 3 minute)
  16.  
  17. #define COLOR_WARNING 0xFFFFFF // boja upozorenja
  18. #define COLOR_ERROR 0xFFFFFF // boja greske
  19. #define COLOR_INFO 0xFFFFFF // boja informacije
  20.  
  21. main()
  22. {
  23. return 1;
  24. }
  25.  
  26. public OnGameModeInit()
  27. {
  28. LoadConfig();
  29. }
  30.  
  31. public OnGameModeExit()
  32. {
  33. SaveConfig();
  34. }
  35.  
  36. public OnPlayerDisconnect(playerid, reason)
  37. {
  38. SaveConfig();
  39. }
  40.  
  41. enum
  42. {
  43. E_VEHICLE_TYPE_CAR = 1,
  44. E_VEHICLE_TYPE_PLANE, // = 2
  45. E_VEHICLE_TYPE_BOAT, // = 3
  46. E_VEHICLE_TYPE_MOTOR, // = 4
  47. E_VEHICLE_TYPE_BIKE // = 5
  48. };
  49.  
  50. enum E_VEHICLE_INFO
  51. {
  52. E_VEHICLE_OWNER[MAX_PLAYER_NAME], // ime vlasnika auta
  53. E_VEHICLE_TYPE, // vrsta vozila(auto, avion i brod)
  54. E_VEHICLE_MODEL, // model vozila
  55. Float: E_VEHICLE_X, // zadnja spremljena x pozicija
  56. Float: E_VEHICLE_Y, // zadnja spremljena y pozicija
  57. Float: E_VEHICLE_Z, // zadnja spremljena z pozicija
  58. Float: E_VEHICLE_A, // zadnji spremljeni kut vozila
  59. Float: E_VEHICLE_SX, // spremljena spawn pozicija x; spawn ako proda auto
  60. Float: E_VEHICLE_SY, // spremljena spawn pozicija y; spawn ako proda auto
  61. Float: E_VEHICLE_SZ, // spremljena spawn pozicija z; spawn ako proda auto
  62. Float: E_VEHICLE_SA, // spremljen kut vozila; spawn ako proda auto
  63. E_VEHICLE_PRICE, // cijena vozila
  64. E_VEHICLE_COLOR1, // prva boja
  65. E_VEHICLE_COLOR2, // druga boja
  66. E_VEHICLE_ID // ID vozila(ne sprema se)
  67. };
  68.  
  69. new
  70. g_VehiclesLoaded = 0,
  71. g_VehicleFileCache[MAX_VEHICLES][VO_MAX_LINE_LEN],
  72. Vehicles[MAX_VEHICLES][E_VEHICLE_INFO]; // array za spremanje informacija o vozilima
  73.  
  74. stock SendDebugInfo(msg[]) // alias za slanje debug reportova na serveru
  75. {
  76. printf("**** [DEBUG REPORT] %s ****", msg);
  77. }
  78.  
  79. stock GetCosIDFromVehID(vehid, type) // dobiva array index na bazi vehicle id-a i vrsti vozila
  80. {
  81. new
  82. c = 0;
  83. while(c < g_VehiclesLoaded)
  84. {
  85. if(vehid == Vehicles[c][E_VEHICLE_ID] && Vehicles[c][E_VEHICLE_TYPE] == type)
  86. {
  87. return c;
  88. }
  89. c++;
  90. }
  91. return -1;
  92. }
  93.  
  94. stock GetCosIDFromVehIDNoType(vehid) // dobiva array index na bazi vehicle id-a
  95. {
  96. new
  97. c = 0;
  98. while(c < g_VehiclesLoaded)
  99. {
  100. if(vehid == Vehicles[c][E_VEHICLE_ID])
  101. {
  102. return c;
  103. }
  104. c++;
  105. }
  106. return -1;
  107. }
  108.  
  109. stock GetCosIDFromOwnerName(name[MAX_PLAYER_NAME], type) // dobiva array index na bazi vlasnika i vrsti vozila
  110. {
  111. new
  112. c = 0;
  113. while(c < g_VehiclesLoaded)
  114. {
  115. if(strcmp(Vehicles[c][E_VEHICLE_OWNER], name) == 0 && Vehicles[c][E_VEHICLE_TYPE] == type)
  116. {
  117. return c;
  118. }
  119. c++;
  120. }
  121. return -1;
  122. }
  123.  
  124. stock GetName(playerid) // dobiva ime igraca iz njegovog player id-a
  125. {
  126. new
  127. name[MAX_PLAYER_NAME];
  128. GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  129. return name;
  130. }
  131.  
  132. stock strcpy(dest[], source[], max, len = -1)
  133. {
  134. new
  135. i;
  136. if (len == -1) len = strlen(source);
  137. while (i < len && i < max && (dest[i] = source[i])) i++;
  138. if (i == len) dest[i == max ? i - 1 : i] = '\0';
  139. }
  140.  
  141. /*COMMAND:veh(playerid, params[])
  142. {
  143. new
  144. model,
  145. owner[MAX_PLAYER_NAME],
  146. price;
  147. if(sscanf(params, "sdd", owner, model, price))
  148. {
  149. return SendClientMessage(playerid, COLOR_ERROR, "Sintaksa: /veh <ime igraca> <model> <cijena>");
  150. }
  151. new
  152. Float: px,
  153. Float: py,
  154. Float: pz,
  155. Float: pa;
  156. GetPlayerPos(playerid, px, py, pz);
  157. GetPlayerFacingAngle(playerid, pa);
  158. g_VehiclesLoaded++;
  159. new c = g_VehiclesLoaded;
  160. if(c >= MAX_VEHICLES) return false;
  161. strmid(Vehicles[c][E_VEHICLE_OWNER], owner, 0, strlen(owner));
  162. Vehicles[c][E_VEHICLE_MODEL] = model;
  163. Vehicles[c][E_VEHICLE_PRICE] = price;
  164. Vehicles[c][E_VEHICLE_SX] = Vehicles[c][E_VEHICLE_X] = px;
  165. Vehicles[c][E_VEHICLE_SY] = Vehicles[c][E_VEHICLE_Y] = py;
  166. Vehicles[c][E_VEHICLE_SZ] = Vehicles[c][E_VEHICLE_Z] = pz;
  167. Vehicles[c][E_VEHICLE_SA] = Vehicles[c][E_VEHICLE_A] = pa;
  168. Vehicles[c][E_VEHICLE_COLOR1] = Vehicles[c][E_VEHICLE_COLOR2] = 0;
  169. Vehicles[c][E_VEHICLE_TYPE] = 1;
  170. Vehicles[c][E_VEHICLE_ID] = CreateVehicle(model, px, py, pz + 3.0, pa, 0, 0, COS_RESPAWN_DELAY);
  171. SaveVehicle(c);
  172. return true;
  173. }*/
  174.  
  175. stock LoadConfig() // ucitava vozila iz file-a definiranog VEHICLE_FILE-om
  176. {
  177. new
  178. File: fVehicleHandler = fopen(VEHICLE_FILE, io_readwrite);
  179. if(fVehicleHandler)
  180. {
  181. new
  182. line[VO_MAX_LINE_LEN],
  183. c = 0;
  184. while(fread(fVehicleHandler, line))
  185. {
  186. new
  187. vehInfo[14][MAX_PLAYER_NAME];
  188. split(line, vehInfo, '|');
  189. strcpy(Vehicles[c][E_VEHICLE_OWNER], vehInfo[0], MAX_PLAYER_NAME);
  190. Vehicles[c][E_VEHICLE_TYPE] = strval(vehInfo[1]);
  191. Vehicles[c][E_VEHICLE_MODEL] = strval(vehInfo[2]);
  192. Vehicles[c][E_VEHICLE_SX] = floatstr(vehInfo[3]);
  193. Vehicles[c][E_VEHICLE_SY] = floatstr(vehInfo[4]);
  194. Vehicles[c][E_VEHICLE_SZ] = floatstr(vehInfo[5]);
  195. Vehicles[c][E_VEHICLE_SA] = floatstr(vehInfo[6]);
  196. Vehicles[c][E_VEHICLE_PRICE] = strval(vehInfo[7]);
  197. Vehicles[c][E_VEHICLE_COLOR1] = strval(vehInfo[8]);
  198. Vehicles[c][E_VEHICLE_COLOR2] = strval(vehInfo[9]);
  199. Vehicles[c][E_VEHICLE_X] = floatstr(vehInfo[10]);
  200. Vehicles[c][E_VEHICLE_Y] = floatstr(vehInfo[11]);
  201. Vehicles[c][E_VEHICLE_Z] = floatstr(vehInfo[12]);
  202. Vehicles[c][E_VEHICLE_A] = floatstr(vehInfo[13]);
  203. if(Vehicles[c][E_VEHICLE_X] == Vehicles[c][E_VEHICLE_SX] &&
  204. Vehicles[c][E_VEHICLE_Y] == Vehicles[c][E_VEHICLE_SY] &&
  205. Vehicles[c][E_VEHICLE_Z] == Vehicles[c][E_VEHICLE_SZ] &&
  206. Vehicles[c][E_VEHICLE_A] == Vehicles[c][E_VEHICLE_SA])
  207. {
  208. Vehicles[c][E_VEHICLE_ID] = CreateVehicle(Vehicles[c][E_VEHICLE_MODEL], Vehicles[c][E_VEHICLE_SX], Vehicles[c][E_VEHICLE_SY],
  209. Vehicles[c][E_VEHICLE_SZ], Vehicles[c][E_VEHICLE_SA], Vehicles[c][E_VEHICLE_COLOR1],
  210. Vehicles[c][E_VEHICLE_COLOR2], COS_RESPAWN_DELAY);
  211. }
  212. else
  213. {
  214. Vehicles[c][E_VEHICLE_ID] = CreateVehicle(Vehicles[c][E_VEHICLE_MODEL], Vehicles[c][E_VEHICLE_X], Vehicles[c][E_VEHICLE_Y],
  215. Vehicles[c][E_VEHICLE_Z], Vehicles[c][E_VEHICLE_A], Vehicles[c][E_VEHICLE_COLOR1],
  216. Vehicles[c][E_VEHICLE_COLOR2], COS_RESPAWN_DELAY);
  217. }
  218. strcpy(g_VehicleFileCache[c], line, VO_MAX_LINE_LEN);
  219. c++;
  220. }
  221. g_VehiclesLoaded = c;
  222. }
  223. else
  224. {
  225. SendDebugInfo(VEHICLE_FILE " failed to load(read)");
  226. return false;
  227. }
  228. fclose(fVehicleHandler);
  229. return true;
  230. }
  231.  
  232. stock SaveConfig()
  233. {
  234. new
  235. File: fVehicleHandler = fopen(VEHICLE_FILE, io_write);
  236. if(fVehicleHandler)
  237. {
  238. new
  239. c = 0;
  240. while(c < g_VehiclesLoaded)
  241. {
  242. new
  243. tempBuffer[VO_MAX_LINE_LEN];
  244. format(tempBuffer, VO_MAX_LINE_LEN, "%s\r\n", g_VehicleFileCache[c]);
  245. fwrite(fVehicleHandler, tempBuffer);
  246. c++;
  247. }
  248. }
  249. else
  250. {
  251. SendDebugInfo(VEHICLE_FILE " failed to load(write)");
  252. return false;
  253. }
  254. fclose(fVehicleHandler);
  255. return true;
  256. }
  257.  
  258. stock SaveVehicle(c)
  259. {
  260. new
  261. vehInfo[VO_MAX_LINE_LEN];
  262. format(vehInfo, sizeof(vehInfo), "%s|%d|%d|%f|%f|%f|%f|%d|%d|%d|%f|%f|%f|%f",
  263. Vehicles[c][E_VEHICLE_OWNER],
  264. Vehicles[c][E_VEHICLE_TYPE],
  265. Vehicles[c][E_VEHICLE_MODEL],
  266. Vehicles[c][E_VEHICLE_SX],
  267. Vehicles[c][E_VEHICLE_SY],
  268. Vehicles[c][E_VEHICLE_SZ],
  269. Vehicles[c][E_VEHICLE_SA],
  270. Vehicles[c][E_VEHICLE_PRICE],
  271. Vehicles[c][E_VEHICLE_COLOR1],
  272. Vehicles[c][E_VEHICLE_COLOR2],
  273. Vehicles[c][E_VEHICLE_X],
  274. Vehicles[c][E_VEHICLE_Y],
  275. Vehicles[c][E_VEHICLE_Z],
  276. Vehicles[c][E_VEHICLE_A]);
  277. strdel(g_VehicleFileCache[c], 0, strlen(g_VehicleFileCache[c]));
  278. strcpy(g_VehicleFileCache[c], vehInfo, VO_MAX_LINE_LEN);
  279. return true;
  280. }
  281.  
  282. stock split(const strsrc[], strdest[][], delimiter)
  283. {
  284. new
  285. i,
  286. li,
  287. aNum,
  288. len,
  289. srcLen = strlen(strsrc);
  290. while(i <= srcLen)
  291. {
  292. if(strsrc[i] == delimiter || i == srcLen)
  293. {
  294. len = strmid(strdest[aNum], strsrc, li, i, 128);
  295. strdest[aNum][len] = 0;
  296. li = i+1;
  297. aNum++;
  298. }
  299. i++;
  300. }
  301. return 1;
  302. }
  303.  
  304. stock DoChoice(playerid, choice[], type)
  305. {
  306. if(!strcmp(choice, "parkiraj"))
  307. {
  308. return SaveVehCoordByPlayer(playerid, type);
  309. }
  310. new
  311. c = GetCosIDFromOwnerName(GetName(playerid), type);
  312. if(c == -1)
  313. {
  314. return true;
  315. }
  316. if(!strcmp(choice, "lociraj"))
  317. {
  318. LocateVehicleByPlayer(playerid, c);
  319. }
  320. else if(!strcmp(choice, "prodaj"))
  321. {
  322. DestroyVehicleByPlayer(playerid, c);
  323. }
  324. return true;
  325. }
  326.  
  327. COMMAND:bi(playerid, params[])
  328. {
  329. new
  330. choice[9];
  331. if(sscanf(params, "s[9]", choice))
  332. {
  333. SendClientMessage(playerid, COLOR_ERROR, "Koristite: /bi(cikl) <parkiraj/lociraj/prodaj>");
  334. return true;
  335. }
  336. return DoChoice(playerid, choice, E_VEHICLE_TYPE_BIKE);
  337. }
  338.  
  339. COMMAND:mo(playerid, params[])
  340. {
  341. new
  342. choice[9];
  343. if(sscanf(params, "s[9]", choice))
  344. {
  345. SendClientMessage(playerid, COLOR_ERROR, "Koristite: /mo(tocikl) <parkiraj/lociraj/prodaj>");
  346. return true;
  347. }
  348. return DoChoice(playerid, choice, E_VEHICLE_TYPE_MOTOR);
  349. }
  350.  
  351. COMMAND:v(playerid, params[])
  352. {
  353. new
  354. choice[9];
  355. if(sscanf(params, "s[9]", choice))
  356. {
  357. SendClientMessage(playerid, COLOR_ERROR, "Koristite: /v(ozilo) <parkiraj/lociraj/prodaj>");
  358. return true;
  359. }
  360. return DoChoice(playerid, choice, E_VEHICLE_TYPE_CAR);
  361. }
  362.  
  363. COMMAND:le(playerid, params[])
  364. {
  365. new
  366. choice[9];
  367. if(sscanf(params, "s[9]", choice))
  368. {
  369. SendClientMessage(playerid, COLOR_ERROR, "Koristite: /le(tjelica) <parkiraj/lociraj/prodaj>");
  370. return true;
  371. }
  372. return DoChoice(playerid, choice, E_VEHICLE_TYPE_PLANE);
  373. }
  374.  
  375. COMMAND:pl(playerid, params[])
  376. {
  377. new
  378. choice[9];
  379. if(sscanf(params, "s[9]", choice))
  380. {
  381. SendClientMessage(playerid, COLOR_ERROR, "Koristite: /pl(ovilo) <parkiraj/lociraj/prodaj>");
  382. return true;
  383. }
  384. return DoChoice(playerid, choice, E_VEHICLE_TYPE_BOAT);
  385. }
  386.  
  387. stock GetTypeFromVehID(vehid)
  388. {
  389. if( vehid == 472 || vehid == 473 || vehid == 493 || vehid == 595 || vehid == 484 ||
  390. vehid == 430 || vehid == 453 || vehid == 452 || vehid == 446 || vehid == 454 )
  391. {
  392. return E_VEHICLE_TYPE_BOAT;
  393. }
  394. else if(vehid == 592 || vehid == 577 || vehid == 511 || vehid == 512 || vehid == 593 || vehid == 520 || vehid == 553 || vehid == 476 || vehid == 519 || vehid == 460 || vehid == 513 || vehid == 548 || vehid == 425 || vehid == 417 ||
  395. vehid == 487 || vehid == 488 || vehid == 497 || vehid == 563 || vehid == 447 || vehid == 469)
  396. {
  397. return E_VEHICLE_TYPE_PLANE;
  398. }
  399. else if(vehid == 462 || vehid == 448 || vehid == 581 || vehid == 522 || vehid == 461 || vehid == 521 || vehid == 523 ||
  400. vehid == 463 || vehid == 586 || vehid == 468 || vehid == 471)
  401. {
  402. return E_VEHICLE_TYPE_MOTOR;
  403. }
  404. else if(vehid == 481 || vehid == 509 || vehid == 510)
  405. {
  406. return E_VEHICLE_TYPE_BIKE;
  407. }
  408. return E_VEHICLE_TYPE_CAR;
  409. }
  410.  
  411. COMMAND:kupi(playerid, params[])
  412. {
  413. new
  414. veh;
  415. if(!(veh = GetPlayerVehicleID(playerid)))
  416. {
  417. SendClientMessage(playerid, COLOR_ERROR, "Niste u vozilu!");
  418. return true;
  419. }
  420. new
  421. _csub = GetCosIDFromOwnerName(GetName(playerid), GetTypeFromVehID(GetVehicleModel(veh)));
  422. if(_csub != -1)
  423. {
  424. if(!strcmp(Vehicles[_csub][E_VEHICLE_OWNER], GetName(playerid)))
  425. {
  426. SendClientMessage(playerid, COLOR_ERROR, "Vec posjedujete ovo vozilo");
  427. return true;
  428. }
  429. SendClientMessage(playerid, COLOR_ERROR, "Ne mozete imati 2 vozila iste vrste.");
  430. return true;
  431. }
  432. new
  433. c = GetCosIDFromVehIDNoType(GetPlayerVehicleID(playerid));
  434. new
  435. pMoney = GetPlayerMoney(playerid);
  436. if(pMoney < Vehicles[c][E_VEHICLE_PRICE])
  437. {
  438. SendClientMessage(playerid, COLOR_ERROR, "Nemate dosta novaca da kupite ovo vozilo");
  439. return true;
  440. }
  441. ResetPlayerMoney(playerid);
  442. GivePlayerMoney(playerid, pMoney-Vehicles[c][E_VEHICLE_PRICE]);
  443. strdel(Vehicles[c][E_VEHICLE_OWNER], 0, strlen(Vehicles[c][E_VEHICLE_OWNER]));
  444. strcpy(Vehicles[c][E_VEHICLE_OWNER], GetName(playerid), MAX_PLAYER_NAME);
  445. SaveVehicle(c);
  446. new
  447. infoSellMessage[39];
  448. TogglePlayerControllable(playerid, true);
  449. format(infoSellMessage, sizeof(infoSellMessage), "Kupio si vozilo za %d$", Vehicles[c][E_VEHICLE_PRICE]);
  450. SendClientMessage(playerid, COLOR_INFO, infoSellMessage);
  451. return true;
  452. }
  453.  
  454. stock IsOwnerByPlayer(c, playerid, type)
  455. {
  456. return strcmp(Vehicles[c][E_VEHICLE_OWNER], GetName(playerid)) == 0 && Vehicles[c][E_VEHICLE_TYPE] == type;
  457. }
  458.  
  459. stock SaveVehCoordByPlayer(playerid, type)
  460. {
  461. new
  462. vehid,
  463. Float: vx,
  464. Float: vy,
  465. Float: vz,
  466. Float: va;
  467. if(!(vehid = GetPlayerVehicleID(playerid)))
  468. {
  469. SendClientMessage(playerid, COLOR_ERROR, "Niste u vozilu!");
  470. return true;
  471. }
  472. new
  473. c = GetCosIDFromVehID(vehid, type);
  474. if(c == -1)
  475. {
  476. return true;
  477. }
  478. else if(!IsOwnerByPlayer(c, playerid, type))
  479. {
  480. SendClientMessage(playerid, COLOR_WARNING, "Vi niste vlasnik.");
  481. return true;
  482. }
  483. else if(!(vehid = GetPlayerVehicleID(playerid)))
  484. {
  485. SendClientMessage(playerid, COLOR_ERROR, "Niste u vozilu");
  486. return true;
  487. }
  488. GetVehiclePos(vehid, vx, vy, vz);
  489. GetVehicleZAngle(vehid, va);
  490. Vehicles[c][E_VEHICLE_X] = vx;
  491. Vehicles[c][E_VEHICLE_Y] = vy;
  492. Vehicles[c][E_VEHICLE_Z] = vz;
  493. Vehicles[c][E_VEHICLE_A] = va;
  494. SaveVehicle(c);
  495. SendClientMessage(playerid, COLOR_INFO, "Uspjesno ste parkirali vozilo!");
  496. return true;
  497. }
  498.  
  499. stock LocateVehicleByPlayer(playerid, c)
  500. {
  501. new
  502. Float: vx,
  503. Float: vy,
  504. Float: vz;
  505. GetVehiclePos(Vehicles[c][E_VEHICLE_ID], vx, vy, vz);
  506. SetPlayerCheckpoint(playerid, vx, vy, vz, 7.0);
  507. SendClientMessage(playerid, COLOR_INFO, "GPS Lokacija: Vozilo pronadeno, postavljen je checkpoint na vozilo");
  508. SetPVarInt(playerid, "is_vos_locating", 1);
  509. }
  510.  
  511. stock DestroyVehicleByPlayer(playerid, c)
  512. {
  513. if(Vehicles[c][E_VEHICLE_ID] == GetPlayerVehicleID(playerid))
  514. {
  515. RemovePlayerFromVehicle(playerid);
  516. TogglePlayerControllable(playerid, true);
  517. }
  518. DestroyVehicle(Vehicles[c][E_VEHICLE_ID]);
  519. GivePlayerMoney(playerid, Vehicles[c][E_VEHICLE_PRICE]);
  520. new
  521. infoSellMessage[30];
  522. format(infoSellMessage, sizeof(infoSellMessage), "Prodao si vozilo za %d$", Vehicles[c][E_VEHICLE_PRICE]);
  523. strcpy(Vehicles[c][E_VEHICLE_OWNER], "N/A", MAX_PLAYER_NAME);
  524. SendClientMessage(playerid, COLOR_INFO, infoSellMessage);
  525. Vehicles[c][E_VEHICLE_X] = Vehicles[c][E_VEHICLE_SX];
  526. Vehicles[c][E_VEHICLE_Y] = Vehicles[c][E_VEHICLE_SY];
  527. Vehicles[c][E_VEHICLE_Z] = Vehicles[c][E_VEHICLE_SZ];
  528. Vehicles[c][E_VEHICLE_A] = Vehicles[c][E_VEHICLE_SA];
  529. CreateVehicle(Vehicles[c][E_VEHICLE_MODEL], Vehicles[c][E_VEHICLE_SX], Vehicles[c][E_VEHICLE_SY], Vehicles[c][E_VEHICLE_SZ], Vehicles[c][E_VEHICLE_SA],
  530. Vehicles[c][E_VEHICLE_COLOR1], Vehicles[c][E_VEHICLE_COLOR2], COS_RESPAWN_DELAY);
  531. SaveVehicle(c);
  532. }
  533.  
  534. public OnPlayerSpawn(playerid)
  535. {
  536. SetPlayerPos(playerid, 1587.3728,-1050.2599,23.6333);
  537. }
  538.  
  539. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  540. {
  541. new
  542. c = GetCosIDFromVehIDNoType(vehicleid);
  543. if(c != -1)
  544. {
  545. if(!ispassenger && strcmp(GetName(playerid), Vehicles[c][E_VEHICLE_OWNER]) != 0 && // ako se ime vlasnika auta i ime igraca ne poklapa pokaze
  546. strcmp(Vehicles[c][E_VEHICLE_OWNER], "N/A") != 0 ) // ali dopusti ulazak ako nitko ne posjeduje vozilo
  547. { // poruku.
  548. SendClientMessage(playerid, COLOR_WARNING, "Nisi vlasnik ovog vozila!");
  549. TogglePlayerControllable(playerid, false);
  550. TogglePlayerControllable(playerid, true);
  551. return true;
  552. }
  553. }
  554. return true;
  555. }
  556.  
  557. public OnPlayerExitVehicle(playerid, vehicleid)
  558. {
  559. new
  560. c = GetCosIDFromVehIDNoType(vehicleid);
  561. if(c != -1 && !strcmp("N/A", Vehicles[c][E_VEHICLE_OWNER]))
  562. {
  563. TogglePlayerControllable(playerid, true);
  564. }
  565. return true;
  566. }
  567.  
  568. public OnPlayerStateChange(playerid, newstate, oldstate)
  569. {
  570. if((newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER))
  571. {
  572. new
  573. c = GetCosIDFromVehIDNoType(GetPlayerVehicleID(playerid));
  574. if(!strcmp(Vehicles[c][E_VEHICLE_OWNER], "N/A"))
  575. {
  576. SendClientMessage(playerid, COLOR_INFO, "Ovo vozilo je na prodaji. Ako hoces kupiti vozilo upisi /kupi");
  577. TogglePlayerControllable(playerid, false);
  578. }
  579. }
  580. return true;
  581. }
  582.  
  583. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  584. {
  585. if((newkeys & KEY_SECONDARY_ATTACK) && GetPlayerVehicleID(playerid))
  586. {
  587. new
  588. c = GetCosIDFromVehIDNoType(GetPlayerVehicleID(playerid));
  589. if(c != -1 && !strcmp(Vehicles[c][E_VEHICLE_OWNER], "N/A"))
  590. {
  591. TogglePlayerControllable(playerid, true);
  592. RemovePlayerFromVehicle(playerid);
  593. }
  594. }
  595. return true;
  596. }
  597.  
  598. public OnPlayerEnterCheckpoint(playerid)
  599. {
  600. if(GetPVarInt(playerid, "is_vos_locating"))
  601. {
  602. SendClientMessage(playerid, COLOR_INFO, "GPS Lokacija: Stigli ste do svog vozila, hvala Vam na koristenju nasih usluga");
  603. DisablePlayerCheckpoint(playerid);
  604. SetPVarInt(playerid, "is_vos_locating", 0);
  605. }
  606. return true;
  607. }
  608. /***/
  609. /*
  610. ; format -> ImeVlasnika|TipVozila|ModelVozila|SpawnX|SpawnY|spawnZ|spawnAngle|cijenaVozila|color1|color2|X|Y|Z|Angle
  611. ;
  612. ; TipVozila -> 1-3
  613. ; 1 = auto/motor
  614. ; 2 = avion
  615. ; 3 = brod
  616. ; 4 = motor
  617. ; 5 = bicikl
  618. ; X,Y,Z,Angle = treba biti kao i spawnX, spawnY, spawnZ, spawnAngle ALI SAMO PRVI PUT!
  619. ; spawnX, spawnY, spawnZ, spawnAngle = lokacija i kut vozila gdje ce se pojaviti za prodaju i nakon prodaje igraca
  620. ; -------------------
  621. ; ovo se dobije sa /save komandom
  622. ; AddStaticVehicle(411,1592.7510,-1057.4891,23.6333,311.9702,123,1); // inferus_1
  623. ; AddStaticVehicle(411,1590.1584,-1053.7268,23.6333,309.3978,123,1); // inferus_2
  624. ; AddStaticVehicle(411,1587.3728,-1050.2599,23.6333,311.1902,123,1); // inferus_3
  625. ; AddStaticVehicle(411,1584.2535,-1046.9425,23.6333,310.0898,123,1); // inferus_4
  626. ; AddStaticVehicle(411,1581.0602,-1043.8396,23.6333,308.6362,123,1); // inferus_5
  627. ; AddStaticVehicle(411,1905.1099,-2475.7163,13.2662,174.8411,116,1); // plane_1
  628. ; AddStaticVehicle(411,1942.7856,-2473.9626,13.2662,189.6935,116,1); // plane_2
  629. ; AddPlayerClass(0,720.6523,-1637.1486,-0.7434,173.9917,0,0,0,0,0,0); // boat_1
  630. ; AddPlayerClass(0,721.4686,-1698.5920,-0.5313,179.0050,0,0,0,0,0,0); // boat_2
  631. ; a ovako treba biti
  632. ;
  633. Fear_Less|1|411|1592.7510|-1057.4891|23.6333|311.9702|123|1|10000|1592.7510|-1057.4891|23.6333|311.9702
  634.  
  635. */
  636. /***/
  637.  
  638.  
  639.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement