Advertisement
Guest User

Untitled

a guest
Jul 1st, 2017
1,133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.99 KB | None | 0 0
  1.  
  2. #include <a_samp>
  3. #include <sscanf2>
  4. #include <zcmd>
  5. //==============================================================================
  6.  
  7. #define MS_File "moneysafes.pwn"
  8.  
  9. #define iLoop(%0,%1,%2) for (new %2 = %0; %2 < %1; %2++)
  10. #define EmptyString(%0) %0[0] = '\0'
  11.  
  12. #define red 0xFF0000AA
  13. #define green 0x33FF33AA
  14. #define blue 0x00FFFFAA
  15.  
  16. #define TD_1 0,4
  17.  
  18. #define Size(%0,%1,%2) floatround((%2*%0)/%1)
  19.  
  20. #define ATTACHMS 2
  21. #define MAX_MSS (MAX_OBJECTS/ATTACHMS) // because in one safe money they are 2 objects you can change this but not more than this value (sorry for bad english)
  22. //==============================================================================
  23. static const PreloadLibs[][] =
  24. {
  25. "AIRPORT", "ATTRACTORS", "BAR", "BASEBALL", "BD_FIRE",
  26. "BEACH", "BENCHPRESS", "BF_INJECTION", "BIKE_DBZ", "BIKED",
  27. "BIKEH", "BIKELEAP", "BIKES", "BIKEV", "BLOWJOBZ",
  28. "BMX", "BOMBER", "BOX", "BSKTBALL", "BUDDY",
  29. "BUS", "CAMERA", "CAR", "CAR_CHAT", "CARRY",
  30. "CASINO", "CHAINSAW", "CHOPPA", "CLOTHES", "COACH",
  31. "COLT45", "COP_AMBIENT", "COP_DVBYZ", "CRACK", "CRIB",
  32. "DAM_JUMP", "DANCING", "DEALER", "DILDO", "DODGE",
  33. "DOZER", "DRIVEBYS", "FAT", "FIGHT_B", "FIGHT_C",
  34. "FIGHT_D", "FIGHT_E", "FINALE", "FINALE2", "FLAME",
  35. "FLOWERS", "FOOD", "FREEWEIGHTS", "GANGS", "GFUNK",
  36. "GHANDS", "GHETTO_DB", "GOGGLES", "GRAFFITI", "GRAVEYARD",
  37. "GRENADE", "GYMNASIUM", "HAIRCUTS", "HEIST9", "INT_HOUSE",
  38. "INT_OFFICE", "INT_SHOP", "JST_BUISNESS", "KART", "KISSING",
  39. "KNIFE", "LAPDAN1", "LAPDAN2", "LAPDAN3", "LOWRIDER",
  40. "MD_CHASE", "MD_END", "MEDIC", "MISC", "MTB",
  41. "MUSCULAR", "NEVADA", "ON_LOOKERS", "OTB", "PARACHUTE",
  42. "PARK", "PAULNMAC", "PED", "PLAYER_DVBYS", "PLAYIDLES",
  43. "POLICE", "POOL", "POOR", "PYTHON", "QUAD",
  44. "QUAD_DBZ", "RAPPING", "RIFLE", "RIOT", "ROB_BANK",
  45. "ROCKET", "RUNNINGMAN", "RUSTLER", "RYDER", "SCRATCHING",
  46. "SEX", "SHAMAL", "SHOP", "SHOTGUN", "SILENCED",
  47. "SKATE", "SMOKING", "SNIPER", "SNM", "SPRAYCAN",
  48. "STRIP", "SUNBATHE", "SWAT", "SWEET", "SWIM",
  49. "SWORD", "TANK", "TATTOOS", "TEC", "TRAIN",
  50. "TRUCK", "UZI", "VAN", "VENDING", "VORTEX",
  51. "WAYFARER", "WEAPONS", "WOP", "WUZI"
  52. };
  53. enum msi
  54. {
  55. Created,
  56. ID,
  57. Float:msPos[6],
  58. msObj[ATTACHMS],
  59. msStat,
  60. }
  61. enum pin
  62. {
  63. TempObj ,
  64. Float:pPos[6],
  65. sfmNamex,
  66. ccmsid,
  67.  
  68. PlayerText3D:sfmName[MAX_MSS],
  69. PlayerText:pTextdraws[4],
  70.  
  71. rob,
  72. Time,
  73. }
  74. enum
  75. {
  76. Stat_Opened = 1,
  77. Stat_Closed,
  78. Stat_Robbed,
  79. }
  80. //==============================================================================
  81.  
  82. new ProjectFile
  83. [64],
  84.  
  85. File:Handler,
  86.  
  87. MoneySafe
  88. [MAX_MSS]
  89. [msi],
  90.  
  91.  
  92. PlayerInfo
  93. [MAX_PLAYERS]
  94. [pin];
  95. //==============================================================================
  96.  
  97. public OnFilterScriptInit()
  98. {
  99. if(!fexist(MS_File))
  100. CreateMSFile(MS_File);
  101.  
  102. format(ProjectFile, sizeof ProjectFile, MS_File);
  103. LoadMS();
  104.  
  105. return 1;
  106. }
  107.  
  108. public OnFilterScriptExit()
  109. {
  110. SaveMSs();
  111. return 1;
  112. }
  113. public OnPlayerUpdate(playerid)
  114. {
  115. if(IsPlayerNearToAnySM(playerid) && !PlayerInfo[playerid][rob])
  116. GameTextForPlayer(playerid,"~p~~h~Press ~y~~h~\"C\" ~p~~h~to rob this SafeMoney",2000,4);
  117. return 1;
  118. }
  119. public OnPlayerConnect(playerid)
  120. {
  121. PlayerInfo[playerid][TempObj] = -1;
  122. PlayerInfo[playerid][ccmsid] = -1;
  123. PlayerInfo[playerid][rob] = false;
  124. PlayerInfo[playerid][Time] = 1;
  125.  
  126. CreatePlayerTextDrawEx(playerid,0,164.000000,363.416687,0.000000,0.000000,0.000000,"ld_poke:cd9s",0.000000,0.000000,318.000000,51.916645,1,0,124,0,0,0,0,0,4,0,0);
  127. CreatePlayerTextDrawEx(playerid,1,321.500000,392.583312,0.000000,0.000000,0.000000,"WAIT ...",0.377999,1.722499,0.000000,0.000000,2,0,-5813505,0,0,1,0,255,2,1,0);
  128. CreatePlayerTextDrawEx(playerid,2,168.500000,373.333221,0.000000,0.000000,0.000000,"ld_dual:power",0.000000,0.000000,311.000000,14.583324,1,0,-13172737,0,13358080,0,0,0,4,0,0);
  129. CreatePlayerTextDrawEx(playerid,3,170.000000,374.916717,1.000000,1.000000,1.000000,"",0.000000,0.000000,0.01,11.083331,1,0,-1,0,0,0,0,0,4,0,0);
  130. return PreloadAnimations(playerid);
  131. }
  132. public OnPlayerDisconnect(playerid,reason)
  133. {
  134. if(PlayerInfo[playerid][TempObj] != -1)
  135. DestroyPlayerObject(playerid,PlayerInfo[playerid][TempObj]);
  136. PlayerInfo[playerid][sfmNamex] = false;
  137. return 1;
  138. }
  139. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  140. {
  141. if (newkeys & KEY_CROUCH)
  142. {
  143. new msid;
  144. if(IsPlayerNearToAnySM(playerid,msid) && !PlayerInfo[playerid][rob])
  145. StarRob(playerid);
  146. }
  147. return 1;
  148. }
  149. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
  150. {
  151. new Float:oldX, Float:oldY, Float:oldZ, Float:oldRotX, Float:oldRotY, Float:oldRotZ;
  152. GetObjectPos(objectid, oldX, oldY, oldZ);
  153. GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
  154. switch(playerobject)
  155. {
  156. case 0:
  157. {
  158. switch(response)
  159. {
  160. case EDIT_RESPONSE_FINAL:
  161. {
  162. }
  163. case EDIT_RESPONSE_CANCEL:
  164. {
  165. }
  166. }
  167. }
  168. case 1:
  169. {
  170. switch(response)
  171. {
  172. case EDIT_RESPONSE_FINAL:
  173. {
  174. new msid = PlayerInfo[playerid][ccmsid];
  175. CreateMoneySafe(msid,Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ,Stat_Closed);
  176. DestroyPlayerObject(playerid, PlayerInfo[playerid][TempObj]);
  177. SendClientMessageEx(playerid,green,"You have created this money safe [ ID: %d ] (%d/%d)",PlayerInfo[playerid][ccmsid],mscount(),MAX_MSS);
  178.  
  179. if(PlayerInfo[playerid][sfmNamex])
  180. ShowPlayerDLMS(playerid, MoneySafe[msid][ID]);
  181.  
  182. }
  183. case EDIT_RESPONSE_CANCEL:
  184. {
  185. DestroyPlayerObject(playerid, PlayerInfo[playerid][TempObj]);
  186. }
  187. }
  188. }
  189. }
  190. }
  191. //==============================================ADMIN CMDS============================
  192. CMD:closems(playerid,params[])
  193. {
  194. if(IsPlayerAdmin(playerid))
  195. return SendClientMessage(playerid,red,"ERROR: You are not admin");
  196.  
  197. new msid;
  198. if(msid >= MAX_MSS)
  199. return SendClientMessageEx(playerid,red,"ERROR: Invalid ID");
  200.  
  201. if(sscanf(params,"d",msid))
  202. return SendClientMessage(playerid,blue,"Usage: /closems [Money safe ID]");
  203.  
  204. if(!MoneySafe[msid][Created])
  205. return SendClientMessageEx(playerid,red,"ERROR: Money safe [ ID: %d ] not created yet!",msid);
  206.  
  207. if(MoneySafe[msid][msStat] == Stat_Closed)
  208. return SendClientMessageEx(playerid,red,"WARNING: this Money safe [ ID: %d ] already closed!",msid);
  209.  
  210. if(MoneySafe[msid][msStat] == Stat_Robbed)
  211. return SendClientMessageEx(playerid,red,"WARNING: this Money safe [ ID: %d ] already robbed! (/rems [ID] or /rems for all)",msid);
  212.  
  213. SendClientMessageEx(playerid,green,"You have closed this money safe [ ID: %d ] ",msid);
  214. CloseMs(msid);
  215.  
  216. if(PlayerInfo[playerid][sfmNamex])
  217. iLoop(0,2,i)
  218. cmd_dlms(playerid,"");
  219. return 1;
  220. }
  221. stock remsall(playerid)
  222. {
  223. iLoop(0,MAX_MSS,msid)
  224. {
  225. if(MoneySafe[msid][Created] && MoneySafe[msid][msStat] == Stat_Robbed)
  226. {
  227. CloseMs(msid);
  228. }
  229. }
  230. if(PlayerInfo[playerid][sfmNamex])
  231. iLoop(0,2,i)
  232. cmd_dlms(playerid,"");
  233.  
  234. return 1;
  235. }
  236. CMD:rems(playerid,params[])
  237. {
  238. if(IsPlayerAdmin(playerid))
  239. return SendClientMessage(playerid,red,"ERROR: You are not admin");
  240.  
  241. new msid;
  242.  
  243. if(msid >= MAX_MSS)
  244. return SendClientMessageEx(playerid,red,"ERROR: Invalid ID");
  245.  
  246. if(!sscanf(params,"d",msid))
  247. {
  248.  
  249. if(!MoneySafe[msid][Created])
  250. return SendClientMessageEx(playerid,red,"ERROR: Money safe [ ID: %d ] not created yet!",msid);
  251.  
  252. if(MoneySafe[msid][msStat] != Stat_Robbed)
  253. return SendClientMessageEx(playerid,red,"WARNING: this Money safe [ ID: %d ] already not robbed!",msid);
  254.  
  255. SendClientMessageEx(playerid,green,"You have restared this money safe [ ID: %d ] ",msid);
  256. CloseMs(msid);
  257.  
  258. if(PlayerInfo[playerid][sfmNamex])
  259. iLoop(0,2,i)
  260. cmd_dlms(playerid,"");
  261.  
  262. }
  263. else
  264. {
  265. remsall(playerid);
  266. }
  267. return 1;
  268. }
  269.  
  270. CMD:openms(playerid,params[])
  271. {
  272. if(IsPlayerAdmin(playerid))
  273. return SendClientMessage(playerid,red,"ERROR: You are not admin");
  274.  
  275. new msid;
  276.  
  277. if(msid >= MAX_MSS)
  278. return SendClientMessageEx(playerid,red,"ERROR: Invalid ID");
  279.  
  280. if(sscanf(params,"d",msid))
  281. return SendClientMessage(playerid,blue,"Usage: /openms [Money safe ID]");
  282.  
  283. if(!MoneySafe[msid][Created])
  284. return SendClientMessageEx(playerid,red,"ERROR: Money safe [ ID: %d ] not created yet!",msid);
  285.  
  286. if(MoneySafe[msid][msStat] == Stat_Opened)
  287. return SendClientMessageEx(playerid,red,"WARNING: this Money safe [ ID: %d ] already opened!",msid);
  288.  
  289. if(MoneySafe[msid][msStat] == Stat_Robbed)
  290. return SendClientMessageEx(playerid,red,"WARNING: this Money safe [ ID: %d ] already robbed! (/rems [ID] or /rems for all)",msid);
  291.  
  292. SendClientMessageEx(playerid,green,"You have opened this money safe [ ID: %d ] ",msid);
  293. OpenMs(msid);
  294.  
  295. if(PlayerInfo[playerid][sfmNamex])
  296. iLoop(0,2,i)
  297. cmd_dlms(playerid,"");
  298. return 1;
  299. }
  300. CMD:removems(playerid,params[])
  301. {
  302. if(IsPlayerAdmin(playerid))
  303. return SendClientMessage(playerid,red,"ERROR: You are not admin");
  304.  
  305. new msid ;
  306.  
  307. if(msid >= MAX_MSS)
  308. return SendClientMessageEx(playerid,red,"ERROR: Invalid ID");
  309.  
  310. if(sscanf(params,"d",msid))
  311. return SendClientMessage(playerid,blue,"Usage: /removems [Money safe ID]");
  312.  
  313. if(!MoneySafe[msid][Created])
  314. return SendClientMessageEx(playerid,red,"ERROR: Money safe [ ID: %d ] not created yet!",msid);
  315.  
  316. if(msid >= MAX_MSS)
  317. return SendClientMessageEx(playerid,red,"ERROR: Invalid ID");
  318.  
  319. DeleteMS(msid);
  320. SendClientMessageEx(playerid,green,"You have removed this money safe [ ID: %d ] (%d/%d)",msid,mscount(),MAX_MSS);
  321.  
  322. if(PlayerInfo[playerid][sfmNamex])
  323. DeletePlayer3DTextLabel(playerid,PlayerInfo[playerid][sfmName][msid]);
  324. return 1;
  325. }
  326.  
  327. CMD:dlms(playerid,params[])
  328. {
  329. if(IsPlayerAdmin(playerid))
  330. return SendClientMessage(playerid,red,"ERROR: You are not admin");
  331.  
  332. switch(PlayerInfo[playerid][sfmNamex])
  333. {
  334. case 0:
  335. {
  336. PlayerInfo[playerid][sfmNamex] = true;
  337. iLoop(0,MAX_MSS,s)
  338. ShowPlayerDLMS(playerid, s);
  339.  
  340. }
  341. case 1:
  342. {
  343. PlayerInfo[playerid][sfmNamex] = false;
  344. iLoop(0,MAX_MSS,s)
  345. {
  346. if(MoneySafe[s][Created])
  347. {
  348. DeletePlayer3DTextLabel(playerid,PlayerInfo[playerid][sfmName][s]);
  349. }
  350. }
  351. }
  352. }
  353. return 1;
  354. }
  355. CMD:placems(playerid,params[])
  356. {
  357. if(IsPlayerAdmin(playerid))
  358. return SendClientMessage(playerid,red,"ERROR: You are not admin");
  359.  
  360. iLoop(0,MAX_MSS,s)
  361. {
  362. if(!MoneySafe[s][Created])
  363. {
  364. new Float:Pos[5];
  365. GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
  366. GetPlayerFacingAngle(playerid,Pos[3]);
  367.  
  368. Pos[0] += (1.5 * floatsin(-Pos[3], degrees));
  369. Pos[1] += (1.5 * floatcos(-Pos[3], degrees));
  370. Pos[2] -= (0.7);
  371.  
  372. PlayerInfo[playerid][TempObj] = CreatePlayerObject(playerid,2332,Pos[0],Pos[1],Pos[2],0,0,0);
  373. EditPlayerObject(playerid,PlayerInfo[playerid][TempObj]);
  374.  
  375. PlayerInfo[playerid][ccmsid] = s;
  376. break;
  377. }
  378. }
  379. return 1;
  380. }
  381. //==============================================STOCKS==========================
  382. stock OpenMs(msid)
  383. {
  384. MoneySafe[msid][msStat] = Stat_Opened;
  385.  
  386. DestroyObject(MoneySafe[msid][msObj][0]);
  387. DestroyObject(MoneySafe[msid][msObj][1]);
  388.  
  389. switch(MoneySafe[msid][msStat])
  390. {
  391. case Stat_Closed:
  392. {
  393. MoneySafe[msid][msObj][0] = CreateObject(2332,MoneySafe[msid][msPos][0],
  394. MoneySafe[msid][msPos][1],
  395. MoneySafe[msid][msPos][2],
  396. MoneySafe[msid][msPos][3],
  397. MoneySafe[msid][msPos][4],
  398. MoneySafe[msid][msPos][5]);
  399. MoneySafe[msid][msObj][1] = CreateObject(2004,MoneySafe[msid][msPos][0],
  400. MoneySafe[msid][msPos][1],
  401. MoneySafe[msid][msPos][2],
  402. MoneySafe[msid][msPos][3],
  403. MoneySafe[msid][msPos][4],
  404. MoneySafe[msid][msPos][5]);
  405. AttachObjectToObject(MoneySafe[msid][msObj][1],MoneySafe[msid][msObj][0] ,0.4263,0.3623,0.0295,0,0,180);
  406. }
  407. case Stat_Opened:
  408. {
  409. MoneySafe[msid][msObj][0] = CreateObject(1829,MoneySafe[msid][msPos][0],
  410. MoneySafe[msid][msPos][1],
  411. MoneySafe[msid][msPos][2],
  412. MoneySafe[msid][msPos][3],
  413. MoneySafe[msid][msPos][4],
  414. MoneySafe[msid][msPos][5]);
  415. MoneySafe[msid][msObj][1] = CreateObject(2004,MoneySafe[msid][msPos][0],
  416. MoneySafe[msid][msPos][1],
  417. MoneySafe[msid][msPos][2],
  418. MoneySafe[msid][msPos][3],
  419. MoneySafe[msid][msPos][4],
  420. MoneySafe[msid][msPos][5]);
  421. AttachObjectToObject(MoneySafe[msid][msObj][1],MoneySafe[msid][msObj][0] ,0.3993,0.6802,0.0435,0,0,180);
  422. }
  423. case Stat_Robbed:
  424. {
  425. MoneySafe[msid][msObj][0] = CreateObject(2003,MoneySafe[msid][msPos][0],
  426. MoneySafe[msid][msPos][1],
  427. MoneySafe[msid][msPos][2],
  428. MoneySafe[msid][msPos][3],
  429. MoneySafe[msid][msPos][4],
  430. MoneySafe[msid][msPos][5]);
  431. MoneySafe[msid][msObj][1] = CreateObject(2004,MoneySafe[msid][msPos][0],
  432. MoneySafe[msid][msPos][1],
  433. MoneySafe[msid][msPos][2],
  434. MoneySafe[msid][msPos][3],
  435. MoneySafe[msid][msPos][4],
  436. MoneySafe[msid][msPos][5]);
  437. AttachObjectToObject(MoneySafe[msid][msObj][1],MoneySafe[msid][msObj][0] ,0.4263,0.3623,0.0295,0,0,180);
  438. }
  439. default: printf("Error 4%d4: (report as bug)",MoneySafe[msid][msStat]);
  440. }
  441. SaveMSs();
  442. return 1;
  443. }
  444. stock CloseMs(msid)
  445. {
  446. MoneySafe[msid][msStat] = Stat_Closed;
  447.  
  448. DestroyObject(MoneySafe[msid][msObj][0]);
  449. DestroyObject(MoneySafe[msid][msObj][1]);
  450.  
  451. switch(MoneySafe[msid][msStat])
  452. {
  453. case Stat_Closed:
  454. {
  455. MoneySafe[msid][msObj][0] = CreateObject(2332,MoneySafe[msid][msPos][0],
  456. MoneySafe[msid][msPos][1],
  457. MoneySafe[msid][msPos][2],
  458. MoneySafe[msid][msPos][3],
  459. MoneySafe[msid][msPos][4],
  460. MoneySafe[msid][msPos][5]);
  461. MoneySafe[msid][msObj][1] = CreateObject(2004,MoneySafe[msid][msPos][0],
  462. MoneySafe[msid][msPos][1],
  463. MoneySafe[msid][msPos][2],
  464. MoneySafe[msid][msPos][3],
  465. MoneySafe[msid][msPos][4],
  466. MoneySafe[msid][msPos][5]);
  467. AttachObjectToObject(MoneySafe[msid][msObj][1],MoneySafe[msid][msObj][0] ,0.4263,0.3623,0.0295,0,0,180);
  468. }
  469. case Stat_Opened:
  470. {
  471. MoneySafe[msid][msObj][0] = CreateObject(1829,MoneySafe[msid][msPos][0],
  472. MoneySafe[msid][msPos][1],
  473. MoneySafe[msid][msPos][2],
  474. MoneySafe[msid][msPos][3],
  475. MoneySafe[msid][msPos][4],
  476. MoneySafe[msid][msPos][5]);
  477. MoneySafe[msid][msObj][1] = CreateObject(2004,MoneySafe[msid][msPos][0],
  478. MoneySafe[msid][msPos][1],
  479. MoneySafe[msid][msPos][2],
  480. MoneySafe[msid][msPos][3],
  481. MoneySafe[msid][msPos][4],
  482. MoneySafe[msid][msPos][5]);
  483. AttachObjectToObject(MoneySafe[msid][msObj][1],MoneySafe[msid][msObj][0] ,0.3993,0.6802,0.0435,0,0,180);
  484. }
  485. case Stat_Robbed:
  486. {
  487. MoneySafe[msid][msObj][0] = CreateObject(2003,MoneySafe[msid][msPos][0],
  488. MoneySafe[msid][msPos][1],
  489. MoneySafe[msid][msPos][2],
  490. MoneySafe[msid][msPos][3],
  491. MoneySafe[msid][msPos][4],
  492. MoneySafe[msid][msPos][5]);
  493. MoneySafe[msid][msObj][1] = CreateObject(2004,MoneySafe[msid][msPos][0],
  494. MoneySafe[msid][msPos][1],
  495. MoneySafe[msid][msPos][2],
  496. MoneySafe[msid][msPos][3],
  497. MoneySafe[msid][msPos][4],
  498. MoneySafe[msid][msPos][5]);
  499. AttachObjectToObject(MoneySafe[msid][msObj][1],MoneySafe[msid][msObj][0] ,0.4263,0.3623,0.0295,0,0,180);
  500. }
  501. default: printf("Error 4%d4: (report as bug)",MoneySafe[msid][msStat]);
  502. }
  503. SaveMSs();
  504. return 1;
  505. }
  506. stock RobMs(playerid,msid)
  507. {
  508. if( MoneySafe[msid][msStat] == Stat_Robbed)
  509. {
  510. GameTextForPlayer(playerid, "~r~Robbery Failed",3000,3);
  511. SetTimerEx("hidemsg",24000,false,"d",playerid);
  512. return 0;
  513. }
  514.  
  515. SetPlayerWantedLevel(playerid, 5);
  516. GivePlayerMoney(playerid,1000000);
  517.  
  518. DeleteMS(msid);
  519. MoneySafe[msid][msStat] = Stat_Robbed;
  520. CreateMoneySafe(msid,MoneySafe[msid][msPos][0],MoneySafe[msid][msPos][1],MoneySafe[msid][msPos][2],
  521. MoneySafe[msid][msPos][3],MoneySafe[msid][msPos][4],MoneySafe[msid][msPos][5],Stat_Robbed);
  522.  
  523.  
  524. if(PlayerInfo[playerid][sfmNamex])
  525. iLoop(0,2,i)
  526. cmd_dlms(playerid,"");
  527. SaveMSs();
  528. return 1;
  529. }
  530. stock StarRob(playerid)
  531. {
  532. if(PlayerInfo[playerid][rob]) return 0;
  533. PlayerInfo[playerid][rob] = true;
  534. TogglePlayerControllable(playerid,false);
  535. ShowTextDraws(playerid,TD_1);
  536. PlayerTextDrawSetString(playerid,PlayerInfo[playerid][pTextdraws][1],"WAIT ...");
  537. GameTextForPlayer(playerid, "~g~~h~Ready ?",3000,6);
  538. SetTimerEx("SetPlayerRob",3000,false,"dd",playerid,3000);
  539. return 1;
  540. }
  541. forward hidemsg(playerid);
  542. public hidemsg(playerid)
  543. {
  544. PlayerInfo[playerid][Time] = 1;
  545. PlayerInfo[playerid][rob] = false;
  546. return 1;
  547. }
  548.  
  549. forward OnPlayerFinishRob(playerid,win);
  550. public OnPlayerFinishRob(playerid,win)
  551. {
  552.  
  553. new msid;
  554. IsPlayerNearToAnySM(playerid,msid);
  555.  
  556. if(MoneySafe[msid][msStat] == Stat_Opened)
  557. win = true;
  558.  
  559.  
  560. switch(win)
  561. {
  562. case false :
  563. {
  564. GameTextForPlayer(playerid, "~r~Robbery Failed",3000,3);
  565. SetTimerEx("hidemsg",24000,false,"d",playerid);
  566.  
  567. HideTextDraws(playerid,TD_1);
  568. TogglePlayerControllable(playerid,true);
  569. }
  570. default:
  571. {
  572. GameTextForPlayer(playerid, "~g~+$1000000",3000,3);
  573. SetTimerEx("hidemsg",3000,false,"d",playerid);
  574. HideTextDraws(playerid,TD_1);
  575. TogglePlayerControllable(playerid,true);
  576. RobMs(playerid,msid);
  577. }
  578. }
  579.  
  580. return 1;
  581. }
  582.  
  583. forward SetPlayerRob(playerid,time);
  584. public SetPlayerRob(playerid,time)
  585. {
  586. if(PlayerInfo[playerid][Time] == 1)
  587. {
  588. GameTextForPlayer(playerid, "~b~~h~GO",3000,6);
  589. ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 1, 0, 0, 1, 0, 0);
  590. PlayerInfo[playerid][Time] ++ ;
  591. return SetTimerEx("SetPlayerRob",time-2900,false,"dd",playerid,time);
  592. }
  593. new size = Size(PlayerInfo[playerid][Time],100,308.000000);
  594.  
  595. PlayerTextDrawHide(playerid,PlayerInfo[playerid][pTextdraws][3]);
  596. PlayerTextDrawSetString(playerid,PlayerInfo[playerid][pTextdraws][3],"ld_dual:power");
  597. PlayerTextDrawTextSize(playerid, PlayerInfo[playerid][pTextdraws][3], size, 11.083331);
  598. PlayerTextDrawShow(playerid,PlayerInfo[playerid][pTextdraws][3]);
  599.  
  600. PlayerInfo[playerid][Time] ++ ;
  601.  
  602. if(PlayerInfo[playerid][Time] >= 100)
  603. return CallLocalFunction("OnPlayerFinishRob", "dd", playerid,random(3));
  604.  
  605. SetTimerEx("SetPlayerRob",time-2900,false,"dd",playerid,time);
  606. return 1;
  607. }
  608. stock mscount()
  609. {
  610. new cnt;
  611. iLoop(0,MAX_MSS,i)
  612. if(MoneySafe[i][Created])
  613. cnt ++;
  614. return cnt;
  615. }
  616. stock ShowPlayerDLMS(playerid, s)
  617. {
  618. new str[200],stat[10];
  619.  
  620. switch(MoneySafe[s][msStat])
  621. {
  622. case Stat_Opened: stat = " Opened";
  623. case Stat_Closed: stat = " Closed";
  624. case Stat_Robbed: stat = " Robbed";
  625. }
  626.  
  627. format(str , sizeof str,"Money safe ID: %d\nStat:%s\nPos: %f, %f, %f"
  628. ,s
  629. ,stat
  630. ,MoneySafe[s][msPos][0]
  631. ,MoneySafe[s][msPos][1]
  632. ,MoneySafe[s][msPos][2]);
  633. PlayerInfo[playerid][sfmName][s] = CreatePlayer3DTextLabel(playerid,str,0x00FF00FF
  634. ,MoneySafe[s][msPos][0]
  635. ,MoneySafe[s][msPos][1]
  636. ,MoneySafe[s][msPos][2]
  637. ,30);
  638. if(!MoneySafe[s][Created]) UpdatePlayer3DTextLabelText(playerid,PlayerInfo[playerid][sfmName][s],0x00FF00FF," ");
  639. return 1;
  640. }
  641. stock CreateMSFile(name[])
  642. {
  643. new File:cf = fopen(name, io_write);
  644. fclose(cf);
  645. return true;
  646. }
  647. stock LoadMS()
  648. {
  649. if(!strlen(ProjectFile)) return print("(Report as bug)");
  650.  
  651. new msid,
  652. str[512];
  653.  
  654. Handler = fopen(ProjectFile, io_read);
  655.  
  656. while(fread(Handler, str))
  657. {
  658. StripNewLine(str);
  659. if(!sscanf(str, "p<|>dffffffd",
  660. MoneySafe[msid][ID],
  661. MoneySafe[msid][msPos][0],
  662. MoneySafe[msid][msPos][1],
  663. MoneySafe[msid][msPos][2],
  664. MoneySafe[msid][msPos][3],
  665. MoneySafe[msid][msPos][4],
  666. MoneySafe[msid][msPos][5],
  667. MoneySafe[msid][msStat]
  668. ))
  669. {
  670.  
  671. switch(MoneySafe[msid][msStat])
  672. {
  673. case Stat_Closed:
  674. {
  675. MoneySafe[msid][msObj][0] = CreateObject(2332,MoneySafe[msid][msPos][0],
  676. MoneySafe[msid][msPos][1],
  677. MoneySafe[msid][msPos][2],
  678. MoneySafe[msid][msPos][3],
  679. MoneySafe[msid][msPos][4],
  680. MoneySafe[msid][msPos][5]);
  681. MoneySafe[msid][msObj][1] = CreateObject(2004,MoneySafe[msid][msPos][0],
  682. MoneySafe[msid][msPos][1],
  683. MoneySafe[msid][msPos][2],
  684. MoneySafe[msid][msPos][3],
  685. MoneySafe[msid][msPos][4],
  686. MoneySafe[msid][msPos][5]);
  687. AttachObjectToObject(MoneySafe[msid][msObj][1],MoneySafe[msid][msObj][0] ,0.4263,0.3623,0.0295,0,0,180);
  688. }
  689. case Stat_Opened:
  690. {
  691. MoneySafe[msid][msObj][0] = CreateObject(1829,MoneySafe[msid][msPos][0],
  692. MoneySafe[msid][msPos][1],
  693. MoneySafe[msid][msPos][2],
  694. MoneySafe[msid][msPos][3],
  695. MoneySafe[msid][msPos][4],
  696. MoneySafe[msid][msPos][5]);
  697. MoneySafe[msid][msObj][1] = CreateObject(2004,MoneySafe[msid][msPos][0],
  698. MoneySafe[msid][msPos][1],
  699. MoneySafe[msid][msPos][2],
  700. MoneySafe[msid][msPos][3],
  701. MoneySafe[msid][msPos][4],
  702. MoneySafe[msid][msPos][5]);
  703. AttachObjectToObject(MoneySafe[msid][msObj][1],MoneySafe[msid][msObj][0] ,0.3993,0.6802,0.0435,0,0,180);
  704. }
  705. case Stat_Robbed:
  706. {
  707. MoneySafe[msid][msObj][0] = CreateObject(2003,MoneySafe[msid][msPos][0],
  708. MoneySafe[msid][msPos][1],
  709. MoneySafe[msid][msPos][2],
  710. MoneySafe[msid][msPos][3],
  711. MoneySafe[msid][msPos][4],
  712. MoneySafe[msid][msPos][5]);
  713. MoneySafe[msid][msObj][1] = CreateObject(2004,MoneySafe[msid][msPos][0],
  714. MoneySafe[msid][msPos][1],
  715. MoneySafe[msid][msPos][2],
  716. MoneySafe[msid][msPos][3],
  717. MoneySafe[msid][msPos][4],
  718. MoneySafe[msid][msPos][5]);
  719. AttachObjectToObject(MoneySafe[msid][msObj][1],MoneySafe[msid][msObj][0] ,0.4263,0.3623,0.0295,0,0,180);
  720. }
  721. default: printf("Error 4%d4: (report as bug)",MoneySafe[msid][msStat]);
  722. }
  723. MoneySafe[msid][Created] = true;
  724. msid++;
  725. }
  726. }
  727. return 1;
  728. }
  729. stock GetFreeSlot()
  730. {
  731. new slot = -1;
  732. iLoop(0,MAX_MSS,s)
  733. {
  734. if(!MoneySafe[s][Created])
  735. {
  736. slot = s;
  737. break;
  738. }
  739. }
  740. return slot;
  741. }
  742. stock CreateMoneySafe(id,Float:X,Float:Y,Float:Z,Float:rX,Float:rY,Float:rZ,stat)
  743. {
  744. new s;
  745. if(!MoneySafe[id][Created])
  746. {
  747. s = GetFreeSlot();
  748. }
  749. else
  750. {
  751. s = id;
  752. }
  753.  
  754. switch(stat)
  755. {
  756. case Stat_Closed:
  757. {
  758. MoneySafe[s][msObj][0] = CreateObject(2332,X,Y,Z,rX,rY,rZ);
  759. MoneySafe[s][msObj][1] = CreateObject(2004,X,Y-1.0,Z,rX,rY,rZ);
  760. AttachObjectToObject(MoneySafe[s][msObj][1],MoneySafe[s][msObj][0] ,0.4263,0.3623,0.0295,0,0,180);
  761. }
  762. case Stat_Opened:
  763. {
  764. MoneySafe[s][msObj][0] = CreateObject(1829,X,Y,Z,rX,rY,rZ);
  765. MoneySafe[s][msObj][1] = CreateObject(2004,X,Y-1.0,Z,rX,rY,rZ);
  766. AttachObjectToObject(MoneySafe[s][msObj][1],MoneySafe[s][msObj][0] ,0.3993,0.6802,0.0435,0,0,180);
  767. }
  768. case Stat_Robbed:
  769. {
  770. MoneySafe[s][msObj][0] = CreateObject(2003,X,Y,Z,rX,rY,rZ);
  771. MoneySafe[s][msObj][1] = CreateObject(2004,X,Y-1.0,Z,rX,rY,rZ);
  772. AttachObjectToObject(MoneySafe[s][msObj][1],MoneySafe[s][msObj][0] ,0.4263,0.3623,0.0295,0,0,180);
  773. }
  774. default: printf("Error 4%d4: (report as bug)",stat);
  775. }
  776. MoneySafe[s][msStat]= stat;
  777. MoneySafe[s][msPos][0] =X;
  778. MoneySafe[s][msPos][1] =Y;
  779. MoneySafe[s][msPos][2] =Z;
  780. MoneySafe[s][msPos][3] =rX;
  781. MoneySafe[s][msPos][4] =rY;
  782. MoneySafe[s][msPos][5] =rZ;
  783. MoneySafe[s][ID] = s;
  784. MoneySafe[s][Created] = true;
  785. SaveMSs();
  786. return 1;
  787. }
  788. stock StripNewLine(string[])
  789. {
  790. new len = strlen(string);
  791. if (string[0]==0) return ;
  792. if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {
  793. string[len - 1] = 0;
  794. if (string[0]==0) return ;
  795. if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
  796. }
  797. }
  798. stock IsPlayerNearToAnySM(playerid,&id=-1)
  799. {
  800. new near;
  801. iLoop(0,MAX_MSS,m)
  802. {
  803. if(MoneySafe[m][Created] && MoneySafe[m][msStat] != Stat_Robbed)
  804. {
  805. if(IsPlayerInRangeOfPoint(playerid,1.2,MoneySafe[m][msPos][0],MoneySafe[m][msPos][1],MoneySafe[m][msPos][2]))
  806. {
  807. id = m;
  808. near = true;
  809. break;
  810. }
  811. }
  812. }
  813. return near;
  814. }
  815. stock DeleteMS(msid)
  816. {
  817. if(!MoneySafe[msid][Created]) return 0;
  818.  
  819. DestroyObject(MoneySafe[msid][msObj][0]);
  820. DestroyObject(MoneySafe[msid][msObj][1]);
  821.  
  822. MoneySafe[msid][Created] = false;
  823. SaveMSs();
  824.  
  825. return 1;
  826. }
  827. stock SaveMSs()
  828. {
  829. new ExportFile[64];
  830. format(ExportFile, sizeof ExportFile, "%s", ProjectFile);
  831.  
  832. if(fexist(ExportFile)) fremove(ExportFile);
  833. new File:ExportMS = fopen(ExportFile, io_write);
  834.  
  835. fwrite(ExportMS, "\n/*\r\n\r\n\n");
  836. fwrite(ExportMS, "\tDarkLight\t");
  837. fwrite(ExportMS, "\r\n\r\n\n*/\n");
  838. new bstr[2000];
  839.  
  840. iLoop(0,MAX_MSS,i)
  841. {
  842. if(MoneySafe[i][Created])
  843. {
  844. new nstr[500];
  845. format(nstr, sizeof nstr,"%d|%f|%f|%f|%f|%f|%f|%d\n"
  846. ,MoneySafe[i][ID]
  847. ,MoneySafe[i][msPos][0]
  848. ,MoneySafe[i][msPos][1]
  849. ,MoneySafe[i][msPos][2]
  850. ,MoneySafe[i][msPos][3]
  851. ,MoneySafe[i][msPos][4]
  852. ,MoneySafe[i][msPos][5]
  853. ,MoneySafe[i][msStat]);
  854.  
  855. strcat(bstr,nstr);
  856. }
  857. }
  858. fwrite(ExportMS, bstr);
  859. fclose(ExportMS);
  860. return 1;
  861. }
  862. stock SendClientMessageEx(playerid, color, const str[], {Float,_}:...)
  863. {
  864. static
  865. args,
  866. start,
  867. end,
  868. string[144]
  869. ;
  870. #emit LOAD.S.pri 8
  871. #emit STOR.pri args
  872.  
  873. if (args > 12)
  874. {
  875. #emit ADDR.pri str
  876. #emit STOR.pri start
  877.  
  878. for (end = start + (args - 12); end > start; end -= 4)
  879. {
  880. #emit LREF.pri end
  881. #emit PUSH.pri
  882. }
  883. #emit PUSH.S str
  884. #emit PUSH.C 144
  885. #emit PUSH.C string
  886. #emit PUSH.C args
  887. #emit SYSREQ.C format
  888.  
  889. SendClientMessage(playerid, color, string);
  890.  
  891. #emit LCTRL 5
  892. #emit SCTRL 4
  893. #emit RETN
  894. }
  895. return SendClientMessage(playerid, color, str);
  896. }
  897. stock CreatePlayerTextDrawEx(playerid,i,Float:X,Float:Y,Float:RX,Float:RY,Float:RZ,str[],Float:LsX,Float:LsY,Float:TsX,Float:TsY,Alg,mid,clr,useb,bclr,shd,out,bgc,fnt,prop,slct)
  898. {
  899. PlayerInfo[playerid][pTextdraws][i] = CreatePlayerTextDraw(playerid, X, Y, str);
  900. PlayerTextDrawLetterSize(playerid, PlayerInfo[playerid][pTextdraws][i], LsX, LsY);
  901.  
  902. if(TsX !=0.0 && TsY !=0.0 ) PlayerTextDrawTextSize(playerid, PlayerInfo[playerid][pTextdraws][i], TsX, TsY);
  903.  
  904. PlayerTextDrawAlignment(playerid, PlayerInfo[playerid][pTextdraws][i], Alg);
  905. PlayerTextDrawSetPreviewModel(playerid, PlayerInfo[playerid][pTextdraws][i], mid);
  906. PlayerTextDrawColor(playerid, PlayerInfo[playerid][pTextdraws][i], clr);
  907. PlayerTextDrawSetPreviewRot(playerid,PlayerInfo[playerid][pTextdraws][i],RX,RY,RZ);
  908. if(useb == 1)
  909. {
  910. PlayerTextDrawUseBox(playerid, PlayerInfo[playerid][pTextdraws][i], true);
  911. PlayerTextDrawBoxColor(playerid, PlayerInfo[playerid][pTextdraws][i], bclr);
  912. }
  913.  
  914. PlayerTextDrawSetShadow(playerid, PlayerInfo[playerid][pTextdraws][i], shd);
  915. PlayerTextDrawSetOutline(playerid, PlayerInfo[playerid][pTextdraws][i], out);
  916. PlayerTextDrawBackgroundColor(playerid, PlayerInfo[playerid][pTextdraws][i], bgc);
  917. PlayerTextDrawFont(playerid, PlayerInfo[playerid][pTextdraws][i], fnt);
  918. PlayerTextDrawSetProportional(playerid, PlayerInfo[playerid][pTextdraws][i], prop);
  919.  
  920. if(slct==1)
  921. PlayerTextDrawSetSelectable(playerid, PlayerInfo[playerid][pTextdraws][i], true);
  922. return 1;
  923. }
  924. stock ShowTextDraws(playerid,in,to)
  925. {
  926. iLoop(in,to,i)
  927. {
  928. PlayerTextDrawShow(playerid, PlayerInfo[playerid][pTextdraws][i]);
  929. }
  930. return 1;
  931. }
  932. stock HideTextDraws(playerid,in,to)
  933. {
  934. iLoop(in,to,i)
  935. {
  936. PlayerTextDrawHide(playerid, PlayerInfo[playerid][pTextdraws][i]);
  937. }
  938. return 1;
  939. }
  940. stock PreloadAnimations(playerid)
  941. {
  942. for (new i = 0; i < sizeof(PreloadLibs); i ++) {
  943. ApplyAnimation(playerid, PreloadLibs[i], "null", 4.0, 0, 0, 0, 0, 0, 1);
  944. }
  945. return 1;
  946. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement