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

Stealth 6

drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Stealth 6

Post by drabadan »

VeL wrote:Столкнулся с несколькими проблемами:
1. Неправильно работает GetHP(), поставил чаров в спарринг с проверкой хп, приходят непонятные значения:

Code: Select all

 GetHP(Enemy):GetMaxHP(Enemy)
08:46:36:221 [Zombie]: -8:50
08:46:36:726 [Zombie]: -8:50
08:46:39:235 [Zombie]: -6:50
08:46:41:902 [Zombie]: -12:50
08:46:42:406 [Zombie]: -12:50
08:46:46:910 [Zombie]: -9:50
08:46:49:569 [Zombie]: -20:50
08:46:50:073 [Zombie]: -20:50
08:46:52:759 [Zombie]: 1:50
08:46:53:263 [Zombie]: 1:50
08:46:55:922 [Zombie]: -18:50
08:46:56:431 [Zombie]: -18:50
08:47:00:466 [Zombie]: -14:50
08:47:00:972 [Zombie]: -14:50
08:47:03:647 [Zombie]: -10:50
08:47:04:199 [Zombie]: -10:50
08:47:06:900 [Zombie]: -22:50
08:47:07:409 [Zombie]: -22:50
08:47:07:913 [Zombie]: -22:50
08:47:10:575 [Zombie]: -15:50
08:47:11:080 [Zombie]: -15:50
08:47:13:739 [Zombie]: -6:50
08:47:14:243 [Zombie]: -6:50
08:47:16:903 [Zombie]: 2:50
08:47:17:407 [Zombie]: 2:50
08:47:20:104 [Zombie]: -6:50
2. Если одеть вещь через UseObject(), то стелс "не видит" эту вещь в слое.
а текущее хп перса не равно разности макс хп и тех цифр сверху?

З.Ы. Я этим вопросом тоже задавался, по моим наблюдениям макс хп = 50 - это 100%, то-есть величина относительная. По идее, если пересчитать то должно получатся абсолютное число, но с погрешностью.
VeL
Novice
Novice
Posts: 54
Joined: 03.12.2010 18:15

Re: Stealth 6

Post by VeL »

а текущее хп перса не равно разности макс хп и тех цифр сверху?
У меня тоже закралось подозрение, что GetHP() возвращает изменение хп, но если жизни не меняются то GetHP() возвращает 50, так что в любом случае получить правильное значение не выйдет.
З.Ы. Я этим вопросом тоже задавался, по моим наблюдениям макс хп = 50 - это 100%, то-есть величина относительная. По идее, если пересчитать то должно получатся абсолютное число, но с погрешностью.
Если отремонтировать GetHP(), то можно будет посчитать % от жизни GetHP(Enemy) / GetMaxHP(Enemy) * 100
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Stealth 6

Post by drabadan »

VeL wrote:
а текущее хп перса не равно разности макс хп и тех цифр сверху?
У меня тоже закралось подозрение, что GetHP() возвращает изменение хп, но если жизни не меняются то GetHP() возвращает 50, так что в любом случае получить правильное значение не выйдет.
З.Ы. Я этим вопросом тоже задавался, по моим наблюдениям макс хп = 50 - это 100%, то-есть величина относительная. По идее, если пересчитать то должно получатся абсолютное число, но с погрешностью.
Если отремонтировать GetHP(), то можно будет посчитать % от жизни GetHP(Enemy) / GetMaxHP(Enemy) * 100
Я думаю, что не получится отремонтировать GetHP() пока не будет работать GetMaxHP() в абсолютном выражении. Я точно не помню, а потестить сейчас не на чем, но вопрос - а в ГУИ стелса сейчас хп и макс хп отображается корректно? Вроде как раньше было корректно, может оттуда эту величину как-то транслировать и\или сделать доступной?
VeL
Novice
Novice
Posts: 54
Joined: 03.12.2010 18:15

Re: Stealth 6

Post by VeL »

