collfever.txt 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  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. gosub("setstart");
  9. step = 1;
  10. gamename = "§aSammelfieber";
  11. rankingtable = "collfever";
  12. game_short = "coll";
  13. sign.started(gamesignloc);
  14. event.load("bucket_use");
  15. event.load("living_pickup");
  16. event.load("craft");
  17. min = 10;
  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. founditems = set.new();
  37. player_blocks_placed = set.new();
  38. resetlist_type = list.new();
  39. resetlist_block = list.new();
  40. resetlist_data = list.new();
  41. resetlist_block_2 = list.new();
  42. resetlistdouble_data = list.new();
  43. resetlistdouble_data_2 = list.new();
  44. resetlistdouble_block = list.new();
  45. resetlistdouble_block2 = list.new();
  46. sgoto(2, "tick");
  47. minigame.speakAll(gamename, "Collect as many different items as you can.");
  48. minigame.speakAll(gamename, "Drop and collect not counted items again.");
  49. @wait
  50. wait();
  51. if(event == "living_pickup") {
  52. if(!isPlayer(living_entity)) {
  53. goto("wait");
  54. }
  55. player = living_entity;
  56. }
  57. if(event == "entity_damage") {
  58. if(!isPlayer(entity)) {
  59. goto("wait");
  60. }
  61. player = entity;
  62. }
  63. if(player.hasMinigameId(player, script_id)) {
  64. ignoreGoto(event);
  65. }
  66. goto("wait");
  67. @minigame_join
  68. player_list = minigame.getPlayers(script_id);
  69. minigame.speakAll(gamename, "The game has started.");
  70. iter = iterator(player_list);
  71. while(hasNext(iter)) {
  72. player = player.get(next(iter));
  73. entity.teleport(player, spawn_loc);
  74. player.setGamemode(player, "SURVIVAL");
  75. player.setFly(player, false);
  76. living.cleareffects(player);
  77. living.setHealth(player, 20);
  78. player.setHunger(player, 20);
  79. player.setSaturation(player, 5);
  80. player.clearInventory(player);
  81. sb.add(player, 99, gamename);
  82. sb.add(player, 98, timer_string);
  83. sb.add(player, 97, "§bFound Items: §r0");
  84. sb.add(player, 96, sb.getSpacer());
  85. living.addEffect(player, "SPEED", 19200, 1);
  86. }
  87. goto("wait");
  88. @block_click
  89. if(action == "RIGHT_CLICK_BLOCK") {
  90. block_type = block.getType(block);
  91. if(set.contains(player_blocks, block_type)) {
  92. goto("wait");
  93. }
  94. if(slot.isHand(hand)) {
  95. item_type = item.getType(living.getHand(player));
  96. } else {
  97. item_type = item.getType(living.getOffHand(player));
  98. }
  99. if(set.contains(player_blocks, item_type)) {
  100. goto("wait");
  101. }
  102. cancel = true;
  103. if(block_type == pumpkin_mat && item_type == shears_mat) {
  104. block_loc = block.getLocation(block);
  105. item.drop(block_loc, carved_pumpkin);
  106. }
  107. }
  108. goto("wait");
  109. @entity_damage
  110. if(isPlayer(entity)) {
  111. cancel = true;
  112. }
  113. goto("wait");
  114. @block_break
  115. cancel = false;
  116. block_type = block.getType(block);
  117. if(set.contains(player_blocks, block_type)) {
  118. goto("wait");
  119. }
  120. block_loc = block.getLocation(block);
  121. if(block.isLeaves(block)) {
  122. sapling = map.get(saplings, block_type);
  123. item.drop(sapling, block_loc);
  124. }
  125. if(block.isBisected(block)) {
  126. if(block.getBisectedHalf(block) == "BOTTOM") {
  127. b = block;
  128. b2 = block.mod(block, 0, 1, 0);
  129. } else {
  130. b = block.mod(block, 0, -1, 0);
  131. b2 = block;
  132. }
  133. list.add(resetlistdouble_data, block.getData(b));
  134. list.add(resetlistdouble_data_2, block.getData(b2));
  135. list.add(resetlistdouble_block, b);
  136. list.add(resetlistdouble_block2, b2);
  137. sgoto(2, "doubleresetblock");
  138. goto("wait");
  139. }
  140. if(block_type == vine_mat) {
  141. cancel = true;
  142. goto("wait");
  143. }
  144. if(block_type == sugar_cane_mat) {
  145. cancel = true;
  146. item.drop(sugar_cane, block_loc);
  147. goto("wait");
  148. }
  149. if(block_type == farmland_mat) {
  150. cancel = true;
  151. goto("wait");
  152. }
  153. if(list.contains(farmtypes, block_type)) {
  154. list.add(resetlist_data, block.getData(block));
  155. list.add(resetlist_block_2, block);
  156. sgoto(2, "resetblock_data");
  157. } else {
  158. list.add(resetlist_type, block_type);
  159. list.add(resetlist_block, block);
  160. sgoto(2, "resetblock");
  161. }
  162. goto("wait");
  163. @bucket_use
  164. cancel = true;
  165. goto("wait");
  166. @block_place
  167. cancel = true;
  168. block_type = block.getType(block);
  169. if(set.contains(player_blocks, block_type)) {
  170. cancel = false;
  171. set.add(player_blocks_placed, block);
  172. }
  173. goto("wait");
  174. @doubleresetblock
  175. bdata = list.getIndex(resetlistdouble_data, 0);
  176. bdata2 = list.getIndex(resetlistdouble_data_2, 0);
  177. b = list.getIndex(resetlistdouble_block, 0);
  178. b2 = list.getIndex(resetlistdouble_block2, 0);
  179. list.removeIndex(resetlistdouble_data, 0);
  180. list.removeIndex(resetlistdouble_data_2, 0);
  181. list.removeIndex(resetlistdouble_block, 0);
  182. list.removeIndex(resetlistdouble_block2, 0);
  183. block.setData(b, bdata);
  184. block.setData(b2, bdata2);
  185. goto("wait");
  186. @resetblock
  187. btype = list.getIndex(resetlist_type, 0);
  188. b = list.getIndex(resetlist_block, 0);
  189. list.removeIndex(resetlist_type, 0);
  190. list.removeIndex(resetlist_block, 0);
  191. if(list.contains(farmtypes, btype)) {
  192. block.setData(b, read.blockData(string.replace(string.blockData(btype), "age=.", "age=7")));
  193. } else {
  194. block.setMaterial(b, btype);
  195. }
  196. goto("wait");
  197. @resetblock_data
  198. bdata = list.getIndex(resetlist_data, 0);
  199. b = list.getIndex(resetlist_block_2, 0);
  200. list.removeIndex(resetlist_data, 0);
  201. list.removeIndex(resetlist_block_2, 0);
  202. block.setData(b, read.blockData(string.replace(string.blockData(bdata), "age=.", "age=7")));
  203. goto("wait");
  204. @tick
  205. if(sec == 0) {
  206. sec = 59;
  207. min--;
  208. if(min == -1) {
  209. goto("endgame");
  210. }
  211. } else {
  212. sec--;
  213. if(sec < 10) {
  214. minigame.displayAll(98, string.concat("§bTimer: §r", string.number(min), " min 0", string.number(sec), " s"));
  215. } else {
  216. minigame.displayAll(98, string.concat("§bTimer: §r", string.number(min), " min ", string.number(sec), " s"));
  217. }
  218. if(min == 0) {
  219. if(sec == 30) {
  220. minigame.speakAll(gamename, "30 seconds left!");
  221. } elseif(sec == 10) {
  222. minigame.speakAll(gamename, "10 seconds left!");
  223. } elseif(sec == 5) {
  224. minigame.speakAll(gamename, "5 seconds left!");
  225. }
  226. }
  227. }
  228. sgoto(20, "tick");
  229. goto("wait");
  230. @living_pickup
  231. item = item.entity.get(item_entity);
  232. @craft
  233. itype = item.getType(item);
  234. if(!set.contains(founditems, itype)) {
  235. set.add(founditems, itype);
  236. minigame.displayAll(97, string.concat("§bFound Items: §r", string.number(set.getSize(founditems))));
  237. }
  238. goto("wait");
  239. @endgame
  240. yetfound = set.getSize(founditems);
  241. iter = iterator(player_list);
  242. while(hasNext(iter)) {
  243. player = player.get(next(iter));
  244. player_id = player.getId(player);
  245. playedgames = minigame.getPlayed(player_id, game_short) + 1;
  246. minigame.setPlayed(player_id, game_short, playedgames);
  247. last_record = ranking.getPoints(rankingtable, player_id);
  248. if(last_record < yetfound) {
  249. diff = yetfound - last_record;
  250. last_record = yetfound;
  251. }
  252. ranking.setPoints(rankingtable, player_id, last_record);
  253. minigame.statsHeader(player, $gamename, "§e");
  254. minigame.statsLine(player, "§e", "Found Items", string.number(yetfound));
  255. if(diff != null) {
  256. msg(player, text.new(string.concat(" §e- §rBeat own record by §e", string.number(diff))));
  257. }
  258. minigame.statsLine(player, "§e", "Played games", string.number(playedgames));
  259. //money.addBoost(player, yetfound / 2);
  260. }
  261. @player_logout
  262. @player_giveup
  263. script = script.getFromId(script_id);
  264. iter = iterator(player_blocks_placed);
  265. air = material.getAir();
  266. while(hasNext(iter)) {
  267. block.setMaterial(next(iter), air);
  268. }
  269. minigame.clearItems(middleloc, radius);
  270. minigame.kickplayer(script, player);
  271. minigame.term(script, gamesignloc);
  272. term();