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

Rjx13

Известный
Проверенный
224
160
Как отловить сообщение "Этот игрок уже в тюрьме" ?
Код:
bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        DWORD color;
        DWORD strlen;
        char string[2048];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(strlen);
        params->bitStream->Read(string, strlen);
        string[strlen] = '\0';

        if (strstr(string, "Этот игрок уже в тюрьме") != 0) {

        }
    }
    return true;
}

SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
 
  • Нравится
Реакции: mrdiimax

AnWu

Guardian of Order
Всефорумный модератор
4,689
5,200
Спасибо, сеньор

Как выровнять текст по середине на титлере(заголовка) imgui?
upload_2019-1-28_14-38-42.png


В mainloop до регистрации callback"а Present:
Код:
ImGuiStyle& style = ImGui::GetStyle();
style.WindowTitleAlign = ImVec2(0.5f, 0.5f);
Вообще надо перед Init. Внутри контекста. иначе имгуи выдаст ошибку
 

mrdiimax

Известный
566
79
Код:
bool CALLBACK incomingRPC(stRakNetHookParams * params)
{
    if (params->packetId == ScriptRPCEnumeration::RPC_ScrClientMessage)
    {
        DWORD color;
        DWORD strlen;
        char string[2048];
        params->bitStream->ResetReadPointer();
        params->bitStream->Read(color);
        params->bitStream->Read(strlen);
        params->bitStream->Read(string, strlen);
        string[strlen] = '\0';

        if (strstr(string, "Этот игрок уже в тюрьме") != 0) {

        }
    }
    return true;
}

SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_INCOMING_RPC, incomingRPC);
А как выхукать инфу с диалога?
 

Stiopko

Известный
Проверенный
307
218
А как выхукать инфу с диалога?
C++:
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog) {
            uint16 wDialogID;
            UINT8 bDialogStyle;
            UINT8 bTitleLength;
            char szTitle[256];
            UINT8 bButton1Len;
            char szButton1[256];
            UINT8 bButton2Len;
            char szButton2[256];
            params->bitStream->ResetReadPointer();
            params->bitStream->Read(wDialogID); // Айди диалога
            params->bitStream->Read(bDialogStyle); // Стиль диалога
            params->bitStream->Read(bTitleLength); // Длина заголовка
            params->bitStream->Read(szTitle, bTitleLength); // Заголовок
            params->bitStream->Read(bButton1Len); // Длина названия кнопки 1
            params->bitStream->Read(szButton1, bButton1Len); // Название кнопки 1
            params->bitStream->Read(bButton2Len); // Длина названия кнопки 2
            params->bitStream->Read(szButton2, bButton2Len); // Название кнопки 2
            // Тут еще параметер CSTRING szInfo но я не знаю как его читать
           
        }
