crates.pwn 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /*
  2. /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$
  3. | $$$ | $$ /$$__ $$ | $$__ $$| $$__ $$
  4. | $$$$| $$| $$ \__/ | $$ \ $$| $$ \ $$
  5. | $$ $$ $$| $$ /$$$$ /$$$$$$| $$$$$$$/| $$$$$$$/
  6. | $$ $$$$| $$|_ $$|______/| $$__ $$| $$____/
  7. | $$\ $$$| $$ \ $$ | $$ \ $$| $$
  8. | $$ \ $$| $$$$$$/ | $$ | $$| $$
  9. |__/ \__/ \______/ |__/ |__/|__/
  10. Next Generation RolePlay Crate Event
  11. (created by Next Generation Gaming Development Team)
  12. Combined Credits:
  13. (***) Scott
  14. */
  15. #include <a_samp>
  16. #include <zcmd>
  17. #include <sscanf2>
  18. #include <streamer>
  19. #define COLOR_WHITE 0xFFFFFFAA
  20. new cratesspawned;
  21. new Crates[110];
  22. public OnFilterScriptInit()
  23. {
  24. AntiDeAMX();
  25. }
  26. CMD:cratehelp(playerid, params[])
  27. {
  28. SendClientMessage(playerid, COLOR_WHITE, "Crate Commands:");
  29. SendClientMessage(playerid, COLOR_WHITE, "/cratespawn, /cratedestroy, /cratefall [number]");
  30. return 1;
  31. }
  32. CMD:cratefall(playerid, params[])
  33. {
  34. new name[24];
  35. GetPlayerName(playerid, name, 24);
  36. if(IsPlayerAdmin(playerid) || strcmp(name, "Scott_Reed", true) == 0 || strcmp(name, "Dwight_Schrute", true) == 0)
  37. {
  38. if(cratesspawned == 0) return SendClientMessage(playerid, COLOR_WHITE, "Error: Crates are not yet spawned, use /cratespawn");
  39. new cratestofall;
  40. if(sscanf(params, "i",cratestofall)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /cratefall [number]");
  41. CrateFall(playerid, cratestofall);
  42. }
  43. return 1;
  44. }
  45. CMD:cratespawn(playerid, params[])
  46. {
  47. new name[24];
  48. GetPlayerName(playerid, name, 24);
  49. if(IsPlayerAdmin(playerid) || strcmp(name, "Scott_Reed", true) == 0 || strcmp(name, "Dwight_Schrute", true) == 0)
  50. {
  51. if(cratesspawned == 1) return SendClientMessage(playerid, COLOR_WHITE, "Error: Crates are already spawned, use /cratedestroy");
  52. SendClientMessage(playerid, COLOR_WHITE, "Spawning crates..");
  53. SpawnCrates(playerid);
  54. }
  55. return 1;
  56. }
  57. CMD:cratedestroy(playerid, params[])
  58. {
  59. new name[24];
  60. GetPlayerName(playerid, name, 24);
  61. if(IsPlayerAdmin(playerid) || strcmp(name, "Scott_Reed", true) == 0 || strcmp(name, "Dwight_Schrute", true) == 0)
  62. {
  63. if(cratesspawned == 0) return SendClientMessage(playerid, COLOR_WHITE, "Error: Crates are not yet spawned, use /cratespawn");
  64. SendClientMessage(playerid, COLOR_WHITE, "Destroying crates..");
  65. DestroyCrates(playerid);
  66. }
  67. return 1;
  68. }
  69. public OnDynamicObjectMoved(objectid)
  70. {
  71. for(new x;x<sizeof(Crates);x++)
  72. {
  73. if(objectid == Crates[x])
  74. {
  75. DestroyDynamicObject(Crates[x]);
  76. return 1;
  77. }
  78. }
  79. return 1;
  80. }
  81. stock SpawnCrates(playerid)
  82. {
  83. new Float:X, Float:Y, Float:Z;
  84. GetPlayerPos(playerid, X, Y, Z);
  85. //Generate the square
  86. new block = 0;
  87. for(new x;x<15;x++)
  88. {
  89. for(new y;y<7;y++)
  90. {
  91. Crates[block] = CreateDynamicObject(2932, X + (3*x), Y + (7.1*y), Z, 0, 0, 0);
  92. block ++;
  93. }
  94. }
  95. new string[128];
  96. format(string, sizeof(string), "Crates spawned at %f, %f, %f", X, Y, Z);
  97. SendClientMessage(playerid, COLOR_WHITE, string);
  98. cratesspawned=1;
  99. return 1;
  100. }
  101. stock DestroyCrates(playerid)
  102. {
  103. new block = 0;
  104. for(new x;x<15;x++)
  105. {
  106. for(new y;y<7;y++)
  107. {
  108. DestroyDynamicObject(Crates[block]);
  109. block ++;
  110. }
  111. }
  112. SendClientMessage(playerid, COLOR_WHITE, "Crates Destroyed");
  113. cratesspawned=0;
  114. return 1;
  115. }
  116. stock CrateFall(playerid, number)
  117. {
  118. new rand, x;
  119. top:
  120. rand = random(105);
  121. if(IsValidDynamicObject(Crates[rand]))
  122. {
  123. new Float:X, Float:Y, Float:Z;
  124. GetDynamicObjectPos(Crates[rand], X, Y, Z);
  125. MoveDynamicObject(Crates[rand], X, Y, Z-10, 2);
  126. number--;
  127. }
  128. x++;
  129. if(x > 10000 || number <= 0)
  130. {
  131. SendClientMessage(playerid, COLOR_WHITE, "Crates fallen (if no crates fell, try again.)");
  132. return 1;
  133. }
  134. else
  135. {
  136. goto top;
  137. }
  138. return 1;
  139. }
  140. AntiDeAMX()
  141. {
  142. new a[][] =
  143. {
  144. "Unarmed (Fist)",
  145. "Brass K"
  146. };
  147. #pragma unused a
  148. }