Столкнулся со следующей проблемой ..
Code: Select all
Program Lumber; // vlf
type LumberR = record
tile:word;
px,py,pz:integer;
end;
Var LumberP: array of LumberR;
logCol : Array [0..132] of Word;
a,d,e : byte;
ItemCount,b:Integer;
MinLogCol: word;
Const
nearX = 1127; // nastroyki scripta, vozle lodki O Y
nearY = 222;
onboadx = 1124; // na lodke X Y
onboady = 222;
onboadz = -2;
Trap = $4045A1F1; // ID trap
maxweight = 500;
NeedWeight = 400;
maxfood = 3;
logType = $1BDD;
DeedType = $0F90;
AxeType = $0F43;
AxeGump = '3907';
TinkGump = '7865';
eda = $097B;
Tinktype = $1EB9;
CopperType = $1BF2;
{$Include 'all.inc'}
Procedure GetLumberTiles(s:String;WPos:Integer);
begin
s := s + ' ';
LumberP[WPos].tile:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
LumberP[WPos].px:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
LumberP[WPos].py:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
LumberP[WPos].pz:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
end;
Procedure GetCoord;
var
List:TStringList;
b:integer;
begin
List:=TStringList.Create;
List.LoadFromFile('D:\Games\Ultima Online Golden World\Stealth\Scripts\Тайлы ламбер Giorgio Armani.txt');
for b := 0 to List.Count-1 do
begin
setArrayLength(LumberP, getArrayLength(LumberP) + 1);
GetLumberTiles(List.strings[b],b);
end;
ItemCount:=b;
end;
procedure checkcoord;
begin
CheckSave;
if (GetZ(self) = onboadz) then
begin
repeat
AddToSystemJournal('я в лодке')
UseObject(Trap);
wait(1000);
newMoveXY(1125,222,True,0,False); // vpisat' coordinati otrkitogo trapa
wait(1000);
until (GetX(self) = nearX) and (GetY(self) = nearY);
UOSay('OMG');
AddToSystemJournal('Сошел на берег успешно!');
end;
end;
procedure CheckAxe;
begin
CheckSave;
checkdead;
if (Count(AxeType) < 2) then
begin
repeat
ClearJournal
FindTypeEx(AxeType,$000B,Ground,true);
MoveItem(finditem, 1, Backpack, 0,0,0);
wait(500);
until (Count(AxeType) >= 2);
end;
end;
procedure DropLog;
var g : integer;
Logcol : Array [0..16] of Word;
Begin
finddistance := 1;
findvertical:=255;
CheckSave;
AddToSystemJournal('Скидываю дерево на лодку...');
logCol[0] := $0000; // normum
logCol[1] := $0362; // jade
logCol[2] := $010D; // oak
logCol[3] := $0094; // karund
logCol[4] := $01B0; // leshram
logCol[5] := $01A2; // turmalit
logCol[6] := $0026; // emerint
logCol[7] := $00CB; // legrand
logCol[8] := $0455; // solmur
logCol[9] := $092B; // kleor
logCol[10] := $0931; // logradum
logCol[11] := $093F; // vialonit
logCol[12] := $0074; // stardust
logCol[13] := $09EF; // pironil
logCol[14] := $006F; // mystic
logCol[15] := $0119; // elvin
logCol[16] := $000B; // elkris
for g := 0 to 16 do
begin
checkdead;
CheckSave;
FindTypeEx(logType,logCol[g],backpack,true);
if FindCount > 0 then
begin
stack(logType,logCol[g]);
wait(1000);
end
end;
hungry (1,ground);
wait(500);
End;
procedure GotoOnBoad;
{Возврат к лодке}
Begin
CheckSave;
repeat
newMoveXY( nearX, nearY, True,0,True);
UseObject(Trap);
wait(500);
until (GetX(self) = OnBoadX) and (GetY(self) = OnBoadY);
Hungry(1,ground);
DropLog;
CheckAxe;
checkcoord;
End;
procedure CheckEquip;
{Проверка экипировки}
Var EquipAxe : Cardinal;
Begin
AddToSystemJournal('Проверяю топор...');
if GetType(ObjAtLayer(RhandLayer)) <> AxeType then
begin
Disarm;
wait(500);
FindType(AxeType, backpack);
if findCount < 1 then
begin
AddToSystemJournal('Нужен топор, иду на лодку.');
GotoOnBoad;
CheckAxe;
end
else
begin
EquipAxe := finditem;
Equip(RhandLayer, EquipAxe);
wait(500);
end
end
End;
Procedure Lumber(tile:Word;x,y,z:Integer);
{Рубка дерева}
begin
CheckEquip;
WaitTargetTile(tile,x,y,z);
UseType(AxeType, $FFFF);
AddToSystemJournal('Топор есть, рублю дерево...');
WaitJournalLine(now,'You can''chop''|stop|''|OMG|''|no logs left there|''t|enough|how to use|broke|stop|can''t see|far away', 200000);
End;
procedure checkweight;
begin
if (Weight > NeedWeight) then
begin
GotoOnBoad;
end;
end;
{Eieoeaeecaoey ne?eioa}
BEGIN
SetArStatus(true);
checkcoord;
getcoord;
AddToSystemJournal('----===Скрипт запущен===----');
While (not Dead) do
begin
for b :=0 to 132 do
begin
WaitConnection(1000);
CheckSave;
wait (500);
checkcoord;
wait (500);
Addtosystemjournal('проверка');
CheckWeight;
Addtosystemjournal('Иду в точку '+intToStr(LumberP[b].px)+', '+intToStr(LumberP[b].py)+' к дереву номер '+intToStr(b)+'.');
newMoveXY(LumberP[b].px,LumberP[b].py,True,1,True);
Addtosystemjournal('Дошел к дереву номер '+intToStr(b)+'.');
Lumber(LumberP[b].tile,LumberP[b].px,LumberP[b].py,LumberP[b].pz);
end
end
end.
после запуска скрипта - бежит рубит дерево до указанного вента , затем бежит на лодку его скидывать , сбрасывает дерево , в журнале - все норм ( нужно разгружаться , скидываю дерево ) . Потом просто становится и стоит .. не ругается , не пытается не чего делать , просто стоит может 5 минут стоять , 10 - как ему самому вздумается , потом может сам по себе не с того не с сего выйти с лодочки и побежать рубить , когда возвращается - история повторяется .. стоит и дуплит без конца , к стати тупить наченает , когда DropLog работает .. пишет в журнале скидываю дерево на лодку.... Дерево скинул уже ( смотрю по венту ) и все равно стоит ... вот только что 16 минут простоял .. В журнале все норм :
15:05:57:443 [craft]: Дошел к дереву номер 23.
15:05:57:446 [craft]: Проверяю топор...
15:05:58:588 [craft]: Топор есть, рублю дерево...
15:06:07:394 [craft]: проверка
15:06:26:350 [craft]: Скидываю дерево на лодку...
15:22:08:860 [craft]: я в лодке
15:22:11:384 [craft]: Сошел на берег успешно!
15:22:11:386 [craft]: Иду в точку 1216, 216 к дереву номер 24.
Не знаю где проблема .. Прошу вашей помощи , буду очень благодарен .. Версия клиента 2.0.0 версия стелса 6.7.1, пробывал и на стелсе 4.0.0. и на стелсе 4.0.3
И да .. не удивляйтесь по поводу
Code: Select all
Код:
procedure CheckAxe;
begin
CheckSave;
checkdead;
if (Count(AxeType) < 2) then
begin
repeat
ClearJournal
FindTypeEx(AxeType,$000B,Ground,true);
MoveItem(finditem, 1, Backpack, 0,0,0);
wait(500);
until (Count(AxeType) >= 2);
end;
end;