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

loganhackerdff

Известный
868
517
нашёл кароче функцию, думал она будет удалять масло на дорогах, типо в деревне там, но она нихуя не делает походу
C++:
void CShadows::RemoveOilInArea(float x1, float y1, float x2, float y2) {
    ((void(__cdecl *)(float, float, float, float))0x7074F0)(x1, y1, x2, y2);
}

а масло удалить я хочу
 
  • Ха-ха
Реакции: legendabrn

horacy

Известный
102
92
Итак, я расшифровал текст диалога с помощью компрессора строк, но по какой-то причине текст обрезается, как мне это исправить?
Samp 0.3dl, Взял компрессор по этой ссылке https://github.com/imring/RakHook/tree/master/RakNet

C++:
        case RPC_ShowDialog:
        {
            traceLastFunc("RPC_ShowDialog");
            if (cheat_state->_generic.cheat_panic_enabled)
                break;


                traceLastFunc("RPC_ShowDialog");
                /*
                {'onShowDialog',
                {dialogId = 'uint16'},
                {style = 'uint8'},
                {title = 'string8'},
                {input = 'string8'},
                {button2 = 'string8'},
                {text = 'encodedString4096'}}
                */
                
                BitStream    bsData(rpcParams->input, rpcParams->numberOfBitsOfData / 8, false);
                WORD dialogId;
                uint8_t style, titleLen, button1Len, button2Len, textLen;
                char title[257], button1[257], button2[257], text[4096];
                bsData.Read(dialogId);
                bsData.Read(style);
                bsData.Read(titleLen);
                bsData.Read(title, titleLen);
                title[titleLen] = '\0';
                bsData.Read(button1Len);
                bsData.Read(button1, button1Len);
                button1[button1Len] = '\0';
                bsData.Read(button2Len);
                bsData.Read(button2, button2Len);
                button2[button2Len] = '\0';
            
                
               bsData.Read(textLen);
               bsData.Read(text, textLen);
                text[textLen] = '\0';
                addMessageToChatWindow("Coded: %s", text);
                stringCompressor->DecodeString(text, 0x1000, &bsData, 0);
                addMessageToChatWindow("Decoded: %s", text);
x.png
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
Все ты правильно сделал по чтению. Одно сообщение в чате может быть до 144 символов и если при добавлении строки в чат в ней будут переносы, то автоматического разделение не будет
 

sc6ut

неизвестный
Модератор
382
1,075
Все ты правильно сделал по чтению. Одно сообщение в чате может быть до 144 символов и если при добавлении строки в чат в ней будут переносы, то автоматического разделение не будет
ниче правильно он читает.
bsData.Read(textLen); bsData.Read(text, textLen);
в RPC_ScrShowDialog текст диалога записан по другому и для его чтения надо использовать DecodeString. То как ты сделал неправильно, потому что своим "Read" в этих строках ты сдвинул курсор чтения и поэтому все поломалось. Зачем тебе вообще encoded текст? Вот правильный пример: https://www.blast.hk/threads/781/post-338475, но он для 0.3.7 r1, хз поменялось ли что то в 0.3dl, но думаю что нет.
 

horacy

Известный
102
92
ниче правильно он читает.

в RPC_ScrShowDialog текст диалога записан по другому и для его чтения надо использовать DecodeString. То как ты сделал неправильно, потому что своим "Read" в этих строках ты сдвинул курсор чтения и поэтому все поломалось. Зачем тебе вообще encoded текст? Вот правильный пример: https://www.blast.hk/threads/781/post-338475, но он для 0.3.7 r1, хз поменялось ли что то в 0.3dl, но думаю что нет.

У меня нет RPC_ScrShowDialog, только RPC_ShowDialog, поэтому я могу читать только через bsData.read, а не через params->bitStream->Read.
C++:
void HandleRPCPacketFunc(unsigned char id, RPCParameters *rpcParams, void(*callback) (RPCParameters *))
{
    StringCompressor::AddReference();
    StringTable::AddReference();
   
    if (!isCheatPanicEnabled())
    {
        if (set.netPatchAssoc[id][INCOMING_RPC] != nullptr && set.netPatchAssoc[id][INCOMING_RPC]->enabled)
            return;
    }



    if (rpcParams != nullptr && rpcParams->numberOfBitsOfData >= 8)
Кроме того, у меня нет структуры stSAMPDialog, но есть stDialogInfo, который содержит это:
C++:
struct stDialogInfo
{
    IDirect3DDevice9    *m_pD3DDevice;
    int    iTextPoxX;
    int    iTextPoxY;
    uint32_t    uiDialogSizeX;
    uint32_t    uiDialogSizeY;
    int    iBtnOffsetX;
    int    iBtnOffsetY;
    class _CDXUTDialog                        *pDialog;
    class _CDXUTListBox                        *pList;
    class _CDXUTIMEEditBox                        *pEditBox;
    int    iIsActive;
    int    iType;
    uint32_t    DialogID;
    char        pText[1000];
    uint32_t    uiTextWidth;
    uint32_t    uiTextHeight;
    char        szCaption[65];
    int        bServerside;
};
Я пытался сделать это на своей структуре, но это ничего не изменило, и при вставке структуры stSampdialog я мог только читать пустой текст.
Мне нужен текст диалога, так как никнеймы в списке игроков анонимны и были перемещены в диалог вместе с id, поэтому мне нужен текст диалога, чтобы прочитать, какой id имеет какой ник, а затем заменить никнеймы игроки.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

после загрузки samp происходит вылет игры, sampfuncs 0.3dl, отладчик выдал эти адреса. На mod_sa по умолчанию нет сбоя, что может быть причиной такого сбоя?
Код:
Exception thrown at location 0x03B1B396 (samp.dll) in gta_sa.exe: 0xC0000005: Access violation while reading at location 0x0029E868.
 
Последнее редактирование:

Dark_Knight

Me, me and me.
Друг
4,062
2,077
ниче правильно он читает.

в RPC_ScrShowDialog текст диалога записан по другому и для его чтения надо использовать DecodeString. То как ты сделал неправильно, потому что своим "Read" в этих строках ты сдвинул курсор чтения и поэтому все поломалось. Зачем тебе вообще encoded текст? Вот правильный пример: https://www.blast.hk/threads/781/post-338475, но он для 0.3.7 r1, хз поменялось ли что то в 0.3dl, но думаю что нет.
Точно. Там чтение в одну строку всего лишь) Оказался не прав) Но на счет вывода сообщений он весь текст с диалога в чат не выведет.
 

SobFoX;

Известный
108
77
У меня нет RPC_ScrShowDialog, только RPC_ShowDialog, поэтому я могу читать только через bsData.read, а не через params->bitStream->Read.
C++:
void HandleRPCPacketFunc(unsigned char id, RPCParameters *rpcParams, void(*callback) (RPCParameters *))
{
    StringCompressor::AddReference();
    StringTable::AddReference();
  
    if (!isCheatPanicEnabled())
    {
        if (set.netPatchAssoc[id][INCOMING_RPC] != nullptr && set.netPatchAssoc[id][INCOMING_RPC]->enabled)
            return;
    }



    if (rpcParams != nullptr && rpcParams->numberOfBitsOfData >= 8)
Кроме того, у меня нет структуры stSAMPDialog, но есть stDialogInfo, который содержит это:
C++:
struct stDialogInfo
{
    IDirect3DDevice9    *m_pD3DDevice;
    int    iTextPoxX;
    int    iTextPoxY;
    uint32_t    uiDialogSizeX;
    uint32_t    uiDialogSizeY;
    int    iBtnOffsetX;
    int    iBtnOffsetY;
    class _CDXUTDialog                        *pDialog;
    class _CDXUTListBox                        *pList;
    class _CDXUTIMEEditBox                        *pEditBox;
    int    iIsActive;
    int    iType;
    uint32_t    DialogID;
    char        pText[1000];
    uint32_t    uiTextWidth;
    uint32_t    uiTextHeight;
    char        szCaption[65];
    int        bServerside;
};
Я пытался сделать это на своей структуре, но это ничего не изменило, и при вставке структуры stSampdialog я мог только читать пустой текст.
Мне нужен текст диалога, так как никнеймы в списке игроков анонимны и были перемещены в диалог вместе с id, поэтому мне нужен текст диалога, чтобы прочитать, какой id имеет какой ник, а затем заменить никнеймы игроки.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

после загрузки samp происходит вылет игры, sampfuncs 0.3dl, отладчик выдал эти адреса. На mod_sa по умолчанию нет сбоя, что может быть причиной такого сбоя?
Код:
Exception thrown at location 0x03B1B396 (samp.dll) in gta_sa.exe: 0xC0000005: Access violation while reading at location 0x0029E868.
You need to hook up to some functions including the RPC call you get from a server in a different way and not of sobeit
 

Alvaro Hold

Новичок
4
1
Как сделать произведение определённой музыки во время показа загрузочного экрана ГТА на ASI (C++)?
 

Savchik Blazer

Но я, мечту свою лелея...
Проверенный
671
293
Как достать onfoot syns другого игрока и получить оттуда информацию?
 

sizeoftrickster

…And Megadeth For All?
Проверенный
121
436
Последнее редактирование:
  • Влюблен
Реакции: MeG@LaDo[N] ^_^

Savchik Blazer

Но я, мечту свою лелея...
Проверенный
671
293
Как рисоаать имгуи рендером вне окна имгуи(просто текст выводить)? ( sf api)
 

F0RQU1N and

Известный
1,310
494
Как рисоаать имгуи рендером вне окна имгуи(просто текст выводить)? ( sf api)
после нюфрейма вот пример а ваще можно было и гуглом воспользоватся =)

C++:
const auto drawlist = ImGui::GetBackgroundDrawList();

drawlist->AddRectFilled(ImVec2(0, 0), ImVec2(text_size.x + 20.0f, text_size.y + 20.0f), ImGui::GetColorU32(ImVec4(0.7, 0.7, 0.7, 0.65)), 3.0f);
drawlist->AddText(ImVec2(10.0f, 10.0f), ImGui::GetColorU32(ImVec4(1.0f, 1.0f, 1.0f, 1.0f)), test.data());