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

Рубка деревьев в Миноке (Lumberjacking in Minoc)

Материал из Wiki Legnes
Версия от 17:27, 10 декабря 2024; Support (обсуждение | вклад) (Новая страница: «Скрипт для Legnes Assist. Скрипт подойдёт для начинающих игроков, которые хотят рубить городе Минок или Ёв. Скопируйте код скрипта в ассист и проставьте необходимые параметры. После того как дерево упало, персонаж полностью рубит лежащее дерево и идёт к след...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Скрипт для Legnes Assist. Скрипт подойдёт для начинающих игроков, которые хотят рубить городе Минок или Ёв. Скопируйте код скрипта в ассист и проставьте необходимые параметры. После того как дерево упало, персонаж полностью рубит лежащее дерево и идёт к следующему.

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

// Лес для рубки:
// 0 - Minoc
var TownType = 0;

// Использовать фильтр логов, 0 - не использовать, 1 - использовать
var UseLogsNameFilter = 0;

// Названия логов для игнорирования дерева (не продолжать рубить)
var IgnoreLogsNames = 'the log';

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

// Точки банков для TownType
// Первая точка - координаты, куда нужно вставть
// Вторая - запаска, если на первую не встали (тайл заблокирован)
var BankSpots =
[
	// TownType == 0
	[ [2564, 480], [2564, 479] ]
];

// Не трогать!!!
var BankX = BankSpots[TownType][0][0];
var BankY = BankSpots[TownType][0][1];
var Bank2X = BankSpots[TownType][1][0];
var Bank2Y = BankSpots[TownType][1][1];

function UseHatchet(_private)
{
	if (!Orion.UseType('0x0F43', 'any', self, false))
	{
		if (!Orion.UseType('0x0F43'))
		{
			Orion.Print('0x0021', 'Your tool is gone!');
			Orion.Terminate('all');
		}
	}
}

function LumberPart(tile)
{
	var text = 'в свой рюкзак|in your pack|Вы некоторое время рубите дерево, но не можете получить|but fail to produce any|Цель находится вне прямой видимости|too far away to chop|Target is not in line of sight|Вы не можете срубить это|cut it down';

	if (!Orion.WalkTo(tile.X(), tile.Y(), tile.Z(), 2, 255, true))
		return false;

	while (true)
	{
		if (Player.Weight('%') >= 95)
		{
			var oldX = Player.X();
			var oldY = Player.Y();
			Orion.Print('0x0021', 'Weight limit reached!!!');

			if (!Orion.WalkTo(2514, 561, 0, 0, 255, true))
			{
				if (!Orion.WalkTo(2513, 561, 0, 1, 255, true))
					Orion.PauseScript();
			}

			Orion.Say('bank');
			Orion.Wait(200);
			UnloadLogs();

			if (Orion.UseType('0x09B7|0x09F2|0x097B', '0', lastcontainer))
				Orion.Wait(100);

			while (Orion.Count('0x0F43') < 4)
			{
				if (!Orion.MoveItemType('0x0F43', 'any', lastcontainer))
					break;

				Orion.Wait(400);
			}

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

		var now = Orion.Now();
		Orion.WaitTargetTile(tile.Graphic(), tile.X(), tile.Y(), tile.Z());
		UseHatchet(0);
		var msg = Orion.WaitJournal(text, now, now + 5000, 'my|sys');
		
		if (msg != null && msg.FindTextID() > 3)
		{
			if ((msg.FindTextID() >= 4 && msg.FindTextID() <= 6) && !Orion.WalkTo(tile.X(), tile.Y(), tile.Z(), 1, 255, true))
				return false;
				
			return true;
		}

		Orion.Wait(10);
	}

	return true;
}

function LumberParts(_private)
{
	var parts =
	[
		0x3A97, 0x3A98, 0x3A99, 0x3AA2, 0x3AA1, 0x3AA0, 0x3A9A, 0x3A9B, 0x3A9C, 0x3A9D, 0x3A9E, 0x3A9F,
		0x3AA9, 0x3AAA, 0x3AB9, 0x3AB8, 0x3AAB, 0x3AAC, 0x3AB7, 0x3AB6, 0x3AAD, 0x3AAC, 0x3AAE, 0x3AAF, 0x3AB3, 0x3AB0, 0x3AB1, 0x3AB4, 0x3AB5, 0x3AB2,
		0x3A80, 0x3A81, 0x3A82, 0x3A83, 0x3A84, 0x3A8F, 0x3A8E, 0x3A8D, 0x3A8C, 0x3A88, 0x3A87, 0x3A86, 0x3A85, 0x3A8B, 0x3A8A, 0x3A89,
		0x3A10, 0x3A11, 0x3A12, 0x3A13, 0x3A1B, 0x3A1A, 0x3A1C, 0x3A1D, 0x3A1E, 0x3A1F, 0x3A20, 0x3A21, 0x3A16, 0x3A14, 0x3A15, 0x3A19, 0x3A18, 0x3A17,
		0x39FC, 0x39FD, 0x39FE, 0x39FF, 0x3A00, 0x3A09, 0x3A08, 0x3A07, 0x3A04, 0x3A03, 0x3A02, 0x3A01, 0x3A05, 0x3A06,
		0x3AC0, 0x3AC1, 0x3AC2, 0x3AC3, 0x3ACE, 0x3ACD, 0x3ACC, 0x3AC8, 0x3AC7, 0x3AC6, 0x3AC5, 0x3ACB, 0x3AC4, 0x3AC9, 0x3ACA,
		0x3A5A, 0x3A5B, 0x3A5C, 0x3A5D, 0x3A5E, 0x3A62, 0x3A61, 0x3A60, 0x3A5F, 0x3A63, 0x3A67, 0x3A66, 0x3A65, 0x3A64,
		0x3A36, 0x3A37, 0x3A38, 0x3A39, 0x3A3A, 0x3A3E, 0x3A3D, 0x3A3C, 0x3A40, 0x3A3F, 0x3A3B, 0x3A40, 0x3A3F,
		0x3A6E, 0x3A6F, 0x3A70, 0x3A71, 0x3A72, 0x3A79, 0x3A78, 0x3A77, 0x3A76, 0x3A75, 0x3A74, 0x3A73,
		0x3A97, 0x3A98, 0x3A99, 0x3A9A, 0x3A9B, 0x3A9E, 0x3A9D, 0x3A9F, 0x3AA2, 0x3AA1, 0x3AA0,
		0x3A47, 0x3A48, 0x3A49, 0x3A4A, 0x3A4B, 0x3A4C, 0x3A53, 0x3A52, 0x3A4F, 0x3A4E, 0x3A4D
	];

	var tiles = Orion.GetTilesInRect('any', Player.X() - 15, Player.Y() - 15, Player.X() + 15, Player.Y() + 15);
	var result = false;

	for (var i = 0; i < tiles.length; i++)
	{
		var graphic = parseInt(tiles[i].Graphic(), 16);

		if (parts.indexOf(graphic) != -1)
		{
			if (LumberPart(tiles[i]))
				result = true;
		}
	}

	return result;
}

function LumberTree(tile)
{
	if (!Orion.WalkTo(tile.X(), tile.Y(), tile.Z(), 2, 255, true))
		return;

	Orion.WaitTargetTile(tile.Graphic(), tile.X(), tile.Y(), tile.Z());
	UseHatchet(0);
	Orion.Wait(4500);

	while (LumberParts(0))
		Orion.Wait(100);
}

function LumberTrees()
{
	var x = Player.X();
	var y = Player.Y();

	LumberParts(0);

	var trees =
	[
		0x0CDD, 0x0CCD, 0x0CD3, 0x0CDA, 0x0CD8,
		0x0CE6, 0x0CE3, 0x0CD6
	];

	while (true)
	{
		Orion.WalkTo(x, y, 0, 1, 255, true);
		var tiles = Orion.GetTilesInRect('any', x - 15, y - 15, x + 15, y + 15);

		for (var i = 0; i < tiles.length; i++)
		{
			var graphic = parseInt(tiles[i].Graphic(), 16);

			if (trees.indexOf(graphic) != -1)
				LumberTree(tiles[i]);
		}

		Orion.Wait(1000);
	}
}

function UnloadLogs()
{
	var list = Orion.FindTypeEx('0x1BDD|0x0F90');

	for (var i = 0; i < list.length; i++)
	{
		var found = Orion.FindType(list[i].Graphic(), list[i].Color(), lastcontainer);

		if (found.length != 0)
			Orion.MoveItem(list[i].Serial(), 0, found[0]);
		else
			Orion.MoveItem(list[i].Serial(), 0, lastcontainer);

		Orion.Wait(400);
	}
}

function CheckHP()
{
	while (true)
	{
		if (Player.Hits('%') < 90)
			Orion.PlayWav('C:/1.wav');

		Orion.Wait(1000);
	}
}