Удачи!
Файл my_func.inc необходимо скачать отсюда http://coop.myftp.org/files/UO/Stealth/my_func.inc и положить в папку Include.
Без него скрипт работать не будет!!!
Code: Select all
///////////////////////////////////////////////
/////////////Прокачка Магери, ДРВ//////////////
///////////////////////////////////////////////
//©Kynep, 26.12.2011
program Magery;
{$Include 'my_func.inc'}
//////////////////////
//Основные настройки//
//////////////////////
const
Main_Sunduk = $4013B394; // ID основного сундука с паком
Pack_With_Regs = $4013B394; // ID пака в сундуке, с регами, едой и браслетами
IsSpirit = 1; //Качаем Спирит спик, 1- да, 0 - нет
IsRezist = 0; //Если 1, то кастую на цель
Target_ID = $00134F51; //ID цели, если качаем резист, то указываем
Target_type = $0190; //Тип Цели человек
Spell_Name = 'Magic Arrow'; //Название заклинания
Min_mana = 9; //Минимальное значение маны, после которого медитируем
//Рекомендуется ставить не меньше чем стоимость каста
//Стрелка стоит 10 маны. :)
Min_regs_count = 10; //Минимальное кол-во реагентов
food = $09BB; // Тип Еды
Brass_type = $1086; // Тип Браслета маны
Brass_color = $0847; // Цвет Браслета маны
sk_val = 100; // Максимальное значение скилла
Grab_Count = 500; //Сколько регов берем
////////////////////
//Какие реги берем//
////////////////////
//Тут нужно поставить 1, если нужно брать и 0 если не нужно
grab_ns = 1; //NighShade
grab_gs = 0; //Ginseng
grab_gk = 0; //Garlik
grab_sa = 0; //Sulfurous Ash
grab_ss = 0; //Spider Silk
grab_bm = 0; //Blood Moss
grab_bp = 1; //Black Pearl
grab_mr = 0; //Mandrake Root
///////////////////////////////////////////////
/////////////Настройка окончена!!//////////////
///////////////////////////////////////////////
//Типы реагентов, шард ДРВ.
bns = $0F88; //NighShade
bgs = $0F85; //Ginseng
bgk = $0F84; //Garlik
bsa = $0F8C; //Sulfurous Ash
bss = $0F8D; //Spider Silk
bbm = $0F7B; //Blood Moss
bbp = $0F7A; //Black Pearl
bmr = $0F86; //Mandrake Root
//Названия регов
nns = 'NighShade';
ngs = 'Ginseng';
ngk = 'Garlik';
nsa = 'Sulfurous Ash';
nss = 'Spider Silk';
nbm = 'Blood Moss';
nbp = 'Black Pearl';
nmr = 'Mandrake Root';
var
a: integer;
bool_exit: boolean;
Skill_Val: double;
Regs: array [1..8] of word;
Regs_to_Grab: array [1..8] of integer;
Name_of_Reg: array [1..8] of string;
procedure init;
begin
Regs[1] := bns;
Regs[2] := bgs;
Regs[3] := bgk;
Regs[4] := bsa;
Regs[5] := bss;
Regs[6] := bbm;
Regs[7] := bbp;
Regs[8] := bmr;
Regs_to_Grab[1] := grab_ns;
Regs_to_Grab[2] := grab_gs;
Regs_to_Grab[3] := grab_gk;
Regs_to_Grab[4] := grab_sa;
Regs_to_Grab[5] := grab_ss;
Regs_to_Grab[6] := grab_bm;
Regs_to_Grab[7] := grab_bp;
Regs_to_Grab[8] := grab_mr;
Name_of_Reg[1] := nns;
Name_of_Reg[2] := ngs;
Name_of_Reg[3] := ngk;
Name_of_Reg[4] := nsa;
Name_of_Reg[5] := nss;
Name_of_Reg[6] := nbm;
Name_of_Reg[7] := nbp;
Name_of_Reg[8] := nmr;
end;
procedure Count_Regs;
//Процедура подсчет регов
//©Kynep
//
var
z, tmp_c, tmp_c2: integer;
tmp_id: cardinal;
begin
AddToSystemJournal('*Подсчет реагентов*');
tmp_c := 0;
tmp_c2 := 0;
for z := 1 to 8 do
begin
If Regs_to_Grab[z] <> 0 then
begin
tmp_id := FindType(Regs[z], Pack_With_Regs);
if (tmp_id <> 0) AND (GetQuantity(tmp_id) > 20) then
begin
tmp_c := GetQuantity(tmp_id);
wait(100);
AddToSystemJournal('*В сундуке ' + inttostr(tmp_c) + ' ' + Name_of_Reg[z]);
wait(100);
tmp_id := FindType(Regs[z], backpack);
if tmp_id <> 0 then
begin
tmp_c2 := GetQuantity(tmp_id);
wait(100);
AddToSystemJournal('*В рюкзаке ' + inttostr(tmp_c2) + ' ' + Name_of_Reg[z]);
wait(100);
end
else
begin
AddToSystemJournal('--->!!!*В рюкзаке ' + Name_of_Reg[z] + ' не найден*!!!');
end
end
else
begin
AddToSystemJournal('--->!!!*В сундуке слишком мало' + Name_of_Reg[z]);
AddToSystemJournal('--->!!!*ОСТАНОВИ СКРИПТ И ПОПОЛНИ*!!!');
end
end
end;
end;
procedure Check_Regs;
//Проверка и добор регов
//©Kynep
//
var
i: integer;
item: cardinal;
begin
for i := 1 to 8 do
begin
If Regs_to_Grab[i] <> 0 then
begin
item := FindType(Regs[i], Backpack);
if GetQuantity(item) < 10 then
begin
if Grab(Regs[i], Grab_Count, Pack_With_Regs, Min_regs_count) = true then
begin
AddToSystemJournal('*Добрал Реагент ' + Name_of_reg[i]);
end
else
begin
AddToSystemJournal('--->!!!*Закончился реагент ' + Name_of_Reg[i] + '*!!!');
AddToSystemJournal('--->!!!*Скрипт Остановлен*!!!');
bool_exit := true;
exit;
end
end
end;
end;
end;
procedure Check_Brass;
//Одевание Браслета
//©Kynep
//
var
br: cardinal;
begin
br := ObjAtLayer(BraceLayer);
if br <> 0 then
begin
AddToSystemJournal('*Браслет уже одет*');
end
else
begin
FindTypeEx(Brass_Type, Brass_color, Pack_With_Regs, false);
If FindCount > 0 then
begin
CheckLag;
MoveItem(FindItem, 1, backpack, 0,0,0);
wait(700);
UseObject(FindItem);
wait(500);
AddToSystemJournal('*Одел браслет*');
end
else
begin
AddToSystemJournal('--->!!!*Браслеты закончились*!!!');
end;
end
end;
procedure Cast_on_Self;
//Каст на себя
//©Kynep
//
var
cur_mana, h: integer;
targ: cardinal;
name: string;
begin
ClearJournal;
Count_Regs;
if IsRezist = 1 then
begin
if Check_Target_ID(Target_type, Target_ID, 10) <> true then
begin
targ := Self;
AddToSystemJournal('*Цель - я сам*');
end
else
begin
targ := Target_ID;
name := GetName(targ);
AddToSystemJournal('*Цель - чужак по имени: ' + name + '*');
end;
AddToSystemJournal('*Начинаю кастовать*');
end
else
begin
targ := Self;
AddToSystemJournal('*Начинаю кастовать*');
end;
while Mana > Min_mana do
begin
if (IsRezist = 1) AND (InJournal('Stop HP') <> -1) then
begin
AddToSystemJournal('*Ожидаю куклу...*');
ClearJournal;
repeat
wait(500);
Check_World_Save;
until (InJournal('Im ready') <> -1);
ClearJournal;
AddToSystemJournal('*Кукла готова, поехали*');
UOSay('Lets Begin');
wait(500);
end;
ClearJournal;
CheckLag;
WaitTargetObject(targ);
Cast(Spell_Name);
cur_mana := Mana;
h := 0;
repeat
h := h + 1;
wait(200);
Check_World_Save;
until (InJournal('Stop HP') <> -1) OR (InJournal('fizzle') <> -1) OR (InJournal('lack') <> -1) OR (Mana < cur_mana) OR (h > 10);
If (Mana < cur_mana) AND (InJournal('fizzle') = -1) then
begin
AddToSystemJournal('*ЧПОК*');
end;
Check_Regs;
end;
AddToSystemJournal('*Каст окончен*');
end;
procedure Medit;
//Медитация
//©Kynep
//
begin
if IsWarMode(Self) then
begin
SetWarMode(false);
wait(300);
end;
ClearJournal;
AddToSystemJournal('*Медитируем*');
while Mana < Int do
begin
ClearJournal;
wait(100);
CheckLag;
Useskill('Meditation');
repeat
wait(200);
Check_World_Save;
until (InJournal('You are at')<>-1) OR (InJournal('You lose')<>-1) OR (GetMana(Self) = GetMaxMana(Self));
end;
if (IsRezist = 1) AND (InJournal('Stop HP') <> -1) then
begin
AddToSystemJournal('*Ожидаю куклу...*');
ClearJournal;
repeat
wait(500);
Check_World_Save;
until (InJournal('Im ready') <> -1);
ClearJournal;
AddToSystemJournal('*Кукла готова, поехали*');
UOSay('Lets Begin');
wait(500);
end;
wait(1500);
AddToSystemJournal('*Медитация закончена*');
if IsSpirit = 1 then
begin
AddToSystemJournal('*Спирит Спик*');
UseSkill('Spirit Speak');
wait(3000);
end;
end;
Begin
//Основной скрипт
//©Kynep
//
ClearJournal;
AddToSystemJournal('*Скрипт Магери запущен*');
Check_Connect;
init;
CheckLag;
UseObject(backpack);
wait(500);
UseObject(Main_Sunduk);
wait(500);
UseObject(Pack_With_Regs);
AddToSystemJournal('*Открыл сундуки*');
wait(100)
AddToSystemJournal('*Еда, браслет*');
Check_Food(food, Pack_With_Regs);
Check_Brass;
ClearJournal;
AddToSystemJournal('*Подготовка окончена, поехали!*');
wait(100);
Skill_Val := sk_val;
a := 0;
bool_exit := false;
while not dead do
begin
repeat
Check_Connect;
If GetSkillValue('Magery') <> Skill_Val then
begin
a := a + 1;
if a = 100 then
begin
Check_Food(food, Pack_With_Regs);
a := 0;
end;
Check_Regs;
If bool_exit <> true then
begin
if IsWarMode(Self) then
begin
SetWarMode(false);
wait(300);
end;
Cast_on_Self;
wait(200);
Medit;
end
else
begin
exit;
end;
end
else
begin
bool_exit := true;
end;
until (bool_exit = true);
AddToSystemJournal('--->!!!*Скилл докачан*!!!');
exit;
end;
AddToSystemJournal('--->!!!*Убили гады*!!!');
End.