Page 1 of 2

Вытащить информацию

Posted: 18.06.2012 17:52
by frant
Кто-нить подскажите как вытянуть инфу(айди, тип, цвет и т.п.) об объектах и занести ее в файл?
не из гампа, а допустим из сундука...

Re: Вытащить информацию

Posted: 18.06.2012 23:26
by nepopus
frant wrote:Кто-нить подскажите как вытянуть инфу(айди, тип, цвет и т.п.) об объектах и занести ее в файл?
не из гампа, а допустим из сундука...
перебираешь все предметы в сундуке и смотришь их параметры.

Code: Select all

ignorereset;
while findtype($FFFF, containerID) > 0 do begin

  itemtype := gettype(finditem);
  itemcolor := getcolor(finditem);

  ignore(finditem);
end;
http://stealth.od.ua/Doc:RU/Manual/Reference/Object

К сожалению с файлами в стелсе пока не работал - не подскажу.
П.С. если будешь брать имя предмета через getname, не забудь прежде кликнуть на предмет, в противном случе имя будет noname;

Re: Вытащить информацию

Posted: 19.06.2012 10:15
by frant
nepopus wrote:
frant wrote:Кто-нить подскажите как вытянуть инфу(айди, тип, цвет и т.п.) об объектах и занести ее в файл?
не из гампа, а допустим из сундука...
перебираешь все предметы в сундуке и смотришь их параметры.

Code: Select all

ignorereset;
while findtype($FFFF, containerID) > 0 do begin

  itemtype := gettype(finditem);
  itemcolor := getcolor(finditem);

  ignore(finditem);
end;
http://stealth.od.ua/Doc:RU/Manual/Reference/Object

К сожалению с файлами в стелсе пока не работал - не подскажу.
П.С. если будешь брать имя предмета через getname, не забудь прежде кликнуть на предмет, в противном случе имя будет noname;
спасибо за ответ, но мне нужно немного другое, меня интересует к примеру:
стоит сундук, в нем допустим шмот, я запускаю чара на стелсе со скриптом,
далее чар смотрит что в сундуке и записывает все предметы (тайп, цвет, нейм, кол) в файл и все...т.е. вытягивает данные из ультимы и сохраняет на жестком диске

Re: Вытащить информацию

Posted: 19.06.2012 14:48
by nepopus
ну я тебе написал как вытянуть = ) findtype по типу $FFFF будет перебирать все предметы без исключения.
Осталось только с записью в файл тебе разобраться : )
И буду благодарен, если напишешь сюда конечный вариант с этой самой записью.

Re: Вытащить информацию

Posted: 19.06.2012 15:54
by frant
nepopus wrote:ну я тебе написал как вытянуть = ) findtype по типу $FFFF будет перебирать все предметы без исключения.
Осталось только с записью в файл тебе разобраться : )
И буду благодарен, если напишешь сюда конечный вариант с этой самой записью.
так вот у меня проблема как раз именно с записью инфы )
на паскале есть такие операторы:

Code: Select all

var
a, b, sum: integer;
f1,f2: text;
begin
assign (f1,'input.txt');
assign (f2,'res.txt');
reset(f1);
read(f1,a,b);
sum:=a+b;
rewrite(f2);
writeln(f2,'a','(',a,')','+','b','(',b,')','=',sum);
close(f1);
close(f2);

end.
а стелс не воспринимает assign, ищу аналоги...

Re: Вытащить информацию

Posted: 19.06.2012 16:01
by nepopus

Re: Вытащить информацию

Posted: 20.06.2012 11:13
by CFA
Если нужно только записывать файл (без дописывания и чтения) то проще воспользоваться TStringList.

Code: Select all

var st : TStringList;
...
st := TStringList.Create;
st.Add('line 1');
st.Add('line 2');
st.SaveToFile('filename.txt');
st.Free;
Вобщем чтение и дописывание тоже нетрудно сделать. Сначала st.LoadFromFile и дальше или добавлять или читать отдельные строки

