jr_core.txt 6.3 KB

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