Вопрос ProjectileSpeed и цель атаки юнита

Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
Исследовав вcё это дело, я пришёл к выводу, что хреф "ProjectileSpeed" действительно лежит рядом с KeyValues::GetInt(), но вот где для героя эти KeyValues взять?
Цель атаки вообще понятия не имею где искать. Как будто специально запихнули куда подальше от любителей автоластхита. Даже в нетварах башен есть m_hTowerAttackTarget, а тут...
Или я не туда смотрю?
 
Последнее редактирование:
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
Пожалуйста, авторизуйтесь для просмотра ссылки.
Премного благодарен, нечасто ожидаю помощи со стороны анноунчитс. Контента по доте мало и раскидан он где только можно. Теперь можно подумать о смысле жизни и причины засовывания некоторых значений в KeyValues вместо нетваров
 
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
Liberalist в общем решил я не долбиться об стену с некими m_pkvHeroes и распарсил файл самостоятельно, т. к. вспомнил твои слова о загрузке напрямую из файловой системы доки 2
C++:
#pragma once
#include "sdk.h"

typedef void* CFileHandle;

class CBaseFileSystem : public VClass
{
public:
    CFileHandle OpenFile(const char* filePath, const char* options, int unk = 0, void* pathId = nullptr) {
        return CallVFunc<78>(filePath, options, unk, pathId);
    }
   
    char* ReadLine(char* buffer, int size, CFileHandle handle) {
        return CallVFunc<56, char*>(buffer, size, handle);
    }
};
Но тогда остаётся вопрос получения энтити, которого бьёт юнит. В дампе даже есть какой-то CDOTA_BaseNPC, в котором есть вообще все нужные переменные, но это не C_DOTA_BaseNPC. Единственный хреф на данную тему это вот это нечто:
 

Вложения

Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
Liberalist в общем решил я не долбиться об стену с некими m_pkvHeroes и распарсил файл самостоятельно, т. к. вспомнил твои слова о загрузке напрямую из файловой системы доки 2
C++:
#pragma once
#include "sdk.h"

typedef void* CFileHandle;

class CBaseFileSystem : public VClass
{
public:
    CFileHandle OpenFile(const char* filePath, const char* options, int unk = 0, void* pathId = nullptr) {
        return CallVFunc<78>(filePath, options, unk, pathId);
    }
 
    char* ReadLine(char* buffer, int size, CFileHandle handle) {
        return CallVFunc<56, char*>(buffer, size, handle);
    }
};
Но тогда остаётся вопрос получения энтити, которого бьёт юнит. В дампе даже есть какой-то CDOTA_BaseNPC, в котором есть вообще все нужные переменные, но это не C_DOTA_BaseNPC. Единственный хреф на данную тему это вот это нечто:
C* это как правило сервер. C_* это клиент. но иногда бывает что есть некоторые классы C* которые и к клиенту и к серверу относятся. но бейзнпс это не один из них.
энивей, у таверов цель хранится в нетваре. у остальных сущностей если и хранится то наверняка както посложнее. ищи, что сказать. на крайняк тупо вычисляй(сущность же в момент атаки смотрит прямо на того кого атакует)
 
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
энивей, у таверов цель хранится в нетваре
Это да, хотя бы её можно учесть
на крайняк тупо вычисляй(сущность же в момент атаки смотрит прямо на того кого атакует)
Тоже мелькала подобная мысль, можно сделать kind of рей трейсинг. Звучит даже не так костыльно, если так подумать
 
Начинающий
Статус
Оффлайн
Регистрация
12 Ноя 2022
Сообщения
63
Реакции[?]
23
Поинты[?]
3K
C* это как правило сервер. C_* это клиент. но иногда бывает что есть некоторые классы C* которые и к клиенту и к серверу относятся. но бейзнпс это не один из них.
энивей, у таверов цель хранится в нетваре. у остальных сущностей если и хранится то наверняка както посложнее. ищи, что сказать. на крайняк тупо вычисляй(сущность же в момент атаки смотрит прямо на того кого атакует)
Вроде не точно. Она раньеше атаковать начинает.
Turn rate is an important mechanic because heroes are required to be within 11.5° of facing the target position in order to perform an action, such as moving, attacking, casting
Пожалуйста, авторизуйтесь для просмотра ссылки.
, or using
Пожалуйста, авторизуйтесь для просмотра ссылки.
.

Потому после хука на анимацию атаки нужно ждать пока угловая скорость npc будет равна нулю, а потом смотреть forward вектор.

Пожалуйста, авторизуйтесь для просмотра ссылки.
Но тогда остаётся вопрос получения энтити, которого бьёт юнит. В дампе даже есть какой-то CDOTA_BaseNPC, в котором есть вообще все нужные переменные, но это не C_DOTA_BaseNPC. Единственный хреф на данную тему это вот это нечто:
Это сервер онли информация её нет в клиенте НИГДЕ. Она нигде не спрятана. Эта информация не нужна клиенту.
 
Последнее редактирование:
Ревёрсер среднего звена
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
303
Реакции[?]
108
Поинты[?]
57K
Вроде не точно. Она раньеше атаковать начинает.
Turn rate is an important mechanic because heroes are required to be within 11.5° of facing the target position in order to perform an action, such as moving, attacking, casting
Пожалуйста, авторизуйтесь для просмотра ссылки.
, or using
Пожалуйста, авторизуйтесь для просмотра ссылки.
.

Потому после хука на анимацию атаки нужно ждать пока угловая скорость npc будет равна нулю, а потом смотреть forward вектор.

Пожалуйста, авторизуйтесь для просмотра ссылки.

Это сервер онли информация её нет в клиенте НИГДЕ. Она нигде не спрятана. Эта информация не нужна клиенту.
Thanks for explaining. Вальв додумались не отправлять на клиент лишнюю информацию, я так скоро плакать начну
 
Начинающий
Статус
Оффлайн
Регистрация
12 Ноя 2022
Сообщения
63
Реакции[?]
23
Поинты[?]
3K
. Она раньеше атаковать начинает.
Turn rate is an important mechanic because heroes are required to be within 11.5° of facing the target position in order to perform an action, such as moving, attacking, casting
Пожалуйста, авторизуйтесь для просмотра ссылки.
, or using
Пожалуйста, авторизуйтесь для просмотра ссылки.
.

Потому после хука на анимацию атаки нужно ждать пока угловая скорость npc будет равна нулю, а потом смотреть forward вектор.
да там нет лишней. Джеф хилл же объяснял почему нельзя партикли(hidden spells) с клиента убрать. Вбе тоже думаю не просто так используется.
 
Сверху Снизу