Jump to content


Toggle shoutbox Chat Open the Shoutbox in a popup

@  opas : (17 August 2025 - 21:52) Сервер ещё ддосят?
@  Costesti : (05 August 2025 - 20:36) Акк Kosmo тебе делать больше нету Бомжара ходить по шахтам убивать минера ?
@  Artemy Shan : (04 July 2025 - 03:34) Перезапуск проекта: https://forum.oldp.n...howtopic=106329
@  Costesti : (10 June 2025 - 22:26) Артём закрой сервер толку от него ноль так как лаги бешеные ничего не сделать
@  Costesti : (10 June 2025 - 21:03) бля это у меня сервер только логает или у всех?
@  papasha : (10 June 2025 - 15:13) @Costesti da kanesna vvodit, uze dohuja obnov vishlo za 7 let poslednix!!
@  Costesti : (09 June 2025 - 18:34) Артём ты там нововведения водишь?
@  Costesti : (09 June 2025 - 18:31) Сервер работает?
@  Costesti : (31 May 2025 - 23:46) Шан комп меняй уже игру не тянет
@  Costesti : (31 May 2025 - 20:02) мда никому не нужен этот сервер
@  fr33 : (29 May 2025 - 14:07) shenahnan gnom
@  fr33 : (29 May 2025 - 14:07) gm zb!!!1 lagi ept
@  Costesti : (28 May 2025 - 22:43) и это опять и за сейвы
@  Costesti : (28 May 2025 - 22:43) Народ да у кого там номер Шана пускай чинит сервер
@  Costesti : (27 May 2025 - 21:38) Вопрос Крафтить молоко можно?
@  fr33 : (26 May 2025 - 17:33) gm blad chini lag
@  Costesti : (23 May 2025 - 22:37) Бешеные лаги
@  Costesti : (17 May 2025 - 22:54) Опять лаги на Сервере
@  fr33 : (12 May 2025 - 15:21) ble daite mne gm i zdelaju pvp vam
@  Mokasin : (12 May 2025 - 09:04) Puišiem nav garlaicīgi xDDD

Photo

Скрипты Орион


  • Please log in to reply
2 replies to this topic

#1 Costesti

Costesti

    Journeyman

  • Members
  • 56 posts

Posted 19 July 2025 - 20:04

Сбор Тип и Цвет
выглядит вот так 

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 + " точек.");
}

 



#2 Costesti

Costesti

    Journeyman

  • Members
  • 56 posts

Posted 03 August 2025 - 22:52

Скрипт на Автоматом сбор Координатов Шахт 
 

function start() {
    WalkToCaveTilesOnGrid(4);// Тут за место 4 ставьте через сколько чар должен собирать тайлы 
}
function WalkToCaveTilesOnGrid(stepSize) {
    var centerX = Player.X();
    var centerY = Player.Y();
    var scanRange = 25;

    var x1 = centerX - scanRange;
    var y1 = centerY - scanRange;
    var x2 = centerX + scanRange;
    var y2 = centerY + scanRange;

    TextWindow.Open();
    TextWindow.Clear();

    Orion.Print("Ищу тайлы 'cave' в области...");
    var caveTiles = Orion.GetTilesInRect("cave", x1, y1, x2, y2);

    if (caveTiles.length === 0) {
        Orion.Print("Не найдено ни одного тайла 'cave'.");
        return;
    }

    Orion.Print("Найдено " + caveTiles.length + " тайлов 'cave'.");
    Orion.Print("Начинаю обход по сетке с шагом " + stepSize + " тайлов...");

    for (var x = x1; x <= x2; x += stepSize) {
        for (var y = y1; y <= y2; y += stepSize) {
            var hasCaveTile = false;

            for (var i = 0; i < caveTiles.length; i++) {
                var tile = caveTiles[i];
                if (tile.X() === x && tile.Y() === y) {
                    hasCaveTile = true;
                    break;
                }
            }

            if (hasCaveTile) {
                Orion.Print("Иду к 'cave'-тайлу на (" + x + ", " + y + ")");
                Orion.WalkTo(x, y);
                Orion.Wait(500);

                var currentX = Player.X();
                var currentY = Player.Y();
                TextWindow.Print('[' + currentX + ',' + currentY + ']' + ','); //Тут можно поменять на то что вам надо 
            }
        }
    }

    Orion.Print("Обход по сетке завершён.");
}


