в диалогах с инпутом не работаетКод не мой, главное - работает.
в диалогах с инпутом не работаетКод не мой, главное - работает.
void sendDialog(uint16_t DialogId, uint8_t Button, uint16_t ListboxId, uint8_t strLen, char* string)
{
BitStream bs;
bs.ResetWritePointer();
bs.Write(DialogId);
bs.Write(Button);
bs.Write(ListboxId);
bs.Write(strLen);
bs.Write(string);
SF->getRakNet()->SendRPC(RPCEnumeration::RPC_DialogResponse, &bs);
}
void CALLBACK log(std::string param)
{
char logStr[20];
sscanf(param.c_str(), "%s", &logStr);
sendDialog(SF->getSAMP()->getDialog()->DialogID, 1, 0, sizeof(logStr), logStr);
//SF->getSAMP()->getDialog()->Close(0);
}
длина строки, а не размер массиваne
C++:void sendDialog(uint16_t DialogId, uint8_t Button, uint16_t ListboxId, uint8_t strLen, char* string) { BitStream bs; bs.ResetWritePointer(); bs.Write(DialogId); bs.Write(Button); bs.Write(ListboxId); bs.Write(strLen); bs.Write(string); SF->getRakNet()->SendRPC(RPCEnumeration::RPC_DialogResponse, &bs); } void CALLBACK log(std::string param) { char logStr[20]; sscanf(param.c_str(), "%s", &logStr); sendDialog(SF->getSAMP()->getDialog()->DialogID, 1, 0, sizeof(logStr), logStr); //SF->getSAMP()->getDialog()->Close(0); }
void sendDialog(uint16_t DialogId, uint8_t Button, uint16_t ListboxId, char* string)
{
BitStream bs;
bs.ResetWritePointer();
bs.Write(DialogId);
bs.Write(Button);
bs.Write(ListboxId);
bs.Write(strlen(string));
bs.Write(string);
SF->getRakNet()->SendRPC(RPCEnumeration::RPC_DialogResponse, &bs);
}
C++:void sendDialog(uint16_t DialogId, uint8_t Button, uint16_t ListboxId, char* string) { BitStream bs; bs.ResetWritePointer(); bs.Write(DialogId); bs.Write(Button); bs.Write(ListboxId); bs.Write(strlen(string)); bs.Write(string); SF->getRakNet()->SendRPC(RPCEnumeration::RPC_DialogResponse, &bs); }
void sendDialog(short id, char button, short listitem, const char *input)
{
BitStream bs;
bs.ResetWritePointer();
bs.Write(id);
bs.Write(button);
bs.Write(listitem);
bs.Write((BYTE)strlen(input));
bs.Write(input, strlen(input));
SF->getRakNet()->SendRPC(RPCEnumeration::RPC_DialogResponse, &bs);
}
void CALLBACK log(std::string param)
{
sendDialog(SF->getSAMP()->getDialog()->DialogID, 1, 0, param.c_str());
}
как проверить что зажаты в раз две клавишы с помощью sf api?
если нельзя то как без него
if(SF->getGAME()->isKeyDown(VK_F2) && SF->getGAME()->isKeyPressed(VK_F4)) {
}
вы заебали уже скидывать эту хуйню сюда.Беда такого рода, при компиляции .sf плагина в листе ошибок около 2.6к, будто что-то не подключено, при открытии проекта внизу вот что:
Посмотреть вложение 22874
#include "cInclude.h"
bool Create = false;
HRESULT APIENTRY myPresent(IDirect3DDevice9 * m_pDevice, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion)
{
if (Create == false)
{
ImGui_Init(hWnd, m_pDevice);
Create = true;
}
else
{
ImGui_NewFrame();
if (bShowWindow)
{
DWORD dwFlag = ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_ShowBorders | ImGuiWindowFlags_NoSavedSettings;
ImGui::Begin("legitXXX" , &bShowWindow, ImVec2(243, 200), 1.0f, dwFlag);
{
ImGui::Button("A", ImVec2(100.0f, 30.0f));
ImGui::SameLine();
if (ImGui::Button("D", ImVec2(100.0f, 30.0f)))
{
ImGui::RadioButton("A", true);
ImGui::RadioButton("A", false);
}
}
ImGui::End();
}
ImGui::Render();
}
return oPresent->GetTrampoline()(m_pDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
}
HRESULT APIENTRY myReset(IDirect3DDevice9* m_pDevice, D3DPRESENT_PARAMETERS *pPresentationParameters)
{
if (!Create)
return m_pDevice->Reset(pPresentationParameters);
ImGui_InvalidateDeviceObjects();
auto result = oReset->GetTrampoline()(m_pDevice, pPresentationParameters);
ImGui_CreateDeviceObjects();
return result;
}
bool Init()
{
bool bResult = false;
HMODULE hD3d9 = NULL;
if (hD3d9 = GetModuleHandleA("d3d9.dll"))
{
using oDirect3DCreate9Ex = HRESULT(WINAPI*)(UINT, IDirect3D9Ex**);
oDirect3DCreate9Ex pDirect3DCreate9Ex = (oDirect3DCreate9Ex)GetProcAddress(hD3d9, "Direct3DCreate9Ex");
if (pDirect3DCreate9Ex)
{
HRESULT hr = D3D_OK;
LPDIRECT3D9EX d3d9ex = nullptr;
if (SUCCEEDED(hr = pDirect3DCreate9Ex(D3D_SDK_VERSION, &d3d9ex)))
{
D3DPRESENT_PARAMETERS dp;
ZeroMemory(&dp, sizeof(dp));
dp.Windowed = 1;
dp.SwapEffect = D3DSWAPEFFECT_FLIP;
dp.BackBufferFormat = D3DFMT_A8R8G8B8;
dp.BackBufferCount = 1;
dp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
IDirect3DDevice9Ex *mDevice = nullptr;
if (SUCCEEDED(hr = d3d9ex->CreateDeviceEx(D3DADAPTER_DEFAULT, D3DDEVTYPE_NULLREF, NULL, D3DCREATE_HARDWARE_VERTEXPROCESSING, &dp, NULL, &mDevice)))
{
bResult = true;
PVOID* vtbl = *reinterpret_cast<PVOID**>(mDevice);
auto& pContext = cContext::GetInstance();
pContext.ApplyDetour<PresentFn>(static_cast<PresentFn>(vtbl[17]), reinterpret_cast<PresentFn>(myPresent), &oPresent);
pContext.ApplyDetour<ResetFn>(static_cast<ResetFn>(vtbl[16]), reinterpret_cast<ResetFn>(myReset), &oReset);
mDevice->Release();
}
d3d9ex->Release();
}
}
}
return bResult;
}
unsigned WINAPI GUIDX(LPVOID lpParam)
{
hWnd = FindWindowA(NULL,"D3D9 Test");
if (hWnd)
m_pWindowProc = (WNDPROC)SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)myWndProc);
while (!Init())
Sleep(200);
return 0L;
}
BOOL APIENTRY DllMain(
_In_ HINSTANCE hinstDLL,
_In_ DWORD fdwReason,
_In_ LPVOID lpvReserved) {
DisableThreadLibraryCalls(hinstDLL);
switch (fdwReason) {
case DLL_PROCESS_ATTACH: {
_beginthreadex(NULL, NULL, GUIDX, NULL, NULL, NULL);
}
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)m_pWindowProc);
break;
}
return TRUE;
}
C++:if (ImGui::Button("D", ImVec2(100.0f, 30.0f))) { ImGui::RadioButton("A", true); ImGui::RadioButton("A", false); }
bool Active = false; // возле bool Create
if (ImGui::Button("D", ImVec2(100.0f, 30.0f))) Active ^= true;
if(Active)
{
ImGui::RadioButton("A", true);
ImGui::RadioButton("A", false);
}
#include "cInclude.h"
bool Create = false;
bool Active = false;
HRESULT APIENTRY myPresent(IDirect3DDevice9 * m_pDevice, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion)
{
if (Create == false)
{
ImGui_Init(hWnd, m_pDevice);
Create = true;
}
else
{
ImGui_NewFrame();
if (bShowWindow)
{
DWORD dwFlag = ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_ShowBorders | ImGuiWindowFlags_NoSavedSettings;
ImGui::Begin("legitXXX" , &bShowWindow, ImVec2(243, 200), 1.0f, dwFlag);
{
ImGui::Button("A", ImVec2(100.0f, 30.0f));
ImGui::SameLine();
if (ImGui::Button("D", ImVec2(100.0f, 30.0f))) Active ^= true;
if (Active)
{
static bool check = true;
if (ImGui::Checkbox("A", &check))
{
static bool check = false;
}
}
}
ImGui::End();
}
ImGui::Render();
}
return oPresent->GetTrampoline()(m_pDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
}
HRESULT APIENTRY myReset(IDirect3DDevice9* m_pDevice, D3DPRESENT_PARAMETERS *pPresentationParameters)
{
if (!Create)
return m_pDevice->Reset(pPresentationParameters);
ImGui_InvalidateDeviceObjects();
auto result = oReset->GetTrampoline()(m_pDevice, pPresentationParameters);
ImGui_CreateDeviceObjects();
return result;
}
bool Init()
{
bool bResult = false;
HMODULE hD3d9 = NULL;
if (hD3d9 = GetModuleHandleA("d3d9.dll"))
{
using oDirect3DCreate9Ex = HRESULT(WINAPI*)(UINT, IDirect3D9Ex**);
oDirect3DCreate9Ex pDirect3DCreate9Ex = (oDirect3DCreate9Ex)GetProcAddress(hD3d9, "Direct3DCreate9Ex");
if (pDirect3DCreate9Ex)
{
HRESULT hr = D3D_OK;
LPDIRECT3D9EX d3d9ex = nullptr;
if (SUCCEEDED(hr = pDirect3DCreate9Ex(D3D_SDK_VERSION, &d3d9ex)))
{
D3DPRESENT_PARAMETERS dp;
ZeroMemory(&dp, sizeof(dp));
dp.Windowed = 1;
dp.SwapEffect = D3DSWAPEFFECT_FLIP;
dp.BackBufferFormat = D3DFMT_A8R8G8B8;
dp.BackBufferCount = 1;
dp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
IDirect3DDevice9Ex *mDevice = nullptr;
if (SUCCEEDED(hr = d3d9ex->CreateDeviceEx(D3DADAPTER_DEFAULT, D3DDEVTYPE_NULLREF, NULL, D3DCREATE_HARDWARE_VERTEXPROCESSING, &dp, NULL, &mDevice)))
{
bResult = true;
PVOID* vtbl = *reinterpret_cast<PVOID**>(mDevice);
auto& pContext = cContext::GetInstance();
pContext.ApplyDetour<PresentFn>(static_cast<PresentFn>(vtbl[17]), reinterpret_cast<PresentFn>(myPresent), &oPresent);
pContext.ApplyDetour<ResetFn>(static_cast<ResetFn>(vtbl[16]), reinterpret_cast<ResetFn>(myReset), &oReset);
mDevice->Release();
}
d3d9ex->Release();
}
}
}
return bResult;
}
unsigned WINAPI GUIDX(LPVOID lpParam)
{
hWnd = FindWindowA(NULL,"D3D9 Test");
if (hWnd)
m_pWindowProc = (WNDPROC)SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)myWndProc);
while (!Init())
Sleep(200);
return 0L;
}
BOOL APIENTRY DllMain(
_In_ HINSTANCE hinstDLL,
_In_ DWORD fdwReason,
_In_ LPVOID lpvReserved) {
DisableThreadLibraryCalls(hinstDLL);
switch (fdwReason) {
case DLL_PROCESS_ATTACH: {
_beginthreadex(NULL, NULL, GUIDX, NULL, NULL, NULL);
}
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)m_pWindowProc);
break;
}
return TRUE;
}
Основы языка учи.может кто объяснить как работать с checkbox`ами? хочу сделать примерно так: чекбокс он то "моя фнука", если чекбокс офф то "моя функа офф". и ещё, как выровнять этот текст возле чекбокса? p.s checkbox от пасты индиго
Посмотреть вложение 22890
C++:#include "cInclude.h" bool Create = false; bool Active = false; HRESULT APIENTRY myPresent(IDirect3DDevice9 * m_pDevice, CONST RECT* pSourceRect, CONST RECT* pDestRect, HWND hDestWindowOverride, CONST RGNDATA* pDirtyRegion) { if (Create == false) { ImGui_Init(hWnd, m_pDevice); Create = true; } else { ImGui_NewFrame(); if (bShowWindow) { DWORD dwFlag = ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_ShowBorders | ImGuiWindowFlags_NoSavedSettings; ImGui::Begin("legitXXX" , &bShowWindow, ImVec2(243, 200), 1.0f, dwFlag); { ImGui::Button("A", ImVec2(100.0f, 30.0f)); ImGui::SameLine(); if (ImGui::Button("D", ImVec2(100.0f, 30.0f))) Active ^= true; if (Active) { static bool check = true; if (ImGui::Checkbox("A", &check)) { static bool check = false; } } } ImGui::End(); } ImGui::Render(); } return oPresent->GetTrampoline()(m_pDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion); } HRESULT APIENTRY myReset(IDirect3DDevice9* m_pDevice, D3DPRESENT_PARAMETERS *pPresentationParameters) { if (!Create) return m_pDevice->Reset(pPresentationParameters); ImGui_InvalidateDeviceObjects(); auto result = oReset->GetTrampoline()(m_pDevice, pPresentationParameters); ImGui_CreateDeviceObjects(); return result; } bool Init() { bool bResult = false; HMODULE hD3d9 = NULL; if (hD3d9 = GetModuleHandleA("d3d9.dll")) { using oDirect3DCreate9Ex = HRESULT(WINAPI*)(UINT, IDirect3D9Ex**); oDirect3DCreate9Ex pDirect3DCreate9Ex = (oDirect3DCreate9Ex)GetProcAddress(hD3d9, "Direct3DCreate9Ex"); if (pDirect3DCreate9Ex) { HRESULT hr = D3D_OK; LPDIRECT3D9EX d3d9ex = nullptr; if (SUCCEEDED(hr = pDirect3DCreate9Ex(D3D_SDK_VERSION, &d3d9ex))) { D3DPRESENT_PARAMETERS dp; ZeroMemory(&dp, sizeof(dp)); dp.Windowed = 1; dp.SwapEffect = D3DSWAPEFFECT_FLIP; dp.BackBufferFormat = D3DFMT_A8R8G8B8; dp.BackBufferCount = 1; dp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; IDirect3DDevice9Ex *mDevice = nullptr; if (SUCCEEDED(hr = d3d9ex->CreateDeviceEx(D3DADAPTER_DEFAULT, D3DDEVTYPE_NULLREF, NULL, D3DCREATE_HARDWARE_VERTEXPROCESSING, &dp, NULL, &mDevice))) { bResult = true; PVOID* vtbl = *reinterpret_cast<PVOID**>(mDevice); auto& pContext = cContext::GetInstance(); pContext.ApplyDetour<PresentFn>(static_cast<PresentFn>(vtbl[17]), reinterpret_cast<PresentFn>(myPresent), &oPresent); pContext.ApplyDetour<ResetFn>(static_cast<ResetFn>(vtbl[16]), reinterpret_cast<ResetFn>(myReset), &oReset); mDevice->Release(); } d3d9ex->Release(); } } } return bResult; } unsigned WINAPI GUIDX(LPVOID lpParam) { hWnd = FindWindowA(NULL,"D3D9 Test"); if (hWnd) m_pWindowProc = (WNDPROC)SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)myWndProc); while (!Init()) Sleep(200); return 0L; } BOOL APIENTRY DllMain( _In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ LPVOID lpvReserved) { DisableThreadLibraryCalls(hinstDLL); switch (fdwReason) { case DLL_PROCESS_ATTACH: { _beginthreadex(NULL, NULL, GUIDX, NULL, NULL, NULL); } break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)m_pWindowProc); break; } return TRUE; }