Другое SAMPFUNCS | API C++

san0

Известный
Друг
411
267
FYP, можешь мне помочь с кодом выше?
ты заебал
Код:
bool CALLBACK incomingRPC(stRakNetHookParams *params)
{
    if (params->packetId == RPCEnumeration::RPC_Chat)
    {
        uint16_t id;
        uint8_t len;
        char msg[128];

        params->bitStream->ResetReadPointer();
        params->bitStream->Read(id);
        params->bitStream->Read(len);
        params->bitStream->Read(msg, len);
        params->bitStream->ResetReadPointer();
        msg[len] = '\0';

        SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(255, 255, 255), "{B9C91F}%s: {FFFFFF}%s",
            SF->getSAMP()->getPlayers()->GetPlayerName(id), msg);

        return false;
    }
    return true;
};
 

AWRage

Активный
642
141
Подскажите как установить хук на game destructor? На какой адрес ставить? И в какую игровую функцию можно влепить свою функцию loop?
 

SR_team

like pancake
BH Team
4,720
6,376
Подскажите как установить хук на game destructor? На какой адрес ставить? И в какую игровую функцию можно влепить свою функцию loop?
SF->getGame()->registerGameDestructorCallback(Destructor);
где Destructor это функция void CALLBACK без параметров
 

Vadim.dll

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

ЯedЯuM

Malware Maker
244
304
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Дайте пожалуйста кто нибудь реализацию этого метода, или формулу для вычисления координат части тела.
C++:
virtual CVector * GetBonePosition ( eBone bone, CVector * vecPosition )=0;
 

AWRage

Активный
642
141
Дайте пожалуйста кто нибудь реализацию этого метода, или формулу для вычисления координат части тела.
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);
      ..
}
 

ЯedЯuM

Malware Maker
244
304
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Мне Гонщик когда-то давал пример, полистай эту тему. Там есть рабочий метод.

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

Dark_Knight

Me, me and me.
Друг
4,067
2,082
Я в собейте нашел реализацию но там с асм вставками хрени, а гонщик давал тебе прям формулой которая высчитывает?
С плагин СДК
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;
}
 

AWRage

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