Я думаю, что не получится отремонтировать GetHP() пока не будет работать GetMaxHP() в абсолютном выражении.
Получить хп в абсолютном значении вряд ли выйдет, например в инжекте тоже приходят эти 50.
Я точно не помню, а потестить сейчас не на чем, но вопрос - а в ГУИ стелса сейчас хп и макс хп отображается корректно?
Да.
может оттуда эту величину как-то транслировать и\или сделать доступной?
Можно через глобальные переменные передать.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Stealth 6

Post by drabadan »

VeL wrote:
Я думаю, что не получится отремонтировать GetHP() пока не будет работать GetMaxHP() в абсолютном выражении.
Получить хп в абсолютном значении вряд ли выйдет, например в инжекте тоже приходят эти 50.
Я точно не помню, а потестить сейчас не на чем, но вопрос - а в ГУИ стелса сейчас хп и макс хп отображается корректно?
Да.
может оттуда эту величину как-то транслировать и\или сделать доступной?
Можно через глобальные переменные передать.
ну так, если стелс его читает и там все корректно - то почему его не прикрутить в гетХП и гетМаксХП, или дать формулу пересчета.
VeL
Novice
Novice
Posts: 54
Joined: 03.12.2010 18:15

Re: Stealth 6

Post by VeL »

ну так, если стелс его читает и там все корректно - то почему его не прикрутить в гетХП и гетМаксХП, или дать формулу пересчета.
Будет работать только если оба чара на стелсе, а если надо посчитать %хп моба.

Написал простенький скрипт на спарринг, где достаточно проверять кол-во хп у оппонента и если оно меньше половины, то отключить вар:

Code: Select all

if (GetHP(Enemy) < GetMaxHP(Enemy) / 2) or (Life < MaxLife / 2) then 
  SetWarMode(False);
но тут же столкнулся с проблемой неправильного получения хп. Можно конечно поизвращаться, передавать кол-во хп через глобальные переменные, но все равно отремонтировать GetHP() надо.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Stealth 6

Post by drabadan »

VeL wrote:
ну так, если стелс его читает и там все корректно - то почему его не прикрутить в гетХП и гетМаксХП, или дать формулу пересчета.
Будет работать только если оба чара на стелсе, а если надо посчитать %хп моба.

Написал простенький скрипт на спарринг, где достаточно проверять кол-во хп у оппонента и если оно меньше половины, то отключить вар:

Code: Select all

if (GetHP(Enemy) < GetMaxHP(Enemy) / 2) or (Life < MaxLife / 2) then 
  SetWarMode(False);
но тут же столкнулся с проблемой неправильного получения хп. Можно конечно поизвращаться, передавать кол-во хп через глобальные переменные, но все равно отремонтировать GetHP() надо.
там как мне объясняли пакет не колво хп привозит, а процентовку вот эту. Поделить пополам тоже сложно - я всегда изворачивался вписывая абсолютное число типа гетхп - 10 = в разных вариантах было +- 75% хп врага.
VeL
Novice
Novice
Posts: 54
Joined: 03.12.2010 18:15

Re: Stealth 6

Post by VeL »

там как мне объясняли пакет не колво хп привозит, а процентовку вот эту. Поделить пополам тоже сложно - я всегда изворачивался вписывая абсолютное число типа гетхп - 10 = в разных вариантах было +- 75% хп врага.
В большинстве случаев точное кол-во хп и не нужно, достаточно знать сколько % от макс жизни осталось. Ну а так, если знать сколько макс хп в абсолютном выражении у цели, то можно достаточно точно подсчитать RealMaxHP * GetHP() / GetMaxHP(), погрешность будет +- несколько хп.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Stealth 6

Post by Vizit0r »

VeL
давай в личку чара, на котором можно запустить GetHP и получить неправильное число.
Реальные цифры хп НЕсвоего чара сервера не отдают с начала двухтысячных, с тех пор как народ инжектом начал палить их вовсю. С тех пор выдаются только либо проценты, либо что-то еще, что в отношении к GetMaxHP даст значения для показа заполненности шкалы чужого хп в клиенте.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Stealth 6

