jr_core.txt 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. @core_start
  2. maxplayers = 1;
  3. sign.started(gamesignloc);
  4. event.load("minigame_join");
  5. event.load("player_move");
  6. event.load("entity_damage");
  7. event.load("player_post_respawn");
  8. event.load("player_drop");
  9. event.load("player_quit");
  10. event.load("player_giveup");
  11. event.load("block_break");
  12. event.load("block_place");
  13. event.load("block_click");
  14. @wait
  15. wait();
  16. if(event == "entity_damage") {
  17. if(!isPlayer(entity)) {
  18. goto("wait");
  19. }
  20. player = entity;
  21. }
  22. if(player.hasMinigameId(player, script_id)) {
  23. gosub("event_specific");
  24. ignoreGoto(event);
  25. }
  26. goto("wait");
  27. @minigame_join
  28. custom_refresh_red = item.custom.get("REFRESH_RED");
  29. custom_return_red = item.custom.get("RETURN_RED");
  30. amount_checkpoints = list.getSize(spawn_locs) - 1;
  31. single_uuid = player.getUuid(player);
  32. jr.setStarttime();
  33. all_modules = jr.getModule(player);
  34. if(all_modules < amount_checkpoints) {
  35. jumpstage = all_modules;
  36. run_time = jr.getTime(player);
  37. jr.setLoopTime(run_time);
  38. jr.setRunTime(player, run_time);
  39. } else {
  40. jumpstage = jr.getRunModule(player);
  41. jr.setLoopTime(jr.getRunTime(player));
  42. }
  43. checkpoints = list.new();
  44. for(i = 0; i < list.getSize(spawn_locs); i++) {
  45. loc = list.getIndex(spawn_locs, i);
  46. b_loc = loc.mod(loc, -0.5, 0, -0.5);
  47. loc.setYaw(b_loc, 0);
  48. loc.setPitch(b_loc, 0);
  49. list.add(checkpoints, b_loc);
  50. b_loc_2 = loc.mod(b_loc, 1, 1, 1);
  51. if(i <= jumpstage) {
  52. continue;
  53. }
  54. event.addMoveData(b_loc, b_loc_2, -1, -1, player);
  55. }
  56. player.blockCommands(player);
  57. entity.teleport(player, list.getIndex(spawn_locs, jumpstage));
  58. player.clearInventory(player);
  59. sb.add(player, 99, gamename);
  60. sb.add(player, 97, sb.getSpacer());
  61. player.giveItem(player, item.custom.create("REFRESH_RED", 1, "§fReset to checkpoint", null));
  62. player.giveItem(player, item.custom.create("RETURN_RED", 1, "§fReset to start", null));
  63. title.send(player, text.new(gamename), text.new(mapname), 20, 20, 20);
  64. gosub("stage_specific");
  65. player.setGamemode(player, "ADVENTURE");
  66. player.setFly(player, false);
  67. sgoto(20, "loop");
  68. goto("wait");
  69. @player_drop
  70. cancel = true;
  71. goto("wait");
  72. @block_click
  73. item = living.getHand(player);
  74. if(item.custom.isType(item, custom_refresh_red)) {
  75. living.setHealth(player, 20);
  76. jr.teleportModule(player, jumpstage);
  77. entity.setBurning(player, 0);
  78. jr.setLoopTime(jr.getRunTime(player));
  79. jr.setStarttime();
  80. goto("wait");
  81. }
  82. if(item.custom.isType(item, custom_return_red)) {
  83. for(i = 1; i < amount_checkpoints; i++) {
  84. location1 = list.getIndex(checkpoints, i);
  85. location2 = loc.mod(location1, 1, 1, 1);
  86. event.addMoveData(location1, location2, -1, -1, player);
  87. }
  88. living.setHealth(player, 20);
  89. jr.setStarttime();
  90. jr.setLoopTime(0);
  91. jr.setRunTime(player, 0);
  92. jumpstage = 0;
  93. jr.setRunModule(player, jumpstage);
  94. jr.teleportModule(player, jumpstage);
  95. entity.setBurning(player, 0);
  96. }
  97. goto("wait");
  98. @block_break
  99. @block_place
  100. cancel = true;
  101. goto("wait");
  102. @player_post_respawn
  103. entity.teleport(player, list.getIndex(spawn_locs, jumpstage));
  104. goto("wait");
  105. @entity_damage
  106. damage_type = damage.getType(damage_source);
  107. if(damage_type == "fall") {
  108. cancel = true;
  109. goto("wait");
  110. }
  111. if(damage_type == "arrow") {
  112. cancel = true;
  113. goto("wait");
  114. }
  115. goto("wait");
  116. @player_move
  117. player_loc = entity.getLocation(player);
  118. x = loc.getBlockX(player_loc);
  119. y = loc.getBlockY(player_loc);
  120. z = loc.getBlockZ(player_loc);
  121. loc = loc.new(gamesworld, x, y, z);
  122. index = list.getIndexOf(checkpoints, loc);
  123. if(index > jumpstage) {
  124. player.action(player, text.new("§aCheckpoint set"));
  125. //money.addBoost(player, 10);
  126. msg.prefix(player, "§6Commands", string.concat("§rCheckpoint ", string.number(index), " reached"));
  127. jumpstage = index;
  128. gosub("stage_specific");
  129. }
  130. //Alltime first try or already done?
  131. all_modules = jr.getModule(player);
  132. if(all_modules == amount_checkpoints) {
  133. alltime_first_try = false;
  134. } else {
  135. alltime_first_try = true;
  136. }
  137. run_time = jr.addRunTime(player, time.getMillis() - starttime);
  138. jr.setRunModule(player, jumpstage);
  139. jr.setStarttime();
  140. all_time = jr.getTime(player);
  141. //if(alltime_first_try) {
  142. if(jumpstage > all_modules) {
  143. jr.setModuleAndTime(player, jumpstage, run_time);
  144. goto("wait");
  145. }
  146. if(jumpstage == all_modules) {
  147. if(all_time == 0 || run_time < all_time) {
  148. jr.setModuleAndTime(player, jumpstage, run_time);
  149. msg.prefix(player, gamename, "New record!!!");
  150. }
  151. }
  152. goto("wait");
  153. //}
  154. /*if(jumpstage == amount_checkpoints) {
  155. if(all_time == 0 || run_time < all_time) {
  156. jr.setModuleAndTime(player, jumpstage, run_time);
  157. msg.prefix(player, gamename, "Neuer Rekord!!!");
  158. }
  159. }*/
  160. goto("wait");
  161. @loop
  162. player = player.get(single_uuid);
  163. seconds++;
  164. if(seconds == 60) {
  165. minutes++;
  166. seconds = 0;
  167. }
  168. if(seconds < 10) {
  169. sb.add(player, 98, string.concat("Time: §e", string.number(minutes), ":0", string.number(seconds)));
  170. } else {
  171. sb.add(player, 98, string.concat("Time: §e", string.number(minutes), ":", string.number(seconds)));
  172. }
  173. player.setHunger(player, 20);
  174. player.setSaturation(player, 5);
  175. sgoto(20, "loop");
  176. goto("wait");
  177. @player_quit
  178. @player_giveup
  179. player.unblockCommands(player);
  180. player.setGamemode(player, "SURVIVAL");
  181. all_time = jr.getTime(player);
  182. all_module = jr.getModule(player);
  183. minigame.statsHeader(player, gamename, "§e");
  184. minigame.statsLine(player, "§e", "Checkpoints", string.number(all_module));
  185. minigame.statsLine(player, "§e", "Time", time.getClockString(all_time / 1000));
  186. script = script.getFromId(script_id);
  187. minigame.kickPlayer(script, player);
  188. minigame.term(script, gamesignloc);
  189. term();
  190. function jr.teleportModule(player, jumpstage) {
  191. entity.teleport(player, list.getIndex($spawn_locs, jumpstage));
  192. }
  193. function jr.setLoopTime(time) {
  194. time /= 1000;
  195. $minutes = math.roundDown(time / 60);
  196. $seconds = math.round(time % 60);
  197. }
  198. function jr.setStarttime() {
  199. $starttime = time.getMillis();
  200. }
  201. //THIS RUN
  202. function jr.setRunModule(player_or_id, module) {
  203. config = playerdata.getGames(player_or_id);
  204. config.set(config, $module_tag_run, module);
  205. config.saveAsync(config);
  206. }
  207. function jr.getRunModule(player_or_id) {
  208. config = playerdata.getGames(player_or_id);
  209. return config.getDouble(config, $module_tag_run, 0);
  210. }
  211. function jr.addRunTime(player_or_id, time) {
  212. run_time = jr.getRunTime(player_or_id) + time;
  213. jr.setRunTime(player_or_id, run_time);
  214. return run_time;
  215. }
  216. function jr.setRunTime(player_or_id, time) {
  217. config = playerdata.getGames(player_or_id);
  218. config.set(config, $time_tag_run, time);
  219. config.saveAsync(config);
  220. }
  221. function jr.getRunTime(player_or_id) {
  222. config = playerdata.getGames(player_or_id);
  223. return config.getDouble(config, $time_tag_run, 0);
  224. }
  225. //ALLTIME
  226. function jr.setModuleAndTime(player_or_id, module, time) {
  227. ranking.setSecPoints($rankingtable, player_or_id, module, time);
  228. }
  229. function jr.getTime(player_or_id) {
  230. return ranking.getSecPoints($rankingtable, player_or_id);
  231. }
  232. function jr.getModule(player_or_id) {
  233. return ranking.getPoints($rankingtable, player_or_id);
  234. }