Перейти к содержанию

Скрипт для рыбалки с плота (Fishing on boat)

Материал из Wiki Legnes

Скрипт для Legnes/Orion Assist для ловли рыбы с плота.

Автор скрипта: Hotride

// Сундук на плоту
var Chest = '0x40224C3C';

// Использовать хайд, 0 - не использовать, 1 - использовать
var UseHidding = 0;

// Типы еды
var FoodType = '0x09B7|0x09F2|0x097B';

// Серийник оружия, который использовать при появлении гварда
var UseWeaponForGuard = '0x4035126A';

// Звук при появлении элементаля
var SoundForGuard = 'C:/a.wav';

// Количество повтора звука
var SoundRepeatCount = 5;

function PlayGuardAlarm(_private)
{
	for (var i = 0; i < SoundRepeatCount; i++)
	{
		Orion.PlayWav(SoundForGuard);
		Orion.Wait(1000);
	}
}

function FishingTile(x, y)
{
	var text = 'pull out|Вы вытаскиваете|but fail to catch|ловите рыбу, но ничего не можете|fishing in water|ловить рыбу в воде|no fish here|Здесь нет рыбы|is not in line of sight|находится вне прямой видимости';

	while (true)
	{
		if (Player.Dead())
			return false;

		//0x0096 sea serpent
		//0x0033 sea slime
		if (Orion.FindType('0x0096|0x0033', any, ground, 'mobile', '10').length > 0)
		{
			var oldX = Player.X();
			var oldY = Player.Y();

			if (UseWeaponForGuard != '')
				Orion.UseObject(UseWeaponForGuard);

			Orion.Exec('PlayGuardAlarm');

			if (!Player.Hidden())
				Orion.UseSkill('21');

			Orion.PauseScript();

			Orion.WalkTo(oldX, oldY, 0, 0, 255, true);
		}

		while (Player.Hits('%') < 80 && Orion.Count('bandage') > 0)
		{
			Orion.BandageSelf();
			Orion.Wait(2000);
		}

		if (Player.Weight('%') >= 90)
		{
			Orion.OpenContainer(Chest);

			while (Orion.MoveItemType('0x09CD|0x09CE|0x09CC|0x09CF', '0', backpack, 0, Chest))
				Orion.Wait(400);

			if (Orion.Count(FoodType, '0') > 0 || Orion.MoveItemType(FoodType, '0', Chest, 1))
			{
				Orion.UseType(FoodType, '0');
				Orion.Wait(100);
			}
		}

		Orion.WarMode(false);
		Orion.Wait(50);

		while (UseHidding && !Player.Hidden())
		{
			Orion.UseSkill('21');
			Orion.Wait(300);
		}

		//if (!Orion.ValidateTargetTileRelative('water', x, y, 0))
		//	break;

		Orion.ClearJournal();

		Orion.WaitTargetTileRelative('water', x, y, 0);
		Orion.UseType('0x0DBF');

		var msg = Orion.WaitJournal(text, Orion.Now(), Orion.Now() + 5000, 'sys|my');

		if (msg == null || msg.FindTextID() > 3)
			break;

		Orion.Wait(100);
	}

	return true;
}

function Fishing()
{
	var distance = 6;
	var spotsCount = 5;

	for (var i = 0; i < spotsCount; i++)
	{
		for (var x = -distance; x <= distance; x++)
		{
			for (var y = -distance; y <= distance; y++)
			{
				if (Player.Dead())
					return;

				if (!FishingTile(x, y))
					return;
			}
		}

		var oldX = Player.X();
		var oldY = Player.Y();
		Orion.Say('Full Right');

		while (Math.abs(oldX - Player.X()) < 16 && Math.abs(oldY - Player.Y()) < 16)
			Orion.Wait(100);

		Orion.Say('Stop');
	}

	Orion.Say('Full Left');
	Orion.Wait(spotsCount * 14000);
	Orion.Say('Stop');

	Orion.Exec('Fishing');
}