Другое С/С++ Вопрос - Ответ

CarLCas

Известный
161
118
пытаюсь перевести с lua на c++, но чет хуево получается
Lua:
-- lua code
local callback = ffi.cast('void(__thiscall *)(void *_this, char *killer, char *killed, uint32_t clKiller, uint32_t clKilled, uint8_t reason)', hook)
local detour_addr = tonumber(ffi.cast('uintptr_t', callback))
local hook_addr = getModuleHandle('samp.dll') + 0x2B2A3B
memory.setint8(hook_addr, 0xE8, true)
memory.setuint32(hook_addr + 1, detour_addr - hook_addr - 5, true)
C++:
// c++ code
void(__thiscall* callback)(void*, char*, char*, uint32_t, uint32_t, uint8_t) =
    (void(__thiscall *) (void *_this, char *killer, char *killed, uint32_t clKiller, uint32_t clKilled, uint8_t reason))
    (hook);
uintptr_t detour_addr = (uintptr_t)callback;
uintptr_t hook_addr = (uintptr_t)GetModuleHandleA("samp.dll") + 0x2B2A3B;
*reinterpret_cast<INT8 *>(hook_addr) = (INT8)0xE8;
*reinterpret_cast<DWORD *>(hook_addr + 1) = detour_addr - hook_addr - 5;
виснет игра из-за этой строки:
C++:
*reinterpret_cast<INT8 *>(hook_addr) = (INT8)0xE8;
Перед записью в память установи права на запись при помощи VirtualProtect, после как закончишь восстанови предыдущие права.
 

Ranto

Участник
45
1
хотел попробовать написать аммохак
в чем проблема? не работает


Код:
void OnTimer(HWND hwnd, UINT msg, UINT idTimer, DWORD dwTime)
{
    if (GetAsyncKeyState(0x2E) & 0x8000) //если нажал на delete
    {
        DWORD CPED = *(DWORD*)0xB6F5F0; //CPed
        DWORD CWeaponSlot = *(DWORD*)(CPED + 0x0718); //CPed.m_cWeaponSlot
        DWORD CWeaponSlot1 = *(DWORD*)(CWeaponSlot * 0x1C);
        DWORD CWeaponSlots = *(DWORD*)(CPED + 0x5A0); //CPed.m_aclWeaponSlots
        DWORD CWeaponState = *(DWORD*)(CWeaponSlots + CWeaponSlot1);
        *(DWORD*)(CWeaponState + 0xC) += 40;
    }
}

чекни у него видосы, вроде код похожий так что давай
 

-raymond-

Известный
110
9
крашит

C++:
void narko_usable()
{
    char fmttext[13];
    int id = SF->getSAMP()->getPlayers()->sLocalPlayerID;
    stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[id];
    int integer_health = (int)pPlayer->pPlayerData->fActorHealth;
    sprintf(fmttext, "/usedrugs %d", 160-integer_health/10);
    stLocalPlayer *player = SF->getSAMP()->getPlayers()->pLocalPlayer;
    player->Say(fmttext);
    timer = GetTickCount() + 60000;
}
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
Ты получаешь с удаленной структуры игрока по айди локального игрока. Так нельзя. У удаленных игроков и локального разные структуры.
 

Ranto

Участник
45
1
Можете показать нормальный показ текущего времени? Что бы было все как по часам, а то мне какую дичь прислали, выдаёт левое время..
 

CleanLegend

Известный
Всефорумный модератор
476
929
Можете показать нормальный показ текущего времени? Что бы было все как по часам, а то мне какую дичь прислали, выдаёт левое время..
C++:
char Clock[32];
    SYSTEMTIME    time;
    GetLocalTime(&time);
    snprintf(Clock, sizeof(Clock) - 1, " %02d:%02d:%02d", time.wHour, time.wMinute, time.wSecond);
 
  • Нравится
Реакции: Ranto

Some_Clever_Name

Новичок
13
0
Можно ли получить X, Y, Z метки, которая есть на данный момент именно на мини-карте, а не на обычной карте?
 

Niggababy

Новичок
2
0
День добрый, присутствует определенный код .sf плагина. Но вот в чем вопрос, как этот код скомпилировать в сам .sf плагин?