Code: Select all
Program CampingDrw;
{$Include 'all.inc'}
// (c) v26RuS (Galiano{ASTARTA} DRW)
// Простенький скрипт для прокачки кемпинга,
// Становимся дома около сундука откуда брать хворост, он берет хворос летить к месту выкладки
// передвигается по направлению на цифровой клаве 1 (нуп пад)
// кончаеться хворост летит домой добирает и по новой при неуспешном поджиге пробует еще раз.
// Доходит до финальнай кординаты опять летит домой добираеться и по новой
const
Hvorost = $0DE1; // Тип хвороста
Sunduk_of_hvorost = $40591B82; // Сундук откуда брать хворост
finalx = 1025; // Финальная кордината Х
r_home = 21; // Руна домой в РБ №1
r_hvor = 1025; // Руна к месту выкладки хвороста в РБ №9
runebook = $40591B82; // Ид рунбуки
final = 0; // Переменная для работы скрипта не менять
var
mx: integer;
CampingFlag : Boolean;
x, y : Integer;
procedure CheckDead;
Begin
if Dead then
begin
AddToSystemJournal('Персонаж мертв: '+TimeToStr(now));
CampingFlag := false;
FullDisconnect;
end
end;
procedure recal_rb(rune : integer);
var tmpr : Integer;
mx, my, k, Res : Integer;
begin
repeat
Res := 0;
CheckDead;
AddToSystemJournal('Try to recall');
tmpr := rune;
waitgump(IntToStr(tmpr));
wait(1000)
UseObject(runebook);
mx := GetX(self);
my := GetY(self);
k := 0;
repeat
wait(500)
k := k + 1;
CheckSave;
until (mx<>GetX(self)) or (my<>GetY(self)) or Dead or (k = 20)
if (mx<>GetX(self)) or (my<>GetY(self)) then Res := 1;
until Res = 1;
end;
procedure doborhv;
begin
FindType(Hvorost,Backpack);
if (FindCount=0) OR (Count(Hvorost)<10) then
begin
UseObject(Sunduk_of_hvorost);
wait(250);
FindType(Hvorost,Sunduk_of_hvorost);
if (FindCount>0) and (CountEx(Hvorost,$0000,Sunduk_of_hvorost)>10) then
begin
MoveItem(FindItem,200,Backpack,0,0,0);
wait(250);
AddToSystemJournal('Добрали 200 хвороста. На данный момент имеем '+IntToStr(Count(Hvorost))+' штук. Осталось ещё '+IntToStr(CountEx(Hvorost,$0000,Sunduk_of_hvorost))+' хвороста.');
end
else
AddToSystemJournal('Ошибка во время добора хвороста.');
CampingFlag := false;
end;
end;
procedure mover;
begin
mx := GetX(self);
repeat
Raw_Move(2,true);
until (GetX(Self) = mx+6) or (GetX(Self) = finalx);
end;
BEGIN
CampingFlag := true;
FindDistance:=3;
repeat
checkdead;
doborhv;
if CampingFlag = true then recal_rb(r_hvor);
repeat
mx := GetX(self);
for x := -3 to 3 do
begin
for y := -3 to 3 do
begin
FindType(Hvorost,Backpack);
if Findcount = 0 then exit;
Drop(FindItem,1,GetX(self)+x, GetY(self)+y, GetZ(self));
AddToSystemJournal('Выложили хворост');
wait(500);
FindType(Hvorost,ground);
repeat
AddToSystemJournal('Пытаюсь зажечь хворост');
UseObject(FindItem);
wait(2000)
FindType(Hvorost,ground);
until FindCount < 1;
AddToSystemJournal('Зажгли хворост');
wait(500)
end;
end;
mover;
until (Count(Hvorost)=0) or (final=1) or (CampingFlag = false);
if CampingFlag = true then recal_rb(r_home);
until (CampingFlag = false) OR (GetSkillValue('Camping') = 100);
END.