Участник
-
Автор темы
- #81
игроков кстати переделали.
движок теперь возвращает PlayerSlot_t(обертка на инт).
PlayerSlot_t это EntityIndex_t(это я просто индекс сущности(инт) завернул красиво) минус один.(перевод слота в индекс = слот + 1. перевод индекса в слот = индекс - 1)
так вот.
бтв забыл сказать убрали CDOTAPlayer, добавили C_DOTAPlayerController вместо него(и еще там есть CDOTAPlayerPawn. в моём дампе выше все есть он актуальный).
берем с движка плеер слот, делаем индекс сущности(прибавляем 1 к слоту), находим сущность по индексу, получаем C_DOTAPlayerController .
у него кстати есть CHandle< C_BaseEntity > m_hAssignedHero это наш герой(его может не быть, например на стадии пика. тогда CHandle будет 0xFFFFFFFF. так что не забывайте чекать)
также у него есть PlayerID_t m_nPlayerID.
PlayerID_t это индекс в массиве плеер ресурсов.
находим C_DOTA_PlayerResource(это глобал g_pDOTAPlayerResource ищите в дилибах)
у него есть m_vecPlayerData.
берем m_vecPlayerData.at(m_nPlayerID) и получаем PlayerResourcePlayerData_t нашего локального игрока.
также можем взять m_vecPlayerTeamData.at(m_nPlayerID) и получаем PlayerResourcePlayerTeamData_t, там хранится голда левел и прочая хуита.
если же мы хотим проитерировать других игроков, то:
берем ресурс.
итерируем каждый m_vecPlayerData. в нем есть PlayerSlot_t m_nPlayerSlot. думаю понятно что с ним делать(переводить в индекс и находить сущность по индексу).
получаем C_DOTAPlayerController.
в нем есть m_hAssignedHero это герой игрока, и еще есть CBasePlayerController::m_iszPlayerName это имя которое показывается в скорборде.
(возможно кстати я в чём-то ошибаюсь, я особо много не тестил, вроде все работает. кр4 пишите если че)
движок теперь возвращает PlayerSlot_t(обертка на инт).
PlayerSlot_t это EntityIndex_t(это я просто индекс сущности(инт) завернул красиво) минус один.(перевод слота в индекс = слот + 1. перевод индекса в слот = индекс - 1)
так вот.
бтв забыл сказать убрали CDOTAPlayer, добавили C_DOTAPlayerController вместо него(и еще там есть CDOTAPlayerPawn. в моём дампе выше все есть он актуальный).
берем с движка плеер слот, делаем индекс сущности(прибавляем 1 к слоту), находим сущность по индексу, получаем C_DOTAPlayerController .
у него кстати есть CHandle< C_BaseEntity > m_hAssignedHero это наш герой(его может не быть, например на стадии пика. тогда CHandle будет 0xFFFFFFFF. так что не забывайте чекать)
также у него есть PlayerID_t m_nPlayerID.
PlayerID_t это индекс в массиве плеер ресурсов.
находим C_DOTA_PlayerResource(это глобал g_pDOTAPlayerResource ищите в дилибах)
у него есть m_vecPlayerData.
берем m_vecPlayerData.at(m_nPlayerID) и получаем PlayerResourcePlayerData_t нашего локального игрока.
также можем взять m_vecPlayerTeamData.at(m_nPlayerID) и получаем PlayerResourcePlayerTeamData_t, там хранится голда левел и прочая хуита.
если же мы хотим проитерировать других игроков, то:
берем ресурс.
итерируем каждый m_vecPlayerData. в нем есть PlayerSlot_t m_nPlayerSlot. думаю понятно что с ним делать(переводить в индекс и находить сущность по индексу).
получаем C_DOTAPlayerController.
в нем есть m_hAssignedHero это герой игрока, и еще есть CBasePlayerController::m_iszPlayerName это имя которое показывается в скорборде.
(возможно кстати я в чём-то ошибаюсь, я особо много не тестил, вроде все работает. кр4 пишите если че)