todesjumpnrun.txt 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664
  1. rankingtable = "tjrranks";
  2. game_short = "tjr";
  3. maxplayers = 1;
  4. gamesignloc = minigame.getSignLoc("tjrsign");
  5. sign.started(gamesignloc);
  6. event.load("minigame_join");
  7. event.load("player_move");
  8. event.load("entity_damage");
  9. event.load("player_post_respawn");
  10. event.load("player_drop");
  11. event.load("player_quit");
  12. event.load("player_giveup");
  13. event.load("entity_click");
  14. event.load("block_break");
  15. event.load("block_place");
  16. event.load("block_click");
  17. event.load("snuvi_click");
  18. @wait
  19. wait();
  20. if(event == "entity_damage") {
  21. if(!isPlayer(entity)) {
  22. goto("wait");
  23. }
  24. player = entity;
  25. }
  26. if(player.hasMinigameId(player, script_id)) {
  27. ignoreGoto(event);
  28. }
  29. goto("wait");
  30. @minigame_join
  31. single_uuid = player.getUuid(player);
  32. lavacounter = 0;
  33. angel = item.create("minecraft:fishing_rod", 1, null, null);
  34. arrow = item.create("minecraft:arrow", 1, null, null);
  35. bow = item.create("minecraft:bow", 1, null, null);
  36. ench = enchantment.get("infinity");
  37. enchantment.add(ench, bow, 1);
  38. custom_refresh_red = item.custom.get("REFRESH_RED");
  39. custom_return_red = item.custom.get("RETURN_RED");
  40. custom_gear = item.custom.get("GEAR");
  41. paper_mat = material.get("PAPER");
  42. gamesworld = world.getGames();
  43. item_whole_run = item.create("minecraft:slime_block", 1, "§rWhole", string.intelligentSplit("Schaffe das ganze Jump'n'Run so schnell wie möglich. Checkpoints werden gespeichert."));
  44. item_module_run = item.create("minecraft:clock", 1, "§rModul", string.intelligentSplit("Erreiche in jedem einzelnen Modul eine Spitzenzeit."));
  45. item_fly_run = item.create("minecraft:elytra", 1, "§rFly", string.intelligentSplit("Gehe mit Fly so schnell wie möglich durch das ganze Jump'n'Run. Checkpoints helfen dir hier nichts und du musst immer von vorne anfangen."));
  46. mode_menu = inv.new("222", text.new("Choose a mode"));
  47. inv_id_mode = inv.getId(mode_menu);
  48. inv.setItem(mode_menu, 0, item_whole_run);
  49. inv.setItem(mode_menu, 1, item_module_run);
  50. inv.setItem(mode_menu, 2, item_fly_run);
  51. all_modules_menu = inv.new("222222222222222222222222222222222222222222222222222222", text.new("Choose a modul"));
  52. inv_id_modules = inv.getId(all_modules_menu);
  53. inv.setItem(all_modules_menu, 0, item.create("minecraft:stone", 1, "§rStart", null));
  54. inv.setItem(all_modules_menu, 1, item.create("minecraft:stone", 1, "§rModul 1", null));
  55. inv.setItem(all_modules_menu, 2, item.create("minecraft:stone", 1, "§rModul 2", null));
  56. inv.setItem(all_modules_menu, 3, item.create("minecraft:black_wool", 1, "§rModul 3", null));
  57. inv.setItem(all_modules_menu, 4, item.create("minecraft:glass", 1, "§rModul 4", null));
  58. inv.setItem(all_modules_menu, 5, item.create("minecraft:barrier", 1, "§rModul 5", null));
  59. inv.setItem(all_modules_menu, 6, item.create("minecraft:fishing_rod", 1, "§rModul 6", null));
  60. inv.setItem(all_modules_menu, 7, item.create("minecraft:lapis_block", 1, "§rModul 7", null));
  61. inv.setItem(all_modules_menu, 8, item.create("minecraft:campfire", 1, "§rModul 8", null));
  62. inv.setItem(all_modules_menu, 9, item.create("minecraft:chiseled_quartz_block", 1, "§rModul 9", null));
  63. inv.setItem(all_modules_menu, 10, item.create("minecraft:chiseled_quartz_block", 1, "§rModul 10", null));
  64. inv.setItem(all_modules_menu, 11, item.create("minecraft:chiseled_quartz_block", 1, "§rModul 11", null));
  65. inv.setItem(all_modules_menu, 12, item.create("minecraft:chiseled_quartz_block", 1, "§rModul 12", null));
  66. inv.setItem(all_modules_menu, 13, item.create("minecraft:chiseled_quartz_block", 1, "§rModul 13", null));
  67. inv.setItem(all_modules_menu, 14, item.create("minecraft:chiseled_quartz_block", 1, "§rModul 14", null));
  68. inv.setItem(all_modules_menu, 15, item.create("minecraft:chiseled_quartz_block", 1, "§rModul 15", null));
  69. inv.setItem(all_modules_menu, 16, item.create("minecraft:glass", 1, "§rModul 16", null));
  70. inv.setItem(all_modules_menu, 17, item.create("minecraft:chiseled_quartz_block", 1, "§rModul 17", null));
  71. inv.setItem(all_modules_menu, 18, item.create("minecraft:repeater", 1, "§rModul 18", null));
  72. inv.setItem(all_modules_menu, 19, item.create("minecraft:chiseled_quartz_block", 1, "§rModul 19", null));
  73. inv.setItem(all_modules_menu, 20, item.create("minecraft:red_wool", 1, "§rModul 20", null));
  74. inv.setItem(all_modules_menu, 21, item.create("minecraft:chiseled_quartz_block", 1, "§rModul 21", null));
  75. inv.setItem(all_modules_menu, 22, item.create("minecraft:netherrack", 1, "§rModul 22", null));
  76. inv.setItem(all_modules_menu, 23, item.create("minecraft:netherrack", 1, "§rModul 23", null));
  77. inv.setItem(all_modules_menu, 24, item.create("minecraft:netherrack", 1, "§rModul 24", null));
  78. inv.setItem(all_modules_menu, 25, item.create("minecraft:netherrack", 1, "§rModul 25", null));
  79. inv.setItem(all_modules_menu, 26, item.create("minecraft:end_stone", 1, "§rModul 26", null));
  80. inv.setItem(all_modules_menu, 27, item.create("minecraft:end_stone", 1, "§rModul 27", null));
  81. inv.setItem(all_modules_menu, 28, item.create("minecraft:poppy", 1, "§rModul 28", null));
  82. inv.setItem(all_modules_menu, 29, item.create("minecraft:bookshelf", 1, "§rModul 29", null));
  83. inv.setItem(all_modules_menu, 30, item.create("minecraft:oak_planks", 1, "§rModul 30", null));
  84. inv.setItem(all_modules_menu, 31, item.create("minecraft:iron_block", 1, "§rModul 31", null));
  85. inv.setItem(all_modules_menu, 32, item.create("minecraft:iron_block", 1, "§rModul 32", null));
  86. inv.setItem(all_modules_menu, 33, item.create("minecraft:iron_block", 1, "§rModul 33", null));
  87. inv.setItem(all_modules_menu, 34, item.create("minecraft:iron_block", 1, "§rModul 34", null));
  88. inv.setItem(all_modules_menu, 35, item.create("minecraft:iron_block", 1, "§rModul 35", null));
  89. inv.setItem(all_modules_menu, 36, item.create("minecraft:iron_block", 1, "§rModul 36", null));
  90. inv.setItem(all_modules_menu, 37, item.create("minecraft:iron_block", 1, "§rModul 37", null));
  91. inv.setItem(all_modules_menu, 38, item.create("minecraft:iron_block", 1, "§rModul 38", null));
  92. inv.setItem(all_modules_menu, 39, item.create("minecraft:iron_block", 1, "§rModul 39", null));
  93. inv.setItem(all_modules_menu, 40, item.create("minecraft:gray_wool", 1, "§rModul 40", null));
  94. inv.setItem(all_modules_menu, 41, item.create("minecraft:light_gray_wool", 1, "§rModul 41", null));
  95. inv.setItem(all_modules_menu, 42, item.create("minecraft:green_wool", 1, "§rModul 42", null));
  96. inv.setItem(all_modules_menu, 43, item.create("minecraft:hay_block", 1, "§rModul 43", null));
  97. inv.setItem(all_modules_menu, 44, item.create("minecraft:oak_log", 1, "§rModul 44", null));
  98. inv.setItem(all_modules_menu, 45, item.create("minecraft:oak_log", 1, "§rModul 45", null));
  99. inv.setItem(all_modules_menu, 46, item.create("minecraft:snow_block", 1, "§rModul 46", null));
  100. inv.setItem(all_modules_menu, 47, item.create("minecraft:snow_block", 1, "§rModul 47", null));
  101. inv.setItem(all_modules_menu, 48, item.create("minecraft:bookshelf", 1, "§rModul 48", null));
  102. inv.setItem(all_modules_menu, 49, item.create("minecraft:white_wool", 1, "§rModul 49", null));
  103. inv.setItem(all_modules_menu, 50, item.create("minecraft:dark_prismarine", 1, "§rModul 50", null));
  104. inv.setItem(all_modules_menu, 51, item.create("minecraft:slime_block", 1, "§rModul 51", null));
  105. inv.setItem(all_modules_menu, 53, item.create("minecraft:quartz_block", 1, "§rModul 53", null));
  106. inv.setItem(all_modules_menu, 52, item.create("minecraft:quartz_block", 1, "§rModul 52", null));
  107. for(i = 0; i < 54; i++) {
  108. item = inv.getItem(all_modules_menu, i);
  109. time = tjr.getModulTime(player, i);
  110. if(time == -1) {
  111. item.addLore(item, "-");
  112. } else {
  113. item.addLore(item, time.getClockString(time / 1000));
  114. }
  115. }
  116. checkpoints = list.new();
  117. //Start
  118. list.add(checkpoints, loc.new(gamesworld, 3939, 52, -5882, 180, 0.0001));
  119. //1.Modul
  120. list.add(checkpoints, loc.new(gamesworld, 3924, 62, -5908, 90, 0.0001));
  121. list.add(checkpoints, loc.new(gamesworld, 3914, 60, -5915, 180, 0.0001));
  122. list.add(checkpoints, loc.new(gamesworld, 3927, 78, -5921, -90, 0.0001));
  123. list.add(checkpoints, loc.new(gamesworld, 3934, 92, -5909, 90, 0.0001));
  124. list.add(checkpoints, loc.new(gamesworld, 3924, 92, -5894, 0.0001, 0.0001));
  125. list.add(checkpoints, loc.new(gamesworld, 3940, 101, -5888, 180, 0.0001));
  126. list.add(checkpoints, loc.new(gamesworld, 3943, 108, -5909, -90, 0.0001));
  127. list.add(checkpoints, loc.new(gamesworld, 3948, 117, -5919, 180, 0.0001));
  128. list.add(checkpoints, loc.new(gamesworld, 3933, 118, -5920, 90, 0.0001));
  129. list.add(checkpoints, loc.new(gamesworld, 3946, 122, -5928, 0.0001, 0.0001));
  130. //11.Modul
  131. list.add(checkpoints, loc.new(gamesworld, 3934, 127, -5926, -90, 0.0001));
  132. list.add(checkpoints, loc.new(gamesworld, 3942, 150, -5924, 90, 0.0001));
  133. list.add(checkpoints, loc.new(gamesworld, 3931, 143, -5924, 90, 0.0001));
  134. list.add(checkpoints, loc.new(gamesworld, 3914, 92, -5928, 90, 0.0001));
  135. list.add(checkpoints, loc.new(gamesworld, 3913, 98, -5915, 0.0001, 0.0001));
  136. list.add(checkpoints, loc.new(gamesworld, 3911, 136, -5915, 0.0001, 0.0001));
  137. list.add(checkpoints, loc.new(gamesworld, 3930, 152, -5892, -90, 0.0001));
  138. list.add(checkpoints, loc.new(gamesworld, 3940, 159, -5905, 180, 0.0001));
  139. list.add(checkpoints, loc.new(gamesworld, 3919, 161, -5906, 0.0001, 0.0001));
  140. list.add(checkpoints, loc.new(gamesworld, 3919, 162, -5896, 0.0001, 0.0001));
  141. //21.Modul
  142. list.add(checkpoints, loc.new(gamesworld, 3923, 163, -5923, 90, 0.0001));
  143. list.add(checkpoints, loc.new(gamesworld, 3923, 175, -5915, 0.0001, 0.0001));
  144. list.add(checkpoints, loc.new(gamesworld, 3916, 165, -5911, -90, 0.0001));
  145. list.add(checkpoints, loc.new(gamesworld, 3928, 168, -5912, -90, 0.0001));
  146. list.add(checkpoints, loc.new(gamesworld, 3933, 171, -5903, -90, 0.0001));
  147. list.add(checkpoints, loc.new(gamesworld, 3942, 141, -5889, 180, 0.0001));
  148. list.add(checkpoints, loc.new(gamesworld, 3944, 137, -5903, 90, 0.0001));
  149. list.add(checkpoints, loc.new(gamesworld, 3929, 125, -5898, -90, 0.0001));
  150. list.add(checkpoints, loc.new(gamesworld, 3925, 110, -5892, 180, 0.0001));
  151. list.add(checkpoints, loc.new(gamesworld, 3934, 88, -5937, 180, 0.0001));
  152. //31.Modul
  153. list.add(checkpoints, loc.new(gamesworld, 3936, 84, -5935, 180, 0.0001));
  154. list.add(checkpoints, loc.new(gamesworld, 3933, 83, -5950, 180, 0.0001));
  155. list.add(checkpoints, loc.new(gamesworld, 3927, 83, -5954, 90, 0.0001));
  156. list.add(checkpoints, loc.new(gamesworld, 3919, 75, -5950, 180, 0.0001));
  157. list.add(checkpoints, loc.new(gamesworld, 3923, 52, -5950, 90, 0.0001));
  158. list.add(checkpoints, loc.new(gamesworld, 3921, 55, -5957, 180, 0.0001));
  159. list.add(checkpoints, loc.new(gamesworld, 3927, 55, -5949, 0.0001, 0.0001));
  160. list.add(checkpoints, loc.new(gamesworld, 3943, 61, -5949, 180, 0.0001));
  161. list.add(checkpoints, loc.new(gamesworld, 3914, 52, -5943, 0.0001, 0.0001));
  162. list.add(checkpoints, loc.new(gamesworld, 3912, 92, -5941, -90, 0.0001));
  163. //41.Modul
  164. list.add(checkpoints, loc.new(gamesworld, 3924, 104, -5943, 180, 0.0001));
  165. list.add(checkpoints, loc.new(gamesworld, 3917, 115, -5950, -90, 0.0001));
  166. list.add(checkpoints, loc.new(gamesworld, 3933, 100, -5949, -90, 0.0001));
  167. list.add(checkpoints, loc.new(gamesworld, 3959, 55, -5948, -90, 0.0001));
  168. list.add(checkpoints, loc.new(gamesworld, 3973, 63, -5956, -90, 0.0001));
  169. list.add(checkpoints, loc.new(gamesworld, 3976, 55, -5963, 180, 0.0001));
  170. list.add(checkpoints, loc.new(gamesworld, 3963, 70, -5967, -90, 0.0001));
  171. list.add(checkpoints, loc.new(gamesworld, 3996, 77, -5971, 90, 0.0001));
  172. list.add(checkpoints, loc.new(gamesworld, 3987, 88, -5951, 180, 0.0001));
  173. list.add(checkpoints, loc.new(gamesworld, 3970, 91, -5955, 90, 0.0001));
  174. //51.Modul
  175. list.add(checkpoints, loc.new(gamesworld, 3986, 103, -5965, -90, 0.0001));
  176. list.add(checkpoints, loc.new(gamesworld, 3980, 73, -5945, 90, 0.0001));
  177. list.add(checkpoints, loc.new(gamesworld, 3963, 87, -5952, 180, 0.0001));
  178. //Finish
  179. list.add(checkpoints, loc.new(gamesworld, 3965, 101, -5970, 0.0001, 0.0001));
  180. rod_loc_1 = loc.new(gamesworld, 3939, 102, -5887);
  181. rod_loc_2 = loc.new(gamesworld, 3947, 102, -5889);
  182. bow_loc_1 = loc.new(gamesworld, 3949, 123, -5927);
  183. spawnlocs = list.new();
  184. for(i = 0; i < list.getSize(checkpoints); i++) {
  185. location1 = list.getIndex(checkpoints, i);
  186. location2 = loc.mod(location1, 1, 1, 1);
  187. list.add(spawnlocs, loc.mod(location1, 0.5, 0, 0.5));
  188. loc.setYaw(location1, 0);
  189. loc.setPitch(location1, 0);
  190. if(i == 0) {
  191. continue; //Für Start keinen Move-Bereich erstellen
  192. }
  193. event.addMoveData(location1, location2, 3, -1, player);
  194. }
  195. gamename = "§cJR-Death";
  196. player.blockCommands(player);
  197. resetplayer(player);
  198. player.setGamemode(player, "ADVENTURE");
  199. tjr.setMode(player, "whole");
  200. gosub("stage_specific");
  201. sb.add(player, 99, gamename);
  202. sb.add(player, 95, sb.getSpacer());
  203. sgoto(20, "loop");
  204. goto("wait");
  205. @block_click
  206. cancel = false;
  207. item = living.getHand(player);
  208. if(item.custom.isType(item, custom_gear)) {
  209. inv.open(mode_menu, player);
  210. }
  211. mode = tjr.getMode();
  212. if(mode == "whole") {
  213. if(item.custom.isType(item, custom_refresh_red)) {
  214. living.setHealth(player, 20);
  215. tjr.teleportModule(player, jumpstage);
  216. entity.setBurning(player, 0);
  217. goto("wait");
  218. }
  219. if(item.custom.isType(item, custom_return_red)) {
  220. living.setHealth(player, 20);
  221. jumpstage = 0;
  222. tjr.setStarttime();
  223. tjr.setWholeTimeTemp(player, 0);
  224. tjr.setWholeModuleTemp(player, 0);
  225. tjr.teleportModule(player, jumpstage);
  226. entity.setBurning(player, 0);
  227. }
  228. goto("wait");
  229. }
  230. if(mode == "fly") {
  231. if(item.custom.isType(item, custom_return_red)) {
  232. living.setHealth(player, 20);
  233. jumpstage = 0;
  234. tjr.setStarttime();
  235. tjr.teleportModule(player, jumpstage);
  236. entity.setBurning(player, 0);
  237. }
  238. goto("wait");
  239. }
  240. if(mode == "modul") {
  241. if(item.custom.isType(item, custom_refresh_red)) {
  242. living.setHealth(player, 20);
  243. tjr.setStarttime();
  244. tjr.teleportModule(player, jumpstage);
  245. entity.setBurning(player, 0);
  246. goto("wait");
  247. }
  248. if(item.getType(item) == paper_mat) {
  249. inv.open(all_modules_menu, player);
  250. }
  251. goto("wait");
  252. }
  253. if(block == null) {
  254. goto("wait");
  255. }
  256. block_loc = block.getLocation(block);
  257. if(block_loc == rod_loc_1 || block_loc == rod_loc_2) {
  258. player.giveItem(player, angel);
  259. player.giveItem(player, angel);
  260. player.giveItem(player, angel);
  261. player.giveItem(player, angel);
  262. goto("wait");
  263. }
  264. if(block_loc == bow_loc_1) {
  265. player.giveItem(player, bow);
  266. player.giveItem(player, arrow);
  267. goto("wait");
  268. }
  269. goto("wait");
  270. @player_drop
  271. if(jumpstage != 43) {
  272. cancel = true;
  273. }
  274. goto("wait");
  275. @snuvi_click
  276. inv_id = inv.getId(inv);
  277. if(inv_id == inv_id_mode) {
  278. mode = tjr.getMode();
  279. if(mode == "whole") {
  280. tjr.leaveWholeMode(player);
  281. }
  282. if(inv_slot == 0) {
  283. tjr.setMode(player, "whole");
  284. goto("wait");
  285. }
  286. if(inv_slot == 1) {
  287. tjr.setMode(player, "modul");
  288. goto("wait");
  289. }
  290. if(inv_slot == 2) {
  291. tjr.setMode(player, "fly");
  292. }
  293. goto("wait");
  294. }
  295. if(inv_id == inv_id_modules) {
  296. jumpstage = inv_slot;
  297. tjr.teleportModule(player, jumpstage);
  298. gosub("stage_specific");
  299. tjr.setStarttime();
  300. sb.add(player, 97, string.concat("Your record: §e", time.getClockString(tjr.getModulTime(player, jumpstage) / 1000)));
  301. }
  302. goto("wait");
  303. @entity_click
  304. @block_break
  305. @block_place
  306. cancel = true;
  307. goto("wait");
  308. @player_post_respawn
  309. entity.teleport(player, list.getIndex(spawnlocs, jumpstage));
  310. goto("wait");
  311. @entity_damage
  312. damage_type = damage.getType(damage_source);
  313. if(damage_type == "lava") {
  314. ++lavacounter;
  315. if(lavacounter >= 8) {
  316. lavacounter = 0;
  317. mode = tjr.getMode();
  318. scheduler.setBurning(10, player, 0);
  319. if(mode == "fly") {
  320. goto("wait");
  321. }
  322. if(mode == "whole") {
  323. living.setHealth(player, 20);
  324. tjr.teleportModule(player, jumpstage);
  325. entity.setBurning(player, 0);
  326. goto("wait");
  327. }
  328. if(mode == "modul") {
  329. living.setHealth(player, 20);
  330. tjr.setStarttime();
  331. tjr.teleportModule(player, jumpstage);
  332. entity.setBurning(player, 0);
  333. goto("wait");
  334. }
  335. }
  336. goto("wait");
  337. }
  338. if(damage_type == "fall") {
  339. if(jumpstage == 11 || jumpstage == 13) {
  340. goto("wait");
  341. }
  342. cancel = true;
  343. goto("wait");
  344. }
  345. if(damage_type == "arrow") {
  346. if(jumpstage == 30) {
  347. goto("wait");
  348. }
  349. cancel = true;
  350. }
  351. goto("wait");
  352. @player_move
  353. player_loc = entity.getLocation(player);
  354. x = loc.getBlockX(player_loc);
  355. y = loc.getBlockY(player_loc);
  356. z = loc.getBlockZ(player_loc);
  357. loc = loc.new(gamesworld, x, y, z);
  358. mode = tjr.getMode();
  359. tjr.setEndtime();
  360. time = endtime - starttime;
  361. if(mode == "fly") {
  362. new_jumpstage = list.getIndexOf(checkpoints, loc);
  363. if(new_jumpstage > jumpstage) {
  364. jumpstage = new_jumpstage;
  365. gosub("stage_specific");
  366. }
  367. if(jumpstage == 54) {
  368. old_time = tjr.getFlyTime(player);
  369. if(old_time == -1 || time < old_time) {
  370. tjr.setFlyTime(player, time);
  371. msg.prefix(player, gamename, string.concat("New record: ", time.getClockString(time / 1000)));
  372. } else {
  373. msg.prefix(player, gamename, string.concat("Time: ", time.getClockString(time / 1000)));
  374. }
  375. }
  376. goto("wait");
  377. }
  378. if(mode == "modul") {
  379. new_jumpstage = list.getIndexOf(checkpoints, loc);
  380. if(new_jumpstage != jumpstage + 1) {
  381. goto("wait");
  382. }
  383. old_time = tjr.getModulTime(player, jumpstage);
  384. if(old_time == -1 || time < old_time) {
  385. tjr.setModulTime(player, jumpstage, time);
  386. time_string = time.getClockString(time / 1000);
  387. msg.prefix(player, gamename, string.concat("New record: ", time_string));
  388. item = inv.getItem(all_modules_menu, jumpstage);
  389. item.addLore(item, time_string);
  390. jumpstage++;
  391. } else {
  392. msg.prefix(player, gamename, string.concat("Time: ", time.getClockString(time / 1000)));
  393. }
  394. tjr.setStarttime();
  395. tjr.teleportModule(player, jumpstage);
  396. goto("wait");
  397. }
  398. if(mode == "whole") {
  399. new_jumpstage = list.getIndexOf(checkpoints, loc);
  400. if(new_jumpstage <= jumpstage) {
  401. goto("wait");
  402. }
  403. jumpstage = new_jumpstage;
  404. gosub("stage_specific");
  405. player.action(player, text.new("§aCheckpoint set"));
  406. //Alltime first try or already done?
  407. old_modules = tjr.getWholeModule(player);
  408. if(old_modules == 54) {
  409. alltime_first_try = false;
  410. } else {
  411. alltime_first_try = true;
  412. }
  413. player_id = player.getId(player);
  414. time = tjr.getWholeTimeTemp(player) + time;
  415. if(jumpstage < 54) {
  416. msg.prefix(player, "§4Dr. Septimus", string.concat("Happy failure in modul ", string.number(jumpstage)));
  417. if(alltime_first_try) {
  418. ranking.setSecPoints(rankingtable, player_id, jumpstage, time);
  419. }
  420. goto("wait");
  421. }
  422. if(jumpstage == 54) {
  423. msg.prefix(player, gamename, string.concat("Time: ", time.getClockString(time / 1000)));
  424. if(alltime_first_try) {
  425. ranking.setSecPoints(rankingtable, player_id, jumpstage, time);
  426. goto("wait");
  427. }
  428. //Neuer Rekord?
  429. old_time = tjr.getWholeTime(player);
  430. if(old_time == 0 || time < old_time) {
  431. ranking.setSecPoints(rankingtable, player_id, jumpstage, time);
  432. msg.prefix(player, gamename, "New record!!!");
  433. }
  434. }
  435. }
  436. goto("wait");
  437. @stage_specific
  438. if(jumpstage == 6) {
  439. player.giveItem(player, angel);
  440. player.giveItem(player, angel);
  441. player.giveItem(player, angel);
  442. player.giveItem(player, angel);
  443. }
  444. elseif(jumpstage == 10 || jumpstage == 41 || jumpstage == 48 || jumpstage == 44) {
  445. player.giveItem(player, bow);
  446. player.giveItem(player, arrow);
  447. }
  448. elseif(jumpstage == 28 || jumpstage == 29) {
  449. block.setData(block.get(loc.new(gamesworld, 3944, 122, -5905)), read.blockData("minecraft:lever[powered=false,facing=west,face=wall]"));
  450. block.setMaterial(block.get(loc.new(gamesworld, 3946, 122, -5905)), material.getAir());
  451. block.setMaterial(block.get(loc.new(gamesworld, 3946, 122, -5905)), material.get("redstone_wire"));
  452. }
  453. elseif(jumpstage == 30) {
  454. block.addItem(loc.new(gamesworld, 3929, 92, -5935), item.create("minecraft:arrow", 576, null, null));
  455. }
  456. elseif(jumpstage == 43) {
  457. block.addItem(loc.new(gamesworld, 3932, 106, -5947), item.create("minecraft:hay_block", 576, null, null));
  458. }
  459. elseif(jumpstage == 47) {
  460. block.setData(block.get(loc.new(gamesworld, 3968, 77, -5962)), read.blockData("minecraft:lever[powered=true,facing=north,face=wall]"));
  461. entity.removeAll("org.bukkit.entity.Arrow", loc.new(gamesworld, 3980, 77, -5960), 5);
  462. entity.removeAll("org.bukkit.entity.Arrow", loc.new(gamesworld, 3981, 77, -5955), 5);
  463. }
  464. return;
  465. @loop
  466. player = player.get(single_uuid);
  467. seconds++;
  468. if(seconds == 60) {
  469. minutes++;
  470. seconds = 0;
  471. }
  472. if(seconds < 10) {
  473. sb.add(player, 96, string.concat("Time: §e", string.number(minutes), ":0", string.number(seconds)));
  474. } else {
  475. sb.add(player, 96, string.concat("Time: §e", string.number(minutes), ":", string.number(seconds)));
  476. }
  477. player.setHunger(player, 20);
  478. player.setSaturation(player, 5);
  479. sgoto(20, "loop");
  480. goto("wait");
  481. @player_quit
  482. @player_giveup
  483. player.setGamemode(player, "SURVIVAL");
  484. player.unblockCommands(player);
  485. minigame.statsHeader(player, gamename, "§e");
  486. minigame.statsLine(player, "§e", "Modules done", string.concat(string.number(tjr.getWholeModule(player) - 1), " / 53"));
  487. minigame.statsLine(player, "§e", "Whole Run", time.getClockString(tjr.getWholeTime(player) / 1000));
  488. minigame.statsLine(player, "§e", "Fly Mode", time.getClockString(tjr.getFlyTime(player) / 1000));
  489. all_module_time = tjr.getAllModulTime(player);
  490. if(all_module_time == -1) {
  491. minigame.statsLine(player, "§e", "Modul Mode", "-");
  492. } else {
  493. minigame.statsLine(player, "§e", "Modul Mode", time.getClockString(all_module_time / 1000));
  494. }
  495. mode = tjr.getMode();
  496. if(mode == "whole") {
  497. tjr.leaveWholeMode(player);
  498. }
  499. script = script.getFromId(script_id);
  500. minigame.kickPlayer(script, player);
  501. minigame.term(script, gamesignloc);
  502. term();
  503. function tjr.leaveWholeMode(player) {
  504. tjr.setWholeModuleTemp(player, $jumpstage);
  505. tjr.setEndtime();
  506. tjr.setWholeTimeTemp(player, tjr.getWholeTimeTemp(player) + $endtime - $starttime);
  507. }
  508. //Setzt die Zeit, für den Whole-Modi (THIS RUN)
  509. function tjr.setWholeTimeTemp(player_or_id, time) {
  510. config = playerdata.getGames(player_or_id);
  511. config.set(config, "tjr.wholetimetemp", time);
  512. config.saveAsync(config);
  513. }
  514. function tjr.getWholeTimeTemp(player_or_id) {
  515. config = playerdata.getGames(player_or_id);
  516. return config.getDouble(config, "tjr.wholetimetemp", 0);
  517. }
  518. //Setzt das erreichte Modul für den Whole-Modi (ALLTIME)
  519. function tjr.setWholeModule(player_or_id, modul) {
  520. if(isPlayer(player_or_id)) {
  521. player_or_id = player.getId(player_or_id);
  522. }
  523. ranking.setPoints($rankingtable, player_or_id, modul);
  524. }
  525. //Setzt das erreichte Modul für den Whole-Modi (THIS RUN)
  526. function tjr.setWholeModuleTemp(player_or_id, jumpstage) {
  527. config = playerdata.getGames(player_or_id);
  528. config.set(config, "tjr.wholetimemodule", jumpstage);
  529. config.saveAsync(config);
  530. }
  531. function tjr.getWholeModuleTemp(player_or_id) {
  532. config = playerdata.getGames(player_or_id);
  533. return config.getDouble(config, "tjr.wholetimemodule", 0);
  534. }
  535. function tjr.getAllModulTime(player) {
  536. sum_time = 0;
  537. for(i = 0; i < 54; i++) {
  538. time = tjr.getModulTime(player, i);
  539. if(time == -1) {
  540. sum_time = -1;
  541. break;
  542. }
  543. sum_time += time;
  544. }
  545. return sum_time;
  546. }
  547. //Setzt die Zeit, für den Fly-Modi
  548. function tjr.setFlyTime(player_or_id, time) {
  549. config = playerdata.getGames(player_or_id);
  550. config.set(config, "tjr.flytime", time);
  551. config.saveAsync(config);
  552. }
  553. function tjr.getFlyTime(player_or_id) {
  554. config = playerdata.getGames(player_or_id);
  555. return config.getDouble(config, "tjr.flytime", -1);
  556. }
  557. //Setzt die Zeit, für den Modul-Modi
  558. function tjr.setModulTime(player_or_id, module, time) {
  559. config = playerdata.getGames(player_or_id);
  560. config.set(config, string.concat("tjr.modultime", string.number(module)), time);
  561. config.saveAsync(config);
  562. }
  563. function tjr.getModulTime(player_or_id, module) {
  564. config = playerdata.getGames(player_or_id);
  565. return config.getDouble(config, string.concat("tjr.modultime", string.number(module)), -1);
  566. }
  567. //Teleportiert zu einem Checkpoint
  568. function tjr.teleportModule(player, jumpstage) {
  569. entity.teleport(player, list.getIndex($spawnlocs, jumpstage));
  570. }
  571. function tjr.setMode(player, mode) {
  572. player_inv = player.getInv(player);
  573. if(mode == "fly") {
  574. player.setFly(player, true);
  575. type = "Modus: §eFly";
  576. clearHotbar(player_inv);
  577. inv.setItem(player_inv, 0, item.custom.create("RETURN_RED", 1, "§fReset to start", null));
  578. $jumpstage = 0;
  579. sb.add(player, 97, string.concat("Your record: §e", time.getClockString(tjr.getFlyTime(player) / 1000)));
  580. tjr.setStarttime();
  581. } elseif(mode == "whole") {
  582. player.setFly(player, false);
  583. type = "Modus: §eWhole";
  584. clearHotbar(player_inv);
  585. inv.setItem(player_inv, 0, item.custom.create("REFRESH_RED", 1, "§fReset to checkpoint", null));
  586. inv.setItem(player_inv, 1, item.custom.create("RETURN_RED", 1, "§fReset to start", null));
  587. sb.add(player, 97, string.concat("Your record: §e", time.getClockString(tjr.getWholeTime(player) / 1000)));
  588. $jumpstage = tjr.getWholeModuleTemp(player);
  589. old_time = tjr.getWholeTimeTemp(player);
  590. time = old_time / 1000;
  591. $minutes = math.roundDown(time / 60);
  592. $seconds = math.round(time % 60);
  593. $starttime = time.getMillis() - time;
  594. } elseif(mode == "modul") {
  595. player.setFly(player, false);
  596. type = "Modus: §eModul";
  597. clearHotbar(player_inv);
  598. inv.setItem(player_inv, 0, item.custom.create("REFRESH_RED", 1, "§fReset to checkpoint", null));
  599. inv.setItem(player_inv, 0, item.create("PAPER", 1, "§fChoose a modul", null));
  600. $jumpstage = 0;
  601. sb.add(player, 97, string.concat("Your record: §e", time.getClockString(tjr.getModulTime(player, $jumpstage) / 1000)));
  602. tjr.setStarttime();
  603. }
  604. tjr.teleportModule(player, $jumpstage);
  605. sb.add(player, 98, type);
  606. $mode = mode;
  607. }
  608. function clearHotbar(inv) {
  609. for(i = 0; i < 9; i++) {
  610. inv.setItem(inv, i, null);
  611. }
  612. inv.setItem(inv, 8, item.custom.create("GEAR", 1, "§fSettings", null));
  613. }
  614. function tjr.getMode() {
  615. return $mode;
  616. }
  617. function tjr.setStarttime() {
  618. $minutes = 0;
  619. $seconds = 0;
  620. $starttime = time.getMillis();
  621. }
  622. function tjr.setEndtime() {
  623. $endtime = time.getMillis();
  624. }