Всем удачной ловли!
Создаем в Orion асисте в разделе Script файл или добавляем в уже существующий.
корректируйте под себя.
можно добавить несколько функций дополнительных
//Чем будем ловить (серийник объекта), если пустая строка - ищет ToolType
var Tool = 'a fishing pole';
//Тип удочки, чем ловить, можно указать несколько типов через |
var ToolType = '0x0DBF';
//Максимальный вес, при котором выкидывать лишнее из пака (если есть что-то лишнее), если вес не изменился - лететь домой разгружаться
var MaxWeight = Player.MaxWeight() - 10;
//Текст удачной ловли
var PutText = 'You pull|Success in work';
//Текст не удачной ловли или режима вармода (если такое сообщение есть на сервере)
var FailText = 'You fish a while|thoughts of battle';
//Текст ошибки ловли (слишком далеко, не могу достать, сдох или что-то еще)
var StopText = 'There are no fish|away';
//Руна к банку в городе serial
var CityBank = '0x401C072E';
//Серийник банка можно переписать под сундук....
var ResultContainer = '0x401C0760';
//Серийник мешка или контейнера в банке
var Bag = '0x401C1DCD';
//Разгружаемся в банк или еще куда нибудь
var UnloadToBank = true;
//Текст физла заклинания
var FizzlesText = 'The spell fizzles';
//Склейка текстов, что представлены выше.
var SearchText = PutText + '|' + FailText + '|' + StopText;
//Расстояние, на котором ловить по X
var FishDistanceX = 6;
//Расстояние, на котором ловить по Y
var FishDistanceY = 6;
//Указатель на текущую точку
var CurrentWayPoint = 0;
//Список точек, на которых обкапывать тайлы вокруг себя
var WayPoints =
[
[1469, 1771],
[1482, 1771],
[1499, 1760],
[1497, 1747],
];
///////////////////////////////////////////////////////////////////////////////////////////
//Основная фукнция
function StartFishing()
{
//Ловим бесконечно
while (true)
{
//Проходимся по списку точек
for (CurrentWayPoint = 0; CurrentWayPoint < WayPoints.length; CurrentWayPoint++)
{
var point = WayPoints[CurrentWayPoint];
//Пытаемся прийти на точку
if (WalkToPoint(point[0], point[1]))
{
//Пытаемся ловить все вокруг себя
if (!FishingTile(point[0], point[1]))
{
//Завершаем скрипт, если что-то пошло не так (только для теста, в дальнейшем заменить на какое-то действие)
return;
}
}
}
//Обеспечение задержек в вечных циклах
Orion.Wait(2000);
}
}
///////////////////////////////////////////////////////////////////////////////////////////
//Функция ходилки, можно добавить сюда что-то еще
function WalkToPoint(x, y)
{
return Orion.WalkTo(x, y, 0, 0);
}
///////////////////////////////////////////////////////////////////////////////////////////
//Функция ловли вокруг персонажа
function FishingTile(x, y)
{
//Сбрасываем вармод, если это необходимо
if (Player.WarMode())
{
Orion.WarMode(false);
Orion.Wait(2500);
}
//Проход по квадрату
for (var x = -FishDistanceX; x <= FishDistanceX; x++)
{
for (var y = -FishDistanceY; y <= FishDistanceY; y++)
{
//Рыбачим, если вернулось false - максимальный вес достигнут
if (!Fish(x, y))
{
Orion.Print(0x0022, 'Достигнут максимальный вес!');
return false;
}
Orion.Wait(2000);
}
}
return true;
}
///////////////////////////////////////////////////////////////////////////////////////////
//Функция получения серийника инструмента (удочки если слмолась пытается взять новую из пака)
function GetTool()
{
var obj = Orion.FindObject(Tool);
if (obj == null)
{
var list = Orion.FindType(ToolType, -1, self);
if (list.length)
return list[0];
else
{
list = Orion.FindType(ToolType);
if (list.length)
return list[0];
}
return '';
}
return obj.Serial();
}
///////////////////////////////////////////////////////////////////////////////////////////
//Функция ловли по тайлу
function Fish(x, y)
{
//Пока живы - ловим
while (!Player.Dead())
{
//Проверяем возможность наведения автотаргета на тайл
if (!Orion.ValidateTargetTileRelative('water', x, y))
break;
var ToolSerial = GetTool();
if (ToolSerial == '')
{
Orion.Print('0x0021', 'Tool is not found!!!');
Orion.Wait(2000);
return false;
}