Кому не тяжело, посмотрите своим профессиональным взглядом, что в нем не так и что необходимо сделать, чтобы скрипт заработал.
Сейчас выдает:
13:08:03 [Char]: Compiling
13:08:03 [Char]: Compiler: [Error] (test 1.txt at 124:1): Identifier expected
13:08:03 [Char]: Compiling failed
13:08:03 [TChar]: Script test 1.txt stoped successfuly
Спасибо тем, кто откликнется, чтоб у Вас руки не болели

Code: Select all
[color=green]program Loot;
//
//
{$Include 'all.inc'}
const
StartPosX = 837;
StartPosY = 2348;
VAR
Item: array [1..5] of integer;
Corpse: Cardinal;
procedure GotoXY(x,y,prec : integer; runflag : boolean);
// x,y - координаты, в которые идем
// prec - точность подхода
// runflag - бежать или идти
var ld, ldc, dx, dy, mx, my : Integer;
begin
ld := 0; ldc := 0;
while true do
begin
dx := GetX(self) - x; if dx < 0 then dx := 0 - dx;
dy := GetY(self) - y; if dy < 0 then dy := 0 - dy;
if dy > dx then dx := dy;
if dx <= prec then exit;
mx := GetX(self); my := GetY(self);
dx := mx - x; if dx < 0 then dx := 0 - dx;
dy := my - y; if dy < 0 then dy := 0 - dy;
if dy > dx then dx := dy;
if dx <= prec then exit;
if ld = dx then begin
ldc := ldc + 1;
if ldc > 100 then begin addtosystemjournal( 'GotoXY: Cannot reach location!' ); exit; end;
end
else ld := dx;
waitconnection(5000);
if mx = x then begin
if my = y then exit;
// North
if my > y then begin Raw_Move(0,runflag); continue; end;
// South
Raw_Move(4,runflag); continue;
end;
if mx < x then begin
// Northeast
if my > y then begin Raw_Move(1,runflag); continue; end;
// East
if my = y then begin Raw_Move(2,runflag); continue; end;
// Southeast
Raw_Move(3,runflag); continue;
end;
// Southwest
if my < y then begin Raw_Move(5,runflag); continue; end;
// West
if my = y then begin Raw_Move(6,runflag); continue; end;
// Nortwest
Raw_Move(7,runflag); continue;
end;
end;
Begin
repeat
GotoXY(5558,3191,1,false);
begin
FindDistance := 1;
if FindType($2006, ground) <> 0 then
begin
AddToSystemJournal('Найден труп ' + IntToStr(finditem));
Corpse := finditem;
UseObject(Corpse);
Wait(1000);
Ignore(Corpse);
if FindType($0F2F, Corpse) <> 0 then
begin
DragItem(finditem, 0);
Wait(1000);
DropItem(backpack,0,0,0);
Wait(1000);
AddToSystemJournal('Закончили с трупом.');
end;
if FindType($0F2A, Corpse) <> 0 then
begin
DragItem(finditem, 0);
Wait(1000);
DropItem(backpack,0,0,0);
Wait(1000);
AddToSystemJournal('Закончили с трупом.');
end;
Wait(2500);
GotoXY(5558,3189,1,false);
begin
FindDistance := 1;
if FindType($2006, ground) <> 0 then
begin
AddToSystemJournal('Найден труп ' + IntToStr(finditem));
Corpse := finditem;
UseObject(Corpse);
Wait(1000);
Ignore(Corpse);
if FindType($0F2F, Corpse) <> 0 then
begin
DragItem(finditem, 0);
Wait(1000);
DropItem(backpack,0,0,0);
Wait(1000);
AddToSystemJournal('Закончили с трупом.');
end;
if FindType($0F2A, Corpse) <> 0 then
begin
DragItem(finditem, 0);
Wait(1000);
DropItem(backpack,0,0,0);
Wait(1000);
AddToSystemJournal('Закончили с трупом.');
end;
Wait(3200);
until Dead;
End.[/color]
Что я хотел получить:
Персонаж ходит по заданным координатам и при обнаружении трупа, собирает из него заданные итемы. По прохождению всех координат - возвращается на исходную позицию, а далее алгоритм - повторяется.