BrunoBM16/samp-packet-list(https://github.com/BrunoBM16/samp-packet-list/wiki/RPC-List#dialogs)
ахахах

Как отправить 6 listitem в диалогу? ( Есть диалог с 6ью пунктами нужно отправить 6ой)
C++:
BitStream bs;
                bs.ResetWritePointer();
                bs.Write(uint16(Айди далога));
                bs.Write(uint8(1)); // кнопка
                bs.Write(uint16(6)); // строка в списке начинается с нуля
                bs.Write(uint8(0)); // колличество символов в строке если диалог возврощает строку
                SF->getRakNet()->SendRPC(RPCEnumeration::RPC_DialogResponse, &bs);
BrunoBM16/samp-packet-list(https://github.com/BrunoBM16/samp-packet-list/wiki/RPC-List#senddialogresponse---62)
Помогите ктото пж с им гуйой
upload_2019-1-28_21-48-14.png

И как Перевести RGB или RGBA в ImVec4?
 
  • Нравится
Реакции: mrdiimax

Rjx13

Известный
Проверенный
224
160
C++:
if (params->packetId == ScriptRPCEnumeration::RPC_ScrShowDialog) {
            uint16 wDialogID;
            UINT8 bDialogStyle;
            UINT8 bTitleLength;
            char szTitle[256];
            UINT8 bButton1Len;
            char szButton1[256];
            UINT8 bButton2Len;
            char szButton2[256];
            params->bitStream->ResetReadPointer();
            params->bitStream->Read(wDialogID); // Айди диалога
            params->bitStream->Read(bDialogStyle); // Стиль диалога
            params->bitStream->Read(bTitleLength); // Длина заголовка
            params->bitStream->Read(szTitle, bTitleLength); // Заголовок
            params->bitStream->Read(bButton1Len); // Длина названия кнопки 1
            params->bitStream->Read(szButton1, bButton1Len); // Название кнопки 1
            params->bitStream->Read(bButton2Len); // Длина названия кнопки 2
            params->bitStream->Read(szButton2, bButton2Len); // Название кнопки 2
            // Тут еще параметер CSTRING szInfo но я не знаю как его читать
          
        }
BrunoBM16/samp-packet-list(https://github.com/BrunoBM16/samp-packet-list/wiki/RPC-List#dialogs)

C++:
BitStream bs;
                bs.ResetWritePointer();
                bs.Write(uint16(Айди далога));
                bs.Write(uint8(1)); // кнопка
                bs.Write(uint16(6)); // строка в списке начинается с нуля
                bs.Write(uint8(0)); // колличество символов в строке если диалог возврощает строку
                SF->getRakNet()->SendRPC(RPCEnumeration::RPC_DialogResponse, &bs);
BrunoBM16/samp-packet-list(https://github.com/BrunoBM16/samp-packet-list/wiki/RPC-List#senddialogresponse---62)
Помогите ктото пж с им гуйой
Посмотреть вложение 24464
И как Перевести RGB или RGBA в ImVec4?
Я уже отвечал на подобный вопрос. Ищи мое сообщение с аттачем собранного проекта.

Код:
ImGui::ColorConvertU32ToFloat4();
 
  • Нравится
Реакции: Stiopko

Stiopko

Известный
Проверенный
307
218
Я уже отвечал на подобный вопрос. Ищи мое сообщение с аттачем собранного проекта.

Код:
ImGui::ColorConvertU32ToFloat4();

Я нашел, у меня подключено так же само как и у тебя в проекте, но работает только у тебя?

C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1

#include <windows.h>
#include <assert.h>
#include <ctime>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

#include "imgui/imgui.h"
#include "imgui/imgui_impl_dx9.h"
#include "imgui/imgui_impl_win32.h"
#include <d3d9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <tchar.h>
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

#pragma comment(lib, "User32.lib")
#pragma comment(lib, "advapi32.lib")

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 (mGuiAutoMex->menuState) {
            ImGui::Begin("AutoMex by Stiopko", &mGuiAutoMex->toggleMenuState, ImVec2(305, 160), 0.8f, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoResize);
            {
                if (ImGui::Checkbox("State", &mGuiAutoMex->autoMex.state)) {
                    SF->getSAMP()->getChat()->AddChatMessage(-1, "bb");
                }
               
            }
            ImGui::End();
        }
        ImGui::EndFrame();
        ImGui::Render();
        ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
        SF->getRender()->EndRender();
    }
    return true;
}

HRESULT CALLBACK Reset(D3DPRESENT_PARAMETERS* pPresentationParameters)
{
    ImGui_ImplDX9_InvalidateDeviceObjects();
    return true;
}

bool CALLBACK WndProcHandler(HWND hwd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    ImGui_ImplWin32_WndProcHandler(hwd, msg, wParam, lParam);
    return true;
}
void CALLBACK endProc() {
    mGuiAutoMex->autoMex.state = false;
    delete mGuiAutoMex;
    ImGui_ImplDX9_Shutdown();
    ImGui_ImplWin32_Shutdown();
    ImGui::DestroyContext();
}

Твой проект

C++:
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1

#include "imgui.h"
#include "imgui_impl_dx9.h"
#include "imgui_impl_win32.h"
#include <d3d9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <tchar.h>
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

#include <windows.h>
#include <string>
#include <assert.h>

#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"

C++:
bool CALLBACK WndProcHandler(HWND hwd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    ImGui_ImplWin32_WndProcHandler(hwd, msg, wParam, lParam);
    return true;
}

HRESULT CALLBACK Reset(D3DPRESENT_PARAMETERS* pPresentationParameters)
{
    ImGui_ImplDX9_InvalidateDeviceObjects();
    return true;
}

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::End();
        }
        ImGui::EndFrame();
        ImGui::Render();
        ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());

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

void CALLBACK PluginFree()
{
    ImGui_ImplDX9_Shutdown();
    ImGui_ImplWin32_Shutdown();
    ImGui::DestroyContext();
}
 

mrdiimax

Известный
566
79
Код:
    if (SF->getSAMP()->getPlayers()->pLocalPlayer->iIsActive = 1) {
            int my_ping = SF->getSAMP()->getPlayers()->iLocalPlayerPing;
            int my_score = SF->getSAMP()->getPlayers()->iLocalPlayerScore;
            int my_id = SF->getSAMP()->getPlayers()->sLocalPlayerID;
            char *my_nick = SF->getSAMP()->getPlayers()->szLocalPlayerName;
            SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "Твой пинг: %i, твой уровень: %i, твой ник: %s"), my_ping, my_score, my_id, my_nick;
        }
Так не сработало, перед спавном делает это
 

Woofing Giraffe

Активный
402
49
Код:
// long double __thiscall stSAMPVehicle::getDistanceToLocalPlayer(stSAMPVehicle *this)
Код:
long double(*func)(stSAMPVehicle*) = (long double(*)(stSAMPVehicle*))(SF->getSAMP()->getSAMPAddr() + 0x9A700);
long double result = func(SF->getSAMP()->getVehicles()->pSAMP_Vehicle[1]);
Вроде делаю всё правильно, однако цифра неверная выходит. Что не так? (кар существует, уже делал всевозможные проверки)
 
Последнее редактирование:

Rjx13

Известный
Проверенный
224
160
Код:
    if (SF->getSAMP()->getPlayers()->pLocalPlayer->iIsActive = 1) {
            int my_ping = SF->getSAMP()->getPlayers()->iLocalPlayerPing;
            int my_score = SF->getSAMP()->getPlayers()->iLocalPlayerScore;
            int my_id = SF->getSAMP()->getPlayers()->sLocalPlayerID;
            char *my_nick = SF->getSAMP()->getPlayers()->szLocalPlayerName;
            SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "Твой пинг: %i, твой уровень: %i, твой ник: %s"), my_ping, my_score, my_id, my_nick;
        }
Так не сработало, перед спавном делает это
Потому что если я написал, что надо вот так "SF->getSAMP()->getPlayers()->pLocalPlayer->iIsActive != 1" значит так и должно быть.