Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

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

Ревёрсер среднего звена
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
24 Ноя 2022
Сообщения
300
Реакции
109
Исследовав вcё это дело, я пришёл к выводу, что хреф "ProjectileSpeed" действительно лежит рядом с KeyValues::GetInt(), но вот где для героя эти KeyValues взять?
Цель атаки вообще понятия не имею где искать. Как будто специально запихнули куда подальше от любителей автоластхита. Даже в нетварах башен есть m_hTowerAttackTarget, а тут...
Или я не туда смотрю?
 
Последнее редактирование:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Премного благодарен, нечасто ожидаю помощи со стороны анноунчитс. Контента по доте мало и раскидан он где только можно. Теперь можно подумать о смысле жизни и причины засовывания некоторых значений в KeyValues вместо нетваров
 
@Liberalist в общем решил я не долбиться об стену с некими m_pkvHeroes и распарсил файл самостоятельно, т. к. вспомнил твои слова о загрузке напрямую из файловой системы доки 2
C++:
Expand Collapse Copy
#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. Единственный хреф на данную тему это вот это нечто:
 

Вложения

  • Screenshot_392.png
    Screenshot_392.png
    38.2 KB · Просмотры: 27
@Liberalist в общем решил я не долбиться об стену с некими m_pkvHeroes и распарсил файл самостоятельно, т. к. вспомнил твои слова о загрузке напрямую из файловой системы доки 2
C++:
Expand Collapse Copy
#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* которые и к клиенту и к серверу относятся. но бейзнпс это не один из них.
энивей, у таверов цель хранится в нетваре. у остальных сущностей если и хранится то наверняка както посложнее. ищи, что сказать. на крайняк тупо вычисляй(сущность же в момент атаки смотрит прямо на того кого атакует)
 
энивей, у таверов цель хранится в нетваре
Это да, хотя бы её можно учесть
на крайняк тупо вычисляй(сущность же в момент атаки смотрит прямо на того кого атакует)
Тоже мелькала подобная мысль, можно сделать kind of рей трейсинг. Звучит даже не так костыльно, если так подумать
 
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. Единственный хреф на данную тему это вот это нечто:
Это сервер онли информация её нет в клиенте НИГДЕ. Она нигде не спрятана. Эта информация не нужна клиенту.
 
Последнее редактирование:
Вроде не точно. Она раньеше атаковать начинает.
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. Вальв додумались не отправлять на клиент лишнюю информацию, я так скоро плакать начну
 
. Она раньеше атаковать начинает.
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) с клиента убрать. Вбе тоже думаю не просто так используется.
 
Назад
Сверху Снизу