buttons.txt 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. sign.started(gamesignloc);
  2. rankingtable = "buttonranks";
  3. game_short = "button";
  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. clicked = 0;
  10. checked = 0;
  11. tfn = 5; //timeForNext in sec
  12. factor = 0.98; //Faktor, um den tfn vermindert wird
  13. sgoto(tfn * 20, "gameover");
  14. gamename = "§2Buttons";
  15. @wait
  16. wait();
  17. if(event == "entity_damage") {
  18. if(!isPlayer(entity)) {
  19. goto("wait");
  20. }
  21. player = entity;
  22. }
  23. if(player.hasMinigameId(player, script_id)) {
  24. ignoreGoto(event);
  25. }
  26. goto("wait");
  27. @nextbutton
  28. while(toclick == lastclick) {
  29. toclick = list.getIndex(buttons, math.random(0, list.getSize(buttons) - 1));
  30. }
  31. if(direction == "x") {
  32. marked_block = block.get(loc.mod(toclick, number, 0, 0));
  33. } elseif(direction == "z") {
  34. marked_block = block.get(loc.mod(toclick, 0, 0, number));
  35. }
  36. block.setMaterial(marked_block, mark_material);
  37. goto("wait");
  38. @minigame_join
  39. entity.teleport(player, spawn_loc);
  40. living.setHealth(player, 20);
  41. player.setHunger(player, 20);
  42. player.setSaturation(player, 5);
  43. player.clearInventory(player);
  44. sb.add(player, 99, gamename);
  45. sb.add(player, 98, "Time for next click:");
  46. sb.add(player, 97, math.roundComma(tfn, 2));
  47. sb.add(player, 96, string.concat("Points: ", string.number(clicked)));
  48. sb.add(player, 95, sb.getSpacer());
  49. msg.prefix(player, "§2Buttons", "Click the correct button in time.");
  50. gameover_player = player;
  51. goto("nextbutton");
  52. @entity_damage
  53. cancel = true;
  54. goto("wait");
  55. @block_click
  56. if(block == null) {
  57. goto("wait");
  58. }
  59. if(slot.isOffHand(hand)) {
  60. goto("wait");
  61. }
  62. if(action != "RIGHT_CLICK_BLOCK") {
  63. goto("wait");
  64. }
  65. if(block.isType(block, "OAK_WALL_SIGN")) {
  66. goto("wait");
  67. }
  68. cancel = true;
  69. block_loc = block.getLocation(block);
  70. if(block_loc == toclick) {
  71. tfn *= factor;
  72. tfn = math.roundComma(tfn, 2);
  73. sb.add(player, 97, tfn);
  74. sb.add(player, 96, "Points: ", string.number(++clicked));
  75. sgoto(tfn * 20, "gameover");
  76. block.setMaterial(marked_block, origin_material);
  77. lastclick = toclick;
  78. goto("nextbutton");
  79. }
  80. msg.prefix(player, gamename, "You clicked the wrong button.");
  81. goto("coregameover");
  82. @gameover
  83. player = gameover_player;
  84. if(++checked > clicked) {
  85. msg.prefix(player, gamename, "You were too slow.");
  86. goto("coregameover");
  87. }
  88. goto("wait");
  89. @coregameover
  90. player_id = player.getId(player);
  91. playedgames = minigame.getPlayed(player_id, game_short) + 1;
  92. minigame.setPlayed(player_id, game_short, playedgames);
  93. last_record = ranking.getPoints(rankingtable, player_id);
  94. if(last_record < clicked) {
  95. record = clicked;
  96. diff = clicked - last_record;
  97. } else {
  98. record = last_record;
  99. }
  100. ranking.setPoints(rankingtable, player_id, record);
  101. minigame.statsHeader(player, gamename, "§e");
  102. minigame.statsLine(player, "§e", "Points", string.number(clicked));
  103. minigame.statsLine(player, "§e", "Your record", string.number(last_record));
  104. if(diff != null) {
  105. msg.string(player, string.concat(" §e- §rBeat own record by §e", string.number(diff)));
  106. }
  107. minigame.statsLine(player, "§e", "Played games", string.number(playedgames));
  108. //money.addBoost(player, math.round(clicked));
  109. @player_giveup
  110. @player_quit
  111. block.setMaterial(marked_block, origin_material);
  112. sb.remove(player, 99);
  113. sb.remove(player, 98);
  114. sb.remove(player, 97);
  115. sb.remove(player, 96);
  116. sb.remove(player, 95);
  117. script = script.getFromId(script_id);
  118. minigame.kickPlayer(script, player);
  119. minigame.term(script, gamesignloc);
  120. term();