Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
пытался найти оффсеты для простенького скрипта через чит энджен, не смог. помогите, мне нужен гайд или же просто оффсет хп героя, скрипт доллжен перекачиваться на морфе, когда у него менее 20 процентов хп, помогите пожалуйста
это не так работает как ты думаешь.
class C_BaseEntity(size: 0x510 bytes, project "client", binding @ client.dll + 0x4b41b80, scope "client.dll") extends CEntityInstance
там на client.dll + 0x4b41b80 лежит БИНДИНГ, т.е. описывающая структура. это не сущность. это просто куча инфы для рефлексии и всё.
хп в свою очередь это связанный член(т.е. он каждый свое разное значение имеет у разных сущностей - у одного крипа 500 хп у другого 600 и так далее), и естественно чтобы его получить нужно сначала найти сущность(и вполне конкретную - тебе же не хп крипа интересен а хп конкретно твоего героя(а героев на карте может быть много)). точно также как чтобы узнать чей-то рост тебе нужно сначала человека выбрать у которого рост измеряешь - потому что рост у всех разный. выберешь васю - получишь 180 см, выберешь петю - получишь 170см. вроде одной и той же линейкой будешь мерять а результат будет разный. потому что этот аттрибут непосредственно связан с каждым конкретным объектом(с людьми в данном случае) а не общий для всех объектов.
вот когда найдешь конкретную сущность которая тебя интересует - уже к ней можно прибавлять 0x34c и считывать оттуда int. и делать это можно с любой сущностью(результат естественно разный будет у разных сущностей) - у крипов тоже хп есть и иногда он тоже представляет интерес. оффсет это смещение относительно объекта. это ОБЪЕКТ хранит в себе хп ману и так далее, оффсет просто говорит тебе где он это в себе хранит. всё крутится вокруг объектов. а их еще найти надо.
это не так работает как ты думаешь.
class C_BaseEntity(size: 0x510 bytes, project "client", binding @ client.dll + 0x4b41b80, scope "client.dll") extends CEntityInstance
там на client.dll + 0x4b41b80 лежит БИНДИНГ, т.е. описывающая структура. это не сущность. это просто куча инфы для рефлексии и всё.
хп в свою очередь это связанный член(т.е. он каждый свое разное значение имеет у разных сущностей - у одного крипа 500 хп у другого 600 и так далее), и естественно чтобы его получить нужно сначала найти сущность(и вполне конкретную - тебе же не хп крипа интересен а хп конкретно твоего героя(а героев на карте может быть много)). точно также как чтобы узнать чей-то рост тебе нужно сначала человека выбрать у которого рост измеряешь - потому что рост у всех разный. выберешь васю - получишь 180 см, выберешь петю - получишь 170см. вроде одной и той же линейкой будешь мерять а результат будет разный. потому что этот аттрибут непосредственно связан с каждым конкретным объектом(с людьми в данном случае) а не общий для всех объектов.
вот когда найдешь конкретную сущность которая тебя интересует - уже к ней можно прибавлять 0x34c и считывать оттуда int. и делать это можно с любой сущностью(результат естественно разный будет у разных сущностей) - у крипов тоже хп есть и иногда он тоже представляет интерес. оффсет это смещение относительно объекта. это ОБЪЕКТ хранит в себе хп ману и так далее, оффсет просто говорит тебе где он это в себе хранит. всё крутится вокруг объектов. а их еще найти надо.
Привет, я как раз обучаюсь по твоим гайдам, не мог ли бы ты мне обьяснить, как найти оффсет состояния перекачки в силу на морфлинге типа когда перекачка работает ее состояние true, а когда нет false
и что за нетвары там тип скинул, как их дампить, для чего они вообще нужны?
это не так работает как ты думаешь.
class C_BaseEntity(size: 0x510 bytes, project "client", binding @ client.dll + 0x4b41b80, scope "client.dll") extends CEntityInstance
там на client.dll + 0x4b41b80 лежит БИНДИНГ, т.е. описывающая структура. это не сущность. это просто куча инфы для рефлексии и всё.
хп в свою очередь это связанный член(т.е. он каждый свое разное значение имеет у разных сущностей - у одного крипа 500 хп у другого 600 и так далее), и естественно чтобы его получить нужно сначала найти сущность(и вполне конкретную - тебе же не хп крипа интересен а хп конкретно твоего героя(а героев на карте может быть много)). точно также как чтобы узнать чей-то рост тебе нужно сначала человека выбрать у которого рост измеряешь - потому что рост у всех разный. выберешь васю - получишь 180 см, выберешь петю - получишь 170см. вроде одной и той же линейкой будешь мерять а результат будет разный. потому что этот аттрибут непосредственно связан с каждым конкретным объектом(с людьми в данном случае) а не общий для всех объектов.
вот когда найдешь конкретную сущность которая тебя интересует - уже к ней можно прибавлять 0x34c и считывать оттуда int. и делать это можно с любой сущностью(результат естественно разный будет у разных сущностей) - у крипов тоже хп есть и иногда он тоже представляет интерес. оффсет это смещение относительно объекта. это ОБЪЕКТ хранит в себе хп ману и так далее, оффсет просто говорит тебе где он это в себе хранит. всё крутится вокруг объектов. а их еще найти надо.
Привет, я как раз обучаюсь по твоим гайдам, не мог ли бы ты мне обьяснить, как найти оффсет состояния перекачки в силу на морфлинге типа когда перекачка работает ее состояние true, а когда нет false
это относительно сложновато для новичка будет...
morphling_morph_agi имя абилки перекачка ловкость, morphling_morph_str сила
у абилки C_DOTABaseAbility::m_bToggleState нетвар
список абилок героя в C_DOTA_BaseNPC::m_vecAbilities(там хранятся CHandle)
что-то типо такого условно в общем(поищи на этом форуме в этом разделе про доту эти ключевые слова названия функций переменных классов и тд и почитай тут всё это есть)
C++:
GetLocalPlayer():
for i ∈ [1; 64]:
entity = g_pEntitySystem?.GetEntityByIndex(i)
if entity?.CBasePlayerController::m_bIsLocalPlayerController:
return entity
return null
GetEntityByHandle(CHandle handle):
if handle.value != -1
return g_pEntitySystem?.GetEntityByIndex(handle.value & 0x7FFF)
return null
GetAbilityByName(C_DOTA_BaseNPC hero, string name):
foreach (ability_handle in hero?.m_vecAbilities):
ability = GetEntityByHandle(ability_handle)
if ability?.get_name() == name:
return ability
return nullptr
hero = GetEntityByHandle(GetLocalPlayer()?.C_DOTAPlayerController::m_hAssignedHero || -1)
agi_toggle_state = GetAbilityByName(hero, "morphling_morph_agi")?.C_DOTABaseAbility::m_bToggleState
это относительно сложновато для новичка будет...
morphling_morph_agi имя абилки перекачка ловкость, morphling_morph_str сила
у абилки C_DOTABaseAbility::m_bToggleState нетвар
список абилок героя в C_DOTA_BaseNPC::m_vecAbilities(там хранятся CHandle)
что-то типо такого условно в общем(поищи на этом форуме в этом разделе про доту эти ключевые слова названия функций переменных классов и тд и почитай тут всё это есть)
C++:
GetLocalPlayer():
for i ∈ [1; 64]:
entity = g_pEntitySystem?.GetEntityByIndex(i)
if entity?.CBasePlayerController::m_bIsLocalPlayerController:
return entity
return null
GetEntityByHandle(CHandle handle):
if handle.value != -1
return g_pEntitySystem?.GetEntityByIndex(handle.value & 0x7FFF)
return null
GetAbilityByName(C_DOTA_BaseNPC hero, string name):
foreach (ability_handle in hero?.m_vecAbilities):
ability = GetEntityByHandle(ability_handle)
if ability?.get_name() == name:
return ability
return nullptr
hero = GetEntityByHandle(GetLocalPlayer()?.C_DOTAPlayerController::m_hAssignedHero || -1)
agi_toggle_state = GetAbilityByName(hero, "morphling_morph_agi")?.C_DOTABaseAbility::m_bToggleState
это относительно сложновато для новичка будет...
morphling_morph_agi имя абилки перекачка ловкость, morphling_morph_str сила
у абилки C_DOTABaseAbility::m_bToggleState нетвар
список абилок героя в C_DOTA_BaseNPC::m_vecAbilities(там хранятся CHandle)
что-то типо такого условно в общем(поищи на этом форуме в этом разделе про доту эти ключевые слова названия функций переменных классов и тд и почитай тут всё это есть)
C++:
GetLocalPlayer():
for i ∈ [1; 64]:
entity = g_pEntitySystem?.GetEntityByIndex(i)
if entity?.CBasePlayerController::m_bIsLocalPlayerController:
return entity
return null
GetEntityByHandle(CHandle handle):
if handle.value != -1
return g_pEntitySystem?.GetEntityByIndex(handle.value & 0x7FFF)
return null
GetAbilityByName(C_DOTA_BaseNPC hero, string name):
foreach (ability_handle in hero?.m_vecAbilities):
ability = GetEntityByHandle(ability_handle)
if ability?.get_name() == name:
return ability
return nullptr
hero = GetEntityByHandle(GetLocalPlayer()?.C_DOTAPlayerController::m_hAssignedHero || -1)
agi_toggle_state = GetAbilityByName(hero, "morphling_morph_agi")?.C_DOTABaseAbility::m_bToggleState
это относительно сложновато для новичка будет...
morphling_morph_agi имя абилки перекачка ловкость, morphling_morph_str сила
у абилки C_DOTABaseAbility::m_bToggleState нетвар
список абилок героя в C_DOTA_BaseNPC::m_vecAbilities(там хранятся CHandle)
что-то типо такого условно в общем(поищи на этом форуме в этом разделе про доту эти ключевые слова названия функций переменных классов и тд и почитай тут всё это есть)
C++:
GetLocalPlayer():
for i ∈ [1; 64]:
entity = g_pEntitySystem?.GetEntityByIndex(i)
if entity?.CBasePlayerController::m_bIsLocalPlayerController:
return entity
return null
GetEntityByHandle(CHandle handle):
if handle.value != -1
return g_pEntitySystem?.GetEntityByIndex(handle.value & 0x7FFF)
return null
GetAbilityByName(C_DOTA_BaseNPC hero, string name):
foreach (ability_handle in hero?.m_vecAbilities):
ability = GetEntityByHandle(ability_handle)
if ability?.get_name() == name:
return ability
return nullptr
hero = GetEntityByHandle(GetLocalPlayer()?.C_DOTAPlayerController::m_hAssignedHero || -1)
agi_toggle_state = GetAbilityByName(hero, "morphling_morph_agi")?.C_DOTABaseAbility::m_bToggleState
вторая часть. читаем http://praydog.com/index.php/2015/06/24/an-analysis-of-the-source-2-engine-part-1-the-schema-system/ для IDA качаем плагины class informer и function string associate заходим в IDA берем...
вторая часть. читаем http://praydog.com/index.php/2015/06/24/an-analysis-of-the-source-2-engine-part-1-the-schema-system/ для IDA качаем плагины class informer и function string associate заходим в IDA берем...
" что за нетвары ..., как с ними работать, как дампить, для чего они нужны вообще"
нетворкед вариабл это переменная которая принимает участие в нетворкинге(передачи сообщений между клиентом и сервером - например хп твоего героя: оно не с небес берётся, его сервер тебе скидывает. в тебя хуйнули тычку, сервер новое хп тебе прислал, ты юзнул хилку, сервер новое хп прислал. клиент же просто в основном "отрисовывает на экран" то что получает с сервера). как правило в современных имплементациях сетевых протоколов в играх есть рефлексия(формат сообщений частично или полностью документируется для удобной сериализации/десериализации). дамп это соответственно сбор инфы с этих реестров рефлексии/схем сообщений и т.д.
в узком смысле под нетварами обычно понимаются связанные члены о которых есть информация в реестрах рефлексии(т.е. известно имя тип оффсет и т.д.). то есть это обычные связанные члены просто тебе о них официально известно(т.е. ты не сам руками эту инфу расковырял и догадался а от разрабов косвенно получил потому что они это задокументировали).
чтобы узнать хп героя тебе нужно знать оффсет хп и иметь адрес где находится герой. прибавляешь оффсет хп к адресу героя и получаешь адрес хп(оффсет это и есть число, показывающее на сколько байт член смещён относительно самого объекта). сначала естественно надо адрес героя найти. в псевдокоде который я тебе скидывал выше это есть. локальный герой лежит в локальном игроке(если что игрок это контроллер - тот кто контроллит призванных прирученных крипов курьеров героев иллюзии клоны и так далее и в том числе камеру тоже. в доте если что герой не главный. главный игрок. герой это просто одна из сущностей(ну и основная впринципе) которыми игрок может управлять).
вторая часть. читаем http://praydog.com/index.php/2015/06/24/an-analysis-of-the-source-2-engine-part-1-the-schema-system/ для IDA качаем плагины class informer и function string associate заходим в IDA берем...
вторая часть. читаем http://praydog.com/index.php/2015/06/24/an-analysis-of-the-source-2-engine-part-1-the-schema-system/ для IDA качаем плагины class informer и function string associate заходим в IDA берем...
" что за нетвары ..., как с ними работать, как дампить, для чего они нужны вообще"
нетворкед вариабл это переменная которая принимает участие в нетворкинге(передачи сообщений между клиентом и сервером - например хп твоего героя: оно не с небес берётся, его сервер тебе скидывает. в тебя хуйнули тычку, сервер новое хп тебе прислал, ты юзнул хилку, сервер новое хп прислал. клиент же просто в основном "отрисовывает на экран" то что получает с сервера). как правило в современных имплементациях сетевых протоколов в играх есть рефлексия(формат сообщений частично или полностью документируется для удобной сериализации/десериализации). дамп это соответственно сбор инфы с этих реестров рефлексии/схем сообщений и т.д.
в узком смысле под нетварами обычно понимаются связанные члены о которых есть информация в реестрах рефлексии(т.е. известно имя тип оффсет и т.д.). то есть это обычные связанные члены просто тебе о них официально известно(т.е. ты не сам руками эту инфу расковырял и догадался а от разрабов косвенно получил потому что они это задокументировали).
чтобы узнать хп героя тебе нужно знать оффсет хп и иметь адрес где находится герой. прибавляешь оффсет хп к адресу героя и получаешь адрес хп(оффсет это и есть число, показывающее на сколько байт член смещён относительно самого объекта). сначала естественно надо адрес героя найти. в псевдокоде который я тебе скидывал выше это есть. локальный герой лежит в локальном игроке(если что игрок это контроллер - тот кто контроллит призванных прирученных крипов курьеров героев иллюзии клоны и так далее и в том числе камеру тоже. в доте если что герой не главный. главный игрок. герой это просто одна из сущностей(ну и основная впринципе) которыми игрок может управлять).
вторая часть. читаем http://praydog.com/index.php/2015/06/24/an-analysis-of-the-source-2-engine-part-1-the-schema-system/ для IDA качаем плагины class informer и function string associate заходим в IDA берем...
вторая часть. читаем http://praydog.com/index.php/2015/06/24/an-analysis-of-the-source-2-engine-part-1-the-schema-system/ для IDA качаем плагины class informer и function string associate заходим в IDA берем...
" что за нетвары ..., как с ними работать, как дампить, для чего они нужны вообще"
нетворкед вариабл это переменная которая принимает участие в нетворкинге(передачи сообщений между клиентом и сервером - например хп твоего героя: оно не с небес берётся, его сервер тебе скидывает. в тебя хуйнули тычку, сервер новое хп тебе прислал, ты юзнул хилку, сервер новое хп прислал. клиент же просто в основном "отрисовывает на экран" то что получает с сервера). как правило в современных имплементациях сетевых протоколов в играх есть рефлексия(формат сообщений частично или полностью документируется для удобной сериализации/десериализации). дамп это соответственно сбор инфы с этих реестров рефлексии/схем сообщений и т.д.
в узком смысле под нетварами обычно понимаются связанные члены о которых есть информация в реестрах рефлексии(т.е. известно имя тип оффсет и т.д.). то есть это обычные связанные члены просто тебе о них официально известно(т.е. ты не сам руками эту инфу расковырял и догадался а от разрабов косвенно получил потому что они это задокументировали).
чтобы узнать хп героя тебе нужно знать оффсет хп и иметь адрес где находится герой. прибавляешь оффсет хп к адресу героя и получаешь адрес хп(оффсет это и есть число, показывающее на сколько байт член смещён относительно самого объекта). сначала естественно надо адрес героя найти. в псевдокоде который я тебе скидывал выше это есть. локальный герой лежит в локальном игроке(если что игрок это контроллер - тот кто контроллит призванных прирученных крипов курьеров героев иллюзии клоны и так далее и в том числе камеру тоже. в доте если что герой не главный. главный игрок. герой это просто одна из сущностей(ну и основная впринципе) которыми игрок может управлять).