Code: Select all
Program Veterinary;
{$Include 'all.inc'}
var
t,k:integer;
ctime : TDateTime;
Const
bandage=$0E21;
Color_bndg=$0000;
blbandage=$0E20;
Sunduk=$405D1BF0; //Сундук куда скидывам кровавые бинты и где лежит корм для лошадок
Horse1=$004A416F; //Лошадка 1
Horse2=$0020F411; //Лошадка 2
seno=$1EBD; //Сено
procedure Check_eda;
var tmp1 : cardinal;
tmp2 : Integer;
begin
UseObject(Sunduk);
FindType(seno,sunduk);
if (FindCount>0) then
begin
MoveItem(FindItem,5,Horse1,0,0,0);
wait(1250);
end;
tmp1 := findtype(seno,backpack);
tmp2 := GetQuantity(tmp1);
MoveItem(tmp1, tmp2, Sunduk, 0, 0, 0);
end;
procedure Check_eda2;
var tmp1 : cardinal;
tmp2 : Integer;
begin
UseObject(Sunduk);
FindType(seno,sunduk);
if (FindCount>0) then
begin
MoveItem(FindItem,5,Horse2,0,0,0);
wait(1250);
end;
tmp1 := findtype(seno,backpack);
tmp2 := GetQuantity(tmp1);
MoveItem(tmp1, tmp2, Sunduk, 0, 0, 0);
end;
procedure Check_blbndg;
begin
Repeat
FindType(blbandage,Backpack);
while FindCount>0 do
begin
t:=CountEx(blbandage,Color_bndg,Backpack);
MoveItem(FindItem,t,Sunduk,0,0,0);
wait(1000);
FindType(blbandage, backpack);
end;
Until FindCount=0;
end;
procedure getitems(item:cardinal);
begin
if (count(item)<3) then
begin
findType(item,Ground);
if (FindCount > 0) then
begin
k := FindQuantity;
Grab(finditem,20);
wait(500);
checksave;
case item of
bandage : addtosystemjournal('взял 20 bandage из ' + inttostr(k));
end;
end
else
begin
addtosystemjournal('Мало!!!');
repeat
wait(5000);
findType(item,Ground);
until (FindCount > 0);
Grab(finditem,20);
wait(1000);
checksave;
case item of
bandage : addtosystemjournal('взял 20 bandage из ' + inttostr(k));
end;
end;
end;
end;
procedure HealHorse1;
begin
waitconnection(5000);
check_eda;
getitems(bandage);
while (GetHP(Horse1) < GetMaxHP(Horse1)) do
begin
ctime := Now;
UseObject(FindType(bandage,Backpack));
WaitForTarget(1000);
if targetpresent then
begin
TargetToObject(Horse1);
end;
k := 0;
repeat
wait(6000);
k := k + 1;
If (InJournalBetweenTimes('mummy', ctime, Now)<>-1) then exit;
until (InJournalBetweenTimes('You put|apply|wait|already', ctime, Now)<>-1) or (k > 30);
end;
if (GetHP(Horse1)=GetMaxHP(Horse1)) then addtosystemjournal('Лошадка 1 полностью вылечена');
end;
procedure HealHorse2;
begin
waitconnection(5000);
check_eda2;
getitems(bandage);
while (GetHP(Horse2) < GetMaxHP(Horse2)) do
begin
ctime := Now;
UseObject(FindType(bandage,Backpack));
WaitForTarget(1000);
if targetpresent then
begin
TargetToObject(Horse2);
end;
k := 0;
repeat
wait(4000);
k := k + 1;
If (InJournalBetweenTimes('mummy', ctime, Now)<>-1) then exit;
until (InJournalBetweenTimes('You put|apply|wait|already', ctime, Now)<>-1) or (k > 30);
end;
if (GetHP(Horse2)=GetMaxHP(Horse2)) then addtosystemjournal('Лошадка 2 полностью вылечена');
end;
Begin
FindDistance := 0;
SetARStatus(true);
While not Dead do
Begin
getitems(bandage);
UOSAY('All kill');
WaitForTarget(1500);
if targetpresent then
begin
TargetToObject(Horse1);
end;
CheckLag(1000);
While (GetHP(Horse1) > GetMaxHP(Horse1)/2) and (GetHP(Horse2) > GetMaxHP(Horse2)/2) do wait(100);
CheckLag(2000);
UOSAY('All stop');
HealHorse1;
HealHorse2;
Check_blbndg;
Hungry(0,-1);
end;
End.
Критика приветствуется.