Post by drabadan »

Vizit0r wrote:VeL
давай в личку чара, на котором можно запустить GetHP и получить неправильное число.
Реальные цифры хп НЕсвоего чара сервера не отдают с начала двухтысячных, с тех пор как народ инжектом начал палить их вовсю. С тех пор выдаются только либо проценты, либо что-то еще, что в отношении к GetMaxHP даст значения для показа заполненности шкалы чужого хп в клиенте.
сыр-бор, вроде как, из-за НЕ своего хп. Автору хп цели желательно мониторить.
Кстати можно банальную конструкцию через чат сделать, типа чар раз в пару сек говорит свое хп, а ивент на другом чаре парсит его себе в хп цели. Как вариант. Ну а чего тогда через глобалку его не передать, СВОЕ хп то видно. С мобами\конями точно никак не получится просчитать нормально хп ибо оно и вправду только для отрисовки, так что это всегда относительная величина.
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Stealth 6

Post by drabadan »

GetSurfaceZ - у меня все время 0 возвращает... Это из-за меня или из-за стелса?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Stealth 6

Post by Vizit0r »

наверное из-за стелса.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Stealth 6

Post by Vizit0r »

проверил вот сейчас - вернул 20.
хз, как там у тебя ноль)
Если и дальше ноль будет - стукни, скину последнюю версию, проверишь.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Stealth 6

Post by drabadan »

Vizit0r wrote:проверил вот сейчас - вернул 20.
хз, как там у тебя ноль)
Если и дальше ноль будет - стукни, скину последнюю версию, проверишь.
это я дурбецало, пути к мулам не поставил, чета они там не сохранились, пересохранил - все ок!
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Stealth 6

Post by drabadan »

ошибка когда в дллке терминатю скрипт!

Code: Select all

An exception raised at 21:04:27:420
Access violation at address 00AC5F8F in module 'Stealth.exe'. Write of address 9A0D30CC
(006C4F8F){Stealth.exe } [00AC5F8F] Stealth.Stealth (Line 261, "")
Call stack:
  (006C4F8F){Stealth.exe } [00AC5F8F] Stealth.Stealth (Line 261, "")
  (002100CB){Stealth.exe } [006110CB] Vcl.Controls.TControl.Click (Line 7340, "Vcl.Controls.pas")
  (00214561){Stealth.exe } [00615561] Vcl.Controls.TWinControl.WndProc (Line 10039, "Vcl.Controls.pas")
  (001432A4){Stealth.exe } [005442A4] Vcl.StdCtrls.TButtonControl.WndProc (Line 5150, "Vcl.StdCtrls.pas")
  (002146C7){Stealth.exe } [006156C7] Vcl.Controls.DoControlMsg (Line 10108, "Vcl.Controls.pas")
  (00214561){Stealth.exe } [00615561] Vcl.Controls.TWinControl.WndProc (Line 10039, "Vcl.Controls.pas")
  (00213BA4){Stealth.exe } [00614BA4] Vcl.Controls.TWinControl.MainWndProc (Line 9751, "Vcl.Controls.pas")
  (000B5B5C){Stealth.exe } [004B6B5C] System.Classes.StdWndProc (Line 17013, "System.Classes.pas")
  (00214672){Stealth.exe } [00615672] Vcl.Controls.TWinControl.DefaultHandler (Line 10080, "Vcl.Controls.pas")
  (00214561){Stealth.exe } [00615561] Vcl.Controls.TWinControl.WndProc (Line 10039, "Vcl.Controls.pas")
  (001432A4){Stealth.exe } [005442A4] Vcl.StdCtrls.TButtonControl.WndProc (Line 5150, "Vcl.StdCtrls.pas")
  (000B5B5C){Stealth.exe } [004B6B5C] System.Classes.StdWndProc (Line 17013, "System.Classes.pas")

Post Reply