Advertisement
Guest User

Dynamic Robbery System by Tony

a guest
Apr 1st, 2015
1,273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.64 KB | None | 0 0
  1. ////////////////////////////////////////////////////////////////////////////////
  2. ////////////////////////////Dynamic Robbery System////////////////////////////
  3. ///////////////////////////////////By Tony//////////////////////////////////////
  4. //////////////////////////////Created: 15.3.2015////////////////////////////////
  5. /////////////////////////Please don't remove credits////////////////////////////
  6. ////////////////////////////////////////////////////////////////////////////////
  7.  
  8. #include <a_samp>
  9. #include <zcmd>
  10. #include <YSI\y_ini>
  11. #include <streamer>
  12. #include <sscanf2>
  13.  
  14. #define DIALOG_PLJHELP 6968
  15. #define DIALOG_PLJACKA 6967
  16. #define DIALOG_UREDJIVANJEPLJ 6966
  17. #define DIALOG_TIMERI 6965
  18. #define DIALOG_TIMER1 6964
  19. #define SPLAVA "{00C0FF}"
  20. #define SIVA "{C0C0C0}"
  21. #define CRVENA "{F81414}"
  22. #define BIJELA "{FFFFFF}"
  23. #define PPLAVA "{0084e3}"
  24. #define ZUTA "{F3FF02}"
  25. #define SCRVENA 0xFF6347AA
  26. #define PLAVA 0x00C0FFAA
  27. #define PLJ_FILE "Robbery/%d.ini" //Robbery file
  28. #define SCM SendClientMessage
  29. //Things that you can change
  30. #define MAX_PLJACKI 50 //Max robbery
  31.  
  32. new timi[MAX_PLAYERS];
  33. new PljBrojanje[MAX_PLAYERS];
  34. new BankaOpljackana[MAX_PLJACKI] = 0;
  35. new Bomb[MAX_PLAYERS];
  36. new Float:bx[MAX_PLAYERS],Float:by[MAX_PLAYERS],Float:bz[MAX_PLAYERS],Float:bab[MAX_PLAYERS];
  37. new PozVrata[MAX_PLAYERS];
  38. new RobId[MAX_PLAYERS];
  39. new PljPickup[MAX_PLJACKI];
  40. new PljPickup2[MAX_PLJACKI];
  41. new Text3D:PljLabel[MAX_PLJACKI];
  42. new Text3D:PljLabel2[MAX_PLJACKI];
  43. new Text3D:PljLabel3[MAX_PLJACKI];
  44. new Izbor[MAX_PLAYERS];
  45.  
  46. enum PljInfo
  47. {
  48. Float: zX,
  49. Float: zY,
  50. Float: zZ,
  51. Float: zA,
  52. Float: zRX,
  53. Float: zRY,
  54. Float: oX,
  55. Float: oY,
  56. Float: oZ,
  57. Float: oA,
  58. Float: oRX,
  59. Float: oRY,
  60. Float: boX,
  61. Float: boY,
  62. Float: boZ,
  63. Float: pX,
  64. Float: pY,
  65. Float: pZ,
  66. vInt,
  67. vVW,
  68. Vrata,
  69. vPostavljena,
  70. VRIJEMEPLJACKE,
  71. VRACANJEPLJACKE,
  72. BOMBATIMER,
  73. PLANTTIMER
  74. }
  75. new Robbery[MAX_PLJACKI][PljInfo];
  76.  
  77. enum playInfo
  78. {
  79. pBomb
  80. }
  81. new PlayerInfo[MAX_PLAYERS][playInfo];
  82.  
  83. stock CreateDoors(idp,vr)
  84. {
  85. if(Robbery[idp][vPostavljena] == 1)
  86. {
  87. if(vr==1)
  88. {
  89. Robbery[idp][Vrata] = CreateDynamicObject(2634, Robbery[idp][zX], Robbery[idp][zY], Robbery[idp][zZ], Robbery[idp][zRX], Robbery[idp][zRY], Robbery[idp][zA], Robbery[idp][vVW], Robbery[idp][vInt],_,_);
  90. }
  91. else if(vr==2)
  92. {
  93. Robbery[idp][Vrata] = CreateDynamicObject(2634, Robbery[idp][oX], Robbery[idp][oY], Robbery[idp][oZ], Robbery[idp][oRX], Robbery[idp][oRY], Robbery[idp][oA], Robbery[idp][vVW], Robbery[idp][vInt],_,_);
  94. }
  95. }
  96. return 1;
  97. }
  98. stock getEmptyID(const len, const lokacija[])
  99. {
  100. new id = (-1);
  101. for(new loop = (0), provjera = (-1), Data_[64] = "\0"; loop != len; ++ loop)
  102. {
  103. provjera = (loop+1);
  104. format(Data_, (sizeof Data_), lokacija ,provjera);
  105. if(!fexist(Data_))
  106. {
  107. id = (provjera);
  108. break;
  109. }
  110. }
  111. return (id);
  112. }
  113. stock GetName(playerid)
  114. {
  115. new name[MAX_PLAYER_NAME];
  116. GetPlayerName(playerid, name, sizeof(name));
  117. return name;
  118. }
  119. forward LoadRobbery(idp,name[],value[]);
  120. public LoadRobbery(idp,name[],value[])
  121. {
  122. INI_Int("VRIJEMEPLJACKE", Robbery[idp][VRIJEMEPLJACKE]);
  123. INI_Int("VRACANJEPLJACKE", Robbery[idp][VRACANJEPLJACKE]);
  124. INI_Int("BOMBATIMER", Robbery[idp][BOMBATIMER]);
  125. INI_Int("PLANTTIMER", Robbery[idp][PLANTTIMER]);
  126. INI_Int("vInt", Robbery[idp][vInt]);
  127. INI_Int("vVW", Robbery[idp][vVW]);
  128. INI_Int("vPostavljena", Robbery[idp][vPostavljena]);
  129. INI_Float("zX",Robbery[idp][zX]);
  130. INI_Float("zY",Robbery[idp][zY]);
  131. INI_Float("zZ",Robbery[idp][zZ]);
  132. INI_Float("zRX",Robbery[idp][zRX]);
  133. INI_Float("zRY",Robbery[idp][zRY]);
  134. INI_Float("zA",Robbery[idp][zA]);
  135. INI_Float("oX",Robbery[idp][oX]);
  136. INI_Float("oY",Robbery[idp][oY]);
  137. INI_Float("oZ",Robbery[idp][oZ]);
  138. INI_Float("oRX",Robbery[idp][oRX]);
  139. INI_Float("oRY",Robbery[idp][oRY]);
  140. INI_Float("oA",Robbery[idp][oA]);
  141. INI_Float("boX",Robbery[idp][boX]);
  142. INI_Float("boY",Robbery[idp][boY]);
  143. INI_Float("boZ",Robbery[idp][boZ]);
  144. INI_Float("pX",Robbery[idp][pX]);
  145. INI_Float("pY",Robbery[idp][pY]);
  146. INI_Float("pZ",Robbery[idp][pZ]);
  147. return 1;
  148. }
  149. stock SaveRobbery(idp)
  150. {
  151. new playaFile[50]; format(playaFile,50,PLJ_FILE,idp);
  152. new INI:File = INI_Open(playaFile);
  153. INI_SetTag(File,"Pljacka");
  154. INI_WriteInt(File,"VRIJEMEPLJACKE", Robbery[idp][VRIJEMEPLJACKE]);
  155. INI_WriteInt(File,"VRACANJEPLJACKE", Robbery[idp][VRACANJEPLJACKE]);
  156. INI_WriteInt(File,"BOMBATIMER", Robbery[idp][BOMBATIMER]);
  157. INI_WriteInt(File,"PLANTTIMER", Robbery[idp][PLANTTIMER]);
  158. INI_WriteInt(File,"vInt", Robbery[idp][vInt]);
  159. INI_WriteInt(File,"vVW", Robbery[idp][vVW]);
  160. INI_WriteInt(File,"vPostavljena", Robbery[idp][vPostavljena]);
  161. INI_WriteFloat(File,"zX",Robbery[idp][zX]);
  162. INI_WriteFloat(File,"zY",Robbery[idp][zY]);
  163. INI_WriteFloat(File,"zZ",Robbery[idp][zZ]);
  164. INI_WriteFloat(File,"zRX",Robbery[idp][zRX]);
  165. INI_WriteFloat(File,"zRY",Robbery[idp][zRY]);
  166. INI_WriteFloat(File,"zA",Robbery[idp][zA]);
  167. INI_WriteFloat(File,"oX",Robbery[idp][oX]);
  168. INI_WriteFloat(File,"oY",Robbery[idp][oY]);
  169. INI_WriteFloat(File,"oZ",Robbery[idp][oZ]);
  170. INI_WriteFloat(File,"oRX",Robbery[idp][oRX]);
  171. INI_WriteFloat(File,"oRY",Robbery[idp][oRY]);
  172. INI_WriteFloat(File,"oA",Robbery[idp][oA]);
  173. INI_WriteFloat(File,"boX",Robbery[idp][boX]);
  174. INI_WriteFloat(File,"boY",Robbery[idp][boY]);
  175. INI_WriteFloat(File,"boZ",Robbery[idp][boZ]);
  176. INI_WriteFloat(File,"pX",Robbery[idp][pX]);
  177. INI_WriteFloat(File,"pY",Robbery[idp][pY]);
  178. INI_WriteFloat(File,"pZ",Robbery[idp][pZ]);
  179. INI_Close(File);
  180. return 1;
  181. }
  182.  
  183. public OnFilterScriptInit()
  184. {
  185. print("////////////////////////////////////////////////////////////////////////////////");
  186. print("////////////////////////////Dynamic Robbery System//////////////////////////////");
  187. print("///////////////////////////////////By Tony//////////////////////////////////////");
  188. print("//////////////////////////////Created: 15.3.2015////////////////////////////////");
  189. print("/////////////////////////Please don't remove credits////////////////////////////");
  190. print("////////////////////////////////////////////////////////////////////////////////");
  191. for(new i = 0; i < sizeof(Robbery); i++)
  192. {
  193. new oFile[50];
  194. format(oFile, sizeof(oFile), PLJ_FILE, i);
  195. if(fexist(oFile))
  196. {
  197. INI_ParseFile(oFile, "LoadRobbery", .bExtra = true, .extra = i);
  198. PljPickup[i] = CreateDynamicPickup(1239, 1, Robbery[i][pX], Robbery[i][pY], Robbery[i][pZ]);
  199. PljPickup2[i] = CreateDynamicPickup(1252, 1, Robbery[i][boX], Robbery[i][boY], Robbery[i][boZ]);
  200. new string[128];
  201. format(string,sizeof(string),"[ ID:%d ]\nTo rob type /rob",i);
  202. PljLabel[i] = CreateDynamic3DTextLabel(string,0xFF9900BB,Robbery[i][pX],Robbery[i][pY],Robbery[i][pZ], 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 20.0);
  203. PljLabel2[i] = CreateDynamic3DTextLabel("To buy bomb type /buybomb",0xFF9900BB,Robbery[i][boX],Robbery[i][boY],Robbery[i][boZ], 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 20.0);
  204. PljLabel3[i] = CreateDynamic3DTextLabel("To destroy the doors type /destroydoors",0xFF9900BB,Robbery[i][zX],Robbery[i][zY],Robbery[i][zZ], 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 20.0);
  205. if(Robbery[i][vPostavljena] == 1)
  206. {
  207. CreateDoors(i,1);
  208. }
  209. }
  210. }
  211. return 1;
  212. }
  213. public OnFilterScriptExit()
  214. {
  215. for(new a = 0; a < sizeof(Robbery); a++)
  216. {
  217. DestroyDynamicPickup(PljPickup[a]);
  218. DestroyDynamicPickup(PljPickup2[a]);
  219. DestroyDynamic3DTextLabel(PljLabel[a]);
  220. DestroyDynamic3DTextLabel(PljLabel2[a]);
  221. DestroyDynamic3DTextLabel(PljLabel3[a]);
  222. DestroyDynamicObject(Robbery[a][Vrata]);
  223. }
  224. return 1;
  225. }
  226. stock SavePlayer(playerid)
  227. {
  228. new playaFile[30]; format(playaFile,30,"Robbery/Users/%s",GetName(playerid));
  229. new INI:File = INI_Open(playaFile);
  230. INI_SetTag(File,"Bombe");
  231. INI_WriteInt(File,"Bomba", PlayerInfo[playerid][pBomb]);
  232. INI_Close(File);
  233. return 1;
  234. }
  235.  
  236. forward LoadUser_data(playerid,name[],value[]);
  237. public LoadUser_data(playerid,name[],value[])
  238. {
  239. INI_Int("Bomba",PlayerInfo[playerid][pBomb]);
  240. return 1;
  241. }
  242.  
  243. public OnPlayerConnect(playerid)
  244. {
  245. new str[30]; format(str,sizeof(str),"Robbery/Users/%s",GetName(playerid));
  246. if(fexist(str))
  247. {
  248. INI_ParseFile(str, "LoadUser_%s", .bExtra = true, .extra = playerid);
  249. }
  250. return 1;
  251. }
  252.  
  253. forward pljbrojanje(playerid);
  254. public pljbrojanje(playerid)
  255. {
  256. if(PljBrojanje[playerid] != 0)
  257. {
  258. PljBrojanje[playerid]--;
  259. SetTimerEx("pljbrojanje", 1000, false, "i", playerid);
  260. new string[128];
  261. format(string, sizeof(string), "%d seconds left", PljBrojanje[playerid]);
  262. GameTextForPlayer(playerid, string, 500, 3);
  263. }
  264. return 1;
  265. }
  266. forward RobAgain(i);
  267. public RobAgain(i)
  268. {
  269. DestroyDynamicObject(Robbery[i][Vrata]);
  270. CreateDoors(i,1);
  271. BankaOpljackana[i] = 0;
  272. }
  273.  
  274. forward TimeRobbery(playerid);
  275. public TimeRobbery(playerid)
  276. {
  277. new string[128];
  278. new rand = random(16000);
  279. GivePlayerMoney(playerid,rand);
  280. format(string,sizeof(string),"You have successfully robbed %d$",rand);
  281. SCM(playerid,PLAVA,string);
  282. TogglePlayerControllable(playerid,1);
  283. KillTimer(timi[playerid]);
  284. ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,0);
  285. }
  286.  
  287. forward TimerBomb(playerid);
  288. public TimerBomb(playerid)
  289. {
  290. CreateExplosion(bx[playerid],by[playerid],bz[playerid],0,5);
  291. SCM(playerid,PLAVA,"A bomb exploded and doors were broken, you can start looting!");
  292. DestroyObject(Bomb[playerid]);
  293. new id = RobId[playerid];
  294. DestroyDynamicObject(Robbery[id][Vrata]);
  295. CreateDoors(id,2);
  296. RobId[playerid] = -1;
  297. }
  298.  
  299. forward PlantBomb(playerid);
  300. public PlantBomb(playerid)
  301. {
  302. TogglePlayerControllable(playerid,1);
  303. ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,0);
  304. new st[128];
  305. format(st,sizeof(st),"You have set the bomb that will explode in %d seconds, move away before it explodes!",Robbery[RobId[playerid]][BOMBATIMER]);
  306. SCM(playerid,PLAVA,st);
  307. SetTimerEx("TimerBomb",Robbery[RobId[playerid]][BOMBATIMER]*1000,false,"i",playerid);
  308. }
  309.  
  310. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  311. {
  312. if(dialogid == DIALOG_TIMER1)
  313. {
  314. new idp;
  315. new id=RobId[playerid];
  316. if(!response) return 1;
  317. if(sscanf(inputtext,"i",idp))
  318. {
  319. if(Izbor[playerid] == 1)
  320. {
  321. ShowPlayerDialog(playerid, DIALOG_TIMER1, 1, ""BIJELA"Set the duration of the robbery", ""BIJELA"Enter how many minutes you want robbery to last for", "Next", "Cancel");
  322. }
  323. else if(Izbor[playerid] == 2)
  324. {
  325. ShowPlayerDialog(playerid, DIALOG_TIMER1, 1, ""BIJELA"Edit the time before re-looting", ""BIJELA"Enter how many minutes you want to pass before re-looting of this location is available", "Next", "Cancel");
  326. }
  327. else if(Izbor[playerid] == 3)
  328. {
  329. ShowPlayerDialog(playerid, DIALOG_TIMER1, 1, ""BIJELA"Editing the time to explosion", ""BIJELA"Enter the number of seconds you want to pass the explosion of bomb", "Next", "Cancel");
  330. }
  331. else if(Izbor[playerid] == 4)
  332. {
  333. ShowPlayerDialog(playerid, DIALOG_TIMER1, 1, ""BIJELA"Editing the time to plant a bomb", ""BIJELA"Enter the number of seconds you want the player sets the bomb", "Next", "Cancel");
  334. }
  335. }
  336. else
  337. {
  338. switch(Izbor[playerid])
  339. {
  340. case 1:
  341. {
  342. Robbery[id][VRIJEMEPLJACKE] = idp;
  343. SaveRobbery(id);
  344. new st[128];
  345. format(st,sizeof(st),"You have successfully changed during a robbery on %d minutes",idp);
  346. SCM(playerid,PLAVA,st);
  347. }
  348. case 2:
  349. {
  350. Robbery[id][VRACANJEPLJACKE] = idp;
  351. SaveRobbery(id);
  352. new st[128];
  353. format(st,sizeof(st),"You have successfully changed the time to re-looting on %d minutes",idp);
  354. SCM(playerid,PLAVA,st);
  355. }
  356. case 3:
  357. {
  358. Robbery[id][BOMBATIMER] = idp;
  359. SaveRobbery(id);
  360. new st[128];
  361. format(st,sizeof(st),"You have successfully changed during an explosion on %d seconds",idp);
  362. SCM(playerid,PLAVA,st);
  363. }
  364. case 4:
  365. {
  366. Robbery[id][PLANTTIMER] = idp;
  367. SaveRobbery(id);
  368. new st[128];
  369. format(st,sizeof(st),"You have successfully changed the time to plant a bomb on %d seconds",idp);
  370. SCM(playerid,PLAVA,st);
  371. }
  372. }
  373. }
  374. }
  375. if(dialogid == DIALOG_TIMERI)
  376. {
  377. if(!response) return 1;
  378. switch(listitem)
  379. {
  380. case 0:
  381. {
  382. Izbor[playerid] = 1;
  383. ShowPlayerDialog(playerid, DIALOG_TIMER1, 1, ""BIJELA"Set the duration of the robbery", ""BIJELA"Enter how many minutes you want robbery to last for", "Next", "Cancel");
  384. }
  385. case 1:
  386. {
  387. Izbor[playerid] = 2;
  388. ShowPlayerDialog(playerid, DIALOG_TIMER1, 1, ""BIJELA"Edit the time before re-looting", ""BIJELA"Enter how many minutes you want to pass before re-looting of this location is available", "Next", "Cancel");
  389. }
  390. case 2:
  391. {
  392. Izbor[playerid] = 3;
  393. ShowPlayerDialog(playerid, DIALOG_TIMER1, 1, ""BIJELA"Editing the time to explosion", ""BIJELA"Enter the number of seconds you want to pass the explosion of bomb", "Next", "Cancel");
  394. }
  395. case 3:
  396. {
  397. Izbor[playerid] = 4;
  398. ShowPlayerDialog(playerid, DIALOG_TIMER1, 1, ""BIJELA"Editing the time to plant a bomb", ""BIJELA"Enter the number of seconds you want the player sets the bomb", "Next", "Cancel");
  399. }
  400. }
  401. }
  402. if(dialogid == DIALOG_UREDJIVANJEPLJ)
  403. {
  404. if(!response) return 1;
  405. new Float:x,Float:y,Float:z;
  406. new id=RobId[playerid];
  407. switch(listitem)
  408. {
  409. case 0:
  410. {
  411. new Float:X,Float:Y,Float:Z,Float:Angle,Float:RX,Float:RY;
  412. GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
  413. Robbery[id][vPostavljena] = 1;
  414. Robbery[id][zA] = Angle;
  415. Robbery[id][zX] = X;
  416. Robbery[id][zY] = Y;
  417. Robbery[id][zZ] = Z;
  418. Robbery[id][zRX] = RX;
  419. Robbery[id][zRY] = RY;
  420. Robbery[id][vInt] = GetPlayerInterior(playerid);
  421. Robbery[id][vVW] = GetPlayerVirtualWorld(playerid);
  422. CreateDoors(id,1); SaveRobbery(id); SCM(playerid,PLAVA,"Position of the door you can edit with /editrobbery!");
  423. }
  424. case 1:
  425. {
  426. GetPlayerPos(playerid,x,y,z);
  427. Robbery[id][boX]=x;
  428. Robbery[id][boY]=y;
  429. Robbery[id][boZ]=z;
  430. SaveRobbery(id);
  431. DestroyDynamicPickup(PljPickup2[id]);
  432. DestroyDynamic3DTextLabel(PljLabel2[id]);
  433. PljPickup2[id] = CreateDynamicPickup(1252, 1, Robbery[id][boX], Robbery[id][boY], Robbery[id][boZ]);
  434. PljLabel2[id] = CreateDynamic3DTextLabel("To buy bomb type /buybomb",0xFF9900BB,Robbery[id][boX],Robbery[id][boY],Robbery[id][boZ], 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 20.0);
  435. }
  436. case 2:
  437. {
  438. GetPlayerPos(playerid,x,y,z);
  439. Robbery[id][pX]=x;
  440. Robbery[id][pY]=y;
  441. Robbery[id][pZ]=z;
  442. SaveRobbery(id);
  443. DestroyDynamicPickup(PljPickup[id]);
  444. DestroyDynamic3DTextLabel(PljLabel[id]);
  445. PljPickup[id] = CreateDynamicPickup(1239, 1, Robbery[id][pX], Robbery[id][pY], Robbery[id][pZ]);
  446. new string[128];
  447. format(string,sizeof(string),"[ ID:%d ]\nTo rob type /rob",id);
  448. PljLabel[id] = CreateDynamic3DTextLabel(string,0xFF9900BB,Robbery[id][pX],Robbery[id][pY],Robbery[id][pZ], 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 20.0);
  449. }
  450. case 3:
  451. {
  452. PozVrata[playerid] = 1;
  453. EditDynamicObject(playerid,Robbery[id][Vrata]);
  454. }
  455. case 4:
  456. {
  457. PozVrata[playerid] = 2;
  458. EditDynamicObject(playerid,Robbery[id][Vrata]);
  459. }
  460. case 5:
  461. {
  462. Robbery[id][vPostavljena] = 0;
  463. DestroyDynamicObject(Robbery[id][Vrata]);
  464. DestroyDynamic3DTextLabel(PljLabel3[id]);
  465. }
  466. case 6:
  467. {
  468. ShowPlayerDialog(playerid, DIALOG_TIMERI, DIALOG_STYLE_LIST, "Editing timers", "Duration robbery\nTime to re-looting\nTime to explosion of bomb\nTime to plant a bomb", "OK", "Cancel");
  469. }
  470. }
  471. }
  472. if(dialogid == DIALOG_PLJACKA)
  473. {
  474. new idp;
  475. if(!response) return 1;
  476. if(sscanf(inputtext,"i",idp)) return ShowPlayerDialog(playerid, DIALOG_PLJACKA, 1, ""BIJELA"Editing", ""BIJELA"Enter ID robbery to edit", "Next", "Cancel");
  477. new oFile[50];
  478. format(oFile, sizeof(oFile), PLJ_FILE, idp);
  479. if(!fexist(oFile))return ShowPlayerDialog(playerid, DIALOG_PLJACKA, 1, ""BIJELA"Editing", ""BIJELA"Enter ID robbery to edit", "Next", "Cancel");
  480. RobId[playerid] = idp;
  481. SendClientMessage(playerid,SCRVENA,"Coordinates are saved as soon as you click on one of the offered!");
  482. ShowPlayerDialog(playerid, DIALOG_UREDJIVANJEPLJ, DIALOG_STYLE_LIST, "Edit robbery", "Create doors\nLocation buying bombs\nLocation of robbery\nLocation closed doors\nLocation of Open Doors\nDelete doors\nTimers", "OK", "Cancel");
  483. }
  484. return 1;
  485. }
  486.  
  487. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
  488. {
  489. if(response == EDIT_RESPONSE_FINAL)
  490. {
  491. if(PozVrata[playerid] == 1)
  492. {
  493. new id = RobId[playerid], string[100];
  494. if(id != -1)
  495. {
  496. Robbery[id][zX] = fX;
  497. Robbery[id][zY] = fY;
  498. Robbery[id][zZ] = fZ;
  499. Robbery[id][zRX] = fRotX;
  500. Robbery[id][zRY] = fRotY;
  501. Robbery[id][zA] = fRotZ;
  502. DestroyDynamic3DTextLabel(PljLabel3[id]);
  503. PljLabel3[id] = CreateDynamic3DTextLabel("To destroy the doors type /destroydoors",0xFF9900BB,Robbery[id][zX],Robbery[id][zY],Robbery[id][zZ], 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 20.0);
  504. DestroyDynamicObject(Robbery[id][Vrata]);
  505. CreateDoors(id,1);
  506. SaveRobbery(id);
  507. format(string,sizeof(string),"Doors robbery ID %d have successfully edited!",id);
  508. SCM(playerid,PLAVA,string);
  509. id = -1;
  510. return 1;
  511. }
  512. }
  513. if(PozVrata[playerid] == 2)
  514. {
  515. new id = RobId[playerid];
  516. if(id != -1)
  517. {
  518. Robbery[id][oX] = fX;
  519. Robbery[id][oY] = fY;
  520. Robbery[id][oZ] = fZ;
  521. Robbery[id][oRX] = fRotX;
  522. Robbery[id][oRY] = fRotY;
  523. Robbery[id][oA] = fRotZ;
  524. DestroyDynamicObject(Robbery[id][Vrata]);
  525. CreateDoors(id,1);
  526. SaveRobbery(id);
  527. SCM(playerid,PLAVA,"Position after the explosion of the bomb successfully saved!");
  528. id = -1;
  529. return 1;
  530. }
  531. }
  532. }
  533. return 1;
  534. }
  535.  
  536. CMD:robberyhelp(playerid,params[])
  537. {
  538. new info[320];
  539. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,SCRVENA,"Nemate ovlasti!");
  540. strcat(info, ""ZUTA"Robbery Help\n\n", sizeof(info));
  541. strcat(info, ""CRVENA"Create/Delete Robbery\n", sizeof(info));
  542. strcat(info, ""SIVA"/createrobbery-Create file of robbery\n", sizeof(info));
  543. strcat(info, " /deleterobbery-Delete file of robbery,door,pickups,labels\n", sizeof(info));
  544. strcat(info, ""CRVENA"Editing\n", sizeof(info));
  545. strcat(info, ""SIVA"/editrobbery-Edit door position,pickup position,label position\n\n", sizeof(info));
  546. ShowPlayerDialog(playerid, DIALOG_PLJHELP, DIALOG_STYLE_MSGBOX, ""BIJELA"Robbery Help", info, "OK", "");
  547. return 1;
  548. }
  549.  
  550. CMD:editrobbery(playerid,params[])
  551. {
  552. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,""SPLAVA"[Tony] "SIVA"Only owner!");
  553. ShowPlayerDialog(playerid, DIALOG_PLJACKA, 1, ""BIJELA"Editing", ""BIJELA"Enter ID robbery to edit", "Next", "Cancel");
  554. return 1;
  555. }
  556.  
  557. CMD:createrobbery(playerid,params[])
  558. {
  559. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,""SPLAVA"[Tony] "SIVA"Only owner!");
  560. new idp = getEmptyID(MAX_PLJACKI, "Robbery/%d.ini");
  561. if(idp > MAX_PLJACKI)return SCM(playerid,SCRVENA,"Mas robbery is reached!");
  562. new oFile[50];
  563. format(oFile, sizeof(oFile), PLJ_FILE, idp);
  564. if(!fexist(oFile))
  565. {
  566. Robbery[idp][vPostavljena] = 0;
  567. Robbery[idp][zA] = 0;
  568. Robbery[idp][zX] = 0;
  569. Robbery[idp][zY] = 0;
  570. Robbery[idp][zZ] = 0;
  571. Robbery[idp][zRX] = 0;
  572. Robbery[idp][zRY] = 0;
  573. Robbery[idp][oA] = 0;
  574. Robbery[idp][oX] = 0;
  575. Robbery[idp][oY] = 0;
  576. Robbery[idp][oZ] = 0;
  577. Robbery[idp][oRX] = 0;
  578. Robbery[idp][oRY] = 0;
  579. Robbery[idp][boX] = 0;
  580. Robbery[idp][boY] = 0;
  581. Robbery[idp][boZ] = 0;
  582. Robbery[idp][pX] = 0;
  583. Robbery[idp][pY] = 0;
  584. Robbery[idp][pZ] = 0;
  585. Robbery[idp][vInt] = 0;
  586. Robbery[idp][vVW] = 0;
  587. Robbery[idp][VRIJEMEPLJACKE] = 2;//minutes - time to rob
  588. Robbery[idp][VRACANJEPLJACKE] = 20;//minutes - time to re-looting
  589. Robbery[idp][BOMBATIMER] = 7;//sec - explode time
  590. Robbery[idp][PLANTTIMER] = 5; //sec - plant time
  591. SaveRobbery(idp);
  592. new st[45];
  593. format(st,sizeof(st),"{00C0FF}Successfully make robbery ID: %d",idp);
  594. SendClientMessage(playerid,-1,st);
  595. }else return SendClientMessage(playerid,SCRVENA,"This robbery already exists!");
  596. return 1;
  597. }
  598. CMD:deleterobbery(playerid,params[])
  599. {
  600. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,""SPLAVA"[Tony] "SIVA"Only owner!");
  601. new idp;
  602. if(sscanf(params,"i",idp)) return SendClientMessage(playerid,-1,""CRVENA"Tony Pomoc | "SIVA"/deleterobbery [ID robbery]");
  603. new oFile[50];
  604. format(oFile, sizeof(oFile), PLJ_FILE, idp);
  605. if(fexist(oFile))
  606. {
  607. DestroyDynamicPickup(PljPickup[idp]);
  608. DestroyDynamicPickup(PljPickup2[idp]);
  609. DestroyDynamic3DTextLabel(PljLabel[idp]);
  610. DestroyDynamic3DTextLabel(PljLabel2[idp]);
  611. DestroyDynamic3DTextLabel(PljLabel3[idp]);
  612. DestroyDynamicObject(Robbery[idp][Vrata]);
  613. Robbery[idp][pX] = 0;
  614. Robbery[idp][pY] = 0;
  615. Robbery[idp][pZ] = 0;
  616. Robbery[idp][boX] = 0;
  617. Robbery[idp][boY] = 0;
  618. Robbery[idp][boZ] = 0;
  619. Robbery[idp][vPostavljena] = 0;
  620. fremove(oFile);
  621. SendClientMessage(playerid,-1,"{00C0FF}Successfully deleted robbery!");
  622. }else return SendClientMessage(playerid,SCRVENA,"This robbery does not exist!");
  623. return 1;
  624. }
  625. CMD:rob(playerid, params[])
  626. {
  627. for(new i=0;i<MAX_PLJACKI;i++)
  628. {
  629. if(IsPlayerInRangeOfPoint(playerid, 3.0, Robbery[i][pX], Robbery[i][pY], Robbery[i][pZ]) && !IsPlayerInAnyVehicle(playerid))
  630. {
  631. if(BankaOpljackana[i] == 0)
  632. {
  633. BankaOpljackana[i] = 1;
  634. new st[128];
  635. format(st,sizeof(st),"You started with a robbery which takes %d minutes",Robbery[i][VRIJEMEPLJACKE]);
  636. SCM(playerid,PLAVA,st);
  637. SetTimerEx("pljbrojanje", 1000, false, "i", playerid);
  638. PljBrojanje[playerid] = Robbery[i][VRIJEMEPLJACKE]*60;
  639. TogglePlayerControllable(playerid,0);
  640. ApplyAnimation(playerid,"BOMBER","BOM_Plant_Crouch_In",4.1,0,1,1,1,1);
  641. timi[playerid] = SetTimerEx("TimeRobbery",(Robbery[i][VRIJEMEPLJACKE]*60)*1000,false,"i",playerid);
  642. SetTimerEx("RobAgain", (Robbery[i][VRACANJEPLJACKE]*60)*1000, false, "d", i);
  643. }else return SCM(playerid,SCRVENA,"Bank robbed someone already, try again later!");
  644. }
  645. }
  646. return 1;
  647. }
  648. CMD:destroydoors(playerid, params[])
  649. {
  650. for(new i=0;i<MAX_PLJACKI;i++)
  651. {
  652. if(IsPlayerInRangeOfPoint(playerid, 3.0, Robbery[i][zX], Robbery[i][zY], Robbery[i][zZ]) && !IsPlayerInAnyVehicle(playerid))
  653. {
  654. if(PlayerInfo[playerid][pBomb] == 1)
  655. {
  656. SCM(playerid,PLAVA,"You plant the bomb!");
  657. PlayerInfo[playerid][pBomb] = 0;
  658. SavePlayer(playerid);
  659. GetPlayerPos(playerid, bx[playerid], by[playerid], bz[playerid]);
  660. GetPlayerFacingAngle(playerid,bab[playerid]);
  661. DestroyObject(Bomb[playerid]);
  662. bx[playerid] = bx[playerid] + (0.6 * floatsin(-bab[playerid], degrees));
  663. by[playerid] = by[playerid] + (0.6 * floatcos(-bab[playerid], degrees));
  664. Bomb[playerid]=CreateObject(1654, bx[playerid], by[playerid], bz[playerid]-0.8, 0.0, 0.0, bab[playerid]);
  665. TogglePlayerControllable(playerid,0);
  666. ApplyAnimation(playerid,"BOMBER","BOM_Plant_Crouch_In",4.1,0,1,1,1,1);
  667. SetTimerEx("PlantBomb",Robbery[i][PLANTTIMER]*1000,false,"i",playerid);
  668. RobId[playerid] = i;
  669. }else return SCM(playerid,SCRVENA,"Do not have a bomb!");
  670. }
  671. }
  672. return 1;
  673. }
  674. CMD:buybomb(playerid, params[])
  675. {
  676. for(new i=0;i<MAX_PLJACKI;i++)
  677. {
  678. if(IsPlayerInRangeOfPoint(playerid, 3.0, Robbery[i][boX], Robbery[i][boY], Robbery[i][boZ]) && !IsPlayerInAnyVehicle(playerid))
  679. {
  680. if(GetPlayerMoney(playerid) >= 2000)
  681. {
  682. if(PlayerInfo[playerid][pBomb] == 0)
  683. {
  684. SCM(playerid,PLAVA,"You bought C4 for $2000");
  685. PlayerInfo[playerid][pBomb] = 1;
  686. GivePlayerMoney(playerid,-2000);
  687. SavePlayer(playerid);
  688. }else return SCM(playerid,SCRVENA,"You already have one bomb!");
  689. }else return SCM(playerid,SCRVENA,"You do not have enough money!");
  690. }
  691. }
  692. return 1;
  693. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement