This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
YimMenu/src/lua/bindings/memory.cpp

44 lines
1.1 KiB
C++
Raw Normal View History

#include "memory.hpp"
#include "memory/module.hpp"
#include "memory/pattern.hpp"
#include "pointers.hpp"
namespace lua::memory
{
pointer scan_pattern(const std::string& pattern)
{
return pointer(::memory::module("GTA5.exe").scan(::memory::pattern(pattern)).value().as<uint64_t>());
}
pointer handle_to_ptr(int entity)
{
auto ptr = big::g_pointers->m_gta.m_handle_to_ptr(entity);
return pointer((uint64_t)ptr);
}
int ptr_to_handle(pointer mem_addr)
{
if (mem_addr.is_null())
return 0;
return big::g_pointers->m_gta.m_ptr_to_handle((void*)mem_addr.get_address());
}
pointer allocate(int size, sol::this_state state)
{
void* mem = new uint8_t[](size);
auto module = sol::state_view(state)["!this"].get<big::lua_module*>();
module->m_allocated_memory.push_back(mem);
return pointer((uint64_t)mem);
}
void free(pointer ptr, sol::this_state state)
{
delete[] (void*)ptr.get_address();
auto module = sol::state_view(state)["!this"].get<big::lua_module*>();
std::erase_if(module->m_allocated_memory, [ptr](void* addr) {
return ptr.get_address() == (uint64_t)addr;
});
}
}