HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1461  
Старый 13.06.2016, 15:32
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

Цитата:
Сообщение от AWRage  

Подскажите как установить хук на game destructor? На какой адрес ставить? И в какую игровую функцию можно влепить свою функцию loop?
SF->getGame()->registerGameDestructorCallback(Destructor);

где Destructor это функция void CALLBACK без параметров
 
Ответить с цитированием

  #1462  
Старый 13.06.2016, 16:26
AWRage
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами: 5706781

Репутация: 43


По умолчанию

Цитата:
Сообщение от SR_team  

SF->getGame()->registerGameDestructorCallback(Destructor);
где Destructor это функция void CALLBACK без параметров
Я не юзаю SF апи. Случайно не туда написал.
 
Ответить с цитированием

  #1463  
Старый 14.06.2016, 01:41
Woofing Giraffe
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами: 5744580

Репутация: 28
По умолчанию

Цитата:
Сообщение от FYP  

а версия студии какая?
2015 community
 
Ответить с цитированием

  #1464  
Старый 14.06.2016, 09:49
Vadim.dll
Участник форума
Регистрация: 04.07.2015
Сообщений: 168
С нами: 5715860

Репутация: 78
По умолчанию

Вопрос, можно ли в чистом проекте C++ изменить адрес памяти gta sa? То есть чтобы не SF плагин изменял а консольное приложение
 
Ответить с цитированием

  #1465  
Старый 14.06.2016, 10:14
Gabriel__
Постоянный
Регистрация: 23.06.2015
Сообщений: 411
С нами: 5731627

Репутация: 108
По умолчанию

WriteProcessMemory
 
Ответить с цитированием

  #1466  
Старый 15.06.2016, 02:07
ЯedЯuM
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами: 5351007

Репутация: 0
По умолчанию

Дайте пожалуйста кто нибудь реализацию этого метода, или формулу для вычисления координат части тела.

C++:





Код:
virtual
CVector
*
GetBonePosition
(
eBone bone
,
CVector
*
vecPosition
)
=
0
;
 
Ответить с цитированием

  #1467  
Старый 15.06.2016, 02:10
AWRage
Постоянный
Регистрация: 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
)
;
.
.
}
 
Ответить с цитированием

  #1468  
Старый 15.06.2016, 02:17
ЯedЯuM
Участник форума
Регистрация: 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
)
;
.
.
}

Я в собейте нашел реализацию но там с асм вставками хрени, а гонщик давал тебе прям формулой которая высчитывает?
 
Ответить с цитированием

  #1469  
Старый 15.06.2016, 02:27
Dark_Knight
Флудер
Регистрация: 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;
}
 
Ответить с цитированием

  #1470  
Старый 15.06.2016, 12:25
AWRage
Постоянный
Регистрация: 10.07.2015
Сообщений: 642
С нами: 5706781

Репутация: 43


По умолчанию

Цитата:
Сообщение от Destructor  

Я в собейте нашел реализацию но там с асм вставками хрени, а гонщик давал тебе прям формулой которая высчитывает?
Всмысле? Готовый же код, получаешь CPed, а там уже есть метод getTransformedBonePosition, юзай на здоровье.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.