
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
						



