Code: Select all
function CheckPK : Boolean;
VAR
man:array[0..1] of word;
i,noto:integer;
name:Kopalka;
Begin
man[0]:=$0190;
man[1]:=$0191;
FindDistance:=15;
Ignore(self);
AddToSystemJournal('проверяем наличие ПК...');
for i:=0 to 1 do
begin
FindType(man[i],ground);
If FindCount>0 then
begin
AddToSystemJournal('нашли какого то человечика');
noto:=GetNotoriety(FindItem);
AddToSystemJournal('Его злобность равна '+IntToStr(noto));
If (noto>1) then
begin
AddToSystemJournal('Он,сука, ПКшник!!!');
FlagPK:=true;
result:=true;
Exit;
end
Else
begin
AddToSystemJournal('он голубой...тьфу!');
Ignore(FindItem);
end;
end;
wait(100);
end;
End;
Code: Select all
procedure RecallToCave;
var
x:integer;
Begin
AddToSystemJournal('Реколимся в пещеру...');
x:=getx(self);
repeat
manaCheck;
If TargetPresent then CancelTarget;
STime:=Now;
Cast('Recall');
Waittargetobject(RuneToCave);
AddToSystemJournal('Ждём каста');
while x=Getx(self) AND NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1) do wait(250);
until NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1);
End;
Code: Select all
Program Mining;
{$Include 'checkflow.inc'}
{$Include 'all.inc'}
Const
RuneChest=$400B5A9D;
Sunduk2=$400B3478;
TypeFood=$097E;
Var
flag,flagPK: Boolean;
Rune: array[0..15] of cardinal;
RuneNumber,i: integer;
STime:TDateTime;
//############################################################################################################
//######################### DRINK INVISIBLE POTION ###########################
//############################################################################################################
Procedure HealSh;
Begin
if Count($0E21)>0 then
begin
SetWarMode(false);
while (life<str) AND (Count($0E21)>0) do
begin
if FlagPK=true then Exit;
UseType($0E21,$FFFF);
WaitTargetSelf;
checklag;
wait(6000);
end;
end;
End;
Procedure invis;
Begin
AddToSystemJournal(' Inviska ...');
SetWarMode(false);
wait(100);
UseType($0F08,$FFFF);
End;
procedure CheckHealth;
Begin
while NOT dead do
begin
if life<100 then
begin
invis;
Exit;
end;
wait(300);
end;
End;
//############################################################################################################
//######################### PK DETECTING ###########################
//############################################################################################################
function CheckPK : Boolean;
VAR
man:array[0..1] of word;
i,noto:integer;
name:Kopalka;
Begin
man[0]:=$0190;
man[1]:=$0191;
FindDistance:=15;
Ignore(self);
AddToSystemJournal('проверяем наличие ПК...');
for i:=0 to 1 do
begin
FindType(man[i],ground);
If FindCount>0 then
begin
AddToSystemJournal('нашли какого то человечика');
noto:=GetNotoriety(FindItem);
AddToSystemJournal('Его злобность равна '+IntToStr(noto));
If (noto>1) then
begin
AddToSystemJournal('Он,сука, ПКшник!!!');
FlagPK:=true;
result:=true;
Exit;
end
Else
begin
AddToSystemJournal('он голубой...тьфу!');
Ignore(FindItem);
end;
end;
wait(100);
end;
End;
//############################################################################################################
//######################### HIDING ###########################
//############################################################################################################
procedure hidd;
Var
StartHid: TDateTime;
Begin
while not Hidden do
begin
StartHid:=Now;
SetWarMode(false);
Wait(100);
AddToSystemJournal(' Прячемся...');
UseSkill('Hiding');
WaitJournalLine(StartHid,'hidden yourself well|не удалось скрыться',4000);
If CheckPK then Exit;
If (InJournalBetweenTimes('не удалось скрыться',StartHid,Now)<>-1) then
begin
If Life<100 then
begin
AddToSystemJournal('Кто то нас покоцал! Надо пить инвизку и хилиться.');
Invis;
HealSh;
end;
end;
end;
Wait(100);
End;
//############################################################################################################################
//################################### RECALL TO CAVE ####################################
//############################################################################################################################
procedure RecallToCave;
var
x:integer;
Begin
AddToSystemJournal('Реколимся в пещеру...');
x:=getx(self);
repeat
manaCheck;
If TargetPresent then CancelTarget;
STime:=Now;
Cast('Recall');
Waittargetobject(RuneToCave);
AddToSystemJournal('Ждём каста');
while x=Getx(self) AND NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1) do wait(250);
until NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1);
End;
//############################################################################################################################
//################################### RECALL TO HOME ####################################
//############################################################################################################################
Procedure RecallToHome;
var
x : integer;
Begin
wait(100);
AddToSystemJournal('Реколимся домой...');
x:=Getx(Self);
repeat
If (flagPK=1 or life<100) then Invis;
if TargetPresent then CancelTarget;
Cast('Recall');
Waittargetobject(RuneToHome);
AddToSystemJOurnal('Ждём каста');
while x=Getx(self) AND NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1) do wait(250);
until NOT (InJournalBetweenTimes('Заклинание не удалось',STime,Now)<>-1);
wait(200);
CheckDead2;
wait(300);
open;
Move(1157,1698,0);
close;
Move(1158,1695,0);
End;
//############################################################################################################
//######################### CHECK THE MANA ###########################
//############################################################################################################
Procedure meditation;
Begin
SetWarMode(false);
repeat
//AddToSystemJournal('Медитируем...') ;
STime:=Now;
UseSkill('Meditation')
wait(1500);
WaitJournalLine(STime,'at peace.|прервана',60000);
until (InJournalBetweenTimes('at peace',STime,Now)<>-1);
end;
procedure manaCheck;
Begin
If Mana<Int then
begin
AddToSystemJournal('медитируем до упора!');
meditation;
end;
End;
//############################################################################################################
//######################### UNLOAD THE ORE ###########################
//############################################################################################################
Procedure Unload;
VAR
n, x:integer;
Unload:array [0..3] of word;
Begin
UnLoad[1]:=$19B7;
UnLoad[2]:=$19BA;
UnLoad[3]:=$19B8;
UnLoad[4]:=$19B9;
if life <str then heal;
useobject('Sunduk2');
wait(250);
CheckLag;
AddToSystemJournal('Разгружаюсь ...');
For n=0 to 3 do
begin
FindType(UnLoad[n],backpack);
while FindCount>0 do
begin
moveitem(finditem,0,Sunduk2,0,0,0);
CheckLag;
wait(300);
FindType(UnLoad[n],backpack);
end;
end;
AddToSystemJournal(' Ну вродь всё, разгрузились ...');
End;
//############################################################################################################
//######################### HEAL ###########################
//############################################################################################################
procedure heal;
VAR
bandages : array[0..1] of word;
Begin
bandages[0]:=$0E21; //clear bandages
bandages[1]:=$0E20; //bloody bandages
UseObject(Sunduk);
wait(300);
FindType(bandages[0],Sunduk);
if FindCount>0 then
begin
AddToSystemJournal('Фух, есть чистые бинты!');
Grab(FindItem,50);
Wait(100);
SetWarMode(false);
while life < str do
begin
UseType(bandages[0],backpack);
WaitTargetSelf;
wait(6000);
end;
end
else
AddToSystemJournal(' Бинтов больше нету! ');
for i:=0 to 1 do
Begin
wait(500);
FindtType(bandages[i],backpack);
if FindCount>0 then
begin
moveitem(finditem,0,Sunduk,0,0,0);
AddToSystemJournal(' Остатки бинтов обратно в сундук... ') ;
end;
End;
//############################################################################################################
//######################### REAGENTS LOAD ###########################
//############################################################################################################
procedure regi;
VAR r, q, n, amount = 10
reg : array [0..2] of word;
q,n,amount : integer;
Begin
reg[0]:=$0F7A;
reg[1]:=$0F7B;
reg[2]:=$0F86;
UseObject(Sunduk);
Wait(500);
For i:=0 to 2 do
if Count(reg[i])<>amount then
begin
q:=amount-count(reg[i]);
if q <> 0 then
if q > 0 then
Begin
CheckLag;
Findtype(reg[i],Sunduk);
If Findcount=0 then
begin
AddToSystemJournal('Какой то из регов закончился!!!');
Exit
end;
AddToSystemJournal('Берем рег номер '+IntToStr(i));
Grab(finditem,q);
wait(300);
end
else
begin
q:=q*(-1);
findtype(reg[i],backpack);
Moveitem(finditem,q,Sunduk,0,0,0);
wait(300);
end;
end;
FindType($0F08,Sunduk2);
If FindCount>2 then
While Count($0F08,$0060)<3 do
begin
FindType($0F08,Sunduk2);
Grab(finditem,1);
AddToSystemJournal('Берем инвизки');
wait(250);
end
Else
begin
AddToSystemJournal('Ивизки кончились');
Exit;
end;
FindType($0E21,Sunduk);
If FindQuantity>50 then
If Count($0E21)<50 then
begin
uo.findtype('0x0E21','0x0000','Sunduk')
Grab(FindItem,50-Count($0E21));
AddToSystenJournal('Берём бинты');
wait(250);
end;
AddToSystemJournal(' Взяли реги ,бинты и инвизки...');
End;
//############################################################################################################
//######################### OPEN THE DOOR ###########################
//############################################################################################################
procedure open;
Begin
AddToSystemJournal(' Otkryvaem kalitku ...');
FindDistance:=4;
FindType($06A5,ground);
If FindCount>0 then
begin
UseObject(finditem);
repeat
findtype($06A6,ground);
wait(100);
until FindCount>0;
end;
End;
//############################################################################################################
//######################### CHECK THE RUNE ###########################
//############################################################################################################
procedure check;
Begin
STime:=Now;
AddToSystemJournal(' Proveryaem runu ... ');
ClickOnObject(RuneToHome);
WaitJournalLine(Stime,'jumps left',1000);
if (injournalBetweenTimes('0 jumps left|1 jumps left',STime,Now)<>-1) then
begin
AddToSystemJournal(' Markaem runu ... ');
i:=mana;
Cast('Mark');
waittargetobject(RuneToHome);
repeat
wait(250);
until mana<m;
end;
End;
//############################################################################################################
//######################### CLOSE THE DOOR ###########################
//############################################################################################################
procedure close;
Begin
AddToSystemJournal(' Закрываем калитку ...');
FindDistance:=4;
CheckLag;
FindType($06A6, ground);
If FindCount>0 then
begin
UseObject(FindItem);
repeat
FindType($06A5,ground);
wait(100);
until FindCount>0;
end;
End;
procedure CheakDead2;
Begin
If Dead then
AddToSystemJournal('Ты помер,чувак!');
End;
//############################################################################################################
//######################### MINING ###########################
//############################################################################################################
Procedure Mining;
VAR
mx, my, mz, i, j:integer;
Ore:array [0..3] of word;
SOut1,SOut2:String;
Begin
Ore[0]:=$19B7;
Ore[1]:=$19BA;
Ore[2]:=$19B8;
Ore[3]:=$19B9;
SOut1:='не дотянуться|Вы нашли| dig here|Это слишком далеко|You have been revealed|Тут не осталось руды|в шахте!|You put|Wow!|Раздолбив
несколько камней|is attacking you|You have found';
SOut2:='не дотянуться| dig here|Это слишком далеко|Тут не осталось руды|в шахте!';
mx:=GetX(self);
my:=GetY(self);
mz:=GetZ(self);
Hidd;
for i:=mx-4 to mx+4 do
for j:=my-4 to my+4 do
begin
StartM:=Now;
Repeat
if CheckPK then Exit;
Usetype($0E85);
Waittargettile('1341',i,j,mz);
WaitJournalLine(Startm,SOut1,30000);
If (InJournalBetweenTimes(SOut2,StartM,Now)<>-1) then break;
If (InJournalBetweenTimes('You have been revealed',StartM,Now)<>-1) then
begin
If CheckPK then Exit;
Hidd;
end;
If (InJournalBetweenTimes('is attacking you',StartM,Now)<>-1) then
begin
If LineType=$0E21 or LineType=$0E20 then
begin
AddToSystemJournal('Нас атакует какой то синий пидор!');
flagPK:=true;
Invis;
Exit;
end;
end;
CheckDead2;
If Life<100 then HealSh;
if NOT hidden then Hidd;
if weight > (str*4) then
begin
AddToSystemJournal('Перегруз.Пора домой!');
Exit;
end;
Until false;
finddistance:=0;
for n:=0 to 3 do
begin
findtype(Ore[n],ground);
If FindCount>0 then
begin
Grab(finditem,0);
AddToSystemJournal('подобрали подарок небес');
wait(300);
findtype(Ore[n],ground);
end;
end;
end;
wait(100);
End;
BEGIN
rune[0]:=15;
rune[1]:=$400B5AD5;
rune[2]:=$400B6015;
rune[3]:=$400B5AD4;
rune[4]:=$400B59CA;
rune[5]:=$400B5A1C;
rune[6]:=$400B5D39;
rune[7]:=$400B5A67;
rune[8]:=$400B6016;
rune[9]:=$400B5A66;
rune[10]:=$400B5D00;
rune[11]:=$400B5D01;
rune[12]:=$400B5A9E;
rune[13]:=$400B5E5B;
rune[14]:=$400B59C9;
rune[15]:=$400B5E06;
InitCheckFlow;
CheckLag;
UseObject(RuneChest);
CheckLag;
UseObject(Sunduk2);
Wait(200);
While True do
begin
for RuneNumber:=1 to rune[0] do
begin
regi;
flag:=false;
RecallToCave(rune[i]);
Mining;
RecallToHome;
Unload;
// Eda;
end;
end;
END.