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

UO KR

Post Reply
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

UO KR

Post by shinma »

В новых клиентах УО при наведении указателя мыши на вещь у неё отображаются куча параметров. может кто пример привести как их достать.чтото типа такого

program show;
begin
lalala
AddToSystemJournal('вес ='+inttostr(X));
AddToSystemJournal('прочность='+inttostr(Y));
AddToSystemJournal('удача = '+inttostr(Z));
AddToSystemJournal('скорость= '+inttostr(Z));
AddToSystemJournal('цена= '+inttostr(Z));
//итд
end.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: UO KR

Post by Vizit0r »

пример писать лень.
GetTooltipRec в помощь.
поиск по форуму даст типы записей.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: UO KR

Post by shinma »

ничего не понял про эту функции, описания ноль, а по инглишу я не понимаю, что там иностранцы говорят. на форуме всего два поста по этой функции.

сделал вроде костыль такой

program test;
var
naideno,iskSlovo,ToolTipText:string;
i,bm:integer;
begin
iskSlovo:='remaining';
ToolTipText:=GetCliloc(ObjAtLayer(rhandLayer));

bm:=BMSearch(1,ToolTipText,iskSlovo);
naideno:= ToolTipText[bm+11]+ToolTipText[bm+12]+ToolTipText[bm+13];
AddToSystemJournal('искомая прочность оружия найдена ='+naideno);
end.
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: UO KR

Post by Vizit0r »

это не костыль, это маразм.

ненадо знать английский, достаточно не закрывать страницу, как только там нерусские буквы есть.

вот пример из http://stealth.od.ua/forum/viewtopic.ph ... tooltiprec

Code: Select all

Program New;
var
aa : TClilocRec;
bb : TClilocItemRec;
i,k : Integer;
begin
aa := GetToolTipRec($01FC613C);
AddToSystemJournal('Total lines in Toolptip: ' + IntToStr(aa.Count));
for i := 0 to aa.Count - 1 do
begin
AddToSystemJournal('Line ' + IntToStr(i) + ': ');
bb := aa.Items[i]; 
AddToSystemJournal('Cliloc: $' + IntToHex(bb.ClilocID,8));
AddToSystemJournal('Cliloc text: ' + GetClilocByID(bb.ClilocID));
for k := 0 to Length(bb.Params) - 1 do
AddToSystemJournal('Param' + IntToStr(k) + ': "'
+ bb.Params[k] + '"');
end; 
end.
что непонятно-то?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: UO KR

Post by shinma »

Vizit0r wrote: что непонятно-то?



aa := GetToolTipRec($01FC613C);// это что и откуда???

AddToSystemJournal('Line ' + IntToStr(i) + ': ');
bb := aa.Items; //я вообще не видл чтобы в паскале работали так, обычно это в шарпе так юзают.
AddToSystemJournal('Cliloc: $' + IntToHex(bb.ClilocID,8)); // ХЕКС??? чо вообще происходит?
AddToSystemJournal('Cliloc text: ' + GetClilocByID(bb.ClilocID));// итд
for k := 0 to Length(bb.Params) - 1 do
AddToSystemJournal('Param' + IntToStr(k) + ': "'
+ bb.Params[k] + '"');
end;
end.

в общем совсем непонятно что это сделано в моем же примере любой нуб разберется там все разжовано столетними паскалевскими примерами
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: UO KR

Post by Vizit0r »

shinma wrote:
Vizit0r wrote: что непонятно-то?
aa := GetToolTipRec($01FC613C);// это что и откуда???

AddToSystemJournal('Line ' + IntToStr(i) + ': ');
bb := aa.Items; //я вообще не видл чтобы в паскале работали так, обычно это в шарпе так юзают.
AddToSystemJournal('Cliloc: $' + IntToHex(bb.ClilocID,8)); // ХЕКС??? чо вообще происходит?
AddToSystemJournal('Cliloc text: ' + GetClilocByID(bb.ClilocID));// итд
for k := 0 to Length(bb.Params) - 1 do
AddToSystemJournal('Param' + IntToStr(k) + ': "'
+ bb.Params[k] + '"');
end;
end.

