ShomyScript

Za Tosica

Feb 2nd, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.02 KB | None | 0 0
  1. #include < a_samp >
  2. #include < YSI\y_ini >
  3. #include < YSI\y_commands >
  4. #include < sscanf2 >
  5.  
  6. #define MAX_RENTS 30
  7. #define RENT_FILE "/Rent/%d.ini"
  8.  
  9. #define DIALOG_RENT 1000
  10. #define DIALOG_RENTVREME 1001
  11.  
  12. enum RENT_INFO {
  13.  
  14. Float:rentX,
  15. Float:rentY,
  16. Float:rentZ,
  17. Text3D:RentLabel,
  18. rentID
  19. }
  20.  
  21. new RentInfo[ MAX_RENTS ][ RENT_INFO ], IznajmioVozilo[ MAX_PLAYERS ], RentVeh[ MAX_PLAYERS ], RentOdabir[ MAX_PLAYERS ],
  22. RentVreme[ MAX_PLAYERS ], RentTimer[ MAX_PLAYERS ], Text3D:RentVehLabel[ MAX_VEHICLES ], TipVozila[ MAX_VEHICLES ];
  23.  
  24. public OnGameModeInit() {
  25.  
  26. for(new i; i < MAX_RENTS; i++) {
  27. new jFile[ 50 ];
  28. format(jFile, sizeof(jFile), RENT_FILE, i);
  29. if(fexist(jFile)) {
  30. INI_ParseFile(jFile, "LoadRent", .bExtra = true, .extra = i);
  31. RentInfo[ i ][ rentID ] = CreatePickup(19132, 1, RentInfo[ i ][ rentX ], RentInfo[ i ][ rentY ], RentInfo[ i ][ rentZ ], 0);
  32. RentInfo[ i ][ RentLabel ] = Create3DTextLabel("[ RENT ]\n{FFFFFF}Da iznajmite vozilo, kucajte\n{0077C7}/rent", 0x0077C7FF, RentInfo[ i ][ rentX ], RentInfo[ i ][ rentY ], RentInfo[ i ][ rentZ ], 10.0, 0, 0);
  33. }
  34. }
  35. return 1;
  36. }
  37. forward LoadRent(id, name[], value[]);
  38. public LoadRent(id, name[], value[]) {
  39.  
  40. INI_Float("Lokacija_X", RentInfo[ id ][ rentX ]);
  41. INI_Float("Lokacija_Y", RentInfo[ id ][ rentY ]);
  42. INI_Float("Lokacija_Z", RentInfo[ id ][ rentZ ]);
  43. return 1;
  44. }
  45. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  46.  
  47. if(dialogid == DIALOG_RENT) {
  48. if(!response) return 1;
  49. switch(listitem) {
  50. case 0: {
  51. RentOdabir[ playerid ] = 1;
  52. ShowPlayerDialog(playerid, DIALOG_RENTVREME, DIALOG_STYLE_INPUT, "{0077C7}Iznamljivanje {FFFFFF}vozila","{FFFFFF}Unesite vreme na koliko ce te iznajmiti vozilo.\nMinimalno vreme - 1 minut.\nMaksimalno vreme - 30 minuta.\nCena - 1 minut = 100$","U redu","Izlaz");
  53. }
  54. case 1: {
  55. RentOdabir[ playerid ] = 2;
  56. ShowPlayerDialog(playerid, DIALOG_RENTVREME, DIALOG_STYLE_INPUT, "{0077C7}Iznamljivanje {FFFFFF}vozila","{FFFFFF}Unesite vreme na koliko ce te iznajmiti vozilo.\nMinimalno vreme - 1 minut.\nMaksimalno vreme - 30 minuta.\nCena - 1 minut = 70$","U redu","Izlaz");
  57. }
  58. }
  59. }
  60. else if(dialogid == DIALOG_RENTVREME) {
  61. if(!response) return 1;
  62. new i = GetNearestRent(playerid);
  63. if(RentOdabir[ playerid ] == 1) {
  64. new vreme;
  65. if(GetPlayerMoney(playerid) < RentVreme[ playerid ]*100) return SendClientMessage(playerid, 0x0077C7FF, "[ERROR] {FFFFFF}Nemate dovoljno novca.");
  66. if(sscanf(inputtext, "d", vreme)) return ShowPlayerDialog(playerid, DIALOG_RENTVREME, DIALOG_STYLE_INPUT, "{0077C7}Iznamljivanje {FFFFFF}vozila","{FFFFFF}Unesite vreme na koliko ce te iznajmiti vozilo.\nMinimalno vreme - 1 minut.\nMaksimalno vreme - 30 minuta.\nCena - 1 minut = 100$","U redu","Izlaz");
  67. if(vreme < 1 || vreme > 30) return ShowPlayerDialog(playerid, DIALOG_RENTVREME, DIALOG_STYLE_INPUT, "{0077C7}Iznamljivanje {FFFFFF}vozila","{FFFFFF}Unesite vreme na koliko ce te iznajmiti vozilo.\nMinimalno vreme - 1 minut.\nMaksimalno vreme - 30 minuta.\nCena - 1 minut = 100$","U redu","Izlaz");
  68. RentVreme[ playerid ] = vreme;
  69. RentVeh[ playerid ] = CreateVehicle(405, RentInfo[ i ][ rentX ]+2, RentInfo[ i ][ rentY ]+2, RentInfo[ i ][ rentZ ], 0.0, 1, 1, -1);
  70. PutPlayerInVehicle(playerid, RentVeh[ playerid ], 0);
  71. IznajmioVozilo[ playerid ] = GetPlayerVehicleID(playerid);
  72. GivePlayerMoney(playerid, -RentVreme[ playerid ]*100);
  73. RentTimer[ playerid ] = SetTimerEx("TimerRent", 60000, true, "i", playerid);
  74. SendClientMessage(playerid, 0x0077C7FF, "[RENT] {FFFFFF}Uspesno ste iznajmili vozilo.");
  75. RentVehLabel[ RentVeh[ playerid ] ] = Create3DTextLabel("[RENTANO VOZILO]", 0x0077C7FF, RentInfo[ i ][ rentX ]+2, RentInfo[ i ][ rentY ]+2, RentInfo[ i ][ rentZ ], 10.0, 0, 0);
  76. Attach3DTextLabelToVehicle(RentVehLabel[ RentVeh[ playerid ] ], RentVeh[ playerid ], 0.0, 0.0, 0.0);
  77. TipVozila[ RentVeh[ playerid ] ] = 1; // 1 - Rent Vozilo
  78. }
  79. else if(RentOdabir[ playerid ] == 2) {
  80. new vreme;
  81. if(GetPlayerMoney(playerid) < RentVreme[ playerid ]*70) return SendClientMessage(playerid, 0x0077C7FF, "[ERROR] {FFFFFF}Nemate dovoljno novca.");
  82. if(sscanf(inputtext, "d", vreme)) return ShowPlayerDialog(playerid, DIALOG_RENTVREME, DIALOG_STYLE_INPUT, "{0077C7}Iznamljivanje {FFFFFF}vozila","{FFFFFF}Unesite vreme na koliko ce te iznajmiti vozilo.\nMinimalno vreme - 1 minut.\nMaksimalno vreme - 30 minuta.\nCena - 1 minut = 70$","U redu","Izlaz");
  83. if(vreme < 1 || vreme > 30) return ShowPlayerDialog(playerid, DIALOG_RENTVREME, DIALOG_STYLE_INPUT, "{0077C7}Iznamljivanje {FFFFFF}vozila","{FFFFFF}Unesite vreme na koliko ce te iznajmiti vozilo.\nMinimalno vreme - 1 minut.\nMaksimalno vreme - 30 minuta.\nCena - 1 minut = 70$","U redu","Izlaz");
  84. RentVreme[ playerid ] = vreme;
  85. RentVeh[ playerid ] = CreateVehicle(462, RentInfo[ i ][ rentX ]+2, RentInfo[ i ][ rentY ]+2, RentInfo[ i ][ rentZ ], 0.0, 1, 1, -1);
  86. PutPlayerInVehicle(playerid, RentVeh[ playerid ], 0);
  87. IznajmioVozilo[ playerid ] = GetPlayerVehicleID(playerid);
  88. GivePlayerMoney(playerid, -RentVreme[ playerid ]*70);
  89. RentTimer[ playerid ] = SetTimerEx("TimerRent", 60000, true, "i", playerid);
  90. SendClientMessage(playerid, 0x0077C7FF, "[RENT] {FFFFFF}Uspesno ste iznajmili vozilo.");
  91. RentVehLabel[ RentVeh[ playerid ] ] = Create3DTextLabel("[RENTANO VOZILO]", 0x0077C7FF, RentInfo[ i ][ rentX ]+2, RentInfo[ i ][ rentY ]+2, RentInfo[ i ][ rentZ ], 10.0, 0, 0);
  92. Attach3DTextLabelToVehicle(RentVehLabel[ RentVeh[ playerid ] ], RentVeh[ playerid ], 0.0, 0.0, 0.0);
  93. TipVozila[ RentVeh[ playerid ] ] = 1; // 1 - Rent Vozilo
  94. }
  95. }
  96. return 1;
  97. }
  98. public OnPlayerStateChange(playerid, newstate, oldstate) {
  99.  
  100. if(newstate == PLAYER_STATE_DRIVER) {
  101. if(TipVozila[ playerid ] == 1 && RentVeh[ playerid ] != GetPlayerVehicleID(playerid)) {
  102. RemovePlayerFromVehicle(playerid);
  103. SendClientMessage(playerid, 0x0077C7FF, "[ERROR] {FFFFFF}Rentano vozilo.");
  104. }
  105. }
  106. return 1;
  107. }
  108. forward TimerRent(playerid);
  109. public TimerRent(playerid) {
  110.  
  111. RentVreme[ playerid ]--;
  112. if(RentVreme[ playerid ] == 0) {
  113. KillTimer(RentTimer[ playerid ]);
  114. DestroyVehicle(RentVeh[ playerid ]);
  115. Delete3DTextLabel(RentVehLabel[ RentVeh[ playerid ] ]);
  116. IznajmioVozilo[ playerid ] = 0;
  117. RentOdabir[ playerid ] = 0;
  118. RentVreme[ playerid ] = 0;
  119. RentVeh[ playerid ] = 0;
  120. SendClientMessage(playerid, 0x0077C7FF, "[RENT] {FFFFFF}Isteklo vam je vreme iznamljivanja vozila.");
  121. }
  122. return 1;
  123. }
  124. public OnPlayerDisconnect(playerid, reason) {
  125.  
  126. if(IznajmioVozilo[ playerid ] != 0) {
  127. KillTimer(RentTimer[ playerid ]);
  128. DestroyVehicle(RentVeh[ playerid ]);
  129. Delete3DTextLabel(RentVehLabel[ RentVeh[ playerid ] ]);
  130. IznajmioVozilo[ playerid ] = 0;
  131. RentOdabir[ playerid ] = 0;
  132. RentVreme[ playerid ] = 0;
  133. RentVeh[ playerid ] = 0;
  134. }
  135. return 1;
  136. }
  137.  
  138. YCMD:kreirajrent(playerid, params[], help) {
  139.  
  140. #pragma unused params
  141. #pragma unused help
  142.  
  143. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0x0077C7FF, "[ERROR] {FFFFFF}Niste RCON admin.");
  144. new Float:X, Float:Y, Float:Z, i = NextRentID(MAX_RENTS);
  145. GetPlayerPos(playerid, X,Y,Z);
  146. RentInfo[ i ][ rentID ] = CreatePickup(19132, 1, X,Y,Z, 0);
  147. RentInfo[ i ][ RentLabel ] = Create3DTextLabel("[ RENT ]\n{FFFFFF}Da iznajmite vozilo, kucajte\n{0077C7}/rent", 0x0077C7FF, X, Y, Z, 10.0, 0, 0);
  148. RentInfo[ i ][ rentX ] = X;
  149. RentInfo[ i ][ rentY ] = Y;
  150. RentInfo[ i ][ rentZ ] = Z;
  151. SaveRent(i);
  152. return 1;
  153. }
  154. // Sentinel 405 Faggio 462
  155. YCMD:rent(playerid, params[], help) {
  156.  
  157. #pragma unused params
  158. #pragma unused help
  159.  
  160. if(GetNearestRent(playerid) == -1) return SendClientMessage(playerid, 0x0077C7FF, "[ERROR] {FFFFFF}Niste blizu rent pickup-a.");
  161. if(IznajmioVozilo[ playerid ] != 0) return SendClientMessage(playerid, 0x0077C7FF, "[ERROR] {FFFFFF}Vec ste iznajmili vozilo.");
  162. ShowPlayerDialog(playerid, DIALOG_RENT, DIALOG_STYLE_LIST, "{0077C7}Iznamljivanje {FFFFFF}vozila", "Sentinel\nFaggio", "Izaberi","Izlaz");
  163. return 1;
  164. }
  165. YCMD:unrent(playerid, params[], help) {
  166.  
  167. #pragma unused params
  168. #pragma unused help
  169.  
  170. if(IznajmioVozilo[ playerid ] == 0) return SendClientMessage(playerid, 0x0077C7FF, "[ERROR] {FFFFFF}Niste iznajmili vozilo.");
  171. KillTimer(RentTimer[ playerid ]);
  172. DestroyVehicle(RentVeh[ playerid ]);
  173. Delete3DTextLabel(RentVehLabel[ RentVeh[ playerid ] ]);
  174. IznajmioVozilo[ playerid ] = 0;
  175. if(RentOdabir[ playerid ] == 1) {
  176. GivePlayerMoney(playerid, RentVreme[ playerid ]*100);
  177. new str[ 120 ];
  178. format(str, sizeof(str), "[UNRENT] {FFFFFF}Uspesno ste vratili iznamljeno vozilo te vam je vraceno %d$", RentVreme[ playerid ]*100);
  179. SendClientMessage(playerid, 0x0077C7FF, str);
  180. RentOdabir[ playerid ] = 0;
  181. RentVreme[ playerid ] = 0;
  182. RentVeh[ playerid ] = 0;
  183. }
  184. else if(RentOdabir[ playerid ] == 2) {
  185. GivePlayerMoney(playerid, RentVreme[ playerid ]*70);
  186. new str[ 120 ];
  187. format(str, sizeof(str), "[UNRENT] {FFFFFF}Uspesno ste vratili iznamljeno vozilo te vam je vraceno %d$", RentVreme[ playerid ]*70);
  188. SendClientMessage(playerid, 0x0077C7FF, str);
  189. RentOdabir[ playerid ] = 0;
  190. RentVreme[ playerid ] = 0;
  191. RentVeh[ playerid ] = 0;
  192. }
  193. return 1;
  194. }
  195.  
  196. GetNearestRent( playerid ) {
  197.  
  198. for( new i = 1; i < MAX_RENTS; i++) {
  199.  
  200. if( IsPlayerInRangeOfPoint( playerid, 3.0, RentInfo[ i ][ rentX ], RentInfo[ i ][ rentY ], RentInfo[ i ][ rentZ ] ) ) { return i; }
  201. }
  202. return -1;
  203. }
  204. stock NextRentID(const len) {
  205. new id = (-1);
  206. for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
  207. provjera = ( loop+1 );
  208. format( Data_, ( sizeof Data_ ), RENT_FILE, provjera );
  209. if(!fexist(Data_)) {
  210. id = ( provjera );
  211. break; } }
  212. return ( id );
  213. }
  214. stock SaveRent(id) {
  215.  
  216. new rentFile[ 60 ];
  217. format(rentFile, sizeof(rentFile), RENT_FILE, id);
  218. new INI:File = INI_Open(rentFile);
  219. INI_WriteFloat(File, "Lokacija_X", RentInfo[ id ][ rentX ]);
  220. INI_WriteFloat(File, "Lokacija_Y", RentInfo[ id ][ rentY ]);
  221. INI_WriteFloat(File, "Lokacija_Z", RentInfo[ id ][ rentZ ]);
  222. INI_Close(File);
  223. return 1;
  224. }
Advertisement
Add Comment
Please, Sign In to add comment