Сбор Тип и Цвет
выглядит вот так
ResSup = '0x20F6|0x0EFA|0x100E'; ResSupCol = '0x0870|0x0221|0x0000';
сам скрипт
function SborTypAnColor() { TextWindow.Clear(); TextWindow.Open(); var typeList = {}; var colorList = {}; while (true) { Orion.WaitForAddObject("temp"); var obj = Orion.FindObject("temp"); if (!obj) continue; // Получаем "сырые" значения var rawType = obj.Graphic(); var rawColor = obj.Color(); // Убираем возможный префикс '0x' или '0X' и преобразуем в шестнадцатеричную строку var typeHex = rawType.toString().replace(/^0[xX]/, '').toUpperCase(); var colorHex = rawColor.toString().replace(/^0[xX]/, '').toUpperCase(); // Добавляем корректный префикс с маленькой 'x' var typeStr = '0x' + typeHex; var colorStr = '0x' + colorHex; // Фиксируем уникальные значения typeList[typeStr] = true; colorList[colorStr] = true; // Собираем ключи без повторений var ResSup = Object.keys(typeList).join('|'); var ResSupCol = Object.keys(colorList).join('|'); // Выводим результат TextWindow.Clear(); TextWindow.Print("ResSup = '" + ResSup + "';"); TextWindow.Print("ResSupCol = '" + ResSupCol + "';"); } }
скрипт на сбор точек по комнат по типу квадрата и так далий
просто следить за то что вас скрипт попросит
// === Глобальная переменная для хранения комнат === var allRooms = []; // === Ожидание ввода числа от 1 до 50 === function waitForNumber(prompt) { Orion.Print(prompt); var jmsg; while (!jmsg) { jmsg = Orion.WaitJournal("", Orion.Now(), Orion.Now() + 3000, "all"); } var match = jmsg.Text().match(/\d+/); return match ? Math.min(Math.max(parseInt(match[0]), 1), 50) : null; } // === Сбор точек комнат === function start() { allRooms = []; var roomCount = waitForNumber("Введи количество комнат (1–50):"); if (!roomCount) { Orion.Print("Время вышло. Используется значение по умолчанию: 2 комнаты."); roomCount = 2; } var pointCount = waitForNumber("Введи количество точек на комнату (1–50):"); if (!pointCount) { Orion.Print("Время вышло. Используется значение по умолчанию: 3 точки."); pointCount = 3; } TextWindow.Clear(); TextWindow.Open(); for (var i = 0; i < roomCount; i++) { var roomName = "Комната " + (i + 1); var roomPoints = []; TextWindow.Print('name: "' + roomName + '",'); TextWindow.Print("points: ["); for (var j = 0; j < pointCount; j++) { Orion.Print("Выдели тайл для точки " + (j + 1) + " (" + roomName + ")"); Orion.WaitForAddObject("temp"); var x = SelectedTile.X(); var y = SelectedTile.Y(); if (x === 0 && y === 0) { Orion.Print("Координаты не получены. Повтори."); j--; continue; } roomPoints.push({ x: x, y: y }); TextWindow.Print(" { x: " + x + ", y: " + y + " }" + (j === pointCount - 1 ? "\n]," : ",")); } allRooms.push({ name: roomName, points: roomPoints }); TextWindow.Print(""); } TextWindow.Print("Готово! Сохранено " + roomCount + " комнат по " + pointCount + " точек."); }