в общем совсем непонятно что это сделано в моем же примере любой нуб разберется там все разжовано столетними паскалевскими примерами


aa := GetToolTipRec($01FC613C);// это что и откуда???

ты из воздуха собрался тултип, или может все же для обьекта какого? как его айди брать незнаешь?

bb := aa.Items; //я вообще не видл чтобы в паскале работали так, обычно это в шарпе так юзают.

GetToolTipRec != GetToolTip !!!!

Code: Select all

 TClilocItemRec = packed record
   ClilocID : Cardinal;
   Params : array of String;
 end;

 TClilocRec = packed record
   Count : Cardinal;
   Items : array of TClilocItemRec;
 end;

function GetToolTipRec(ObjID : Cardinal) : TClilocRec;
AddToSystemJournal('Cliloc: $' + IntToHex(bb.ClilocID,8)); // ХЕКС??? чо вообще происходит?
число переводится в строку в шестнадцатиричном виде. такого ты тоже не видел? так гугл тебе с удовольствием расскажет, что делает IntToHex.

в общем совсем непонятно что это сделано в моем же примере любой нуб разберется там все разжовано столетними паскалевскими примерами
да, он простой. просто неправильный, и все. А так да, ньюб разберется и так же пойдет клепать ерунду :)
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
shinma
Expert
Expert
Posts: 505
Joined: 28.04.2011 12:05

Re: UO KR

Post by shinma »

Code: Select all

Program New;
var
aa : TClilocRec;
bb : TClilocItemRec;
i,k : Integer;
begin
aa := GetToolTipRec(ObjAtLayer(rhandLayer));
AddToSystemJournal('Total lines in Toolptip: ' + IntToStr(aa.Count));
for i := 0 to aa.Count - 1 do
  begin
    AddToSystemJournal('Line ' + IntToStr(i) + ': ');
    bb := aa.Items[i];   
    AddToSystemJournal('Cliloc: $' + IntToHex(bb.ClilocID,8));
    AddToSystemJournal('Cliloc text: ' + GetClilocByID(bb.ClilocID));
    for k := 0 to Length(bb.Params) - 1 do
     AddToSystemJournal('Param' + IntToStr(k) + ': "'
                        + bb.Params[k] + '"');
  end; 
end.
я получил
сейчас буду разбираться

Code: Select all

