loganhackerdff
Известный
- 868
- 519
Привет всем, кто знает как открыть меню (которое на ESC) чё может куда-то записать или чо вызвать?
Думаю поймешь:Привет всем, кто знает как открыть меню (которое на ESC) чё может куда-то записать или чо вызвать?
mov eax, [ecx+14E0]
mov eax, [esi + 14E0]
mov [esi + 14E0], 1
samp.DLL+26E8CC + 14E0
int addr = *(int*)(var.sAPI.dwSampModule + 0x26E8CC);
*(bool*)(addr + 0x14E0) = 1;
#define FUNC_CChat_Close 0x0068E10
#define FUNC_CChat_Open 0x0068D10
void ToggleSAMPChat(bool status = true) {
uintptr_t pSamp = reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll"));
uintptr_t pChat = *reinterpret_cast<uintptr_t*>(pSamp + 0x26E8CC);
status ? reinterpret_cast<int(__thiscall*)(uintptr_t ptr)>(pSamp + FUNC_CChat_Open)(pChat) :
reinterpret_cast<int(__thiscall*)(uintptr_t ptr)>(pSamp + FUNC_CChat_Close)(pChat);
}
искал искал и не нашел, вообщем. Нужны две функции, это фриз камеры и фриз педа.(sf)
// bControllable: 0 - заморозить, 1 - разморозить
// Действия можно выполнять и до инициализации сампа, главное чтоб сам модуль был загружен в игру
void sampTogglePlayerControllable(class CPed *targetPed, ::BOOL bControllable)
{
static auto sampLibrary{std::uintptr_t(::GetModuleHandle("samp.dll"))};
reinterpret_cast<void(__thiscall *)(class CPed *, ::BOOL)>
(sampLibrary + 0xA7050)(targetPed, bControllable);
}
// false - заморозить, true - разморозить
void setCameraControllable(bool status) {
*reinterpret_cast<std::uint8_t *>(0x52B730) = status ? 0x81 : 0xC3;
}
Мне, конечно, не тяжело загрузить библиотеку, но для приличия мог бы и скинуть.всем ку я не научился пользоваться гидрой, скажите пж адрес функции скриншота для samp 0.3.7 R3
для 0.3.7 R1 я знаю - samp.dll + 0x70FC0
(и если не сложно напишите как блять в этой гидре прыгнуть на функцию)
// R3
void takeScreenshot()
{
static auto sampLibrary{std::uintptr_t(::GetModuleHandle("samp.dll"))};
reinterpret_cast<void(__cdecl *)()>(sampLibrary + 0x74EB0)();
}
Хукай CPad::UpdatePadsвсем ку, я хочу емулировать нажатие клавиши alt, для этого юзаю https://www.blast.hk/threads/52553/ но ничего не работает,
(значение там меняется от нажатия alt)
походу это надо использовать не в хуке 0x748DA3
bool onPacketOutcoming(RakNet::BitStream*& bs) override
{
stOnFootData* data;
if (*bs->GetData() == 207)
{
data = (stOnFootData*)bs->GetData();
vars::pChat->AddMessage(-1, std::to_string(data->byteHealth).c_str());
}
return true;
}
struct stSAMPKeys
{
uint8_t keys_primaryFire : 1;
uint8_t keys_horn__crouch : 1;
uint8_t keys_secondaryFire__shoot : 1;
uint8_t keys_accel__zoomOut : 1;
uint8_t keys_enterExitCar : 1;
uint8_t keys_decel__jump : 1; // on foot: jump or zoom in
uint8_t keys_circleRight : 1;
uint8_t keys_aim : 1; // hydra auto aim or on foot aim
uint8_t keys_circleLeft : 1;
uint8_t keys_landingGear__lookback : 1;
uint8_t keys_unknown__walkSlow : 1;
uint8_t keys_specialCtrlUp : 1;
uint8_t keys_specialCtrlDown : 1;
uint8_t keys_specialCtrlLeft : 1;
uint8_t keys_specialCtrlRight : 1;
uint8_t keys__unused : 1;
};
struct stOnFootData
{
uint8_t packet;
uint16_t sLeftRightKeys;
uint16_t sUpDownKeys;
union
{
uint16_t sKeys;
struct stSAMPKeys stSampKeys;
};
float fPosition[3];
float fQuaternion[4];
uint8_t byteHealth;
uint8_t byteArmor;
uint8_t byteCurrentWeapon;
uint8_t byteSpecialAction;
float fMoveSpeed[3];
float fSurfingOffsets[3];
uint16_t sSurfingVehicleID;
short sCurrentAnimationID;
short sAnimFlags;
};
чекни структуру, я добавил byte packerID в stOnFootDataтебя не смущает что до данных лежит еще и айди пакета?
#pragma pack(push, 1)hi, мне нужна помощь с rakhook, хукаю onFootSync:
Структуры:C++:bool onPacketOutcoming(RakNet::BitStream*& bs) override { stOnFootData* data; if (*bs->GetData() == 207) { data = (stOnFootData*)bs->GetData(); vars::pChat->AddMessage(-1, std::to_string(data->byteHealth).c_str()); } return true; }
Но всегда в чат выводится 0C++:struct stSAMPKeys { uint8_t keys_primaryFire : 1; uint8_t keys_horn__crouch : 1; uint8_t keys_secondaryFire__shoot : 1; uint8_t keys_accel__zoomOut : 1; uint8_t keys_enterExitCar : 1; uint8_t keys_decel__jump : 1; // on foot: jump or zoom in uint8_t keys_circleRight : 1; uint8_t keys_aim : 1; // hydra auto aim or on foot aim uint8_t keys_circleLeft : 1; uint8_t keys_landingGear__lookback : 1; uint8_t keys_unknown__walkSlow : 1; uint8_t keys_specialCtrlUp : 1; uint8_t keys_specialCtrlDown : 1; uint8_t keys_specialCtrlLeft : 1; uint8_t keys_specialCtrlRight : 1; uint8_t keys__unused : 1; }; struct stOnFootData { uint8_t packet; uint16_t sLeftRightKeys; uint16_t sUpDownKeys; union { uint16_t sKeys; struct stSAMPKeys stSampKeys; }; float fPosition[3]; float fQuaternion[4]; uint8_t byteHealth; uint8_t byteArmor; uint8_t byteCurrentWeapon; uint8_t byteSpecialAction; float fMoveSpeed[3]; float fSurfingOffsets[3]; uint16_t sSurfingVehicleID; short sCurrentAnimationID; short sAnimFlags; };
if (m_bChams && g::pDXDevice)
{
DWORD dwCONSTANT{ 0 }, dwARG2{ 0 }, dwCULL{ 0 };
g::pDXDevice->GetRenderState(D3DRS_CULLMODE, &dwCULL);
g::pDXDevice->GetTextureStageState(0, D3DTSS_CONSTANT, &dwCONSTANT);
g::pDXDevice->GetTextureStageState(0, D3DTSS_COLORARG2, &dwARG2);
g::pDXDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW);
g::pDXDevice->SetTextureStageState(0, D3DTSS_CONSTANT, 0xFFFFFFFF);
g::pDXDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CONSTANT);
((void(__thiscall*)(void*))(*(void***)pPlayer->m_pPed->m_pGameEntity)[18])(player.pPlayer->m_pPed->m_pGameEntity);
g::pDXDevice->SetRenderState(D3DRS_CULLMODE, dwCULL);
g::pDXDevice->SetTextureStageState(0, D3DTSS_CONSTANT, dwCONSTANT);
g::pDXDevice->SetTextureStageState(0, D3DTSS_COLORARG2, dwARG2);
}
}
(player && player->m_pPed && player->DoesExist() && player->m_pPed->DoesExist() && player->m_pPed->m_pGamePed && player->m_pPed->m_pGameEntity)
((void(__thiscall*)(void*))(*(void***)pPlayer->m_pPed->m_pGameEntity)[18])(player.pPlayer->m_pPed->m_pGameEntity);
похоже что это раздел только для меня, чувствую себя тупым, ну да ладно,
кароче я юзаю sampapi и рисую чамсы вот так:
Перед этим проверка всего что можно для педаC++:if (m_bChams && g::pDXDevice) { DWORD dwCONSTANT{ 0 }, dwARG2{ 0 }, dwCULL{ 0 }; g::pDXDevice->GetRenderState(D3DRS_CULLMODE, &dwCULL); g::pDXDevice->GetTextureStageState(0, D3DTSS_CONSTANT, &dwCONSTANT); g::pDXDevice->GetTextureStageState(0, D3DTSS_COLORARG2, &dwARG2); g::pDXDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW); g::pDXDevice->SetTextureStageState(0, D3DTSS_CONSTANT, 0xFFFFFFFF); g::pDXDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CONSTANT); ((void(__thiscall*)(void*))(*(void***)pPlayer->m_pPed->m_pGameEntity)[18])(player.pPlayer->m_pPed->m_pGameEntity); g::pDXDevice->SetRenderState(D3DRS_CULLMODE, dwCULL); g::pDXDevice->SetTextureStageState(0, D3DTSS_CONSTANT, dwCONSTANT); g::pDXDevice->SetTextureStageState(0, D3DTSS_COLORARG2, dwARG2); } }
выглядит как будто наговнокожено но всё равно вылетают exceptions на строке послеC++:(player && player->m_pPed && player->DoesExist() && player->m_pPed->DoesExist() && player->m_pPed->m_pGamePed && player->m_pPed->m_pGameEntity)
пример кода взят отсюда: https://github.com/Stickey21/Stealth-Remastered/blob/origin/Stealth Remastered/Features/Visuals.cpp#L269C++:((void(__thiscall*)(void*))(*(void***)pPlayer->m_pPed->m_pGameEntity)[18])(player.pPlayer->m_pPed->m_pGameEntity);
using CEntity__Render = void(__thiscall*)(::CEntity*);
reinterpret_cast<CEntity__Render>(0x59F180)(player.pPlayer->m_pPed->m_pGameEntity);
DWORD dwCONSTANT, dwARG0, dwARG1, dwARG2;
struct CPed* pPed = pSAMP->g_Players->m_pObject[i]->m_pPlayer->m_pPed->m_pGamePed;
m_pDev->GetTextureStageState(0, D3DTSS_CONSTANT, &dwCONSTANT);
m_pDev->GetTextureStageState(0, D3DTSS_COLORARG0, &dwARG0);
m_pDev->GetTextureStageState(0, D3DTSS_COLORARG1, &dwARG1);
m_pDev->GetTextureStageState(0, D3DTSS_COLORARG2, &dwARG2);
m_pDev->SetTextureStageState(0, D3DTSS_CONSTANT, floatToHex(colors->PlayerChamsColor));
m_pDev->SetTextureStageState(0, D3DTSS_COLORARG0, D3DTA_CONSTANT);
m_pDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_CONSTANT);
m_pDev->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CONSTANT);
pPed->Render();
m_pDev->SetTextureStageState(0, D3DTSS_CONSTANT, dwCONSTANT);
m_pDev->SetTextureStageState(0, D3DTSS_COLORARG0, dwARG0);
m_pDev->SetTextureStageState(0, D3DTSS_COLORARG1, dwARG1);
m_pDev->SetTextureStageState(0, D3DTSS_COLORARG2, dwARG2);
sampler2D tex0 : register(s0);
extern float3 dy: register(c0);
float4 main(float2 tc : TEXCOORD0) : COLOR
{
return tex2D(tex0, tc) * float4(dy[0], dy[1], dy[2], 1.0);
}
{
HRSRC hsrc = FindResourceW(reinterpret_cast<HMODULE>(hmdl), MAKEINTRESOURCEW(IDR_HLSL2), L"HLSL");
PVOID shader = LockResource(LoadResource(reinterpret_cast<HMODULE>(hmdl), hsrc));
pDevice->CreatePixelShader(reinterpret_cast<DWORD*>(shader), &pPixelShader);
}
pDevice->SetPixelShader(pPixelShader);
// Rainbow lol
if (bTact) {
HSVtoRGB(RGB[0], RGB[1], RGB[2], color[0], color[1], color[2]);
color[0] += 2.0f;
if (color[0] >= 360.0f) color[0] -= 360.0f;
bTact = false;
}
pDevice->SetPixelShaderConstantF(0, RGB, 1);
fpHkDrawIndexedPrimitive(pDevice, Type, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
pDevice->SetPixelShader(nullptr);
return D3D_OK;