123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- sign.started(gamesignloc);
- rankingtable = "letterranks";
- game_short = "letter";
- event.load("block_click");
- event.load("player_quit");
- event.load("player_giveup");
- event.load("minigame_join");
- event.load("entity_damage");
- @wait
- wait();
- if(event == "entity_damage") {
- if(!isPlayer(entity)) {
- goto("wait");
- }
- player = entity;
- }
- if(player.hasMinigameId(player, script_id)) {
- ignoreGoto(event);
- }
- goto("wait");
- @entity_damage
- cancel = true;
- goto("wait");
- @minigame_join
- letters = list.new();
- list.addAll(letters, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
- letters2 = list.copy(letters);
- gamename = "§dLetters";
- counter = 0;
- minutes = 0;
- seconds = 0;
- this_player = player;
- entity.teleport(player, spawnloc);
- living.cleareffects(player);
- living.setHealth(player, 20);
- player.setHunger(player, 20);
- player.setSaturation(player, 5);
- title.send(player, text.new(gamename), text.new(mapname));
- nextletter = list.getIndex(letters, counter);
- sb.add(player, 99, gamename);
- sb.add(player, 98, string.concat(string.number(counter), "/26"));
- sb.add(player, 97, string.concat("Find: ", nextletter));
- sb.add(player, 96, string.concat("Time: 0:00"));
- sb.add(player, 95, sb.getSpacer());
- player.clearInventory(player);
- if(!fixsigns) {
- logblocks = list.new();
- signblocks = list.new();
- sign_facing = list.new();
- }
- log_tag = block.getTag("minecraft:logs");
- sign_tag = block.getTag("minecraft:signs");
- if(!fixsigns) {
- x1 = loc.getBlockX(edge1);
- y1 = loc.getBlockY(edge1);
- z1 = loc.getBlockZ(edge1);
- x2 = loc.getBlockX(edge2);
- y2 = loc.getBlockY(edge2);
- z2 = loc.getBlockZ(edge2);
- if(x1 > x2) {
- helper = x2;
- x2 = x1;
- x1 = helper;
- }
- if(z1 > z2) {
- helper = z2;
- z2 = z1;
- z1 = helper;
- }
- edge1 = loc.new(gamesworld, x1, y1, z1);
- edgeblock1 = block.get(edge1);
- xedgedistance = x2 - x1;
- zedgedistance = z2 - z1;
- for(x = 0; x < xedgedistance; x++) {
- for(z = 0; z < zedgedistance; z++) {
- relblock = block.mod(edgeblock1, x, 0, z);
- if(block.hasTag(relblock, log_tag)) {
- list.add(logblocks, relblock);
- }
- if(block.hasTag(relblock, sign_tag)) {
- block.setMaterial(relblock, material.getAir());
- }
- }
- }
- for(i = 0; i < list.getSize(logblocks); i++) {
- x = 0;
- z = 0;
- y = math.random(0, 3);
- xz = math.random(0, 1);
- if(xz == 0) {
- while(x == 0) {
- x = math.random(-1, 1);
- }
- } else {
- while(z == 0) {
- z = math.random(-1, 1);
- }
- }
- list.add(signblocks, block.mod(list.getIndex(logblocks, i), x, y, z));
- if(x == -1) {
- list.add(sign_facing, "WEST");
- } elseif(x == 1) {
- list.add(sign_facing, "EAST");
- }
- if(z == -1) {
- list.add(sign_facing, "NORTH");
- } elseif(z == 1) {
- list.add(sign_facing, "SOUTH");
- }
- }
- oak_wall_sign = material.get("OAK_WALL_SIGN");
- for(i = 0; i < list.getSize(signblocks); i++) {
- tempblock = list.getIndex(signblocks, i);
- facing = list.getIndex(sign_facing, i);
- block.setMaterial(tempblock, oak_wall_sign);
- block.setDirectionalFace(tempblock, facing);
- tempindex = math.random(0 , list.getSize(letters2) - 1);
- sign.setString(tempblock, 0, list.getIndex(letters2, tempindex));
- list.removeIndex(letters2, tempindex);
- }
- } elseif(fixsigns) {
- for(i = 0; i < list.getSize(signcoords); i++) {
- tempblock = block.get(list.getIndex(signcoords, i));
- tempindex = math.random(0 , list.getSize(letters2) - 1);
- sign.setString(tempblock, 0, list.getIndex(letters2, tempindex));
- list.removeIndex(letters2, tempindex);
- }
- }
- sgoto(20, "loop");
- goto("wait");
- @loop
- seconds++;
- if(seconds == 60) {
- minutes++;
- seconds = 0;
- }
- if(seconds < 10) {
- sb.add(this_player, 96, string.concat("Time: ", string.number(minutes), ":0", string.number(seconds)));
- } else {
- sb.add(this_player, 96, string.concat("Time: ", string.number(minutes), ":", string.number(seconds)));
- }
- sgoto(20, "loop");
- goto("wait");
- @block_click
- if(block == null) {
- goto("wait");
- }
- cancel = true;
- if(block.hasTag(block, sign_tag)) {
- letter = sign.getString(block, 0);
- if(letter == nextletter) {
- counter++;
- msg.prefix(player, gamename, string.concat("Progress: ", string.number(counter), "/26"));
- sb.add(player, 98, string.concat(string.number(counter), "/26"));
- living.setHealth(player, 20);
- player.setHunger(player, 20);
- player.setSaturation(player, 5);
- if(counter == 26) {
- time = minutes * 60 + seconds;
- tpl = math.roundComma(time / 26, 2);
- player_id = player.getId(player);
- played_games = minigame.getPlayed(player_id, game_short) + 1;
- minigame.setPlayed(player_id, game_short, played_games);
- last_record = ranking.getPoints(rankingtable, player_id);
- if(last_record == 0 || time < last_record) {
- record = time;
- diff = last_record - time;
- } else {
- record = last_record;
- }
- ranking.setPoints(rankingtable, player_id, record);
- rec_mins = math.roundDown(record / 60);
- rec_secs = math.roundComma(record % 60, 2);
-
- minigame.statsHeader(player, gamename, "§e");
- minigame.statsLine(player, "§e", "Time", string.concat(string.number(minutes), " min ", string.number(seconds), " s"));
- minigame.statsLine(player, "§e", "Time per Letter", string.concat(string.number(tpl), " s"));
- minigame.statsLine(player, "§e", "Your record", string.concat(string.number(rec_mins), " min ", string.number(rec_secs), " s"));
- if(diff != null) {
- msg.string(player, string.concat(" §e- §rBeat own record by §e", string.concat(string.number(diff), " s")));
- }
- minigame.statsLine(player, "§e", "Played games", string.number(played_games));
- //money.addBoost(player, 26);
- goto("player_giveup");
- }
- nextletter = list.getIndex(letters, counter);
- sb.add(player, 97, string.concat("Find: ", nextletter));
- }
- }
- goto("wait");
- @player_quit
- @player_giveup
- if(!fixsigns) {
- for(i = 0; i < list.getSize(signblocks); i++) {
- block.setMaterial(list.getIndex(signblocks, i), material.getAir());
- }
- }
- sb.remove(player, 99);
- sb.remove(player, 98);
- sb.remove(player, 97);
- sb.remove(player, 96);
- sb.remove(player, 95);
- sb.remove(player, 95);
- script = script.getFromId(script_id);
- minigame.kickPlayer(script, player);
- minigame.term(script, gamesignloc);
- term();
|