letters.txt 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. sign.started(gamesignloc);
  2. rankingtable = "letterranks";
  3. game_short = "letter";
  4. event.load("block_click");
  5. event.load("player_quit");
  6. event.load("player_giveup");
  7. event.load("minigame_join");
  8. event.load("entity_damage");
  9. @wait
  10. wait();
  11. if(event == "entity_damage") {
  12. if(!isPlayer(entity)) {
  13. goto("wait");
  14. }
  15. player = entity;
  16. }
  17. if(player.hasMinigameId(player, script_id)) {
  18. ignoreGoto(event);
  19. }
  20. goto("wait");
  21. @entity_damage
  22. cancel = true;
  23. goto("wait");
  24. @minigame_join
  25. letters = list.new();
  26. list.addAll(letters, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
  27. letters2 = list.copy(letters);
  28. gamename = "§dLetters";
  29. counter = 0;
  30. minutes = 0;
  31. seconds = 0;
  32. this_player = player;
  33. entity.teleport(player, spawnloc);
  34. living.cleareffects(player);
  35. living.setHealth(player, 20);
  36. player.setHunger(player, 20);
  37. player.setSaturation(player, 5);
  38. title.send(player, text.new(gamename), text.new(mapname));
  39. nextletter = list.getIndex(letters, counter);
  40. sb.add(player, 99, gamename);
  41. sb.add(player, 98, string.concat(string.number(counter), "/26"));
  42. sb.add(player, 97, string.concat("Find: ", nextletter));
  43. sb.add(player, 96, string.concat("Time: 0:00"));
  44. sb.add(player, 95, sb.getSpacer());
  45. player.clearInventory(player);
  46. if(!fixsigns) {
  47. logblocks = list.new();
  48. signblocks = list.new();
  49. sign_facing = list.new();
  50. }
  51. log_tag = block.getTag("minecraft:logs");
  52. sign_tag = block.getTag("minecraft:signs");
  53. if(!fixsigns) {
  54. x1 = loc.getBlockX(edge1);
  55. y1 = loc.getBlockY(edge1);
  56. z1 = loc.getBlockZ(edge1);
  57. x2 = loc.getBlockX(edge2);
  58. y2 = loc.getBlockY(edge2);
  59. z2 = loc.getBlockZ(edge2);
  60. if(x1 > x2) {
  61. helper = x2;
  62. x2 = x1;
  63. x1 = helper;
  64. }
  65. if(z1 > z2) {
  66. helper = z2;
  67. z2 = z1;
  68. z1 = helper;
  69. }
  70. edge1 = loc.new(gamesworld, x1, y1, z1);
  71. edgeblock1 = block.get(edge1);
  72. xedgedistance = x2 - x1;
  73. zedgedistance = z2 - z1;
  74. for(x = 0; x < xedgedistance; x++) {
  75. for(z = 0; z < zedgedistance; z++) {
  76. relblock = block.mod(edgeblock1, x, 0, z);
  77. if(block.hasTag(relblock, log_tag)) {
  78. list.add(logblocks, relblock);
  79. }
  80. if(block.hasTag(relblock, sign_tag)) {
  81. block.setMaterial(relblock, material.getAir());
  82. }
  83. }
  84. }
  85. for(i = 0; i < list.getSize(logblocks); i++) {
  86. x = 0;
  87. z = 0;
  88. y = math.random(0, 3);
  89. xz = math.random(0, 1);
  90. if(xz == 0) {
  91. while(x == 0) {
  92. x = math.random(-1, 1);
  93. }
  94. } else {
  95. while(z == 0) {
  96. z = math.random(-1, 1);
  97. }
  98. }
  99. list.add(signblocks, block.mod(list.getIndex(logblocks, i), x, y, z));
  100. if(x == -1) {
  101. list.add(sign_facing, "WEST");
  102. } elseif(x == 1) {
  103. list.add(sign_facing, "EAST");
  104. }
  105. if(z == -1) {
  106. list.add(sign_facing, "NORTH");
  107. } elseif(z == 1) {
  108. list.add(sign_facing, "SOUTH");
  109. }
  110. }
  111. oak_wall_sign = material.get("OAK_WALL_SIGN");
  112. for(i = 0; i < list.getSize(signblocks); i++) {
  113. tempblock = list.getIndex(signblocks, i);
  114. facing = list.getIndex(sign_facing, i);
  115. block.setMaterial(tempblock, oak_wall_sign);
  116. block.setDirectionalFace(tempblock, facing);
  117. tempindex = math.random(0 , list.getSize(letters2) - 1);
  118. sign.setString(tempblock, 0, list.getIndex(letters2, tempindex));
  119. list.removeIndex(letters2, tempindex);
  120. }
  121. } elseif(fixsigns) {
  122. for(i = 0; i < list.getSize(signcoords); i++) {
  123. tempblock = block.get(list.getIndex(signcoords, i));
  124. tempindex = math.random(0 , list.getSize(letters2) - 1);
  125. sign.setString(tempblock, 0, list.getIndex(letters2, tempindex));
  126. list.removeIndex(letters2, tempindex);
  127. }
  128. }
  129. sgoto(20, "loop");
  130. goto("wait");
  131. @loop
  132. seconds++;
  133. if(seconds == 60) {
  134. minutes++;
  135. seconds = 0;
  136. }
  137. if(seconds < 10) {
  138. sb.add(this_player, 96, string.concat("Time: ", string.number(minutes), ":0", string.number(seconds)));
  139. } else {
  140. sb.add(this_player, 96, string.concat("Time: ", string.number(minutes), ":", string.number(seconds)));
  141. }
  142. sgoto(20, "loop");
  143. goto("wait");
  144. @block_click
  145. if(block == null) {
  146. goto("wait");
  147. }
  148. cancel = true;
  149. if(block.hasTag(block, sign_tag)) {
  150. letter = sign.getString(block, 0);
  151. if(letter == nextletter) {
  152. counter++;
  153. msg.prefix(player, gamename, string.concat("Progress: ", string.number(counter), "/26"));
  154. sb.add(player, 98, string.concat(string.number(counter), "/26"));
  155. living.setHealth(player, 20);
  156. player.setHunger(player, 20);
  157. player.setSaturation(player, 5);
  158. if(counter == 26) {
  159. time = minutes * 60 + seconds;
  160. tpl = math.roundComma(time / 26, 2);
  161. player_id = player.getId(player);
  162. played_games = minigame.getPlayed(player_id, game_short) + 1;
  163. minigame.setPlayed(player_id, game_short, played_games);
  164. last_record = ranking.getPoints(rankingtable, player_id);
  165. if(last_record == 0 || time < last_record) {
  166. record = time;
  167. diff = last_record - time;
  168. } else {
  169. record = last_record;
  170. }
  171. ranking.setPoints(rankingtable, player_id, record);
  172. rec_mins = math.roundDown(record / 60);
  173. rec_secs = math.roundComma(record % 60, 2);
  174. minigame.statsHeader(player, gamename, "§e");
  175. minigame.statsLine(player, "§e", "Time", string.concat(string.number(minutes), " min ", string.number(seconds), " s"));
  176. minigame.statsLine(player, "§e", "Time per Letter", string.concat(string.number(tpl), " s"));
  177. minigame.statsLine(player, "§e", "Your record", string.concat(string.number(rec_mins), " min ", string.number(rec_secs), " s"));
  178. if(diff != null) {
  179. msg.string(player, string.concat(" §e- §rBeat own record by §e", string.concat(string.number(diff), " s")));
  180. }
  181. minigame.statsLine(player, "§e", "Played games", string.number(played_games));
  182. //money.addBoost(player, 26);
  183. goto("player_giveup");
  184. }
  185. nextletter = list.getIndex(letters, counter);
  186. sb.add(player, 97, string.concat("Find: ", nextletter));
  187. }
  188. }
  189. goto("wait");
  190. @player_quit
  191. @player_giveup
  192. if(!fixsigns) {
  193. for(i = 0; i < list.getSize(signblocks); i++) {
  194. block.setMaterial(list.getIndex(signblocks, i), material.getAir());
  195. }
  196. }
  197. sb.remove(player, 99);
  198. sb.remove(player, 98);
  199. sb.remove(player, 97);
  200. sb.remove(player, 96);
  201. sb.remove(player, 95);
  202. sb.remove(player, 95);
  203. script = script.getFromId(script_id);
  204. minigame.kickPlayer(script, player);
  205. minigame.term(script, gamesignloc);
  206. term();