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

CleanLegend

Известный
Всефорумный модератор
476
930
Вызываем вот такое:
C++:
void SendChat(std::string msg)
{
    typedef int(__stdcall* SendMsg)(const char*);
    static SendMsg sendMsg = (SendMsg)(dwSAMP + 0x68E65);
    sendMsg(msg.c_str());
}
Получаем вот такое:
Посмотреть вложение 76066
И чё делать? 😁
@KiN4StAt @checkdasound @Cake_ @redcode помогите плиз
Она вроде из класса, поэтому нужно еще передавать указатель, а у тебя идет чисто аргумент в виде указателя на текст
 

Gunborg Johansson

Потрачен
32
21
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Она вроде из класса, поэтому нужно еще передавать указатель, а у тебя идет чисто аргумент в виде указателя на текст
Then it is a __thiscall and not __stdcall. It needs to pass a pointer to CChat.
 

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,637
2,487
R3 насколько я помню
изучай
 

Vintik

Мечтатель
Проверенный
1,488
953
Она вроде из класса, поэтому нужно еще передавать указатель, а у тебя идет чисто аргумент в виде указателя на текст
C++:
void SendChat(const std::string& text)
    {
        typedef int(__stdcall* SendCommand)(const char*);
        typedef int(__stdcall* SendText)(const char*);
        static SendCommand sendCommand = (SendCommand)((DWORD)GetModuleHandle("samp.dll") + 0x65C60);
        static SendText sendText = (SendText)((DWORD)GetModuleHandle("samp.dll") + 0x57F0);

        /*
        какой-нибудь способ конвертировать std::string -> const char*, чтобы оно не крашило через n повторений
        */

        if (text[0] == '/')
            sendCommand(cstr);
        else
           sendText(cstr);
    }
Почему то тут не передаёт человек только указатель на строку и у него работает (если что, из этой темы)
 

SR_team

like pancake
BH Team
4,720
6,373
R3 насколько я помню
изучай
R2 это
1605606401340.png
 
  • Вау
Реакции: imring

Gunborg Johansson

Потрачен
32
21
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
void SendChat(const std::string& text)
    {
        typedef int(__stdcall* SendCommand)(const char*);
        typedef int(__stdcall* SendText)(const char*);
        static SendCommand sendCommand = (SendCommand)((DWORD)GetModuleHandle("samp.dll") + 0x65C60);
        static SendText sendText = (SendText)((DWORD)GetModuleHandle("samp.dll") + 0x57F0);

        /*
        какой-нибудь способ конвертировать std::string -> const char*, чтобы оно не крашило через n повторений
        */

        if (text[0] == '/')
            sendCommand(cstr);
        else
           sendText(cstr);
    }
Почему то тут не передаёт человек только указатель на строку и у него работает (если что, из этой темы)
C++:
const uint32_t sampHandle = ...;

void AddRecail(const char *const recailString)
{
    using AddRecail_t = void(__thiscall *)(class CInput *, const char *const);
    auto addRecail{reinterpret_cast<AddRecail_t>(sampHandle + 0x68E60)};
   
    addRecail(*reinterpret_cast<class CInput **>(sampHandle + 0x26E8CC), recailString);
}
 
Последнее редактирование:

Gunborg Johansson

Потрачен
32
21
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
const uint32_t sampHandle = ...;

void AddRecail(const char *const recailString)
{
    using AddRecail_t = void(__thiscall *)(class CInput *, const char *const);
    auto addRecail{reinterpret_cast<AddRecail_t>(sampHandle + 0x68E60)};
  
    addRecail(*reinterpret_cast<class CInput **>(sampHandle + 0x26E8CC), recailString);
}
Just don't forget to check CInput for nullptr.