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

-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

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

Loku

Известный
30
7
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!
 
Последнее редактирование:

Неадекватная сова

Известный
Проверенный
286
231
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 · Просмотры: 146

Неадекватная сова

Известный
Проверенный
286
231
Скомпилировал проект из гайда по 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;
}
 

CleanLegend

Известный
Всефорумный модератор
481
939
@Harryss http://cppstudio.com/post/9507/
Зачем ты тратишь своё время напрасно? После ответа на этот вопрос будет еще похожий вопрос, это всё из базового уровня.
не зная базовой информации, ты не сможешь идти дальше.
Хочешь узнать что такое глобальная переменная? - http://cppstudio.com/post/415/