todesjumpnrun.txt 24 KB

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