Advertisement
Guest User

UPDATE

a guest
Dec 22nd, 2017
491
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.34 KB | None | 0 0
  1. /*
  2. Dynamic Rob Bank System
  3. By Shomy
  4. Potreban folder "Robs" u scriptfiles
  5.  
  6. */
  7.  
  8. // = Include
  9.  
  10. #include < a_samp >
  11. #include < YSI\y_ini >
  12. #include < YSI\y_commands >
  13. #include < sscanf2 >
  14.  
  15. // = Define
  16.  
  17. #define MAX_ROBS 5
  18. #define MAX_ALAT 5
  19. #undef MAX_PLAYERS
  20. #define MAX_PLAYERS 50 // Prilagoditi
  21.  
  22. #define ROB_FILE "/Robs/%d.ini"
  23. #define ALAT_FILE "/Alati/%d.ini"
  24.  
  25. #define SCM SendClientMessage
  26. #define SCMTA SendClientMessageToAll
  27.  
  28. #define MONEY_MIN 10000
  29. #define MONEY_MAX 30000
  30.  
  31.  
  32. // = Enum
  33.  
  34. enum rInfo
  35. {
  36. Float:PosX,
  37. Float:PosY,
  38. Float:PosZ,
  39. RobVreme
  40. }
  41. enum aInfo
  42. {
  43. Float:PosX,
  44. Float:PosY,
  45. Float:PosZ,
  46. Cena
  47. }
  48.  
  49. // = News
  50.  
  51. new RobInfo[ MAX_ROBS ][ rInfo ];
  52. new Text3D:RobLabel[ sizeof(RobInfo) ];
  53. new KreiraniRobovi = 0;
  54. new KreiraniAlati = 0;
  55. new PreostaloVreme[ MAX_PLAYERS ];
  56. new PlayerText:RobTD[MAX_PLAYERS][1];
  57. new bool:RobUToku;
  58. new RobTimer[ MAX_PLAYERS ];
  59. new bool:OpljackanaBanka;
  60. new AlatInfo[ MAX_ALAT ][ aInfo ];
  61. new AlatPickup[ sizeof(AlatInfo) ];
  62. new Text3D:AlatLabel[ sizeof(AlatInfo) ];
  63. new bool:PosedujeAlat[ MAX_PLAYERS ];
  64.  
  65. // = Publics
  66.  
  67. forward Pljackana(id);
  68. public Pljackana(id)
  69. {
  70. OpljackanaBanka = false;
  71. return 1;
  72. }
  73. forward Rob(playerid, id);
  74. public Rob(playerid, id)
  75. {
  76. PreostaloVreme[ playerid ] -= 1;
  77. new str[ 25 ], dobijeninovac;
  78. PlayAnim(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0, 1);
  79. PlayerTextDrawShow(playerid, RobTD[ playerid ][ 0 ]);
  80. PosedujeAlat[ playerid ] = false;
  81. format(str,sizeof(str), "Preostalo vreme: %d", PreostaloVreme[ playerid ]);
  82. PlayerTextDrawSetString(playerid, RobTD[ playerid ][ 0 ], str);
  83. if(PreostaloVreme[ playerid ] == 0)
  84. {
  85. KillTimer(RobTimer[ playerid ]);
  86. dobijeninovac = RandomEx(MONEY_MIN, MONEY_MAX), GivePlayerMoney(playerid, dobijeninovac);
  87. TogglePlayerControllable(playerid, 1);
  88. ClearAnimations(playerid);
  89. SetTimer("Pljackana", 600000, false);
  90. PlayerTextDrawHide(playerid, RobTD[ playerid ][ 0 ]);
  91. new str1[ 50 ];
  92. format(str1,sizeof(str1), "Uspesno ste opljackali %d$ iz banke.", dobijeninovac);
  93. SCM(playerid, -1, str1);
  94. RobUToku = false;
  95. OpljackanaBanka = true;
  96. }
  97. return 1;
  98. }
  99. public OnPlayerConnect(playerid)
  100. {
  101. RobTD[playerid][0] = CreatePlayerTextDraw(playerid, 232.117645, 27.250003, "Preostalo_vreme_-_60s");
  102. PlayerTextDrawLetterSize(playerid, RobTD[playerid][0], 0.400000, 1.600000);
  103. PlayerTextDrawAlignment(playerid, RobTD[playerid][0], 1);
  104. PlayerTextDrawColor(playerid, RobTD[playerid][0], -1);
  105. PlayerTextDrawSetShadow(playerid, RobTD[playerid][0], 0);
  106. PlayerTextDrawSetOutline(playerid, RobTD[playerid][0], 1);
  107. PlayerTextDrawBackgroundColor(playerid, RobTD[playerid][0], 255);
  108. PlayerTextDrawFont(playerid, RobTD[playerid][0], 1);
  109. PlayerTextDrawSetProportional(playerid, RobTD[playerid][0], 1);
  110. PlayerTextDrawSetShadow(playerid, RobTD[playerid][0], 0);
  111. return 1;
  112. }
  113.  
  114. // = CMDS
  115.  
  116. YCMD:kreirajrob(playerid, params[], help)
  117. {
  118. #pragma unused help
  119. new vreme, Float:X, Float:Y, Float:Z;
  120. if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin.");
  121. if(KreiraniRobovi > MAX_ROBS) return SCM(playerid, -1, "Prestigli ste limit.");
  122. if(sscanf(params, "d", vreme)) return SCM(playerid, -1, "Koristite /kreirajrob [ Vreme ( sekunde ) ]");
  123. if(vreme < 60 || vreme > 200) return SCM(playerid, -1, "Vreme ne moze biti manje od 60 ili vece od 200.");
  124. GetPlayerPos(playerid, X,Y,Z);
  125. RobLabel[ KreiraniRobovi+1 ] = Create3DTextLabel("/robbank", 0x008080FF, X,Y,Z, 10, 0, 0);
  126. RobInfo[ KreiraniRobovi+1 ][ PosX ] = X;
  127. RobInfo[ KreiraniRobovi+1 ][ PosY ] = Y;
  128. RobInfo[ KreiraniRobovi+1 ][ PosZ ] = Z;
  129. RobInfo[ KreiraniRobovi+1 ][ RobVreme ] = vreme;
  130. SaveRob(KreiraniRobovi+1);
  131. KreiraniRobovi++;
  132. return 1;
  133. }
  134. YCMD:robbank(playerid, params[], help)
  135. {
  136. #pragma unused help
  137. if(RobUToku) return SCM(playerid, -1, "Rob banke je vec u toku.");
  138. for(new i; i < MAX_ROBS; i++)
  139. {
  140. if(IsPlayerInRangeOfPoint(playerid, 2.0, RobInfo[ i ][ PosX ], RobInfo[ i ][ PosY ], RobInfo[ i ][ PosZ ]))
  141. {
  142. if(!OpljackanaBanka)
  143. {
  144. if(PosedujeAlat[ playerid ])
  145. {
  146. RobTimer[ playerid ] = SetTimerEx("Rob", 1000, true, "i", playerid);
  147. PreostaloVreme[ playerid ] = RobInfo[ i ][ RobVreme ];
  148. SCMTA(-1, "[ROB] Pljacka banke u toku. Mole se gradjani da se ne priblizavaju banci.");
  149. RobUToku = true;
  150. TogglePlayerControllable(playerid, 0);
  151. }
  152. else return SCM(playerid, -1, "Ne posedujete alat za pljackanje banke.");
  153. }
  154. else return SCM(playerid, -1, "Nije proslo 10 minuta od pljackanja banke.");
  155. }
  156. }
  157. return 1;
  158. }
  159. YCMD:kreirajalatmesto(playerid, params[], help)
  160. {
  161. #pragma unused help
  162. if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin.");
  163. if(KreiraniAlati > MAX_ALAT) return SCM(playerid, -1, "Prestigli ste limit.");
  164. new cena, Float:X, Float:Y, Float:Z;
  165. if(sscanf(params, "d", cena)) return SCM(playerid, -1, "Koristite /kreirajalatmesto [ Cena ]");
  166. if(cena < 1000 || cena > 10000) return SCM(playerid, -1, "Cena alata ne moze biti manja od 1000$ ili veca od 10.000$");
  167. GetPlayerPos(playerid, X,Y,Z);
  168. AlatPickup[ KreiraniAlati+1 ] = CreatePickup(1313, 1, X,Y,Z, -1);
  169. new str[ 50 ];
  170. format(str,sizeof(str), "/kupialat\nCena - {FFFFFF}%d$", cena);
  171. AlatLabel[ KreiraniAlati+1 ] = Create3DTextLabel(str, 0x008080FF, X,Y,Z, 10, 0, 0);
  172. AlatInfo[ KreiraniAlati+1 ][ PosX ] = X;
  173. AlatInfo[ KreiraniAlati+1 ][ PosY ] = Y;
  174. AlatInfo[ KreiraniAlati+1 ][ PosZ ] = Z;
  175. AlatInfo[ KreiraniAlati+1 ][ Cena ] = cena;
  176. SaveAlat(KreiraniAlati+1);
  177. KreiraniAlati++;
  178. return 1;
  179. }
  180. YCMD:kupialat(playerid, params[], help)
  181. {
  182. #pragma unused help
  183. #pragma unused params
  184. for(new i; i < MAX_ALAT; i++)
  185. {
  186. if(!PosedujeAlat[ playerid ])
  187. {
  188. if(IsPlayerInRangeOfPoint(playerid, 2.0, AlatInfo[ i ][ PosX ], AlatInfo[ i ][ PosY ], AlatInfo[ i ][ PosZ ]))
  189. {
  190. if(GetPlayerMoney(playerid) >= AlatInfo[ i ][ Cena ])
  191. {
  192. GivePlayerMoney(playerid, -AlatInfo[ i ][ Cena ]);
  193. PosedujeAlat[ playerid ] = true;
  194. SCM(playerid, -1, "Kupili ste alat za pljacku banke.");
  195. }
  196. }
  197. }
  198. }
  199. return 1;
  200. }
  201. YCMD:test(playerid, params[], help) return GivePlayerMoney(playerid, 10000);
  202.  
  203. // = Stocks
  204.  
  205. stock SaveRob(id)
  206. {
  207. new rFile[ 60 ];
  208. format(rFile, sizeof(rFile), ROB_FILE, id);
  209. new INI:File = INI_Open(rFile);
  210. INI_WriteFloat(File, "Lokacija X", RobInfo[ id ][ PosX ]);
  211. INI_WriteFloat(File, "Lokacija Y", RobInfo[ id ][ PosY ]);
  212. INI_WriteFloat(File, "Lokacija Z", RobInfo[ id ][ PosZ ]);
  213. INI_WriteInt(File, "Rob Vreme", RobInfo[ id ][ RobVreme ]);
  214. INI_Close(File);
  215. return 1;
  216. }
  217. stock SaveAlat(id)
  218. {
  219. new rFile[ 60 ];
  220. format(rFile, sizeof(rFile), ALAT_FILE, id);
  221. new INI:File = INI_Open(rFile);
  222. INI_WriteFloat(File, "Lokacija X", AlatInfo[ id ][ PosX ]);
  223. INI_WriteFloat(File, "Lokacija Y", AlatInfo[ id ][ PosY ]);
  224. INI_WriteFloat(File, "Lokacija Z", AlatInfo[ id ][ PosZ ]);
  225. INI_WriteInt(File, "Cena", AlatInfo[ id ][ Cena ]);
  226. INI_Close(File);
  227. return 1;
  228. }
  229.  
  230. // = Funkcije
  231.  
  232. RandomEx(min,max) { // NIJE MOJA FUNKCIJA
  233. return (min+random(max));
  234. }
  235.  
  236. PlayAnim(playerid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time, forcesync)
  237. {
  238. ApplyAnimation(playerid, animlib, animname, fDelta, loop, lockx, locky, freeze, time, forcesync);
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement