Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- English description:
- Custom Quest Compass for CustomNPCs_1.12.2-30May19snapshot - shows the direction to the place to complete the quest progress.
- Save this code to the file "cqc.js" (UTF-8 encoding without BOM) along the path:
- %app data%\.minecraft\saves\(your map)\customnpcs\scripts\ecmascript
- In the game, send a chat message: '*cqc' - to see all compass commands in English.
- (Editing the compass in the game only for creative players)
- -----------------------------------------------------------------------------------
- Русское описание:
- Настраиваемый Квестовый Компас для CustomNPCs_1.12.2-30May19snapshot - показывает направление к месту выполнения квеста.
- Сохранить этот код в файл "cqc.js" (кодировка UTF-8 без BOM) по пути:
- %app data%\.minecraft\saves\(ваша карта)\customnpcs\scripts\ecmascript
- В игре отправьте в чат сообщение: '*нкк' - чтобы увидеть все команды компаса на Русском языке.
- (Редактирование компаса в игре только для креативных игроков)
- */
- var cArr = [['dark_blue','§1'],['dark_green','§2'],['dark_aqua','§3'],['dark_red','§4'],['dark_purple','§5'],['gold','§6'],['gray','§7'],['dark_gray','§8'],['blue','§9'],['green','§a'],['aqua','§b'],['red','§c'],['purple','§d'],['yelow','§e'],['white','§f']];
- var playerID, worldID, API, qArr=[], ln, crtPlType=false, stepTime=true, pi=3.141592653589793;
- function login(event) { // вход в игру
- playerID=event.player,worldID=playerID.world,API=event.API;
- var name = playerID.getName(), qBaseArr = JSON.parse(playerID.world.getStoreddata().get("quests_data")), temp;
- temp = [API.getQuests().categories(),0,0,0];
- for (var i=0; i < temp[0].length; i++) { // Определить сколько всего квестов:
- temp[1] = temp[0][i].quests();
- for (var j=0; j < temp[1].length; j++) {
- temp[2] = temp[1][j].getId();
- if (temp[2] > temp[3]) {temp[3] = temp[2]}
- }
- }
- if (!qBaseArr) { // правка базы компаса
- qBaseArr = [{name:'N/A',available:0,type:0,pos:[0,0,0,0]}];
- for (var q=1; q <= (temp[3]+1); q++) {
- try {
- qBaseArr.push({name:API.getQuests().get(q).getName(),available:0,type:0,pos:[0,0,0,0]})
- } catch (err) {
- qBaseArr.push({name:'N/A',available:0,type:0,pos:[0,0,0,0]})
- }
- }
- playerID.world.getStoreddata().put("quests_data", JSON.stringify(qBaseArr));
- } else if (qBaseArr.length < (temp[3]+1)) {
- for (var q=0; qBaseArr.length !== (temp[3]+1); q++) {
- try {
- qBaseArr.push({name:API.getQuests().get(q).getName(),available:0,type:0,pos:[0,0,0,0]})
- } catch (err) {
- qBaseArr.push({name:'N/A',available:0,type:0,pos:[0,0,0,0]})
- }
- }
- worldID.getStoreddata().put("quests_data", JSON.stringify(qBaseArr));
- } else if (qBaseArr.length > temp[3]) {
- for (var q=0; qBaseArr.length !== (temp[3]+1); q++) {temp=qBaseArr.pop()}
- worldID.getStoreddata().put("quests_data", JSON.stringify(qBaseArr));
- }
- if (playerID.timers.has(500)) { // перезапуск таймера если компас был включён
- playerID.timers.forceStart(500,2,true);
- API.executeCommand(worldID,'/title '+name+' times 0 20 20');
- }
- }
- function chat(event) {
- playerID=event.player,worldID=playerID.world,API=event.API;
- var comArr, name = playerID.getName(), temp=false, cS=0, progress, err=false;
- var qBaseArr = JSON.parse(playerID.world.getStoreddata().get("quests_data"));
- if (event.message.toLowerCase().indexOf("*нкк")==0 || event.message.toLowerCase().indexOf("*cqc")==0) {
- event.setCanceled(true);
- comArr = event.message.toLowerCase().split(' ');
- if (event.message.toLowerCase().indexOf("*нкк")==0) {ln='ru'} else {ln='en'}
- playerID.message('§e------------------------------------------------------------------------');
- if (comArr.length == 1) { // info
- if (ln='ru') {
- playerID.message('§7Квестовый компас показывает вам направление и расстояние в блоках к месту выполнения ваших активных квестов.\n§8 Символы компаса:');
- playerID.message('§e*§7 - направление, цвет символа показывает, какой квест в этом направлении можно выполнить (чёрный - ничего);');
- playerID.message('§eXX§7 - расcтояние до цели очень велико (>99 999 блоков);');
- playerID.message('§e\u25B2§7 - цель квеста находится выше;');
- playerID.message('§e\u25BC§7 - цель квеста находится ниже;');
- playerID.message('§e\u25BA§7 - цель квеста находится правее;');
- playerID.message('§e\u25C4§7 - цель квеста находится левее;');
- playerID.message('§e\u25A1§7 - цель квеста находится по этим координатам, но вдругом мире;');
- playerID.message('§e\u25CB§7 - цель квеста простая и находится поблизости;');
- playerID.message('§e\u263C§7 - цель квеста появляется в определённое время суток и находится поблизости;');
- playerID.message('§e\u25CA§7 - цель квеста зависит от Фракции и находится поблизости;');
- playerID.message('§e\u263A§7 - цель квеста зависит от вашего уровня и находится поблизости;');
- playerID.message('§e?§7 - цель квеста сложная, нужно много действий, и находится поблизости;');
- playerID.message('§6Список команд для Квестового компаса:');
- playerID.message('§7"§b*нкк у§7" или "§b*нкк управление§7" - включает или отключает отображение компаса у игрока.');
- playerID.message('§7"§b*нкк к§7" или "§b*нкк квесты§7" - (когда компас активен) Покажет список отслеживаемых квестов.');
- if (playerID.getGamemode() == 1) {
- playerID.message('§c------------------------------------------------------------------------")');
- playerID.message('§8Только для креативных игроков:');
- playerID.message('§8"§b*нкк л§7" или "§b*нкк лист§8" - показывает список квестов и их ID, на которые есть сохранённые позиции');
- playerID.message('§8"§b*нкк нл§8" или "§b*нкк нлист§8" - показывает список квестов, и их ID на которые ещё нет позиций.');
- playerID.message('§8"§b*нкк в§8" или "§b*нкк все§8" - (в режиме компаса) покажет все позиции всех квестов.');
- playerID.message('§8"§b*нкк н <§eid§b>§8" или "§b*нкк настройки <§eid§b>§8" - покажет всё что настроено в компасе на квет по ID.');
- playerID.message('§8 - §eid§8 - ID квеста. можно посмотреть через команду "§b*нкк список§8"');
- playerID.message('§8"§b*нкк ред <§eid§b> тип <§eчисло§b>§8" - редактирование в компасе квеста, по его ID. Способ, как показывать позиции игроку. По-умолчанию все сразу.');
- playerID.message('§8 - §eid§8 - ID квеста. можно посмотреть через команду "§b*нкк список§8"');
- playerID.message('§8 - §eчисло = 0 §8- показывать все позиции квеста сразу (кроме финальной)');
- playerID.message('§8 - §eчисло = 1 §8- показывать позиции квеста поочерёдно от 0 до 2 и финальную.');
- playerID.message('§8"§b*нкк ред <§eid§b> поз <§eномер§b> <§eтип§b> <§eрадиус§b> <§eимя NPC§b> <§eX§b> <§eY§b> <§eZ§b>§8" - создать или изменить в компасе позицию на квест по ID. Где:');
- playerID.message('§8 * записывает в позицию ваше текущее положение и мир.');
- playerID.message('§8 - §eномер = (0...3) §8- 0,1,2 - позиции прогресса по квесту, 3 - позиция NPC, у которого завершается квест.');
- playerID.message('§8 - §eтип = (0...4) §8- тип позиции. (можно не указывать, по-умолчанию 0):\n§8 0 - простой, 1 - нужно время дня, 2 - нужна фракция, 3 - нужен уровень, 4 - сложная.');
- playerID.message('§8 - §eрадиус = (3...25) §8- (можно не указывать, по-умолчанию 3) расстояние в блоках при котором компас показывает, что цель близка.');
- playerID.message('§8 - §eимя NPC §8- (можно не указывать, по-умолчанию "пусто") имя NPC для поиска. Компас ищет NPC в указаной позиции и ориентирует метку на него.\n §8Если имя NPC имеет несколько слов разделённых пробелом, то вместо пробела ставьте символ "_".\n §8При этом радиус указывает зону сканирования!.');
- playerID.message('§8 - §eX Y Z §8- (можно не указывать, по-умолчанию ваша позиция) Координаты центра, куда будет указывать компас.');
- playerID.message('§8"§b*нкк удл <§eid§b>§8" - удалить всё из компаса на квест через ID.');
- playerID.message('§8"§b*нкк удл <§eid§b> поз <§eчисло§b>§8" - удалить позицию из компаса по квесту через ID. §eномер = (0...3) §8(см. выше)');
- playerID.message('§8"§b*нкк тл <§eid§b> поз <§eчисло§b>§8" - телепортирует вас на позицию из компаса по квесту через ID.');
- playerID.message('§8Пример:\nСообщение - "§b*нкк ред 14 поз 1§8" - сохранит вашу текущую позицию в мире для выполнения второго условия квеста ID = 14.');
- }
- } else {
- playerID.message('§7The quest compass shows you the direction and distance in blocks to the place where you can complete your active quests.\n§8 Compass symbols:');
- playerID.message('§e*§7 - direction, the color of the symbol indicates which quest in this direction can be completed (black - nothing);');
- playerID.message('§eXX§7 - distance to the target is very large (>99 999 blocks);');
- playerID.message('§e\u25B2§7 - target of quest is higher;');
- playerID.message('§e\u25BC§7 - target of quest is below;');
- playerID.message('§e\u25BA§7 - target of quest to the right;');
- playerID.message('§e\u25C4§7 - target of quest to the left;');
- playerID.message('§e\u25A1§7 - quest target is located at these coordinates, but in another world;');
- playerID.message('§e\u25CB§7 - target of quest simple and is nearby;');
- playerID.message('§e\u263C§7 - target of quest appears at certain times of the day and is nearby;');
- playerID.message('§e\u25CA§7 - target of quest depends on fraction and is nearby;');
- playerID.message('§e\u263A§7 - target of quest depends on your level and is nearby;');
- playerID.message('§e?§7 - target of quest is complicated, you need a lot of action, and is nearby;');
- playerID.message('§6Command List for Quest Compass:');
- playerID.message('§7"§b*cqc c§7" or "§b*cqc control§7" - enable or disable the compass of the player.');
- playerID.message('§7"§b*cqc q§7" or "§b*cqc quests§7" - (when the compass is active) Show a list of monitored quests.');
- if (playerID.getGamemode() == 1) {
- playerID.message('§c------------------------------------------------------------------------")');
- playerID.message('§8For creative players only:');
- playerID.message('§8"§b*cqc l§8" or "§b*cqc list§8" - shows a list of quests, and their ID for which there are saved positions.');
- playerID.message('§8"§b*cqc nl§8" or "§b*cqc nlist§8" - shows a list of quests, and their ID for which there are no positions.');
- playerID.message('§8"§b*cqc a§8" or "§b*cqc all§8" - (in compass mode) shows all the positions of all quests.');
- playerID.message('§8"§b*cqc s <§eid§b>§8" or "§b*cqc settings <§eid§b>§8" - в режиме компаса покажывает все позиции всех квестов.');
- playerID.message('§8"§b*cqc edt <§eid§b> type <§enumber§b>§8" - editing in the compass of the quest, by its ID. The way how to show positions to the player. By default, all at once.');
- playerID.message('§8 - §eid§8 - Quest ID can be viewed through the team "*cqc list"');
- playerID.message('§8 - §enumber = 0 §8 - show all quest position at once (except the final one)');
- playerID.message('§8 - §enumber = 1 §8 - show quest positions alternately from 0 to 2 and the final one.');
- playerID.message('§8"§b*cqc edt <§eid§b> pos <§enumber§b> <§etype§b> <§erange§b> <§ename NPC§b> <§eX§b> <§eY§b> <§eZ§b>§8" - create or change the position for quest by ID in the compass. Where is:');
- playerID.message('§8 * writes in position your current position and world.');
- playerID.message('§8 - §enumber = (0...3) §8- 0,1,2 - quest progress positions, 3 is the NPC position at which the quest ends.');
- playerID.message('§8 - §etype = (0...4) §8- type of position. (can be omitted, by default 0):\n§8 0 - simple, 1 - need time of day, 2 - need faction, 3 - need level, 4 - complicated.');
- playerID.message('§8 - §erange = (3...25) §8- (can be omitted, by default 3) distance in blocks at which the compass shows that the target is close.');
- playerID.message('§8 - §ename NPC §8- (can be omitted, by default "empty") NPC name to search. The compass searches for the NPC at the indicated position and orientes the mark on it.\n §8If the NPC name has several words separated by a space, then use the character "_" instead of a space.\n §8At the same time, the radius indicates the scanning area!.');
- playerID.message('§8 - §eX Y Z §8- (can be omitted, by default your current position) Coordinates of the center where the compass will point.');
- playerID.message('§8"§b*cqc del <§eid§8> - remove everything from the compass for quest through ID.');
- playerID.message('§8"§b*cqc del <§eid§8> pos <§enumber§b>§8" - remove the position from the compass for the quest through ID. <number> - 0...3 (see above)');
- playerID.message('§8"§b*cqc tl <§eid§b> pos <§enumber§b>§8" - teleports you to a position from a compass on a quest through ID.');
- playerID.message('§8Example:\nMessage - "§b* cqc edt 14 pos 1§8" - saves your current position in the world to fulfill the second quest condition ID = 14.');
- }
- }
- }
- if (comArr.length == 2) { // mini
- if (comArr[1]=='у' || comArr[1]=='управление' || comArr[1]=='c' || comArr[1]=='control') { // запуск/список в работе/все метки
- startCQC(playerID,qBaseArr,name,ln);
- return;
- } else if (comArr[1]=='к' || comArr[1]=='квесты' || comArr[1]=='q' || comArr[1]=='quests') {
- if (playerID.timers.has(500)) {
- if (qArr.length) {
- temp = '';
- for (var i=0; i<qArr.length; i++) {
- temp = temp+'§r№:'+i+' - '+cArr[cS][1]+qArr[i].getName()+';'
- if (cS<14) {cS++} else {cS=0}
- if (i!==(qArr.length-1)) {temp = temp + '\n'}
- }
- if (ln='ru') {
- playerID.message('§7Сейчас отслеживаются следующие квесты:\n'+temp);
- } else {
- playerID.message('§7The following quests are currently being tracked:\n'+temp);
- }
- } else {
- if (ln='ru') {
- playerID.message('§7Компас не обнаружил активных квестов.');
- } else {
- playerID.message('§7Compass did not find active quests.');
- }
- }
- } else {
- if (ln='ru') {
- playerID.message('§cКомпас неактивен, чтобы показать вам квесты.');
- } else {
- playerID.message('§cThe compass is inactive to show you quests.');
- }
- }
- return;
- } else if (comArr[1]=='в' || comArr[1]=='все' || comArr[1]=='a' || comArr[1]=='all') {
- if (playerID.getGamemode() == 1) {
- if (crtPlType) {
- crtPlType=false;
- if (ln='ru') {
- playerID.message('§8Режим показа всех позиций всех квестов - §fОтключён.');
- } else {
- playerID.message('§8Display mode for all positions of all quests - §fDisabled.');
- }
- } else {
- crtPlType=true;
- if (ln='ru') {
- playerID.message('§8Режим показа всех позиций всех квестов - §fВключён.');
- } else {
- playerID.message('§8Display mode for all positions of all quests - §fAnabled.');
- }
- }
- return;
- }
- temp = true;
- }
- temp = [API.getQuests().categories(),0,0,0,0];
- for (var i=0; i < temp[0].length; i++) { // Определить имена всех квестов:
- temp[1] = temp[0][i].quests();
- for (var j=0; j < temp[1].length; j++) {
- temp[2] = temp[1][j].getId();
- if (qBaseArr[temp[2]].available) {
- if (temp[3]) {
- temp[3] = temp[3]+'§6ID:§2'+temp[1][j].getId()+' §6, - §3'+temp[1][j].getName()+'\n';
- } else {
- temp[3] = '§6ID:§2'+temp[1][j].getId()+' §6, - §3'+temp[1][j].getName()+'\n';
- }
- } else {
- if (temp[4]) {
- temp[4] = temp[4]+'§eID:§2'+temp[1][j].getId()+' §e, - §9'+temp[1][j].getName()+'\n';
- } else {
- temp[4] = '§eID:§2'+temp[1][j].getId()+' §e, - §9'+temp[1][j].getName()+'\n';
- }
- }
- }
- }
- if (comArr[1]=='л' || comArr[1]=='лист' || comArr[1]=='l' || comArr[1]=='list') { // списки квестов
- if (playerID.getGamemode() == 1) {
- if (ln='ru') {
- playerID.message('§6Список квестов, которые настроены в компасе:\n'+temp[3]);
- } else {
- playerID.message('§6List of quests that are configured in the compass:\n'+temp[3]);
- }
- return;
- }
- temp = true;
- } else if (comArr[1]=='нл' || comArr[1]=='нлист' || comArr[1]=='nl' || comArr[1]=='nlist') {
- if (playerID.getGamemode() == 1) {
- if (ln='ru') {
- playerID.message('§6Список квестов, которых нет в компасе:\n'+temp[4]);
- } else {
- playerID.message('§6List of quests that are not in the compass:\n'+temp[4]);
- }
- return;
- }
- temp = true;
- } else {temp = false}
- if (temp) {
- if (ln='ru') {
- playerID.message('§cУ вас нет прав для этой команды.');
- } else {
- playerID.message('§cYou do not have permission for this command.');
- }
- } else {
- if (ln='ru') {
- playerID.message('§cВ компасе нет такой команды. Введите "§b*нкк§c" для списка комманд.');
- } else {
- playerID.message('§cThere is no such command in the compass. Send "§b*cqc" for a list of commands.');
- }
- }
- return;
- }
- if (comArr.length == 3) { // del all/settins
- if (comArr[2] <= 0 || comArr[2]>=qBaseArr.length) { // неверный ID
- if (ln='ru') {
- playerID.message('§cВоу, полегче! Всего в базе §f'+(qBaseArr.length-1)+'§c квестов, а вы хотите №§f'+comArr[2]);
- } else {
- playerID.message('§cHey, take it easy! There are a total of §f'+(qBaseArr.length-1)+'§c quests in the database, and you want №§f'+comArr[2]);
- }
- return;
- }
- temp = true;
- if (comArr[1]=='удл' || comArr[1]=='del') { // удаление/настройки
- if (playerID.getGamemode() == 1) {
- try {
- qBaseArr[comArr[2]] = {available:0,type:0,pos:[0,0,0,0]};
- if (ln='ru') {
- playerID.message('§dУдалены настройки компаса для квеста ID:§f'+comArr[2]);
- } else {
- playerID.message('§dRemoved compass settings for quest ID:§f'+comArr[2]);
- }
- worldID.getStoreddata().put("quests_data", JSON.stringify(qBaseArr));
- } catch (err) {
- if (!Number(comArr[2])) {
- if (ln='ru') {
- playerID.message('§cID квеста должно иметь числовое значение! У вас: §f'+comArr[2]);
- } else {
- playerID.message('§cQuest ID must have a numeric value! You: §f'+comArr[2]);
- }
- } else {
- if (ln='ru') {
- playerID.message('§cОшибка ввода команды. Общий вид: "§b*нкк удл <§eid§b>§c"');
- } else {
- playerID.message('§cError entering command. General form: "§b*cqc del <§eid§b>§c"');
- }
- }
- }
- return;
- }
- } else if (comArr[1]=='н' || comArr[1]=='настройки' || comArr[1]=='settings' || comArr[1]=='settings') {
- if (playerID.getGamemode() == 1) {
- try {
- if (ln='ru') {
- if (comArr[2]>=qBaseArr.length) {
- playerID.message('§cВоу, полегче! Всего в базе §f'+(qBaseArr.length-1)+'§c квестов, а вы хотите №§f'+comArr[2]);
- return;
- }
- if (qBaseArr[comArr[2]].available) {
- playerID.message('§3Настройки компаса по квесту ID:§f'+comArr[2]+'§3 - §f'+API.getQuests().get(comArr[2]).getName()+'§3:');
- if (qBaseArr[comArr[2]].type) {playerID.message('§7 Тип показа меток: §fПоочерёдно')} else {playerID.message('§7 Тип показа меток: §fВсе сразу')}
- for (var p=0; p<4; p++) {
- if (qBaseArr[comArr[2]].pos[p]) {
- temp = '§7 Поз. §3'+p+'§7, коорд. §f'+qBaseArr[comArr[2]].pos[p][0]+'§7:§f'+qBaseArr[comArr[2]].pos[p][1]+'§7:§f'+qBaseArr[comArr[2]].pos[p][2]+'§7; в мире ID: §f'+qBaseArr[comArr[2]].pos[p][3]
- for (var w=0; w<API.getIWorlds(); w++) {
- if (API.getIWorlds()[w].getDimension().getId() == qBaseArr[comArr[2]].pos[p][3]) {
- temp = temp+'§7 - §f'+API.getIWorlds()[w].getDimension().getName();
- }
- }
- if (qBaseArr[comArr[2]].pos[p][4]==1) {
- temp = temp+'§7; тип: §fВремя дня';
- } else if (qBaseArr[comArr[2]].pos[p][4]==2) {
- temp = temp+'§7; тип: §fФракция';
- } else if (qBaseArr[comArr[2]].pos[p][4]==3) {
- temp = temp+'§7; тип: §fУровень';
- } else if (qBaseArr[comArr[2]].pos[p][4]==4) {
- temp = temp+'§7; тип: §fСложный';
- } else {
- temp = temp+'§7; тип: §fПростой';
- }
- temp = temp+'§7; радиус: §f'+qBaseArr[comArr[2]].pos[p][5];
- if (qBaseArr[comArr[2]].pos[p].length == 7) {temp = temp+'§7; имя NPC: §f'+qBaseArr[comArr[2]].pos[p][6]}
- temp = temp+'§7.';
- playerID.message(temp);
- }
- }
- } else {
- playerID.message('§cНастроек компаса по квесту ID:§f'+comArr[2]+'§c - не обнаружено!');
- }
- } else {
- if (comArr[2]>qBaseArr.length) {
- playerID.message('§cHey, take it easy! There are a total of §f'+(qBaseArr.length-1)+'§c quests in the database, and you want №§f'+comArr[2]);
- return;
- }
- if (qBaseArr[comArr[2]].available) {
- playerID.message('§3Compass settings for quest ID:§f'+comArr[2]+'§3 - §f'+API.getQuests().get(comArr[2]).getName()+'§3:');
- if (qBaseArr[comArr[2]].type) {playerID.message('§7 Tag display type: §fOne by one')} else {playerID.message('§7 Tag display type: §fAll at once')}
- for (var p=0; p<4; p++) {
- if (qBaseArr[comArr[2]].pos[p]) {
- temp = '§7 Pos. §3'+p+'§7, coord. §f'+qBaseArr[comArr[2]].pos[p][0]+'§7:§f'+qBaseArr[comArr[2]].pos[p][1]+'§7:§f'+qBaseArr[comArr[2]].pos[p][2]+'§7; in world ID: §f'+qBaseArr[comArr[2]].pos[p][3];
- for (var w=0; w<API.getIWorlds(); w++) {
- if (API.getIWorlds()[w].getDimension().getId() == qBaseArr[comArr[2]].pos[p][3]) {
- temp = temp+'§7 - §f'+API.getIWorlds()[w].getDimension().getName();
- }
- }
- if (qBaseArr[comArr[2]].pos[p][4]==1) {
- temp = temp+'§7; type: §fTime of day';
- } else if (qBaseArr[comArr[2]].pos[p][4]==2) {
- temp = temp+'§7; type: §fFraction';
- } else if (qBaseArr[comArr[2]].pos[p][4]==3) {
- temp = temp+'§7; type: §fLevel';
- } else if (qBaseArr[comArr[2]].pos[p][4]==4) {
- temp = temp+'§7; type: §fComplicated';
- } else {
- temp = temp+'§7; type: §fSimple';
- }
- temp = temp+'§7; range: §f'+qBaseArr[comArr[2]].pos[p][5];
- if (qBaseArr[comArr[2]].pos[p].length == 7) {temp = temp+'§7; name NPC: §f'+qBaseArr[comArr[2]].pos[p][6]}
- temp = temp+'.'
- playerID.message(temp);
- }
- }
- } else {
- playerID.message('§cCompass settings for quest ID:§f'+comArr[2]+'§c - not found!');
- }
- }
- } catch (err) {
- if (!Number(comArr[2])) {
- if (ln='ru') {
- playerID.message('§cID квеста должно иметь числовое значение! У вас: §f'+comArr[2]);
- } else {
- playerID.message('§cQuest ID must have a numeric value! You: §f'+comArr[2]);
- }
- } else {
- if (ln='ru') {
- playerID.message('§cОшибка ввода команды. Общий вид: "§b*нкк удл <§eid§b>§c"');
- } else {
- playerID.message('§cError entering command. General form: "§b*cqc del <§eid§b>§c"');
- }
- }
- }
- return;
- }
- } else {temp = false}
- if (temp) {
- if (ln='ru') {
- playerID.message('§cУ вас нет прав для этой команды.');
- } else {
- playerID.message('§cYou do not have permission for this command.');
- }
- } else {
- if (ln='ru') {
- playerID.message('§cВ компасе нет такой команды. Введите "§b*нкк§c" для списка комманд.');
- } else {
- playerID.message('§cThere is no such command in the compass. Send "§b*cqc" for a list of commands.');
- }
- }
- return;
- }
- if (comArr.length >= 5) { // del/edt pos
- var plX = Math.round(playerID.getPos().getX())+0.5, plY = Math.round(playerID.getPos().getY())+0.5, plZ = Math.round(playerID.getPos().getZ())+0.5, plW = worldID.getDimension().getId();
- if (comArr[2] <= 0 || comArr[2]>=qBaseArr.length) { // неверный ID
- if (ln='ru') {
- playerID.message('§cВоу, полегче! Всего в базе §f'+(qBaseArr.length-1)+'§c квестов, а вы хотите №§f'+comArr[2]);
- } else {
- playerID.message('§cHey, take it easy! There are a total of §f'+(qBaseArr.length-1)+'§c quests in the database, and you want №§f'+comArr[2]);
- }
- return;
- }
- if (comArr[1]=='удл' || comArr[1]=='del' && comArr[3]=='поз' || comArr[3]=='pos') {
- temp = true;
- if (playerID.getGamemode() == 1) {
- try {
- qBaseArr[comArr[2]].pos[comArr[4]]=0;
- if (qBaseArr[comArr[2]].pos[0]==0 && qBaseArr[comArr[2]].pos[1]==0 && qBaseArr[comArr[2]].pos[2]==0 && qBaseArr[comArr[2]].pos[3]==0) {
- qBaseArr[comArr[2]].available=0;
- }
- if (ln='ru') {
- playerID.message('§dИз базы компаса удалена позиция №:§f'+comArr[4]+'§d, для квеста ID:§f'+comArr[2]+'.');
- } else {
- playerID.message('§dPosition №:§f'+comArr[4]+'§d for quest №:§f'+comArr[2]+'§d removed from the compass database.');
- }
- worldID.getStoreddata().put("quests_data", JSON.stringify(qBaseArr));
- } catch (err) {
- if (!Number(comArr[2])) {
- temp = false;
- if (ln='ru') {
- playerID.message('§cID квеста должно иметь числовое значение! У вас: §f'+comArr[2]);
- } else {
- playerID.message('§cQuest ID must have a numeric value! You: §f'+comArr[2]);
- }
- }
- if (!Number(comArr[4])) {
- temp = false;
- if (ln='ru') {
- playerID.message('§cНомер позиции должно иметь числовое значение от §f0§c до §f3§c! У вас: §f'+comArr[2]);
- } else {
- playerID.message('§cThe position number must have a numerical value from §f0§c to §f3§c!! You: §f'+comArr[2]);
- }
- }
- if (temp) {
- if (ln='ru') {
- playerID.message('§cОшибка ввода команды. Общий вид: "§b*нкк удл <§eid§b> поз <§eчисло§b>§c"');
- } else {
- playerID.message('§cError entering command. General form: "§b*cqc del <§eid§b> pos <§enumber§b>§c"');
- }
- }
- }
- return;
- }
- } else if (comArr[1]=='ред' || comArr[1]=='edt' && comArr[3]=='поз' || comArr[3]=='pos') {
- temp = true;
- comArr = event.message.split(' ');
- if (playerID.getGamemode() == 1) {
- try {
- if (comArr.length >= 6 && !Number(comArr[5])) {
- if (ln='ru') {
- playerID.message('§cТип позиции должен иметь числовое значение от §f0§c до §f4§c! У вас: §f'+comArr[5]);
- } else {
- playerID.message('§cThe position type must have a numerical value from §f0§c to §f4§c!! You: §f'+comArr[5]);
- }
- err=true;
- }
- if (comArr.length >= 7 && !Number(comArr[6])) {
- if (ln='ru') {
- playerID.message('§cРадиус поиска в позиции должен иметь числовое значение от §f3§c до §f25§c! У вас: §f'+comArr[6]);
- } else {
- playerID.message('§cSearch range in position must have a numerical value from §f3§c to §f25§c!! You: §f'+comArr[6]);
- }
- err=true;
- }
- if (comArr.length >= 8 && !String(comArr[7]) || Number(comArr[7])) {
- if (ln='ru') {
- playerID.message('§cИмя NPC необходимо написать как текст. Если имя NPC имеет несколько слов разделённых пробелом, то вместо пробела ставьте символ "_"! У вас: §f'+comArr[7]);
- } else {
- playerID.message('§cSearch range in position must have a numerical value from §f3§c to §f25§c!! You: §f'+comArr[6]);
- }
- err=true;
- }
- if (comArr.length >= 11) {
- if (!Number(comArr[8]) || !Number(comArr[9]) || !Number(comArr[10])) {
- if (ln='ru') {
- playerID.message('§cЗначения координат должны иметь числовое значение! У вас: §f'+comArr[8]+' §c:§f '+comArr[9]+' §c:§f '+comArr[10]);
- } else {
- playerID.message('§cCoordinate values must be numeric! You: §f'+comArr[8]+' §c:§f '+comArr[9]+' §c:§f '+comArr[10]);
- }
- err=true;
- }
- }
- if (err) {
- if (ln='ru') {
- playerID.message('§cИз за наличия ошибок в команде, позиция не будет изменена/создана!');
- } else {
- playerID.message('§cDue to errors in the command, the position will not be changed / created!');
- }
- return;
- }
- if (comArr.length < 6) {comArr[5] = 0}
- if (comArr.length < 7) {comArr[6] = 3} else {
- if (Number(comArr[6])<3) {
- comArr[6] = 3;
- } else if (Number(comArr[6])>25) {
- comArr[6] = 25;
- }
- }
- if (comArr.length >= 8) {for (var s=0; s<comArr[7].length; s++) {comArr[7].replace("_"," ")}}
- if (comArr.length < 8) {
- qBaseArr[comArr[2]].pos[comArr[4]]=[plX,plY,plZ,plW,Number(comArr[5]),Number(comArr[6])];
- } else if (comArr.length == 8) {
- qBaseArr[comArr[2]].pos[comArr[4]]=[plX,plY,plZ,plW,Number(comArr[5]),Number(comArr[6]),comArr[7]];
- } else if (comArr.length >= 11) {
- qBaseArr[comArr[2]].pos[comArr[4]]=[Number(comArr[8]),Number(comArr[9]),Number(comArr[10]),plW,Number(comArr[5]),Number(comArr[6]),comArr[7]];
- }
- qBaseArr[comArr[2]].available = 1;
- if (ln='ru') {
- playerID.message('§dВ базе компаса изменена позиция №:§f'+comArr[4]+'§d, для квеста ID:§f'+comArr[2]+'§d. Точнее - §e*нкк н '+comArr[2]+'§d.');
- } else {
- playerID.message('§dIn the compass database, the position №:§f'+comArr[4]+'§d was changed, for the quest ID: §f'+comArr[2]+'§d. More - §e*cqc s '+comArr[2]+'§d.');
- }
- worldID.getStoreddata().put("quests_data", JSON.stringify(qBaseArr));
- } catch (err) {
- if (!Number(comArr[2])) {
- temp = false;
- if (ln='ru') {
- playerID.message('§cID квеста должно иметь числовое значение! У вас: §f'+comArr[2]);
- } else {
- playerID.message('§cQuest ID must have a numeric value! You: §f'+comArr[2]);
- }
- }
- if (!Number(comArr[4])) {
- temp = false;
- if (ln='ru') {
- playerID.message('§cНомер позиции должно иметь числовое значение от §f0§c до §f3§c! У вас: §f'+comArr[4]);
- } else {
- playerID.message('§cThe position number must have a numerical value from §f0§c to §f3§c!! You: §f'+comArr[4]);
- }
- }
- if (comArr.length >= 6 && !Number(comArr[5])) {
- temp = false;
- if (ln='ru') {
- playerID.message('§cТип позиции должен иметь числовое значение от §f0§c до §f4§c! У вас: §f'+comArr[5]);
- } else {
- playerID.message('§cThe position type must have a numerical value from §f0§c to §f4§c!! You: §f'+comArr[5]);
- }
- }
- if (comArr.length >= 7 && !Number(comArr[6])) {
- if (ln='ru') {
- playerID.message('§cРадиус поиска в позиции должен иметь числовое значение от §f3§c до §f25§c! У вас: §f'+comArr[6]);
- } else {
- playerID.message('§cSearch range in position must have a numerical value from §f3§c to §f25§c!! You: §f'+comArr[6]);
- }
- temp = false;
- }
- if (comArr.length >= 8 && !String(comArr[7]) || Number(comArr[7])) {
- if (ln='ru') {
- playerID.message('§cИмя NPC необходимо написать как текст. Если имя NPC имеет несколько слов разделённых пробелом, то вместо пробела ставьте символ "_"! У вас: §f'+comArr[7]);
- } else {
- playerID.message('§cSearch range in position must have a numerical value from §f3§c to §f25§c!! You: §f'+comArr[6]);
- }
- temp = false;
- }
- if (comArr.length >= 11 && !Number(comArr[8]) || !Number(comArr[9]) || !Number(comArr[10])) {
- if (ln='ru') {
- playerID.message('§cЗначения координат должны иметь числовое значение! У вас: §f'+comArr[8]+' §c:§f '+comArr[9]+' §c:§f '+comArr[10]);
- } else {
- playerID.message('§cCoordinate values must be numeric! You: §f'+comArr[8]+' §c:§f '+comArr[9]+' §c:§f '+comArr[10]);
- }
- temp = false;
- }
- if (temp) {
- if (ln='ru') {
- playerID.message('§cОшибка ввода команды. Общий вид: "§b*нкк рев <§eid§b> поз <§eчисло§b> <§eтип§b> <§eрадиус§b> <§eимя NPC§b> <§eX§b> <§eY§b> <§eZ§b>§c"');
- } else {
- playerID.message('§cError entering command. General form: "§b*cqc edt <§eid§b> pos <§enumber§b> <§etype§b> <§erange§b> <§eимя NPC§b> <§eX§b> <§eY§b> <§eZ§b>§c"');
- }
- }
- }
- return;
- }
- } else if (comArr[1]=='ред' || comArr[1]=='edt' && comArr[3]=='тип' || comArr[3]=='type') {
- temp = true;
- if (playerID.getGamemode() == 1) {
- try {
- qBaseArr[comArr[2]].pos[comArr[4]]=[plX,plY,plZ,plW];
- qBaseArr[comArr[2]].available = 1;
- if (ln='ru') {
- playerID.message('§dВ базе компаса изменена позиция №:§f'+comArr[4]+'§d, для квеста ID:§f'+comArr[2]+'.');
- } else {
- playerID.message('§dIn the compass database, the position №:§f'+comArr[4]+'§d was changed, for the quest ID: §f'+comArr[2]+'.');
- }
- worldID.getStoreddata().put("quests_data", JSON.stringify(qBaseArr));
- } catch (err) {
- if (!Number(comArr[2])) {
- temp = false;
- if (ln='ru') {
- playerID.message('§cID квеста должно иметь числовое значение! У вас: §f'+comArr[2]);
- } else {
- playerID.message('§cQuest ID must have a numeric value! You: §f'+comArr[2]);
- }
- }
- if (!Number(comArr[4])) {
- temp = false;
- if (ln='ru') {
- playerID.message('§cНомер позиции должно иметь числовое значение от §f0§c до §f3§c! У вас: §f'+comArr[2]);
- } else {
- playerID.message('§cThe position number must have a numerical value from §f0§c to §f3§c!! You: §f'+comArr[2]);
- }
- }
- if (temp) {
- if (ln='ru') {
- playerID.message('§cОшибка ввода команды. Общий вид: "§b*нкк рев <§eid§b> поз <§eчисло§b>§c"');
- } else {
- playerID.message('§cError entering command. General form: "§b*cqc edt <§eid§b> pos <§enumber§b>§c"');
- }
- }
- }
- return;
- }
- } else if (comArr[1]=='тл' || comArr[1]=='tl' && comArr[3]=='поз' || comArr[3]=='pos') {
- temp = true;
- if (playerID.getGamemode() == 1) {
- try {
- if (qBaseArr[comArr[2]].pos[comArr[4]] == 0) {
- if (ln='ru') {
- playerID.message('§cПозиция №§f'+comArr[4]+'§c на квест ID:§f'+comArr[2]+'§c отсутствует в базе компаса!');
- } else {
- playerID.message('§Position №§f'+comArr[4]+'§c on the quest ID:§f'+comArr[2]+'§c is not in the compass database!');
- }
- return;
- }
- var x=qBaseArr[comArr[2]].pos[comArr[4]][0], y=qBaseArr[comArr[2]].pos[comArr[4]][1], z=qBaseArr[comArr[2]].pos[comArr[4]][2], w=qBaseArr[comArr[2]].pos[comArr[4]][3]
- if (worldID.getDimension().getId()!==w) {
- if (ln='ru') {
- playerID.message('§cЧтобы телепортироваться в позицию №§f'+comArr[4]+'§c, по квесту ID:§f'+comArr[2]+'§c, необходимо находиться в мире: §f'+API.getIWorld(w).getName()+'§c.');
- } else {
- playerID.message('§To teleport to position №§f'+comArr[4]+'§c, by quest ID:§f'+comArr[2]+'§c, you must be in the world: 3: §f'+API.getIWorld(w).getName()+'§c.');
- }
- } else {
- API.executeCommand(worldID,'/teleport '+name+' '+x+' '+y+' '+z);
- if (ln='ru') {
- playerID.message('§7Вы телепортированы в позицию №§f'+comArr[4]+'§7, по квесту ID:§f'+comArr[2]+'§7.');
- } else {
- playerID.message('§7You are teleported to position №§f'+comArr[4]+'§7, on quest ID:§f'+comArr[2]+'§7.');
- }
- }
- } catch (err) {
- if (!Number(comArr[2])) {
- temp = false;
- if (ln='ru') {
- playerID.message('§cID квеста должно иметь числовое значение! У вас: §f'+comArr[2]);
- } else {
- playerID.message('§cQuest ID must have a numeric value! You: §f'+comArr[2]);
- }
- }
- if (!Number(comArr[4])) {
- temp = false;
- if (ln='ru') {
- playerID.message('§cНомер позиции должно иметь числовое значение от §f0§c до §f3§c! У вас: §f'+comArr[2]);
- } else {
- playerID.message('§cThe position number must have a numerical value from §f0§c to §f3§c!! You: §f'+comArr[2]);
- }
- }
- if (temp) {
- if (ln='ru') {
- playerID.message('§cОшибка ввода команды. Общий вид: "§b*нкк тл <§eid§b> поз <§eчисло§b>§c"');
- } else {
- playerID.message('§cError entering command. General form: "§b*cqc tl <§eid§b> pos <§enumber§b>§c"');
- }
- }
- }
- return;
- }
- } else {temp = false}
- if (temp) {
- if (ln='ru') {
- playerID.message('§cУ вас нет прав для этой команды.');
- } else {
- playerID.message('§cYou do not have permission for this command.');
- }
- } else {
- if (ln='ru') {
- playerID.message('§cВ компасе нет такой команды. Введите "§b*нкк§c" для списка комманд.');
- } else {
- playerID.message('§cThere is no such command in the compass. Send "§b*cqc" for a list of commands.');
- }
- }
- return;
- }
- playerID.message('§2------------------------------------------------------------------------")');
- }
- }
- function startCQC(playerID,qBaseArr,name,ln) {
- var text, temp, cS=0, tS=1, qActCh=false;
- if (playerID.timers.has(500)) {
- playerID.timers.stop(500);
- if (ln='ru') {
- playerID.message('§7Поиск путей к квестам - §rОтключено');
- temp = 'Удачи вам с квестами!';
- } else {
- playerID.message('§7Search for ways to quests - §rDisabale');
- temp = 'Good luck for you with quests!';
- }
- API.executeCommand(worldID,'/title '+name+' subtitle {"text":"|","extra":[{"text":"__________","color":"black"},{"text":"'+temp+'","bold":"true","italic":"true","color":"white"},{"text":" __________","color":"black"},{"text":"|"}]}');
- API.executeCommand(worldID,'/title '+name+' title {"text":"[","extra":[{"text":"***********","color":"black"},{"text":"|","color":"green"},{"text":"***********","color":"black"},{"text":"]","color":"white"}]}');
- } else {
- text='';
- temp = playerID.getActiveQuests()
- for (var i=0; i<temp.length;i++) { // определяет активные квесты для показа
- if (qBaseArr[temp[i].getId()].available) {
- qActCh = true;
- text = text+'§r№:'+tS+' - '+cArr[cS][1]+temp[i].getName()+';'
- if (cS<14) {cS++} else {cS=0}
- tS++;
- if (i!==(temp.length-1)) {text = text + '\n'}
- }
- }
- if (qActCh) {
- if (ln='ru') {
- playerID.message('§7Обнаружены следующие квесты:\n'+text);
- } else {
- playerID.message('§7The following quests have been found:\n'+text);
- }
- } else {
- if (ln='ru') {
- playerID.message('§cУвы, компас не обнаружил путей к вашим активным квестам!');
- } else {
- playerID.message('§cAlas, the compass did not find any paths to your active quests.!');
- }
- }
- if (ln='ru') {
- playerID.message('§7Поиск путей к квестам - §rВключено');
- } else {
- playerID.message('§7Search for ways to quests - §rAnabale');
- }
- playerID.timers.forceStart(500,2,true);
- API.executeCommand(worldID,'/title '+name+' times 0 20 20');
- }
- }
- function timer(event) {
- playerID = event.player, worldID = playerID.world, API = event.API;
- var plX = playerID.getX(),plY = playerID.getY(),plZ = playerID.getZ(),plR,temp,id,cx,cy,cz;
- var qBaseArr = JSON.parse(playerID.world.getStoreddata().get("quests_data"));
- if (event.id == 500 && stepTime) { // квестовый компас показывает куда идти
- stepTime=false;
- var name = playerID.getName(), world;
- var dist, color, objCh=[0,0,0,0], objArr = [0,0,0,0], cS=0, angle, tS, scale, step=43.6/11, range=3;
- var title=[['[','white',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['|','green',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],['*','black',(-1)],[']','white',(-1)]];
- var subT=[['|','white'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','green'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['__','black'],['|','white']];
- /* переменная 'step' отвечает за отношение угола поворота камеры к положению символа на компасе
- и зависит от раздрешения экрана. Я подобрал значение, которое подходит почти к любому экрану.
- Однако для персонализации настройте её самостоятельно.*/
- if (playerID.getRotation() < 0) {plR=playerID.getRotation()+360} else {plR=playerID.getRotation()}
- if (plR-180 < 0) {scale=plR+180} else {scale=plR-180}
- if (crtPlType) { // Для режима креатива - получить все квесты
- temp = [API.getQuests().categories(),0,0,0];
- qArr=[];
- for (var i=0; i < temp[0].length; i++) {
- temp[1] = temp[0][i].quests();
- for (var j=0; j < temp[1].length; j++) {
- if (qArr.length) {qArr.push(temp[1][j])} else {qArr=[temp[1][j]]}
- }
- }
- } else {qArr = playerID.getActiveQuests()} // получить все активные квесты
- for (var q=0;q<qArr.length;q++) { // изменить title и subtitle под имеющиеся квесты
- id=qArr[q].getId();
- if (qBaseArr[id].available) { // сверяет, есть ли настройки на квест в базе
- try { // получить все объекты из квеста
- temp = qArr[q].getObjectives(playerID); // установить не завершённые объекты
- for (var j=0;j<temp.length;j++) {if (temp[j].getMaxProgress() !== 0 && temp[j].getMaxProgress() > temp[j].getProgress()) {objCh[j]=1}}
- } catch (err) {objArr=[1,1,1,0]}
- if (crtPlType) {
- if (qBaseArr[i].pos[0]) {objArr[0]=1}
- if (qBaseArr[i].pos[1]) {objArr[1]=1}
- if (qBaseArr[i].pos[2]) {objArr[2]=1}
- if (qBaseArr[i].pos[3]) {objArr[3]=1}
- } else if (qBaseArr[id].type) { // определение объектов из квеста, метки на которые нужно показывать
- if (objCh[0] && qBaseArr[i].pos[0]) { // поочерёдно
- objArr = [1,0,0,0];
- } else if (objCh[1] && qBaseArr[i].pos[1]) {
- objArr = [0,1,0,0];
- } else if (objCh[2] && qBaseArr[i].pos[2]) {
- objArr = [0,0,1,0];
- } else if (objCh[3] && qBaseArr[i].pos[3]) {
- objArr = [0,0,0,1];
- }
- } else {
- if (objCh[0] || objCh[1] || objCh[2] || objCh[3]) { // все сразу
- temp=true;
- if (objCh[0]) {temp=false,objArr[0]=1}
- if (objCh[1]) {temp=false,objArr[1]=1}
- if (objCh[2]) {temp=false,objArr[2]=1}
- if (temp && objCh[3]) {objArr=[0,0,0,1]}
- }
- }
- for (var b=0; b<objArr.length; b++) { // создание месток на объекты
- temp=false;
- if (objArr[b]) { // проверка вывода метки
- cx=qBaseArr[id].pos[b][0],cy=qBaseArr[id].pos[b][1],cz=qBaseArr[id].pos[b][2];
- if (qBaseArr[id].pos[b].length ==7 && String(qBaseArr[id].pos[b][6])) { // поиск NPC по имени
- temp = worldID.getNearbyEntities(worldID.getBlock(cx,cy,cz).getPos(),qBaseArr[id].pos[b][5],EntityType_NPC);
- for (var e=0; e<temp.length; e++) {
- if (temp[e].getName() == qBaseArr[id].pos[b][6]) {
- cx=temp[e].getX(),cy=temp[e].getY(),cz=temp[e].getZ();
- break;
- }
- }
- }
- temp = true;
- } else {temp=false}
- if (temp) { // формирование метки
- temp = [cx-plX,cz-plZ];
- if (temp[0]<0 && temp[1]>0) { // получить угол поворота на позицию в квесте:
- angle=90+Math.atan(temp[1]/temp[0])*180/pi;
- } else if (temp[0]>0 && temp[1]<0) {
- angle=270+Math.atan(temp[1]/temp[0])*180/pi;
- } else if (temp[0]<0 && temp[1]<0) {
- angle=90+Math.atan(temp[1]/temp[0])*180/pi;
- } else {
- angle=270+Math.atan(temp[1]/temp[0])*180/pi;
- }
- dist = Math.round(playerID.getPos().distanceTo(worldID.getBlock(cx,cy,cz).getPos())); // получить дистанцию
- color = cArr[cS][0]; // назначить цвет метки
- if (angle-scale < 0) {angle=angle-scale+360} else {angle=angle-scale} // перевод кругового угла в линейный
- // получить положение на оглавлении
- if (qBaseArr[id].pos[b].length ==7 && String(qBaseArr[id].pos[b][6])) {
- range=3;
- } else {
- range = Number(qBaseArr[id].pos[b][5]);
- }
- if (angle < 135) { // крайний слева
- if (dist < title[0][2] || title[0][2] == (-1)) {
- if (qBaseArr[id].pos[b][3]!==worldID.getDimension().getId()) {title[0][0] = '\u25A1'} else {title[0][0] = '\u25C4'}
- title[0][1] = color;
- title[0][2] = dist;
- }
- } else if (angle > 225) { // крайний справа
- if (dist < title[24][2] || title[24][2] == (-1)) {
- if (qBaseArr[id].pos[b][3]!==worldID.getDimension().getId()) {title[24][0] = '\u25A1'} else {title[24][0] = '\u25BA'}
- title[24][1] = color;
- title[24][2] = dist;
- }
- } else if (angle >= (135-step) && angle <= 178.6) { // в левом ряду
- for (var j=1; j<12;j++) {
- tS=135+j*step-step; // угол символа (позиция метки)
- if (angle >= tS && angle < (tS+step)) {
- if (dist < title[j][2] || title[j][2] == (-1)) {
- if (qBaseArr[id].pos[b][3]!==worldID.getDimension().getId()) { // тип маркера
- title[j][0] = '\u25A1'
- } else if (j==0) {
- title[j][0] = '\u25C4'
- } else if (j==(title.length-1)) {
- title[j][0] = '\u25BA'
- } else if (qBaseArr[id].pos[b][1]>(plY+2+range)) {
- title[j][0] = '\u25B2'
- } else if (qBaseArr[id].pos[b][1]<(plY-1-range)) {
- title[j][0] = '\u25BC'
- } else if (dist<=range) {
- if (qBaseArr[id].pos[b][4]==1) {
- title[j][0] = '\u263C'
- } else if (qBaseArr[id].pos[b][4]==2) {
- title[j][0] = '\u25CA'
- } else if (qBaseArr[id].pos[b][4]==3) {
- title[j][0] = '\u263A'
- } else if (qBaseArr[id].pos[b][4]==4) {
- title[j][0] = '?'
- } else {
- title[j][0] = '\u25CB'
- }
- } else {
- title[j][0] = '*'
- }
- title[j][1] = color;
- title[j][2] = dist;
- break;
- }
- }
- }
- } else if (angle >= 181.4 && angle <= (225+step)) { // в правом ряду
- for (var j=13; j<24;j++) {
- tS=181.4+(j-12)*step-step;
- if (angle >= tS && angle < (tS+step)) {
- if (dist < title[j][2] || title[j][2] == (-1)) {
- if (qBaseArr[id].pos[b][3]!==worldID.getDimension().getId()) { // тип маркера
- title[j][0] = '\u25A1'
- } else if (j==0) {
- title[j][0] = '\u25C4'
- } else if (j==(title.length-1)) {
- title[j][0] = '\u25BA'
- } else if (qBaseArr[id].pos[b][1]>(plY+2+range)) {
- title[j][0] = '\u25B2'
- } else if (qBaseArr[id].pos[b][1]<(plY-1-range)) {
- title[j][0] = '\u25BC'
- } else if (dist<=range) {
- if (qBaseArr[id].pos[b][4]==1) {
- title[j][0] = '\u263C'
- } else if (qBaseArr[id].pos[b][4]==2) {
- title[j][0] = '\u25CA'
- } else if (qBaseArr[id].pos[b][4]==3) {
- title[j][0] = '\u263A'
- } else if (qBaseArr[id].pos[b][4]==4) {
- title[j][0] = '?'
- } else {
- title[j][0] = '\u25CB'
- }
- } else {
- title[j][0] = '*'
- }
- title[j][1] = color;
- title[j][2] = dist;
- break;
- }
- }
- }
- } else if (angle > 178.6 && angle < 181.4) { // в центре
- if (dist < title[12][2] || title[12][2] == (-1)) {
- if (qBaseArr[id].pos[b][3]!==worldID.getDimension().getId()) { // тип маркера
- title[12][0] = '\u25A1'
- } else if (qBaseArr[id].pos[b][1]>(plY+2+range)) {
- title[12][0] = '\u25B2'
- } else if (qBaseArr[id].pos[b][1]<(plY-1-range)) {
- title[12][0] = '\u25BC'
- } else if (dist<=range) {
- if (qBaseArr[id].pos[b][4]==1) {
- title[12][0] = '\u263C'
- } else if (qBaseArr[id].pos[b][4]==2) {
- title[12][0] = '\u25CA'
- } else if (qBaseArr[id].pos[b][4]==3) {
- title[12][0] = '\u263A'
- } else if (qBaseArr[id].pos[b][4]==4) {
- title[12][0] = '?'
- } else {
- title[12][0] = '\u25CB'
- }
- } else {
- title[12][0] = '*'
- }
- title[12][1] = color;
- title[12][2] = dist;
- j=12;
- }
- }
- try { // создание текста подписи дальности
- if (subT[j][0]=='__') {
- if (dist < 10) { // определение возможности вывода и займа кол-ва символов
- subT[j]=[dist+'m',color];
- } else if (j >= 1 && dist < 1000 && subT[j-1][0]=='__') {
- subT[j]=[(dist - Math.floor(dist/10)*10)+'m',color];
- subT[j-1]=['_","color":"black"},{"text":"'+Math.floor(dist/10),color];
- } else if (j >= 2 && dist < 100000 && subT[j-1][0]=='__' && subT[j-2][0]=='__') {
- subT[j]=[(dist - Math.floor(dist/10)*10)+'m',color];
- if (Math.floor((dist%1000)/10)<10) {
- subT[j-1]=['0'+Math.floor((dist%1000)/10),color];
- } else {
- subT[j-1]=[Math.floor((dist%1000)/10),color];
- }
- subT[j-2]=[Math.floor(dist/1000),color];
- } else { // если определение невозмодно или метка слишком далеко более 99 999 блоков
- subT[j]=['XX',color];
- }
- }
- } catch (err) {}
- }
- }
- if (cS<14) {cS++} else {cS=0} // следующий цвет метки
- }
- }
- // Показать игроку компас:
- API.executeCommand(worldID,'/title '+name+' subtitle {"text":"","extra":[{"text":"'+subT[0][0]+'","color":"'+subT[0][1]+'"},{"text":"'+subT[1][0]+'","color":"'+subT[1][1]+'"},{"text":"'+subT[2][0]+'","color":"'+subT[2][1]+'"},{"text":"'+subT[3][0]+'","color":"'+subT[3][1]+'"},{"text":"'+subT[4][0]+'","color":"'+subT[4][1]+'"},{"text":"'+subT[5][0]+'","color":"'+subT[5][1]+'"},{"text":"'+subT[6][0]+'","color":"'+subT[6][1]+'"},{"text":"'+subT[7][0]+'","color":"'+subT[7][1]+'"},{"text":"'+subT[8][0]+'","color":"'+subT[8][1]+'"},{"text":"'+subT[9][0]+'","color":"'+subT[9][1]+'"},{"text":"'+subT[10][0]+'","color":"'+subT[10][1]+'"},{"text":"'+subT[11][0]+'","color":"'+subT[11][1]+'"},{"text":"'+subT[12][0]+'","color":"'+subT[12][1]+'"},{"text":"'+subT[13][0]+'","color":"'+subT[13][1]+'"},{"text":"'+subT[14][0]+'","color":"'+subT[14][1]+'"},{"text":"'+subT[15][0]+'","color":"'+subT[15][1]+'"},{"text":"'+subT[16][0]+'","color":"'+subT[16][1]+'"},{"text":"'+subT[17][0]+'","color":"'+subT[17][1]+'"},{"text":"'+subT[18][0]+'","color":"'+subT[18][1]+'"},{"text":"'+subT[19][0]+'","color":"'+subT[19][1]+'"},{"text":"'+subT[20][0]+'","color":"'+subT[20][1]+'"},{"text":"'+subT[21][0]+'","color":"'+subT[21][1]+'"},{"text":"'+subT[22][0]+'","color":"'+subT[22][1]+'"},{"text":"'+subT[23][0]+'","color":"'+subT[23][1]+'"},{"text":"'+subT[24][0]+'","color":"'+subT[24][1]+'"},{"text":"____...","color":"black"}]}');
- API.executeCommand(worldID,'/title '+name+' title {"text":"","extra":[{"text":"'+title[0][0]+'","color":"'+title[0][1]+'"},{"text":"'+title[1][0]+'","color":"'+title[1][1]+'"},{"text":"'+title[2][0]+'","color":"'+title[2][1]+'"},{"text":"'+title[3][0]+'","color":"'+title[3][1]+'"},{"text":"'+title[4][0]+'","color":"'+title[4][1]+'"},{"text":"'+title[5][0]+'","color":"'+title[5][1]+'"},{"text":"'+title[6][0]+'","color":"'+title[6][1]+'"},{"text":"'+title[7][0]+'","color":"'+title[7][1]+'"},{"text":"'+title[8][0]+'","color":"'+title[8][1]+'"},{"text":"'+title[9][0]+'","color":"'+title[9][1]+'"},{"text":"'+title[10][0]+'","color":"'+title[10][1]+'"},{"text":"'+title[11][0]+'","color":"'+title[11][1]+'"},{"text":"'+title[12][0]+'","color":"'+title[12][1]+'"},{"text":"'+title[13][0]+'","color":"'+title[13][1]+'"},{"text":"'+title[14][0]+'","color":"'+title[14][1]+'"},{"text":"'+title[15][0]+'","color":"'+title[15][1]+'"},{"text":"'+title[16][0]+'","color":"'+title[16][1]+'"},{"text":"'+title[17][0]+'","color":"'+title[17][1]+'"},{"text":"'+title[18][0]+'","color":"'+title[18][1]+'"},{"text":"'+title[19][0]+'","color":"'+title[19][1]+'"},{"text":"'+title[20][0]+'","color":"'+title[20][1]+'"},{"text":"'+title[21][0]+'","color":"'+title[21][1]+'"},{"text":"'+title[22][0]+'","color":"'+title[22][1]+'"},{"text":"'+title[23][0]+'","color":"'+title[23][1]+'"},{"text":"'+title[24][0]+'","color":"'+title[24][1]+'"},{"text":"__..","color":"black"}]}');
- } else if (event.id == 500 && !stepTime) {
- stepTime=true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement