Guest User

Untitled

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