Сбор Тип и Цвет
выглядит вот так
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 + " точек.");
}