20:43:52:947 [megatester-testermega]: Compiling
20:43:52:958 [megatester-testermega]: Compiled succesfully
20:43:52:959 [megatester-testermega]: Total lines in Toolptip: 11
20:43:52:960 [megatester-testermega]: Line 0: 
20:43:52:960 [megatester-testermega]: Cliloc: $000FEA1B
20:43:52:961 [megatester-testermega]: Cliloc text: ~1_NOTHING~
20:43:52:962 [megatester-testermega]: Param0: "jail pickaxe"
20:43:52:964 [megatester-testermega]: Line 1: 
20:43:52:966 [megatester-testermega]: Cliloc: $00105E95
20:43:52:967 [megatester-testermega]: Cliloc text: Weight: ~1_WEIGHT~ stones
20:43:52:969 [megatester-testermega]: Param0: "3"
20:43:52:973 [megatester-testermega]: Line 2: 
20:43:52:974 [megatester-testermega]: Cliloc: $00102EE8
20:43:52:976 [megatester-testermega]: Cliloc text: uses remaining: ~1_val~
20:43:52:977 [megatester-testermega]: Param0: "0"
20:43:52:978 [megatester-testermega]: Line 3: 
20:43:52:980 [megatester-testermega]: Cliloc: $00102E54
20:43:52:981 [megatester-testermega]: Cliloc text: luck ~1_val~
20:43:52:982 [megatester-testermega]: Param0: "-10000"
20:43:52:984 [megatester-testermega]: Line 4: 
20:43:52:985 [megatester-testermega]: Cliloc: $00102E82
20:43:52:986 [megatester-testermega]: Cliloc text: spell channeling
20:43:52:988 [megatester-testermega]: Line 5: 
20:43:52:989 [megatester-testermega]: Cliloc: $00102E33
20:43:52:990 [megatester-testermega]: Cliloc text: physical damage ~1_val~%
20:43:52:993 [megatester-testermega]: Param0: "100"
20:43:52:994 [megatester-testermega]: Line 6: 
20:43:52:996 [megatester-testermega]: Cliloc: $00103130
20:43:52:998 [megatester-testermega]: Cliloc text: weapon damage ~1_val~ - ~2_val~
20:43:52:999 [megatester-testermega]: Param0: "0"
20:43:53:001 [megatester-testermega]: Param1: "0"
20:43:53:002 [megatester-testermega]: Line 7: 
20:43:53:003 [megatester-testermega]: Cliloc: $0010312F
20:43:53:005 [megatester-testermega]: Cliloc text: weapon speed ~1_val~
20:43:53:006 [megatester-testermega]: Param0: "181,25s"
20:43:53:007 [megatester-testermega]: Line 8: 
20:43:53:009 [megatester-testermega]: Cliloc: $001033C0
20:43:53:010 [megatester-testermega]: Cliloc text: one-handed weapon
20:43:53:011 [megatester-testermega]: Line 9: 
20:43:53:013 [megatester-testermega]: Cliloc: $00103134
20:43:53:014 [megatester-testermega]: Cliloc text: skill required: swordsmanship
20:43:53:016 [megatester-testermega]: Line 10: 
20:43:53:017 [megatester-testermega]: Cliloc: $00105682
20:43:53:018 [megatester-testermega]: Cliloc text: ~1_NOTHING~
20:43:53:020 [megatester-testermega]: Param0: "insurance price: 150"
20:43:53:021 [megatester-testermega]: Succesfully executed
Разобрался

Program New;
var
aa : TClilocRec;
bb : TClilocItemRec;
i,k : Integer;
begin
aa := GetToolTipRec(ObjAtLayer(rhandLayer));
AddToSystemJournal('Total lines in Toolptip: ' + IntToStr(aa.Count));
for i := 0 to aa.Count - 1 do
begin
AddToSystemJournal('Line ' + IntToStr(i) + ': ');
bb := aa.Items;
AddToSystemJournal('Cliloc: $' + IntToHex(bb.ClilocID,8));
AddToSystemJournal('Cliloc text: ' + GetClilocByID(bb.ClilocID));
for k := 0 to Length(bb.Params) - 1 do
AddToSystemJournal('Param-' + IntToStr(k) + ': "'
+ bb.Params[k] + '"');
end;

{Со скрипта выше в журнал попадут все параметры, я хочу достать один параметр. Например прочность оружия
Смотрю строки где оно указано
20:43:52:973 [megatester-testermega]: Line 2:
20:43:52:974 [megatester-testermega]: Cliloc: $00102EE8
20:43:52:976 [megatester-testermega]: Cliloc text: uses remaining: ~1_val~
20:43:52:977 [megatester-testermega]: Param0: "0"
Вижу что прочность указана в строке Param0: "0"
Собственно теперь я могу вызвать именно этот параметр}

AddToSystemJournal('Прямой способ достать значение параметра'+aa.Items[2].Params[0]);

if strtoint(aa.Items[2].Params[0])=0 then
AddToSystemJournal('Оружие убито в НОЛЬ');
end.

Спасибо
--->>>ПОИСК ПО ФОРУМУ, НАЧНИ С НЕГО!!!<<<---
--->>>Search the forum, start with him!!!<<<---
95% Ваших вопросов уже кем-то написаны и решены.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: UO KR

Post by Vizit0r »

ну вот и отлично.

потом чуток порублю этот пост и закину как пример в Вики.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply