Advertisement
Guest User

Untitled

a guest
Dec 10th, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.49 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. new Text3D:RentLabel[ sizeof(RentInfo) ];
  63.  
  64. // = • PUBLICS • = //
  65.  
  66. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  67. {
  68. if(dialogid == DIALOG_CREATERENT)
  69. {
  70. if(response)
  71. {
  72. new model, boja1, boja2, Float:X,Float:Y,Float:Z,Float:A;
  73. GetPlayerPos(playerid, X,Y,Z);
  74. GetPlayerFacingAngle(playerid, A);
  75. 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");
  76. 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."); }
  77. SetPlayerPos(playerid, X+1.5, Y, Z);
  78. pravljenirent = CreateVehicle(model, X,Y,Z, A, boja1, boja2, -1);
  79. RentInfo[ pravljenirent ][ PosX ] = X;
  80. RentInfo[ pravljenirent ][ PosY ] = Y;
  81. RentInfo[ pravljenirent ][ PosZ ] = Z;
  82. RentInfo[ pravljenirent ][ RotA ] = A;
  83. RentInfo[ pravljenirent ][ Boja1 ] = boja1;
  84. RentInfo[ pravljenirent ][ Boja2 ] = boja2;
  85. RentInfo[ pravljenirent ][ rModel ] = model;
  86. RentLabel[ pravljenirent ] = Create3DTextLabel("{FF1414}[ RENT ]\n{FFFFFF}Cena: {FF1414}1 minut = 10$", 0x008080FF, 30.0, 40.0, 50.0, 40.0, 0, 0);
  87. Attach3DTextLabelToVehicle(RentLabel[ pravljenirent ], pravljenirent, 0.0, 0.0, 0.0);
  88. SaveRent(pravljenirent);
  89. SCM(playerid, -1, "Kreirali ste RENT Vozilo.");
  90. }
  91. }
  92. else if(dialogid == DIALOG_RENT)
  93. {
  94. if(!response) { RemovePlayerFromVehicle(playerid); TogglePlayerControllable(playerid, 1); }
  95. else if(response)
  96. {
  97. new vreme;
  98. if(sscanf(inputtext, "d", vreme)) return SPD(playerid, DIALOG_RENT, DSI, "RENT","Upisite vreme renta. 1 minut = 10$","U redu","Izlaz");
  99. 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 !"); }
  100. else 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."); }
  101. RentaoVozilo[ playerid ] = true;
  102. RentanoVozilo[ GetPlayerVehicleID(playerid) ] = true;
  103. TogglePlayerControllable(playerid, 1);
  104. Rentano[ playerid ] = GetPlayerVehicleID(playerid);
  105. GivePlayerMoney(playerid, -vreme*10);
  106. SCM(playerid, -1, "Iznajmili ste vozilo.");
  107. RentTimer[ playerid ] = SetTimerEx("RentVreme", vreme*60000, false, "i", playerid);
  108. }
  109. }
  110. return 1;
  111. }
  112. public OnPlayerStateChange(playerid, newstate, oldstate)
  113. {
  114. if(newstate == PLAYER_STATE_DRIVER) { if(Rentano[ playerid ] != GetPlayerVehicleID(playerid)) { TogglePlayerControllable(playerid, 0); SCM(playerid, -1, "Da iznajmite vozilo kucajte - /rent"); } }
  115. return 1;
  116. }
  117. forward RentVreme(playerid, vehicleid);
  118. public RentVreme(playerid, vehicleid)
  119. {
  120. Rentano[ playerid ] = -1;
  121. RentaoVozilo[ playerid ] = false;
  122. SetVehicleToRespawn(Rentano[ playerid ]);
  123. LinkVehicleToInterior(Rentano[ playerid ], 0);
  124. RentanoVozilo[ Rentano[ playerid ] ] = false;
  125. SCM(playerid, -1, "Isteklo je vreme renta. Vozilo je vraceno.");
  126. return true;
  127. }
  128. forward LoadRent(id, name[], value[]);
  129. public LoadRent(id, name[], value[])
  130. {
  131. INI_Float("Lokacija X", RentInfo[ id ][ PosX ]);
  132. INI_Float("Lokacija Y", RentInfo[ id ][ PosY ]);
  133. INI_Float("Lokacija Z", RentInfo[ id ][ PosZ ]);
  134. INI_Float("Rotacija A", RentInfo[ id ][ RotA ]);
  135. INI_Int("Model Vozila", RentInfo[ id ][ rModel ]);
  136. INI_Int("Boja 1", RentInfo[ id ][ Boja1 ]);
  137. INI_Int("Boja 2", RentInfo[ id ][ Boja2 ]);
  138. return 1;
  139. }
  140. public OnFilterScriptInit()
  141. {
  142. LoadRents();
  143. return 1;
  144. }
  145.  
  146. // = • CMD • = //
  147.  
  148. YCMD:kreirajrent(playerid, params[], help)
  149. {
  150. #pragma unused help
  151. #pragma unused params
  152. if(IsPlayerAdmin(playerid))
  153. {
  154. if(ServerInfo[ KreiraniRent ] >= MAX_RENT) return SCM(playerid, -1, "Prestigli ste limit.");
  155. SPD(playerid, DIALOG_CREATERENT, DSI, "KREIRANJE RENT","Unesite ID Rent vozila, Boju vozila 1, Boju vozila 2","U redu","Izlaz");
  156. }
  157. return 1;
  158. }
  159. YCMD:rent(playerid, params[], help)
  160. {
  161. #pragma unused help
  162. #pragma unused params
  163. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SCM(playerid, -1, "Niste na mestu vozaca.");
  164. if(Rentano[ playerid ] == GetPlayerVehicleID(playerid)) return SCM(playerid, -1, "Niste u rent vozilu !");
  165. if(RentaoVozilo[ playerid ]) return SCM(playerid, -1, "Vec ste iznajmili vozilo.");
  166. if(RentanoVozilo[ GetPlayerVehicleID(playerid) ]) return SCM(playerid, -1, "To vozilo je vec rentano.");
  167. SPD(playerid, DIALOG_RENT, DSI, "RENT","Upisite vreme renta. 1 minut = 10$","U redu","Izlaz");
  168. TogglePlayerControllable(playerid, 0);
  169. return 1;
  170. }
  171. YCMD:unrent(playerid, params[], help)
  172. {
  173. #pragma unused help
  174. #pragma unused params
  175. if(!RentaoVozilo[ playerid ]) return SCM(playerid, -1, "Niste iznajmili vozilo.");
  176. KillTimer(RentTimer[ playerid ]);
  177. SetVehicleToRespawn(Rentano[ playerid ]);
  178. RentaoVozilo[ playerid ] = false;
  179. RentanoVozilo[ Rentano[ playerid ] ] = false;
  180. Rentano[ playerid ] = -1;
  181. SCM(playerid, -1, "Vratili ste iznamljeno vozilo.");
  182. return 1;
  183. }
  184.  
  185. // = • STOCK • = //
  186.  
  187. stock SaveRent( id )
  188. {
  189. new rFile[ 60 ];
  190. format(rFile, sizeof(rFile), RENT_FILE, id);
  191. new INI:File = INI_Open(rFile);
  192. INI_WriteFloat(File, "Pozicija X", RentInfo[ id ][ PosX ]);
  193. INI_WriteFloat(File, "Pozicija Y", RentInfo[ id ][ PosY ]);
  194. INI_WriteFloat(File, "Pozicija Z", RentInfo[ id ][ PosZ ]);
  195. INI_WriteFloat(File, "Rotacija A", RentInfo[ id ][ RotA ]);
  196. INI_WriteInt(File, "Model Vozila", RentInfo[ id ][ rModel ]);
  197. INI_WriteInt(File, "Boja 1", RentInfo[ id ][ Boja1 ]);
  198. INI_WriteInt(File, "Boja 2", RentInfo[ id ][ Boja2 ]);
  199. INI_Close(File);
  200. return 1;
  201. }
  202. stock LoadRents()
  203. {
  204. for(new i = 1; i < MAX_RENT; i++)
  205. {
  206. new rFile[50];
  207. format(rFile, sizeof(rFile), RENT_FILE, i);
  208. if(fexist(rFile))
  209. {
  210. INI_ParseFile(rFile, "LoadRent", .bExtra = true, .extra = i);
  211. pravljenirent = CreateVehicle(RentInfo[ i ][ rModel ], RentInfo[ i ][ PosX ],RentInfo[ i ][ PosY ],RentInfo[ i ][ PosZ ], RentInfo[ i ][ RotA ], RentInfo[ i ][ Boja1 ], RentInfo[ i ][ Boja2 ], -1);
  212. }
  213. }
  214. return 1;
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement