Скрипт на прокачку всех боевых
Внешний вид
Скрипт на прокачку всех боевых навыков
Автор скрипта: 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)
}