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

Скрипт на прокачку всех боевых

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

Скрипт на прокачку всех боевых навыков
Автор скрипта: Frydex

Скачать скрипт в виде файла all_combat_skills.oajs

var fightPoint = [1817,356]; //кординаты места где вы и ваш апонент будете драться (X, Y)
var safePoint = [1814,357]; //координаты безопастного места возле сундука, где вы будете лечиться (X, Y)
var enemyBody = '0x00009F66'; //serial цели для атаки (ваш противник)
var container = '0x4010872A'; //serial мешок с ресами (бинты, еда, вепы, стрелы, броня, щиты, мыло)
var tube = '0x401C7F4D'; //serial тубы с водой (должна стоять рядом с сундуком с ресами)
var food = '0x097B'; //id еды (в данном случае fish steak)
var shield = '0x1B78'; //id щита который будет одеваться
var clearClountBandageBy = 200; // количество бинтов которые будут мыться за раз
var alert = 'E:\\Soft\\alert.wav'; //лубой звуковой файл, который будет проигрываться, когда в судуке нет ресурсов для прокачки

//fixed variables
var selfBody = Player.Serial();
var pumice = '0x0F8B';
var bandage = '0x0E21';
var bloodBandage = '0x0E20';
var butcher = '0x13F6';
var dagger = '0x0F51';
var hammer = '0x13E3';
var bow = '0x13B1'; //bow 0x13B1 crosbow  0x0F4F
var arrow = '0x0F3F';//arrow 0x0F3F bolt 0x1BFB
var skills = [
	['Mace Fighting', true, hammer],
	['Fencing', true, dagger],
	['Swordsmanship', true, butcher],
	['Archery', true, bow]
];
var helmet = '0x1412';
var gorget = '0x1413';
var platemail = '0x1415';
var arms = '0x1410';
var gloves = '0x1414';
var legs = '0x1411';
var armors = [helmet, gorget, platemail, arms, gloves, legs, shield];

var consumables = [
	[food, 5, 5],
	[butcher, 2, 2],
	[dagger, 2, 2],
	[hammer, 2, 2],
	[bow, 2, 2],
	[arrow, 1000, 10],
	[bandage, 100, 10],
	[helmet, 1, 1],
	[gorget, 1, 1],
	[platemail, 1, 1],
	[arms, 1, 1],
	[gloves, 1, 1],
	[legs, 1, 1],
	[shield, 1, 1]
];

function Autostart() {
	walkTo(safePoint[0], safePoint[1], Player.Z());
	counter();
	while (!Player.Dead()) {
		if (needConsumables()) {
			if (!getConsumables()) {
				Orion.Print(0x0022, 'Недостаточно ресурсов для прокачки!');
				break;
			}
			equip();
		}
		eat();
		attack();
	}
	Orion.PlayWav(alert);
}

function eat() {
	while (!Orion.UseType(food)) {
		var msg = Orion.WaitJournal('eat|full', Orion.Now(), Orion.Now() + 1000, 'sys|my');
		if(msg != null && msg.FindTextID() == 1) {
			break;
		} 
	}
}

function attack() {
	if (Player.Hits() == Player.MaxHits()) {
		walkTo(fightPoint[0], fightPoint[1], Player.Z());
		while (Player.Hits() > (Player.MaxHits() / 2) + 20) {
			Orion.Attack(enemyBody);
			var msg = Orion.WaitJournal('destroyed', Orion.Now(), Orion.Now() + 500, 'sys|my');
			if (msg != null && msg.FindTextID() === 0) {
				equip();
			}
			if (needConsumables()) {
				break;
			}
		}
	}
	heal();
}

function needConsumables() {
	for (var i = 0; i < consumables.length; i++) {
		var skill = skills.filter(function(x) {
			return x[2] === consumables[i][0];
		});
		if ((skill[0] && Orion.SkillValue(skill[0][0]) === 1000) || (Orion.SkillValue('Archery') === 1000 && consumables[i][0] === arrow)) {
			continue;
		}
		if (Orion.Count(consumables[i][0]) < consumables[i][2]) {
			return true;
		}
	}
	return false;
}

