 |
|

13.06.2016, 15:32
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от AWRage
Подскажите как установить хук на game destructor? На какой адрес ставить? И в какую игровую функцию можно влепить свою функцию loop?
SF->getGame()->registerGameDestructorCallback(Destructor);
где Destructor это функция void CALLBACK без параметров
|
|
|

13.06.2016, 16:26
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Сообщение от SR_team
SF->getGame()->registerGameDestructorCallback(Destructor);
где Destructor это функция void CALLBACK без параметров
Я не юзаю SF апи. Случайно не туда написал.
|
|
|

14.06.2016, 01:41
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Сообщение от FYP
а версия студии какая?
2015 community
|
|
|

14.06.2016, 09:49
|
|
Участник форума
Регистрация: 04.07.2015
Сообщений: 168
С нами:
5715860
Репутация:
78
|
|
Вопрос, можно ли в чистом проекте C++ изменить адрес памяти gta sa? То есть чтобы не SF плагин изменял а консольное приложение
|
|
|

14.06.2016, 10:14
|
|
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами:
5731627
Репутация:
108
|
|
WriteProcessMemory
|
|
|

15.06.2016, 02:07
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Дайте пожалуйста кто нибудь реализацию этого метода, или формулу для вычисления координат части тела.
C++:
Код:
virtual
CVector
*
GetBonePosition
(
eBone bone
,
CVector
*
vecPosition
)
=
0
;
|
|
|

15.06.2016, 02:10
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Сообщение от Destructor
Дайте пожалуйста кто нибудь реализацию этого метода, или формулу для вычисления координат части тела.
C++:
Код:
virtual
CVector
*
GetBonePosition
(
eBone bone
,
CVector
*
vecPosition
)
=
0
;
Мне Гонщик когда-то давал пример, полистай эту тему. Там есть рабочий метод.
Еще раз спасибо Гонщику)
C++:
Код:
// тут я просто показал как получить структуру,
// но однако перед тем как всё это вызывать,
// нужно проверить, что игрок существует и всё такое,
// я не стал этого делать, сам сделаешь, иначе крашнет
actor_info
*
actorInfo
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
iPlayerID
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
;
if
(
actorInfo
!=
nullptr
)
{
CPed
*
ped
=
GAME
->
GetPools
(
)
->
GetPed
(
(
DWORD
*
)
actorInfo
)
;
.
.
}
|
|
|

15.06.2016, 02:17
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от AWRage
Мне Гонщик когда-то давал пример, полистай эту тему. Там есть рабочий метод.
Еще раз спасибо Гонщику)
C++:
Код:
// тут я просто показал как получить структуру,
// но однако перед тем как всё это вызывать,
// нужно проверить, что игрок существует и всё такое,
// я не стал этого делать, сам сделаешь, иначе крашнет
actor_info
*
actorInfo
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
iPlayerID
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
;
if
(
actorInfo
!=
nullptr
)
{
CPed
*
ped
=
GAME
->
GetPools
(
)
->
GetPed
(
(
DWORD
*
)
actorInfo
)
;
.
.
}
Я в собейте нашел реализацию но там с асм вставками хрени, а гонщик давал тебе прям формулой которая высчитывает?
|
|
|

15.06.2016, 02:27
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от Destructor
Я в собейте нашел реализацию но там с асм вставками хрени, а гонщик давал тебе прям формулой которая высчитывает?
С плагин СДК
https://github.com/DK22Pac/plugin-s...89788a8f7d74b/plugin_sa/game_sa/CPed.cpp#L494
Для СФ
Код:
Код:
CVector GetBonePosition(int PlayerID, byte BoneID){
CVector Position;
typedef void(__thiscall *CPed__getBonePositionWithOffset) (void *_this, CVector *offset, int bodeId, bool includeAnim);
if (PlayerID != SF->getSAMP()->getPlayers()->sLocalPlayerID)
(CPed__getBonePositionWithOffset(0x5E01C0))(SF->getSAMP()->getPlayers()->pRemotePlayer[PlayerID]->pPlayerData->pSAMP_Actor->pGTA_Ped, &Position, BoneID, true);
else
(CPed__getBonePositionWithOffset(0x5E01C0))(SF->getSAMP()->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped, &Position, BoneID, true);
return Position;
};
Из соба
Код:
Код:
CVector * CPedSA::GetBonePosition ( eBone bone, CVector * vecPosition )
{
DWORD dwFunc = FUNC_GetBonePosition;
DWORD dwThis = (DWORD)this->GetInterface();
_asm
{
push 1
push bone
push vecPosition
mov ecx, dwThis
call dwFunc
}
return vecPosition;
}
|
|
|

15.06.2016, 12:25
|
|
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами:
5706781
Репутация:
43
|
|
Сообщение от Destructor
Я в собейте нашел реализацию но там с асм вставками хрени, а гонщик давал тебе прям формулой которая высчитывает?
Всмысле? Готовый же код, получаешь CPed, а там уже есть метод getTransformedBonePosition, юзай на здоровье.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|