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

Harryss

Участник
233
26
Еще один вопрос по Visual Studio. С готовым проектом попытался пересобрать сборку - получил кучу ошибок. По-видимости, в каком-то месте неверно указан путь ко всем этим библиотекам, однако пересмотрев уроки и пособия я не нашел пригодной инструкции.
 

-raymond-

Известный
110
9
из-за чего краш?
C++:
bool CALLBACK hookBullet(stRakNetHookParams *params)
{
    if (params->packetId == PacketEnumeration::ID_BULLET_SYNC)
    {
        if (set.status_saim)
        {

            stBulletData data = { 0 };
            byte packet;

            int iID = GetPlayerTarget(set.fview);
            float TargetPos[3], Spread[3];

            for (short x = 0; x < 3; x++)
                TargetPos[x] = SF->getSAMP()->getPlayers()->pRemotePlayer[iID]->pPlayerData->fOnFootPos[x];

            CalculateSpreadOffset(iID, TargetPos, Spread);

            params->bitStream->ResetReadPointer();
            params->bitStream->Read(packet);
            params->bitStream->Read((PCHAR)&data, sizeof(stBulletData));
            params->bitStream->ResetReadPointer();

            data.fTarget[0] = TargetPos[0];
            data.fTarget[1] = TargetPos[1];
            data.fTarget[2] = TargetPos[2];

            data.fCenter[0] = Spread[0];
            data.fCenter[1] = Spread[1];
            data.fCenter[2] = Spread[2];

            data.byteType = 1;
            data.sTargetID = iID;


            params->bitStream->ResetWritePointer();
            params->bitStream->Write(packet);
            params->bitStream->Write((PCHAR)&data, sizeof(stBulletData));
        }
    };
    return true;
};

SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_OUTCOMING_PACKET, hookBullet);
 

jenekbueno

Известный
157
69
ты вообще знаешь как хуки работают?
ну лично я когда ставил их то у меня абсолютно не было разницы что он есть маинзалуп что его нет)
я про свои хуки, а не про registerCallback)
 

Loku

Известный
24
0
Hey, I would like to know how it is possible to write a chat message in the input but without sending it to server, until you press enter (to send it obviously). I mean, like pressing t manually and writing something in the chat, but in code basically. Also I would like to clear the input if there's text on it, before writing something in it. Manually that would be pressing t, control + A and delete, there must be something to do these things for sure...
Basically this:
0B76: samp set_chat_input_text 1@

EDIT: What I wanted is SF->getSAMP()->getChat()->SetChatInputText(), ty to the guy below btw!
 
Последнее редактирование:

Rjx13

Известный
Проверенный
224
160
Hey, I would like to know how it is possible to write a chat message in the input but without sending it to server, until you press enter (to send it obviously). I mean, like pressing t manually and writing something in the chat, but in code basically. Also I would like to clear the input if there's text on it, before writing something in it. Manually that would be pressing t, control + A and delete, there must be something to do these things for sure...
Basically this:
0B76: samp set_chat_input_text 1@
?
Код:
void CALLBACK sendChatMessage(string message) {
    BitStream bsClass;
    bsClass.Write((byte)message.length());
    bsClass.Write(message.c_str(), message.length());
    SF->getRakNet()->SendRPC(RPC_Chat, &bsClass);
}
 
  • Нравится
Реакции: Loku

Harryss

Участник
233
26
Скомпилировал проект из гайда по ImGui, столкнулся с такой проблемой. Символы консоли SF пикселизируются, а само ImGui теряет свой цвет. Как решить?
 

Вложения

  • Безымянный.png
    Безымянный.png
    15 KB · Просмотры: 145

Rjx13

Известный
Проверенный
224
160
Скомпилировал проект из гайда по ImGui, столкнулся с такой проблемой. Символы консоли SF пикселизируются, а само ImGui теряет свой цвет. Как решить?
Ты скорее всего скачал уже готовый проект, только в нем такой баг. Собери с нуля весь проект сам
 
  • Нравится
Реакции: Harryss

Harryss

Участник
233
26
Ты скорее всего скачал уже готовый проект, только в нем такой баг. Собери с нуля весь проект сам
Переделал под новый. Столкнулся с неопределенным идентификатором activew, который отвечает за активность ImGui окна. C++ практически не знаю, пытался объявить его при загрузке в mainloop'е, не вышло.
C++:
bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion)
{
    if (SUCCEEDED(SF->getRender()->BeginRender()))
    {

        ImGui_ImplDX9_NewFrame();
        ImGui_ImplWin32_NewFrame();
        ImGui::NewFrame();
        if (activew)
        {
            ImGui::Begin("ImGui меню", &activew, ImVec2(305, 160), 0.8f, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoResize);
            {
                ImGui::Text("Hello world!");
            }
            ImGui::End();
        }
        ImGui::EndFrame();
        ImGui::Render();
        ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());

        SF->getRender()->EndRender();
    }
    return true;
}
 

Harryss

Участник
233
26
Код:
bool activew = true;
Не могу догадаться, где ее будет правильным объявить. Уже попробовал и в mainloop'e, и вне блоков, не получилось.
C++:
bool CALLBACK Present(CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion)
{
    if (SUCCEEDED(SF->getRender()->BeginRender()))
    {

        ImGui_ImplDX9_NewFrame();
        ImGui_ImplWin32_NewFrame();
        ImGui::NewFrame();
        bool activew = true;
        if (!activew)
        {
            ImGui::Begin("ImGui меню", &activew, ImVec2(305, 160), 0.8f, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoResize);
            {
                ImGui::Text("Hello world!");
            }
            ImGui::End();
            activew = false;
        }
        ImGui::EndFrame();
        ImGui::Render();
        ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());

        SF->getRender()->EndRender();
    }
    return true;
}