function getConsumables() {
	walkTo(safePoint[0], safePoint[1], Player.Z());
	Orion.Wait(300);
	Orion.UseObject(container);
	Orion.Wait(300);
	
	if(Orion.Count(bandage, 'any', container) < 100) {
		clean();
	}
	
	while(Orion.DragItemType(bloodBandage, 'any', 'backpack', 0)) {
		Orion.Wait(300);
		Orion.DropDraggedItem(container);
		Orion.Wait(300);
	}
	
	if (Orion.SkillValue('Archery') === 1000) {
		while(Orion.DragItemType(arrow, 'any', 'backpack', 0)) {
			Orion.Wait(300);
			Orion.DropDraggedItem(container);
			Orion.Wait(300);
		}
	}
	
	for (var i = 0; i < consumables.length; i++) {
		if (consumables[i][1] - Orion.Count(consumables[i][0]) == 0) {
			continue;
		}
		
		if (consumables[i][0] == butcher || consumables[i][0] == hammer || consumables[i][0] == dagger || consumables[i][0] == bow) {
			var skill = skills.filter(function(x) {
				return x[2] === consumables[i][0];
			});
			if ((skill[0] && Orion.SkillValue(skill[0][0]) === 1000)) {
				continue;
			}
			var length = consumables[i][1] - Orion.Count(consumables[i][0]);
			for (var o = 0; o < length; o++) {
				if(Orion.DragItemType(consumables[i][0], 'any', container, 0)) {
					Orion.Wait(300);
					Orion.DropDraggedItem('backpack');
					Orion.Wait(300);
				}
			}
		} else {	
			if  (Orion.SkillValue('Archery') === 1000 && consumables[i][0] === arrow) {
				continue;
			}	
			if(Orion.Count(consumables[i][0]) < consumables[i][1] && Orion.DragItemType(consumables[i][0], 'any', container, consumables[i][1] - Orion.Count(consumables[i][0]))) {
				Orion.Wait(300);
				Orion.DropDraggedItem('backpack');
				Orion.Wait(300);
			}
		}
		if (Orion.Count(consumables[i][0]) < consumables[i][2]) {
			return false;
		}
	}
	
	return true;
}

function equip() {
	for (i = 0; i < armors.length; i++) {
		Orion.UseType(armors[i]);
		Orion.Wait(300);
	}
	for (i = 0; i < skills.length; i++) {
		if (skills[i][1] && Orion.SkillValue(skills[i][0]) != 1000) {
			Orion.UseType(skills[i][2]);
			Orion.Wait(300);
			break;
		}
	}
}

function heal() {
	walkTo(safePoint[0], safePoint[1], Player.Z());
	while (Player.Hits() < Player.MaxHits()) {
		Orion.WaitTargetObject(selfBody);
		if(!Orion.UseType(bandage)) {
			getConsumables();
		}
		Orion.WaitJournal('successfully|not damaged|barely', Orion.Now(), Orion.Now() + 3500, 'sys|my');
	}
	equip();
}

function clean() {
	while(Orion.DragItemType(bloodBandage, 'any', container, clearClountBandageBy)) {
		Orion.Wait(300);
		Orion.DropDraggedItem('backpack');
		Orion.Wait(300);
		
		if(Orion.DragItemType(pumice, 'any', container, 1)) {
			Orion.Wait(300);
			Orion.DropDraggedItem('backpack');
			Orion.Wait(300);
			
			Orion.WaitTargetObject(tube);
			if(Orion.UseType(bloodBandage)) {
				Orion.Wait(100);
				if(Orion.DragItemType(bandage, 'any', 'backpack', 0)) {
					Orion.Wait(300);
					Orion.DropDraggedItem(container);
					Orion.Wait(300);
				}
			}
		} else {
			if(Orion.DragItemType(bloodBandage, 'any', 'backpack', 0)) {
				Orion.Wait(300);
				Orion.DropDraggedItem(container);
				Orion.Wait(300);
			}
			if(Orion.DragItemType(bandage, 'any', 'backpack', 0)) {
				Orion.Wait(300);
				Orion.DropDraggedItem(container);
				Orion.Wait(300);
			}
			break;
		}
	}
}

function counter() {
	Orion.UseObject(container);
	Orion.Wait(300);
	for (var i = 0; i < consumables.length; i++) {
	 	var name = 'unknown';
		switch (consumables[i][0]) {
			case bandage: name = 'Bandages'; break;
			case helmet: name = 'Hemlets'; break;
			case food: name = 'Foods'; break;
			case butcher: name = 'Butchers'; break;
			case dagger: name = 'Daggers'; break;
			case hammer: name = 'Hammers'; break;
			case bow: name = 'Bows'; break;
			case arrow: name = 'Arrows'; break;
			case gorget: name = 'Gorgets'; break;
			case platemail: name = 'Platemails'; break;
			case arms: name = 'Arms'; break;
			case gloves: name = 'Gloveses'; break;
			case legs: name = 'Legs'; break;
			case shield: name = 'Shields'; break;
			default: break;
		}
		if (Orion.Count(consumables[i][0], 'any', container) < consumables[i][2])
			Orion.Print(0x0022, name + ': ' + Orion.Count(consumables[i][0], 'any', container));
		else
			Orion.Print(0x0044, name + ': ' + Orion.Count(consumables[i][0], 'any', container));
	}
}

function walkTo(x, y, z) {
	do {
		Orion.WalkTo(x, y, z, 0, 255, 1, 1);
	} while(Player.X() !== x && Player.Y() !== y)
}