Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Подход по координатам

тут можно задать вопрос по скриптингу
Post Reply
olimpik
Neophyte
Neophyte
Posts: 26
Joined: 07.11.2016 13:34

Подход по координатам

Post by olimpik »

Скрипт на мининг - накопал отнес в сундук у дома. Весь скрипт вываливать не буду, я его раньше размещал тут с другими вопросами, почти довел до ума, но иногда выдает ошибку из-за лага или еще чего но не доходит то координаты на которой должен начинать разгрузку, но считает что он там и на этом подвисает пишет не могу дотянутся.
Вопрос: можно ли как-нибудь добавить проверку по координатам? Или проще может добавить что когда видит слова не могу дотянутся шел еще раз к координатам не совсем понимаю как это сделать?

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;
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Подход по координатам

Post by drabadan »

olimpik wrote:Скрипт на мининг - накопал отнес в сундук у дома. Весь скрипт вываливать не буду, я его раньше размещал тут с другими вопросами, почти довел до ума, но иногда выдает ошибку из-за лага или еще чего но не доходит то координаты на которой должен начинать разгрузку, но считает что он там и на этом подвисает пишет не могу дотянутся.
Вопрос: можно ли как-нибудь добавить проверку по координатам? Или проще может добавить что когда видит слова не могу дотянутся шел еще раз к координатам не совсем понимаю как это сделать?
та же проблемка! Но на другом скрипте, я у себя решил через дисконнект\реконнект, но ето ж не надежно...
olimpik
Neophyte
Neophyte
Posts: 26
Joined: 07.11.2016 13:34

Re: Подход по координатам

Post by olimpik »

Плохо прочитал тему ниже, извиняюсь. Но так как нельзя удалить топик то ушел тестить проверку координат из темы ниже
Horny
Posts: 5
Joined: 21.11.2016 11:49

Re: Подход по координатам

Post by Horny »

Olimpik, через GetX(self) или GetY(self) и сравнение с требуемой координатой, я такое для ходилки на стрижку писал в теме ниже.
Тоже играю на зулу)
Удобнее сделать с

Code: Select all

While (GetX(self) <> Xsunduk) and (GetY(self) <> Ysunduk) do
olimpik
Neophyte
Neophyte
Posts: 26
Joined: 07.11.2016 13:34

Re: Подход по координатам

Post by olimpik »

Пока вот так поставил, вроде сейчас всегда дотягиваются

Code: Select all

if dead or (Weight > MyMaxWeight)then
begin
DropMap;
NewMoveXY(xs1,ys1,false,0,true);
wait(100) 

[color=#00FFFF]if not Dead then 
 begin
  repeat
   CurrX := GetX(self);
   CurrY := GetY(self);
NewMoveXY(xs,ys,false,0,true);
   wait(1000);
  until (CurrX = xs) and (CurrY = ys); 
 end;[/color]

repeat 
if dead then
begin
Deadth;
end;

flag1 := DischargeSunduk; 
wait(100); 
until flag1 = true;
Post Reply