Advertisement
Guest User

RENT SYSTEM BY SHOMY

a guest
Dec 3rd, 2017
1,312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.21 KB | None | 0 0
  1. // = • = • = • = • = • = DINAMICNO KREIRANJE RENT VOZILA = • = • = • = • = • =//
  2.  
  3. /*
  4.  
  5. Informacije:
  6.  
  7. FS Izradio - Shomy
  8. FS Sadrzi komande /kreirajrent /rent /unrent
  9. Da bi FS Radila, morate ubaciti u Vasem scriptfiles folderu, folder "Rent"
  10.  
  11. */
  12.  
  13. // = • INCLUDE • = //
  14.  
  15. #include < a_samp >
  16. #include < YSI\y_ini >
  17. #include < YSI\y_commands >
  18. #include < sscanf2 >
  19.  
  20. // = • DEFINE • = //
  21.  
  22. #define MAX_RENT 150
  23. #define RENT_FILE "/Rent/%d.ini"
  24. #undef MAX_PLAYERS
  25. #define MAX_PLAYERS 150
  26. #undef MAX_VEHICLES
  27. #define MAX_VEHICLES 2000
  28.  
  29. #define SCM SendClientMessage
  30. #define SPD ShowPlayerDialog
  31. #define DSI DIALOG_STYLE_INPUT
  32.  
  33. #define DIALOG_RENT 1
  34. #define DIALOG_CREATERENT 2
  35.  
  36. // = • ENUM • = //
  37.  
  38. enum rInfo
  39. {
  40. Float:PosX,
  41. Float:PosY,
  42. Float:PosZ,
  43. rModel,
  44. Float:RotA,
  45. Boja1,
  46. Boja2
  47. }
  48. enum sInfo
  49. {
  50. KreiraniRent
  51. }
  52.  
  53. // = • NEW • = //
  54.  
  55. new RentInfo[ MAX_RENT ][ rInfo ];
  56. new bool:RentaoVozilo[ MAX_PLAYERS ];
  57. new bool:RentanoVozilo[ MAX_VEHICLES ];
  58. new ServerInfo[ sInfo ];
  59. new Rentano[ MAX_PLAYERS ];
  60. new RentTimer[ MAX_PLAYERS ];
  61. new pravljenirent;
  62.  
  63. // = • PUBLICS • = //
  64.  
  65. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  66. {
  67. if(dialogid == DIALOG_CREATERENT)
  68. {
  69. if(response)
  70. {
  71. new model, boja1, boja2, Float:X,Float:Y,Float:Z,Float:A;
  72. GetPlayerPos(playerid, X,Y,Z);
  73. GetPlayerFacingAngle(playerid, A);
  74. if(sscanf(inputtext, "ddd", model, boja1, boja2)) return SPD(playerid, DIALOG_CREATERENT, DSI, "KREIRANJE RENT","Unesite ID Rent vozila, Boju vozila 1, Boju vozila 2","U redu","Izlaz");
  75. if(model < 400 || model > 611) { SPD(playerid, DIALOG_CREATERENT, DSI, "KREIRANJE RENT","Unesite ID Rent vozila, Boju vozila 1, Boju vozila 2","U redu","Izlaz"); SCM(playerid, -1, "Model vozila ne moze biti manji od 400 ili veci od 611."); }
  76. SetPlayerPos(playerid, X+1.5, Y, Z);
  77. pravljenirent = CreateVehicle(model, X,Y,Z, A, boja1, boja2, -1);
  78. RentInfo[ pravljenirent ][ PosX ] = X;
  79. RentInfo[ pravljenirent ][ PosY ] = Y;
  80. RentInfo[ pravljenirent ][ PosZ ] = Z;
  81. RentInfo[ pravljenirent ][ RotA ] = A;
  82. RentInfo[ pravljenirent ][ Boja1 ] = boja1;
  83. RentInfo[ pravljenirent ][ Boja2 ] = boja2;
  84. RentInfo[ pravljenirent ][ rModel ] = model;
  85. SaveRent(pravljenirent);
  86. SCM(playerid, -1, "Kreirali ste RENT Vozilo.");
  87. }
  88. }
  89. else if(dialogid == DIALOG_RENT)
  90. {
  91. if(!response) { RemovePlayerFromVehicle(playerid); TogglePlayerControllable(playerid, 1); }
  92. else if(response)
  93. {
  94. new vreme;
  95. if(sscanf(inputtext, "d", vreme)) return SPD(playerid, DIALOG_RENT, DSI, "RENT","Upisite vreme renta. 1 minut = 10$","U redu","Izlaz");
  96. if(vreme < 1 || vreme > 60) { SPD(playerid, DIALOG_RENT, DSI, "RENT","Upisite vreme renta. 1 minut = 10$","U redu","Izlaz"); SCM(playerid, -1, "Rent vreme ne moze biti manje od 1 ili vece od 60 !"); }
  97. if(vreme*10 > GetPlayerMoney(playerid)) { SPD(playerid, DIALOG_RENT, DSI, "RENT","Upisite vreme renta. 1 minut = 10$","U redu","Izlaz"); SCM(playerid, -1, "Nemate dovoljno novca za to vreme."); }
  98. RentaoVozilo[ playerid ] = true;
  99. RentanoVozilo[ GetPlayerVehicleID(playerid) ] = true;
  100. TogglePlayerControllable(playerid, 1);
  101. Rentano[ playerid ] = GetPlayerVehicleID(playerid);
  102. GivePlayerMoney(playerid, -vreme*10);
  103. SCM(playerid, -1, "Iznajmili ste vozilo.");
  104. RentTimer[ playerid ] = SetTimerEx("RentVreme", vreme*60000, false, "i", playerid);
  105. }
  106. }
  107. return 1;
  108. }
  109. public OnPlayerStateChange(playerid, newstate, oldstate)
  110. {
  111. if(newstate == PLAYER_STATE_DRIVER) { if(Rentano[ playerid ] != GetPlayerVehicleID(playerid)) { TogglePlayerControllable(playerid, 0); SCM(playerid, -1, "Da iznajmite vozilo kucajte - /rent"); } }
  112. return 1;
  113. }
  114. forward RentVreme(playerid, vehicleid);
  115. public RentVreme(playerid, vehicleid)
  116. {
  117. Rentano[ playerid ] = -1;
  118. RentaoVozilo[ playerid ] = false;
  119. SetVehicleToRespawn(Rentano[ playerid ]);
  120. LinkVehicleToInterior(Rentano[ playerid ], 0);
  121. RentanoVozilo[ Rentano[ playerid ] ] = false;
  122. SCM(playerid, -1, "Isteklo je vreme renta. Vozilo je vraceno.");
  123. return true;
  124. }
  125. forward LoadRent(id, name[], value[]);
  126. public LoadRent(id, name[], value[])
  127. {
  128. INI_Float("Lokacija X", RentInfo[ id ][ PosX ]);
  129. INI_Float("Lokacija Y", RentInfo[ id ][ PosY ]);
  130. INI_Float("Lokacija Z", RentInfo[ id ][ PosZ ]);
  131. INI_Float("Rotacija A", RentInfo[ id ][ RotA ]);
  132. INI_Int("Model Vozila", RentInfo[ id ][ rModel ]);
  133. INI_Int("Boja 1", RentInfo[ id ][ Boja1 ]);
  134. INI_Int("Boja 2", RentInfo[ id ][ Boja2 ]);
  135. return 1;
  136. }
  137. public OnFilterScriptInit()
  138. {
  139. LoadRents();
  140. return 1;
  141. }
  142.  
  143. // = • CMD • = //
  144.  
  145. YCMD:kreirajrent(playerid, params[], help)
  146. {
  147. #pragma unused help
  148. #pragma unused params
  149. if(IsPlayerAdmin(playerid))
  150. {
  151. if(ServerInfo[ KreiraniRent ] >= MAX_RENT) return SCM(playerid, -1, "Prestigli ste limit.");
  152. SPD(playerid, DIALOG_CREATERENT, DSI, "KREIRANJE RENT","Unesite ID Rent vozila, Boju vozila 1, Boju vozila 2","U redu","Izlaz");
  153. }
  154. return 1;
  155. }
  156. YCMD:rent(playerid, params[], help)
  157. {
  158. #pragma unused help
  159. #pragma unused params
  160. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SCM(playerid, -1, "Niste na mestu vozaca.");
  161. if(Rentano[ playerid ] == GetPlayerVehicleID(playerid)) return SCM(playerid, -1, "Niste u rent vozilu !");
  162. if(RentaoVozilo[ playerid ]) return SCM(playerid, -1, "Vec ste iznajmili vozilo.");
  163. if(RentanoVozilo[ GetPlayerVehicleID(playerid) ]) return SCM(playerid, -1, "To vozilo je vec rentano.");
  164. SPD(playerid, DIALOG_RENT, DSI, "RENT","Upisite vreme renta. 1 minut = 10$","U redu","Izlaz");
  165. TogglePlayerControllable(playerid, 0);
  166. return 1;
  167. }
  168. YCMD:unrent(playerid, params[], help)
  169. {
  170. #pragma unused help
  171. #pragma unused params
  172. if(!RentaoVozilo[ playerid ]) return SCM(playerid, -1, "Niste iznajmili vozilo.");
  173. KillTimer(RentTimer[ playerid ]);
  174. SetVehicleToRespawn(Rentano[ playerid ]);
  175. RentaoVozilo[ playerid ] = false;
  176. RentanoVozilo[ Rentano[ playerid ] ] = false;
  177. Rentano[ playerid ] = -1;
  178. SCM(playerid, -1, "Vratili ste iznamljeno vozilo.");
  179. return 1;
  180. }
  181.  
  182. // = • STOCK • = //
  183.  
  184. stock SaveRent( id )
  185. {
  186. new rFile[ 60 ];
  187. format(rFile, sizeof(rFile), RENT_FILE, id);
  188. new INI:File = INI_Open(rFile);
  189. INI_WriteFloat(File, "Pozicija X", RentInfo[ id ][ PosX ]);
  190. INI_WriteFloat(File, "Pozicija Y", RentInfo[ id ][ PosY ]);
  191. INI_WriteFloat(File, "Pozicija Z", RentInfo[ id ][ PosZ ]);
  192. INI_WriteFloat(File, "Rotacija A", RentInfo[ id ][ RotA ]);
  193. INI_WriteInt(File, "Model Vozila", RentInfo[ id ][ rModel ]);
  194. INI_WriteInt(File, "Boja 1", RentInfo[ id ][ Boja1 ]);
  195. INI_WriteInt(File, "Boja 2", RentInfo[ id ][ Boja2 ]);
  196. INI_Close(File);
  197. return 1;
  198. }
  199. stock LoadRents()
  200. {
  201. for(new i = 1; i < MAX_RENT; i++)
  202. {
  203. new rFile[50];
  204. format(rFile, sizeof(rFile), RENT_FILE, i);
  205. if(fexist(rFile))
  206. {
  207. INI_ParseFile(rFile, "LoadRent", .bExtra = true, .extra = i);
  208. pravljenirent = CreateVehicle(RentInfo[ i ][ rModel ], RentInfo[ i ][ PosX ],RentInfo[ i ][ PosY ],RentInfo[ i ][ PosZ ], RentInfo[ i ][ RotA ], RentInfo[ i ][ Boja1 ], RentInfo[ i ][ Boja2 ], -1);
  209. }
  210. }
  211. return 1;
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement