- 273
- 178
- Версия MoonLoader
- Другое
https://github.com/DK22Pac/plugin-s...lugin_sa/game_sa/JPegCompress.cpp#L18C1-L30C1
Есть такой код, как его использовать в lua? Что такое pBuffer, pSize и как их получать?
C++:
// NOTE: pCamera parameter is not used, game's full screen will be saved in any way
// US-1.00 @ 0x005D0820
// EU-1.00 @ 0x005D0820
void JPegCompressScreenToBuffer(RwCamera * pCamera, char ** pBuffer, unsigned int * pSize) {
assert(pBuffer && *pBuffer && pSize);
assert(pCamera == Scene.m_pCamera && "Required due to dirty Rockstar implementation");
plugin::Call<0x005D0740>(pCamera, pBuffer, pSize);
}
void JPegCompressScreenToBuffer(char ** pBuffer, unsigned int * pSize) {
JPegCompressScreenToBuffer(Scene.m_pCamera, pBuffer, pSize);
}
Описание: Делает скриншот экрана(не экрана игры). На форуме код гуляет, но в этой теме вроде есть вариант (но оба зачем-то через samp, один два)
Код:
Lua:function screen(path) -- ffi local path = tostring(path) local D3D9Device = ffi.cast("void* *", 0xC97C28) --or RwCamera 0xB6F97C or getD3DDevicePtr() local TakeScreenshot = ffi.cast("void(__cdecl*)(void *, const char*)", 0x5D0820) -- FUNC_JPegCompressScreenToFile TakeScreenshot(D3D9Device, path) end function screen(path) -- ffi v2 local path = tostring(path) local TakeScreenshot = ffi.cast("void(__cdecl*)(uintptr_t, const char*)", 0x5D0820) -- FUNC_JPegCompressScreenToFile TakeScreenshot(0, path) end function screen(path) -- standard funcs local path = tostring(path) callFunction(0x5D0820, 2, 0, readMemory(0xC97C28 --[[ or RwCamera 0xB6F97C or getD3DDevicePtr() or 0 ]], 4, false), path) end
Применение:
Lua:local ppath = getWorkingDirectory() .. "\\screen.jpg" screen(ppath) --скриншот будет в этой папке "...\moonloader\screen.jpg"
upd добавил вариант callFunction
upd 2 только что узнал Посмотреть вложение 253146 поэтому добавил ffi v2