123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- gamename = "§6Parcour";
- maxplayers = 1;
- sign.started(gamesignloc);
- event.load("block_click");
- event.load("player_move");
- event.load("entity_damage");
- event.load("player_post_respawn");
- event.load("player_drop");
- event.load("player_quit");
- event.load("player_giveup");
- event.load("minigame_join");
- event.load("entity_click");
- event.load("block_break");
- event.load("block_place");
- custom_red_return = item.custom.get("RETURN_RED");
- sign_tag = block.getTag("minecraft:signs");
- tp_time = time.getMillis();
- minutes = 0;
- seconds = 0;
- jumpstage = 0;
- @wait
- wait();
- if(event == "entity_damage") {
- if(!isPlayer(entity)) {
- goto("wait");
- }
- player = entity;
- }
- if(player.hasMinigameId(player, script_id)) {
- ignoreGoto(event);
- }
- goto("wait");
- @minigame_join
- player_uuid = player.getUuid(player);
- for(i = 0; i < list.getSize(checkpoints); i++) {
- location1 = list.getIndex(checkpoints, i);
- location2 = loc.mod(location1, 1, 0.99, 1);
- event.addMoveData(location1, location2, -1, -1, player);
- }
- player.blockCommands(player);
- entity.teleport(player, list.getIndex(spawn_locs, jumpstage));
- player.clearInventory(player);
- player.giveItem(player, item.custom.create("RETURN_RED", 1, "§fReset to start", null));
- record_time = ranking.getPoints(rankingtable, player.getId(player));
- overall_record = ranking.getPointsFromRank(rankingtable, 1, "ASC", null);
- player.setGamemode(player, "SURVIVAL");
- player.setFly(player, false);
- sb.add(player, 99, gamename);
- sb.add(player, 98, string.concat("Server Record: §e", string.number(math.roundDown(overall_record / 1000 / 60)), ":", string.number(math.round(overall_record / 1000 % 60)), ".", string.number(overall_record % 1000)));
- sb.add(player, 97, string.concat("Your Record: §e", string.number(math.roundDown(record_time / 1000 / 60)), ":", string.number(math.round(record_time / 1000 % 60)), ".", string.number(record_time % 1000)));
- sb.add(player, 96, string.concat("Checkpoints: §e", string.number(jumpstage), "/", string.number(list.getSize(checkpoints) - 1)));
- sb.add(player, 95, string.concat("§rTime: §e0:00"));
- sb.add(player, 94, sb.getSpacer());
- sgoto(2, "loop");
- starttime = time.getMillis();
- goto("wait");
- @player_drop
- cancel = true;
- item = item.entity.get(item_entity);
- living.setHand(player, item);
- goto("wait");
- @entity_click
- @block_break
- @block_place
- cancel = true;
- goto("wait");
- @player_post_respawn
- entity.teleport(player, list.getIndex(spawn_locs, jumpstage));
- goto("wait");
- @entity_damage
- damage_source_type = damage.getType(damage_source);
- cancel = true;
- if(damage_source_type == "hotFloor") {
- cancel = false;
- checkpoint.tp(player);
- }
- elseif(damage_source_type == "lava") {
- cancel = false;
- }
- elseif(damage_source_type == "outOfWorld") {
- checkpoint.tp(player);
- }
- elseif(damage_source_type == "fall") {
- if(jumpstage == 7) {
- checkpoint.tp(player);
- }
- }
- goto("wait");
- function checkpoint.tp(player) {
- now_time = time.getMillis();
- if(now_time - $tp_time < 1000) {
- return;
- }
- $tp_time = now_time;
- entity.teleport(player, list.getIndex($spawn_locs, $jumpstage));
- }
- @player_move
- player_loc = entity.getLocation(player);
- x = loc.getBlockX(player_loc);
- y = loc.getBlockY(player_loc);
- z = loc.getBlockZ(player_loc);
- loc = loc.new(gamesworld, x, y, z);
- index = list.getIndexOf(checkpoints, loc);
- if(index > jumpstage) {
- player.action(player, text.new("§aCheckpoint set"));
- time_ms = (time.getMillis() - starttime); //millisecons
- minutes = math.roundDown(time_ms / 1000 / 60);
- seconds = math.round(time_ms / 1000 % 60);
- ms = time_ms % 1000;
- if(seconds < 10) {
- time_string = string.concat(string.number(minutes), ":0", string.number(seconds), ".", string.number(ms));
- } else {
- time_string = string.concat(string.number(minutes), ":", string.number(seconds), ".", string.number(ms));
- }
- msg.prefix(player, gamename, string.concat("§r", string.number(index), ".Checkpoint erreicht §e", time_string));
- jumpstage = index;
- sb.add(player, 96, string.concat("Checkpoints: §e", string.number(jumpstage), "/", string.number(list.getSize(checkpoints) - 1)));
- if(jumpstage == list.getSize(checkpoints) - 1) {
- minigame.statsHeader(player, gamename, "§e");
- if(record_time == 0 || time_ms < record_time) {
- if(record_time != 0) {
- diff = record_time - time_ms;
- msg.string(player, " §e- §rBeat own record by §e", string.number(diff / 1000), "§e s");
- }
- record_time = time_ms;
- }
- ranking.setPoints(rankingtable, player.getId(player), record_time);
- rec_minutes = string.number(math.roundDown(record_time / 1000 / 60));
- rec_seconds = math.round(record_time / 1000 % 60);
- rec_ms = string.number(math.round(record_time % 1000));
- if(rec_seconds < 10) {
- rec_time_string = string.concat(rec_minutes, ":0", string.number(rec_seconds), ".", rec_ms);
- } else {
- rec_time_string = string.concat(rec_minutes, ":", string.number(rec_seconds), ".", rec_ms);
- }
- minigame.statsLine(player, "§e", "Time", string.concat(time_string, " min"));
- minigame.statsLine(player, "§e", "Record", string.concat(rec_time_string, " min"));
- //money.addBoost(player, math.round(-0.25 * (time_ms / 1000) + 60));
- goto("player_quit");
- }
- }
- goto("wait");
- @loop
- player = player.get(player_uuid);
- seconds++;
- if(seconds == 60) {
- minutes++;
- seconds = 0;
- }
- if(seconds < 10) {
- sb.add(player, 95, string.concat("Time: §e", string.number(minutes), ":0", string.number(seconds)));
- } else {
- sb.add(player, 95, string.concat("Time: §e", string.number(minutes), ":", string.number(seconds)));
- }
- player.setHunger(player, 20);
- player.setSaturation(player, 5);
- sgoto(20, "loop");
- goto("wait");
- @block_click
- item = living.getHand(player);
- if(item.custom.isType(item, custom_red_return)) {
- entity.teleport(player, list.getIndex(spawn_locs, 0));
- for(i = 0; i <= jumpstage; i++) {
- location1 = list.getIndex(checkpoints, i);
- location2 = loc.mod(location1, 1, 0.99, 1);
- event.addMoveData(location1, location2, -1, -1, player);
- }
- minutes = 0;
- seconds = 0;
- jumpstage = 0;
- living.setHealth(player, 20);
- entity.setBurning(player, 0);
- sb.add(player, 96, string.concat("Checkpoints: §e", string.number(jumpstage), "/", string.number(list.getSize(checkpoints) - 1)));
- sb.add(player, 95, string.concat("§rTime: §e0:00"));
- starttime = time.getMillis();
- }
- goto("wait");
- @player_quit
- @player_giveup
- player.unblockCommands(player);
- script = script.getFromId(script_id);
- minigame.kickPlayer(script, player);
- minigame.term(script, gamesignloc);
- term();
|