Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
Работа с предметами в контейнере
Re: Работа с предметами в контейнере
кажется нашел проблему свою))) забыл игнор контейнера поставить аж самому смешно
Re: Работа с предметами в контейнере
Code: Select all
const
containerID = $00000000;
begin
useobject(containerID);
checklag(10000);
wait(300);
while findtypeex($FFFF, $FFFF, containerID, true) > 0 do begin
ignore(finditem);
if iscontainer(finditem) then begin
useobject(finditem);
checklag(10000);
wait(300);
continue;
end;
addtosystemjournal('$' + inttohex(finditem, 8));
end;
end.
<( o_O<) <( O_O )> (>O_o )>
Re: Работа с предметами в контейнере
спасибо, но он не подходит)
вот пример моего скрипта, не могу понять в чем проблема:
хочу в скрипте некую рекурсию сделать, дабы не дублировать код...кто может помочь, он зацикливается
вот пример моего скрипта, не могу понять в чем проблема:
Code: Select all
procedure searching;
begin
useobject(finditem);
wait(500);
while findtype($ffff, lastcontainer) > 0 do begin
clickonobject(finditem);
wait(500);
if iscontainer(finditem) then searching;
itemname:= getname(finditem);
addtosystemjournal(getname(finditem));
ignore(finditem);
clearjournal;
ignore(lastcontainer);
end;
end;
Begin
useobject(container); //ID родительского контейнера, в котором происходит поиск
wait(500);
while findtype($ffff, $4001D20E) > 0 do begin
searching;
end;
End.
Re: Работа с предметами в контейнере
У вас в цикле может открываться по нескольку контейнеров, а игнор стоит лишь на последний.
Не думаю, что вы дождетесь нужного ответа, если будете, не вникнув, отбрасывать правильные решения и скрытым умыслом просить отполировать ваш костыль.
Что вы хотите получить? Названия предметов? Тогда прочтите еще раз моё прошлое сообщение.
П.С. ваши картинки меня уже достали : )
Не думаю, что вы дождетесь нужного ответа, если будете, не вникнув, отбрасывать правильные решения и скрытым умыслом просить отполировать ваш костыль.
Что вы хотите получить? Названия предметов? Тогда прочтите еще раз моё прошлое сообщение.
П.С. ваши картинки меня уже достали : )
<( o_O<) <( O_O )> (>O_o )>
Re: Работа с предметами в контейнере
я не отбрасываю Ваш скрипт, он работает бесспорно, но не в моем случае, где подсумков более чем 2 порядка, поэтому я и нарисовал схему что в подсумках есть тоже подсумки и в тех тоже есть, их много)nepopus wrote:У вас в цикле может открываться по нескольку контейнеров, а игнор стоит лишь на последний.
Не думаю, что вы дождетесь нужного ответа, если будете, не вникнув, отбрасывать правильные решения и скрытым умыслом просить отполировать ваш костыль.
Что вы хотите получить? Названия предметов? Тогда прочтите еще раз моё прошлое сообщение.
П.С. ваши картинки меня уже достали : )
Re: Работа с предметами в контейнере
Code: Select all
Procedure OpenAll(Box:cardinal);
var
BoxID:array[0..200] of cardinal;
x,y,z,BoxIDC,fbox:integer;
List:TstringList;
begin
BoxIDC:=0;
ignorereset;
repeat
// For x:=0 to BoxIDC-1 do
// Ignore(BoxID[x]);
FindTypeEx($FFFF,$FFFF,Box,true);
List:=TStringList.Create;
GetFindedList(List);
fbox:=0;
For x:=0 to List.count-1 do
If IsContainer(StrToInt('$'+List.strings[x])) then
begin
z:=0;
For y:=0 to BoxIDC-1 do
If BoxID[y]=StrToInt('$'+List.strings[x]) then z:=1;
if z=0 then
begin
UseObject(StrToInt('$'+List.strings[x]));
BoxID[BoxIDC]:=StrToInt('$'+List.strings[x]);
BoxIDC:=BoxIDC+1;
checklag(10000);
wait(500);
fbox:=1;
AddToSystemJournal('Box ' + IntToStr(BoxIDC));
end;
end;
List.Free;
until fbox=0;
end;
Re: Работа с предметами в контейнере
Прошу прощения, не знал, что findtypeex работает только до 2го уровня папок =) Сказали бы, мы бы время сэкономили, но ошибка моя
Доделал ваш код:
Доделал ваш код:
Code: Select all
const
containerID = $4026416B;
var
i: integer;
procedure fi(container: cardinal);
begin
useobject(container);
checklag(10000);
wait(300);
while findtype($FFFF, container) > 0 do begin
ignore(finditem);
if iscontainer(finditem) then begin
fi(finditem);
continue;
end;
i := i+1;
addtosystemjournal(inttostr(i) + ': $' + inttohex(finditem, 8));
end;
end;
begin
ignorereset;
fi(containerID);
end.
<( o_O<) <( O_O )> (>O_o )>
Re: Работа с предметами в контейнере
Спасибо nepopus, Ваш скрипт работает
Re: Работа с предметами в контейнере
Ловко, вызов самой себя для каждого открытого ею же контейнера. Сам сидел мучился, вы сэкономили мне кучу времени, спасибо.
Last edited by GeeZeR on 01.06.2017 12:59, edited 1 time in total.
Stealth 8.10.2 | Клиент: 7.0.13.4
Re: Работа с предметами в контейнере
Не заметил второй страницы темы
Разве InSub не идёт по всем подсумкам глубже чем 2-ой уровень?
Разве InSub не идёт по всем подсумкам глубже чем 2-ой уровень?
Re: Работа с предметами в контейнере
В Стелсе нельзя посмотреть что в сумке пока не открыл её, поэтому тут последовательное открытие всех вложенных.
Stealth 8.10.2 | Клиент: 7.0.13.4