#3 Costesti

Costesti

    Journeyman

  • Members
  • 56 posts

Posted 16 August 2025 - 19:49

Скрипт на сортировок карт по уровню 
 

function SortMapsReliable() {
    // ID мешка, из которого берутся карты
    var mapBag = '0x4002BDC5';

    // ID сундука, возможно используется для открытия доступа к мешкам
    var chest = '0x400BE561';

    // Открываем мешок и сундук
    Orion.UseObject(mapBag);
    Orion.Wait(1000);
    Orion.UseObject(chest);
    Orion.Wait(1000);

    // Сопоставление цвета (hue) карты с мешком, куда она должна быть перемещена
    var hueToBagOrdered = [
        { hue: '0x0000', bag: '0x400BBBC7' }, // 1 уровень
        { hue: '0x0497', bag: '0x400BBBC5' }, // 2 уровень
        { hue: '0x03D6', bag: '0x400BBB90' }, // 3 уровень
        { hue: '0x043C', bag: '0x400BBB4A' }, // 4 уровень
        { hue: '0x0874', bag: '0x400BBB15' }, // 5 уровень
        { hue: '0x0898', bag: '0x400BBAE3' }, // 6 уровень
        { hue: '0x0450', bag: '0x400BB90C' }, // 7 уровень
        { hue: '0x0883', bag: '0x400BB90B' }, // 8 уровень
        { hue: '0x042B', bag: '0x400BB904' }, // 9 уровень
        { hue: '0x0480', bag: '0x400BB8EE' }  // 10 уровень
    ];

    var totalMoved = 0;        // Общее количество перемещённых карт
    var levelCount = {};       // Счётчик по уровням

    // Основной цикл сортировки по уровням
    for (var i = 0; i < hueToBagOrdered.length; i++) {
        var hue = hueToBagOrdered[i].hue;         // Цвет карты
        var targetBag = hueToBagOrdered[i].bag;   // Целевой мешок
        var levelName = (i + 1) + ' lvl';         // Название уровня
        var moved = 0;                            // Счётчик перемещённых карт на этом уровне

        Orion.UseObject(targetBag);              // Открываем мешок
        Orion.Wait(1000);

        // Перемещаем все карты данного цвета из исходного мешка в целевой
        while (true) {
            var items = Orion.FindType('0x14ED', hue, mapBag); // Ищем карты нужного цвета
            if (items.length === 0) break;

            moved += items.length;
            Orion.MoveItemType('0x14ED', hue, mapBag, -1, targetBag); // Перемещаем
            Orion.Wait(1000);
        }

        levelCount[levelName] = moved;   // Сохраняем количество перемещённых карт
        totalMoved += moved;
    }

    // Выводим результаты сортировки
    Orion.Print('Сортировка завершена! Всего перемещено: ' + totalMoved + ' карт.');
    for (var lvl in levelCount) {
        Orion.Print(lvl + ': ' + levelCount[lvl] + ' карт');
    }

    // Подсчёт содержимого в каждом мешке после сортировки
    Orion.Print('Содержимое мешков после сортировки:');
    for (var i = 0; i < hueToBagOrdered.length; i++) {
        var bag = hueToBagOrdered[i].bag;
        var levelName = (i + 1) + ' lvl';
        var itemsInBag = Orion.FindType('0x14ED', '-1', bag).length;
        Orion.Print(levelName + ' мешок: ' + itemsInBag + ' карт');
    }
}






2 user(s) are reading this topic

1 members, 1 guests, 0 anonymous users