Re: Вытащить информацию

Posted: 20.06.2012 11:35
by frant
CFA wrote:Если нужно только записывать файл (без дописывания и чтения) то проще воспользоваться TStringList.

Code: Select all

var st : TStringList;
...
st := TStringList.Create;
st.Add('line 1');
st.Add('line 2');
st.SaveToFile('filename.txt');
st.Free;
Вобщем чтение и дописывание тоже нетрудно сделать. Сначала st.LoadFromFile и дальше или добавлять или читать отдельные строки
да, спасибо, я так и сделал, получилось выводить в файл)
теперь у меня другая проблема, тип предмета выводится в непонятном формате
какой тип указывать переменной, в которую будет записываться тип и цвет объекта?

Re: Вытащить информацию

Posted: 20.06.2012 11:39
by CFA
если ты формируешь строку типа IntToStr(GetType(findItem)) то они запишутся в десятичном виде, тебе я думаю их надо в шестнадцатеричном, в этом случае надо использовать IntToHex(GetType(findItem), 4) или IntToHex(findItem, 8 ).
Числа 4 и 8 определяют сколько цифр будет выведено.

Re: Вытащить информацию

Posted: 20.06.2012 11:46
by frant
CFA wrote:если ты формируешь строку типа IntToStr(GetType(findItem)) то они запишутся в десятичном виде, тебе я думаю их надо в шестнадцатеричном, в этом случае надо использовать IntToHex(GetType(findItem), 4) или IntToHex(findItem, 8 ).
Числа 4 и 8 определяют сколько цифр будет выведено.
спасибо огромное, это то что надо)
позже напишу если будут вопросы, если все сделаю, то выложу готовый скрипт :D

Re: Вытащить информацию

Posted: 20.06.2012 12:23
by frant
nepopus wrote: П.С. если будешь брать имя предмета через getname, не забудь прежде кликнуть на предмет, в противном случе имя будет noname;
а мможно вот тут уточнить? потому что я сделал с прокликом и все-равно НоуНейм выводит :(

Re: Вытащить информацию

Posted: 20.06.2012 12:28
by nepopus
frant wrote:
nepopus wrote: П.С. если будешь брать имя предмета через getname, не забудь прежде кликнуть на предмет, в противном случе имя будет noname;
а мможно вот тут уточнить? потому что я сделал с прокликом и все-равно НоуНейм выводит :(
Задержку поставил? Принцип такой, что после клика, над предметом должно пройти время для появления названия.
wait(100-200) хватит.
Ну и код кидай = )

Re: Вытащить информацию

Posted: 20.06.2012 12:35
by frant
nepopus wrote:
frant wrote:
nepopus wrote: П.С. если будешь брать имя предмета через getname, не забудь прежде кликнуть на предмет, в противном случе имя будет noname;
а мможно вот тут уточнить? потому что я сделал с прокликом и все-равно НоуНейм выводит :(
Задержку поставил? Принцип такой, что после клика, над предметом должно пройти время для появления названия.
wait(100-200) хватит.
Ну и код кидай = )
поставил задержку и все-равно лажа (ноунейм)

Code: Select all

clickonobject(finditem);
wait(500);
itemname:= getname(finditem);
ts.add(getname(finditem));

Re: Вытащить информацию

Posted: 20.06.2012 12:53
by CFA
Надежнее использовать CheckLag(2000), а не Wait.
Если используется клиент 4+, то надо использовать не GetName, а GetCliloc, для него вроде бы задержка и клик не нужны.

Re: Вытащить информацию

Posted: 20.06.2012 13:04
by frant
CFA wrote:Надежнее использовать CheckLag(2000), а не Wait.
Если используется клиент 4+, то надо использовать не GetName, а GetCliloc, для него вроде бы задержка и клик не нужны.
поставил:

Code: Select all

itemname:= getcliloc(finditem);
ts.add(getcliloc(finditem));
не выводит вообще ничего