Вопрос: можно ли как-нибудь добавить проверку по координатам? Или проще может добавить что когда видит слова не могу дотянутся шел еще раз к координатам не совсем понимаю как это сделать?
if dead or (Weight > MyMaxWeight)then
begin
DropMap;
NewMoveXY(xs1,ys1,false,0,true); //добавил координату что бы не застывал на проходе в шахту
wait(100)
NewMoveXY(xs,ys,false,0,true);
repeat
if dead then
begin
Deadth;
end;
flag1 := DischargeSunduk;
wait(100);
until flag1 = true;
function DischargeSunduk : Boolean;
var tmpcnt : Integer;
tmpid, tmpstack : Cardinal;
tmpconnect : TDateTime;
begin
addtosystemjournal('Пришли на разгрузку');
Result := true;
tmpconnect := ConnectedTime;
if Dead then
begin
Result := false;
exit;
end;
UseObject(Sunduk_ore);
Hungry(1,backpack);
checksave;
checkcloth;
checkFish;
// Переместим руду
tmpcnt := 0;
repeat
tmpid := Findtype(Ore1,backpack);
if tmpid = 0 then tmpid := Findtype(Ore2,backpack);
if tmpid = 0 then tmpid := Findtype(Ore3,backpack);
if tmpid = 0 then tmpid := Findtype(Ore4,backpack);
if tmpid = 0 then break;
tmpcnt := tmpcnt + 1;
if tmpcnt > 10 then
begin
addtosystemjournal('Ошибка: не могу переместить руду!');
Result := false;
exit;
end;
repeat
tmpstack := FindtypeEx(Ore1,GetColor(tmpid),Sunduk_ore,False);
if tmpstack = 0 then tmpstack := FindtypeEx(Ore2,GetColor(tmpid),Sunduk_ore,False);
if tmpstack = 0 then tmpstack := FindtypeEx(Ore3,GetColor(tmpid),Sunduk_ore,False);
if tmpstack = 0 then tmpstack := FindtypeEx(Ore4,GetColor(tmpid),Sunduk_ore,False);
if GetQuantity(tmpstack) >= 65000 then Ignore(tmpstack);
until (tmpstack = 0) OR (GetQuantity(tmpstack) < 65000);
// Если не найден в сундуке - тогда просто в контейнер
if tmpstack = 0 then tmpstack := Sunduk_ore;
MoveItem(tmpid,GetQuantity(tmpid),tmpstack,0,0,0);
wait(1000);
CheckSave;
until tmpid = 0;
IgnoreReset;