Skip to content

Commit

Permalink
fix: memory, timers and config module
Browse files Browse the repository at this point in the history
  • Loading branch information
zziger committed Aug 18, 2024
1 parent f9e1bae commit 214a7b4
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 26 deletions.
41 changes: 21 additions & 20 deletions src/lua/library/config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,10 @@ local configGetNested = __configGetNested --[[@as fun(cfg: userdata, key: string
local configSet = __configSet --[[@as fun(cfg: userdata, val: any, key: string): userdata]]
local configSave = __configSave --[[@as fun()]]

---@class config
local config = {}

---@private
function config.fromHandle(handle)
local instance = setmetatable({}, config)
instance.handle = handle
return instance
end

---Сохраняет конфиг файл на диск
function config.save()
configSave()
end

---Обьект конфигурации текущего мода
---@type Config
config.mod = config.fromHandle(getModConfig())

---@class Config
---@field private handle userdata
local Config = {}
Config.__index = Config

---Получает строковое значение по указанному ключу
---@param key string
Expand Down Expand Up @@ -70,4 +52,23 @@ function Config:set(key, value)
configSet(self.handle, value, key)
end

return Config
---@class config
local config = {}

---@private
function config.fromHandle(handle)
local instance = setmetatable({}, Config)
instance.handle = handle
return instance
end

---Сохраняет конфиг файл на диск
function config.save()
configSave()
end

---Обьект конфигурации текущего мода
---@type Config
config.mod = config.fromHandle(getModConfig())

return config
8 changes: 4 additions & 4 deletions src/lua/library/memory.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ function M.withBackup(backup)
mem.__index = mem
function mem.at(location, params)
local oldInstance = M.at(location, params)
local instance = setmetatable({}, mem)
local instance = setmetatable({}, Memory)
instance.addr = oldInstance.addr
instance.unsafe = oldInstance.unsafe
instance.backup = backup
Expand Down Expand Up @@ -167,7 +167,7 @@ end
---@param offset number Оффсет от прошлого адреса (в байтах)
---@return Memory
function Memory:add(offset)
return self.at(self.addr + offset)
return M.at(self.addr + offset)
end

---Возвращает функцию по текущему адресу
Expand Down Expand Up @@ -202,14 +202,14 @@ end
---Читает адрес (int32) по текущему адресу, и возвращает обьект Memory с новым адресом
---@return Memory
function Memory:readOffset()
return self.at(self:readInt32())
return M.at(self:readInt32())
end

---Читает инструкцию вызова по относительному адресу (opcode E8), и возвращает обьект Memory с адресом вызываемой функции
---@return Memory
function Memory:readNearCall()
local addr = self.addr
return self.at(self:add(1):readInt32() + addr + 5)
return M.at(self:add(1):readInt32() + addr + 5)
end

---Читает int64 по текущему адресу (8 байт)
Expand Down
5 changes: 3 additions & 2 deletions src/supermod/modloader/mod/impl/ModImplLua.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,11 @@ void ModImplLua::OnEnabled()
lua.script(sdk->read("library/events.lua"), package->fenv, sol::script_throw_on_error, "built-in events");
package->builtin["timers"] =
lua.script(sdk->read("library/timers.lua"), package->fenv, sol::script_throw_on_error, "built-in timers");
tick = package->fenv["__tick"];

auto memText = sdk->read("library/memory.lua");
HookManager::AddLuaIntrinsics(package->fenv);
package->builtin["memory"] =
lua.script(sdk->read("library/memory.lua"), package->fenv, sol::script_throw_on_error, "built-in memory");
package->builtin["memory"] = lua.script(memText, package->fenv, sol::script_throw_on_error, "built-in memory");
HookManager::RemoveLuaIntrinsics(package->fenv);

Config::AddLuaIntrinsics(package->fenv, info->GetID());
Expand Down

0 comments on commit 214a7b4

Please sign in to comment.