ihranked.txt 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. pumpkin_mat = material.get("pumpkin");
  2. shears_mat = material.get("shears");
  3. vine_mat = material.get("vine");
  4. sugar_cane_mat = material.get("sugar_cane");
  5. farmland_mat = material.get("farmland");
  6. carved_pumpkin = item.new(material.get("carved_pumpkin"));
  7. sugar_cane = item.new(sugar_cane_mat);
  8. minigame.initStart();
  9. step = 1;
  10. gamename = "§aItemHunt";
  11. rankingtable = "sfsingle";
  12. game_short = "sfsingle";
  13. sign.started(gamesignloc);
  14. event.load("bucket_use");
  15. event.load("living_pickup");
  16. event.load("craft");
  17. min = 16;
  18. sec = 0;
  19. timer_string = string.concat("§bTimer: §r", string.number(min), " min 0", string.number(sec), " s");
  20. farmtypes = list.new();
  21. list.add(farmtypes, material.get("minecraft:carrots"));
  22. list.add(farmtypes, material.get("minecraft:melon_stem"));
  23. list.add(farmtypes, material.get("minecraft:potatoes"));
  24. list.add(farmtypes, material.get("minecraft:wheat"));
  25. player_blocks = set.new();
  26. set.add(player_blocks, material.get("minecraft:crafting_table"));
  27. set.add(player_blocks, material.get("minecraft:furnace"));
  28. set.add(player_blocks, material.get("minecraft:chest"));
  29. saplings = map.new();
  30. map.add(saplings, material.get("oak_leaves"), item.new(material.get("oak_sapling")));
  31. map.add(saplings, material.get("spruce_leaves"), item.new(material.get("spruce_sapling")));
  32. map.add(saplings, material.get("birch_leaves"), item.new(material.get("birch_sapling")));
  33. map.add(saplings, material.get("jungle_leaves"), item.new(material.get("jungle_sapling")));
  34. map.add(saplings, material.get("acacia_leaves"), item.new(material.get("acacia_sapling")));
  35. map.add(saplings, material.get("dark_oak_leaves"), item.new(material.get("dark_oak_sapling")));
  36. nextitems = list.new();
  37. founditems = list.new();
  38. player_blocks_placed = set.new();
  39. resetlist_type = list.new();
  40. resetlist_block = list.new();
  41. resetlist_data = list.new();
  42. resetlist_block_2 = list.new();
  43. resetlistdouble_data = list.new();
  44. resetlistdouble_data_2 = list.new();
  45. resetlistdouble_block = list.new();
  46. resetlistdouble_block2 = list.new();
  47. sgoto(2, "tick");
  48. minigame.speakAll(gamename, "Collect as many shown items as you can.");
  49. minigame.speakAll(gamename, "Drop and collect not counted items again.");
  50. @wait
  51. wait();
  52. if(event == "living_pickup") {
  53. if(!isPlayer(living_entity)) {
  54. goto("wait");
  55. }
  56. player = living_entity;
  57. }
  58. if(event == "entity_damage") {
  59. if(!isPlayer(entity)) {
  60. goto("wait");
  61. }
  62. player = entity;
  63. }
  64. if(player.hasMinigameId(player, script_id)) {
  65. ignoreGoto(event);
  66. }
  67. goto("wait");
  68. @minigame_join
  69. templist = list.new();
  70. list.add(templist, items1);
  71. list.add(templist, items2);
  72. list.add(templist, items3);
  73. list.add(templist, items4);
  74. for(h = 0; h < list.getSize(templist); h++) {
  75. list = list.getIndex(templist, h);
  76. for(i = 0; i < list.getSize(list); i++) {
  77. item_type = list.getIndex(list, i);
  78. mat = material.get(item_type);
  79. if(mat == null) {
  80. minigame.speakAll(gamename, item_type);
  81. minigame.speakAll(gamename, "False Item found. Game termed. Inform marvinius.");
  82. term();
  83. }
  84. }
  85. }
  86. player_list = minigame.getPlayers(script_id);
  87. minigame.speakAll(gamename, "The game has started.");
  88. iter = iterator(player_list);
  89. while(hasNext(iter)) {
  90. player = player.get(next(iter));
  91. entity.teleport(player, spawn_loc);
  92. player.setGamemode(player, "SURVIVAL");
  93. player.setFly(player, false);
  94. living.cleareffects(player);
  95. living.setHealth(player, 20);
  96. player.setHunger(player, 20);
  97. player.setSaturation(player, 5);
  98. player.clearInventory(player);
  99. sb.add(player, 99, gamename);
  100. sb.add(player, 98, timer_string);
  101. sb.add(player, 97, "§bFound Items: §r0");
  102. sb.add(player, 96, "§bNext Items:");
  103. sb.add(player, 92, sb.getSpacer());
  104. living.addEffect(player, "SPEED", 19200, 1);
  105. }
  106. for(h = 0; h < 3; h++) {
  107. gosub("newitem");
  108. }
  109. goto("wait");
  110. @block_click
  111. if(action == "RIGHT_CLICK_BLOCK") {
  112. block_type = block.getType(block);
  113. if(set.contains(player_blocks, block_type)) {
  114. goto("wait");
  115. }
  116. if(slot.isHand(hand)) {
  117. item_type = item.getType(living.getHand(player));
  118. } else {
  119. item_type = item.getType(living.getOffHand(player));
  120. }
  121. if(set.contains(player_blocks, item_type)) {
  122. goto("wait");
  123. }
  124. cancel = true;
  125. if(block_type == pumpkin_mat && item_type == shears_mat) {
  126. block_loc = block.getLocation(block);
  127. item.drop(carved_pumpkin, block_loc);
  128. }
  129. }
  130. goto("wait");
  131. @entity_damage
  132. if(isPlayer(entity)) {
  133. cancel = true;
  134. }
  135. goto("wait");
  136. @block_break
  137. cancel = false;
  138. block_type = block.getType(block);
  139. if(set.contains(player_blocks, block_type)) {
  140. goto("wait");
  141. }
  142. block_loc = block.getLocation(block);
  143. if(block.isLeaves(block)) {
  144. sapling = map.get(saplings, block_type);
  145. item.drop(sapling, block_loc);
  146. }
  147. if(block.isBisected(block)) {
  148. if(block.getBisectedHalf(block) == "BOTTOM") {
  149. b = block;
  150. b2 = block.mod(block, 0, 1, 0);
  151. } else {
  152. b = block.mod(block, 0, -1, 0);
  153. b2 = block;
  154. }
  155. list.add(resetlistdouble_data, block.getData(b));
  156. list.add(resetlistdouble_data_2, block.getData(b2));
  157. list.add(resetlistdouble_block, b);
  158. list.add(resetlistdouble_block2, b2);
  159. sgoto(2, "doubleresetblock");
  160. goto("wait");
  161. }
  162. if(block_type == vine_mat) {
  163. cancel = true;
  164. goto("wait");
  165. }
  166. if(block_type == sugar_cane_mat) {
  167. cancel = true;
  168. item.drop(sugar_cane, block_loc);
  169. goto("wait");
  170. }
  171. if(block_type == farmland_mat) {
  172. cancel = true;
  173. goto("wait");
  174. }
  175. if(list.contains(farmtypes, block_type)) {
  176. list.add(resetlist_data, block.getData(block));
  177. list.add(resetlist_block_2, block);
  178. sgoto(2, "resetblock_data");
  179. } else {
  180. list.add(resetlist_type, block_type);
  181. list.add(resetlist_block, block);
  182. sgoto(2, "resetblock");
  183. }
  184. goto("wait");
  185. @bucket_use
  186. cancel = true;
  187. goto("wait");
  188. @block_place
  189. cancel = true;
  190. block_type = block.getType(block);
  191. if(set.contains(player_blocks, block_type)) {
  192. cancel = false;
  193. set.add(player_blocks_placed, block);
  194. }
  195. goto("wait");
  196. @doubleresetblock
  197. bdata = list.getIndex(resetlistdouble_data, 0);
  198. bdata2 = list.getIndex(resetlistdouble_data_2, 0);
  199. b = list.getIndex(resetlistdouble_block, 0);
  200. b2 = list.getIndex(resetlistdouble_block2, 0);
  201. list.removeIndex(resetlistdouble_data, 0);
  202. list.removeIndex(resetlistdouble_data_2, 0);
  203. list.removeIndex(resetlistdouble_block, 0);
  204. list.removeIndex(resetlistdouble_block2, 0);
  205. block.setData(b, bdata);
  206. block.setData(b2, bdata2);
  207. goto("wait");
  208. @resetblock
  209. btype = list.getIndex(resetlist_type, 0);
  210. b = list.getIndex(resetlist_block, 0);
  211. list.removeIndex(resetlist_type, 0);
  212. list.removeIndex(resetlist_block, 0);
  213. if(list.contains(farmtypes, btype)) {
  214. block.setData(b, read.blockData(string.replace(string.blockData(btype), "age=.", "age=7")));
  215. } else {
  216. block.setMaterial(b, btype);
  217. }
  218. goto("wait");
  219. @resetblock_data
  220. bdata = list.getIndex(resetlist_data, 0);
  221. b = list.getIndex(resetlist_block_2, 0);
  222. list.removeIndex(resetlist_data, 0);
  223. list.removeIndex(resetlist_block_2, 0);
  224. block.setData(b, read.blockData(string.replace(string.blockData(bdata), "age=.", "age=7")));
  225. goto("wait");
  226. @tick
  227. if(sec == 0) {
  228. sec = 59;
  229. min--;
  230. if(min == -1) {
  231. goto("endgame");
  232. }
  233. } else {
  234. sec--;
  235. if(sec < 10) {
  236. minigame.displayAll(98, string.concat("§bTimer: §r", string.number(min), " min 0", string.number(sec), " s"));
  237. } else {
  238. minigame.displayAll(98, string.concat("§bTimer: §r", string.number(min), " min ", string.number(sec), " s"));
  239. }
  240. if(min == 0) {
  241. if(sec == 30) {
  242. minigame.speakAll(gamename, "30 seconds left!");
  243. } elseif(sec == 10) {
  244. minigame.speakAll(gamename, "10 seconds left!");
  245. } elseif(sec == 5) {
  246. minigame.speakAll(gamename, "5 seconds left!");
  247. }
  248. }
  249. }
  250. sgoto(20, "tick");
  251. goto("wait");
  252. @living_pickup
  253. item = item.entity.get(item_entity);
  254. @craft
  255. itype = item.getType(item);
  256. if(list.contains(nextitems, itype)) {
  257. list.add(founditems, itype);
  258. list.remove(nextitems, itype);
  259. minigame.displayAll(97, string.concat("§bFound Items: §r", string.number(list.getSize(founditems))));
  260. gosub("newitem");
  261. }
  262. goto("wait");
  263. @newitem
  264. if(min < 12) {
  265. if(step == 1) {
  266. for(i = 0; i < list.getSize(items2); i++) {
  267. list.add(items1, list.getIndex(items2, i));
  268. }
  269. step = 2;
  270. }
  271. if(min < 8) {
  272. if(step == 2) {
  273. for(i = 0; i < list.getSize(items3); i++) {
  274. list.add(items1, list.getIndex(items3, i));
  275. }
  276. step = 3;
  277. }
  278. if(min < 4) {
  279. if(step == 3) {
  280. for(i = 0; i < list.getSize(items4); i++) {
  281. list.add(items1, list.getIndex(items4, i));
  282. }
  283. step = 4;
  284. }
  285. }
  286. }
  287. }
  288. items1_size = list.getSize(items1);
  289. if(items1_size == 0) {
  290. return;
  291. }
  292. randomitemstring = list.getIndex(items1, math.random(0, items1_size - 1));
  293. list.remove(items1, randomitemstring);
  294. list.add(nextitems, material.get(randomitemstring));
  295. for(i = 0; i < list.getSize(nextitems); i++) {
  296. type_string = string(list.getIndex(nextitems, i));
  297. minigame.displayAll(95 - i, type_string);
  298. }
  299. return;
  300. @endgame
  301. yetfound = list.getSize(founditems);
  302. iter = iterator(player_list);
  303. while(hasNext(iter)) {
  304. player = player.get(next(iter));
  305. player_id = player.getId(player);
  306. playedgames = minigame.getPlayed(player_id, game_short) + 1;
  307. minigame.setPlayed(player_id, game_short, playedgames);
  308. last_record = ranking.getPoints(rankingtable, player_id);
  309. if(last_record < yetfound) {
  310. diff = yetfound - last_record;
  311. last_record = yetfound;
  312. }
  313. ranking.setPoints(rankingtable, player_id, last_record);
  314. minigame.statsHeader(player, $gamename, "§e");
  315. minigame.statsLine(player, "§e", "Found Items", string.number(yetfound));
  316. if(diff != null) {
  317. msg(player, text.new(string.concat(" §e- §rBeat own record by §e", string.number(diff))));
  318. }
  319. minigame.statsLine(player, "§e", "Played games", string.number(playedgames));
  320. //money.addBoost(player, yetfound / 2);
  321. }
  322. @player_quit
  323. @player_giveup
  324. script = script.getFromId(script_id);
  325. iter = iterator(player_blocks_placed);
  326. air = material.getAir();
  327. while(hasNext(iter)) {
  328. block.setMaterial(next(iter), air);
  329. }
  330. minigame.clearItems(middleloc, radius);
  331. minigame.kickplayer(script, player);
  332. minigame.term(script, gamesignloc);
  333. term();