Другое С/С++ Вопрос - Ответ

BlackKnigga

Известный
BH Team
922
445
приветствую всех.
можете подсказать почему пропадают ники и хп бар игроков? так же лейблы. в cr-mp
все что я нарыл, это то что при показе imgui вся эта лабуда случается.
без показа imgui все в норме, при открытии меню или показа боттом бара все пропадает.
p.s исходники слонобойки
Была такая штука, неверно сохранялись\восстанавливались стейты девайса. В последнем имгуи таких проблем нет.
 
  • Нравится
Реакции: mazec0de

C&J

Известный
41
22
Всем хай,использую хук на HandleRPCPacketFunc в двух плагинах и получается,что он работает то в одном плагине,то в другом.
C++:
#define SAMP_HOOKENTER_HANDLE_RPC                    0x3743D
#define SAMP_HOOKENTER_HANDLE_RPC2                    0x373C9

#define SAMP_HOOKEXIT_HANDLE_RPC                    0x37443
#define SAMP_HOOKEXIT_HANDLE_RPC2                    0x37451

void HandleRPCPacketFunc(unsigned char id, RPCParameters *rpcParams, void(*callback) (RPCParameters *))
{
    if (rpcParams != nullptr && rpcParams->numberOfBitsOfData >= 8)
    {
        BitStream    bsData(rpcParams->input, rpcParams->numberOfBitsOfData / 8, false);
        switch (id)
        {
            case  RPC_DeathMessage:
            {
                pSAMP->addMessageToChat(-1, "plugin ONE");
                int16_t        plaerid, killerid;
                int8_t            resaon;
            
                bsData.ResetReadPointer();
                bsData.Read(killerid);
                bsData.Read(plaerid);
                bsData.Read(resaon);
                break;
            }

        }
    }
    callback(rpcParams);
}
void _declspec (naked) hook_handle_rpc_packet(void)
{
    static RPCParameters *pRPCParams = nullptr;
    static RPCNode *pRPCNode = nullptr;
    static DWORD dwTmp = 0;

    __asm pushad;
    __asm mov pRPCParams, eax;
    __asm mov pRPCNode, edi;

    HandleRPCPacketFunc(pRPCNode->uniqueIdentifier, pRPCParams, pRPCNode->staticFunctionPointer);
    dwTmp = pSAMP->getSAMPAddr() + SAMP_HOOKEXIT_HANDLE_RPC;

    __asm popad;
    __asm add esp, 4
    __asm jmp dwTmp;
}
void _declspec (naked) hook_handle_rpc_packet2(void)
{
    static RPCParameters *pRPCParams = nullptr;
    static RPCNode *pRPCNode = nullptr;
    static DWORD dwTmp = 0;

    __asm pushad;
    __asm mov pRPCParams, ecx;
    __asm mov pRPCNode, edi;

    HandleRPCPacketFunc(pRPCNode->uniqueIdentifier, pRPCParams, pRPCNode->staticFunctionPointer);
    dwTmp = pSAMP->getSAMPAddr() + SAMP_HOOKEXIT_HANDLE_RPC2;

    __asm popad;
    __asm jmp dwTmp;
}



void InstallAllHooks()
{
    static int    iSAMPHooksInstalled;
    if (!iSAMPHooksInstalled)
    {
        if (pSAMP->getInfo() == NULL)
            return;
/*
https://github.com/sr-tream/UniLib/blob/master/UniLib/CHooks.hpp
*/
        HookRPC1 = new CHookJmp(pSAMP->getSAMPAddr() + SAMP_HOOKENTER_HANDLE_RPC, hook_handle_rpc_packet, 6); //
        HookRPC2 = new CHookJmp(pSAMP->getSAMPAddr() + SAMP_HOOKENTER_HANDLE_RPC2, hook_handle_rpc_packet2, 8);
        iSAMPHooksInstalled = 1;
    }


}
у второго плагина код один и тот же,за исключением другого RPC.
Я понимаю,что идёт конфликт хуков,но как его исправить?
 
Последнее редактирование:

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
проверять если в месте хука уже есть хук то после выполнения своего выполнять чужой который был до тебя
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Ranto

Участник
45
1
Добрый день, пришёл к вам за помощью так как вообще не втыкаю в чем проблема. Суть в том что я хочу сделать программу которая берёт функции с DLL Библиотеки. 1. Создал .exe файл (консоль) и DLL Библиотеку с пару функций и соединил библиотеку к .exe файлу, но возникли две ошибки с которыми я явно не понимаю как работать, надеюсь на вашу помощь. Заранее спасибо!
Если надо могу всё подробно описать что за функции и тд и тп.
 

Вложения

  • Скриншот 03-07-2018 134318.png
    Скриншот 03-07-2018 134318.png
    6.3 KB · Просмотры: 297

-raymond-

Известный
110
9
как проверить всех игроков в определенном квадрате, в квадрате типо гангзоны?
 

iAmerican

Известный
Друг
615
257
как проверить всех игроков в определенном квадрате, в квадрате типо гангзоны?
C++:
//Цикл всех игроков

//получение их координат ...

// (x1,y1) - корды левой верхней точки гангзоны
// (x2,y2) - корды правой нижней точки гангзоны
// (x,y) - координаты игроков

if (x>=x1 && y>=y1 && x<=x2 && y<=y2)
    cout << "игрок в квадрате";

Добрый день, пришёл к вам за помощью так как вообще не втыкаю в чем проблема. Суть в том что я хочу сделать программу которая берёт функции с DLL Библиотеки. 1. Создал .exe файл (консоль) и DLL Библиотеку с пару функций и соединил библиотеку к .exe файлу, но возникли две ошибки с которыми я явно не понимаю как работать, надеюсь на вашу помощь. Заранее спасибо!
Если надо могу всё подробно описать что за функции и тд и тп.
Библиотеки не подключил.
 
Последнее редактирование модератором:

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
получить указатель на строку с текущей директорией и прочитать только первый байт))
 

-raymond-

Известный
110
9
как отследить что игрок ввел определенную команду (отсканировав всех игроков)?
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
так нельзя