diff --git a/fxmanifest.lua b/fxmanifest.lua index fcb567a..f51d84f 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -33,16 +33,11 @@ files { shared_script 'resource/init.lua' shared_scripts { - 'imports/locale/shared.lua', 'resource/**/shared.lua', -- 'resource/**/shared/*.lua' } client_scripts { - 'imports/callback/client.lua', - 'imports/requestModel/client.lua', - 'imports/requestAnimDict/client.lua', - 'imports/addKeybind/client.lua', 'resource/**/client.lua', 'resource/**/client/*.lua' } diff --git a/resource/init.lua b/resource/init.lua index 797d331..a9869eb 100644 --- a/resource/init.lua +++ b/resource/init.lua @@ -1,14 +1,38 @@ local debug_getinfo = debug.getinfo +function noop() end + lib = setmetatable({ name = 'ox_lib', context = IsDuplicityVersion() and 'server' or 'client', }, { - __newindex = function(self, name, fn) - rawset(self, name, fn) + __newindex = function(self, key, fn) + rawset(self, key, fn) if debug_getinfo(2, 'S').short_src:find('@ox_lib/resource') then - exports(name, fn) + exports(key, fn) + end + end, + + __index = function(self, key) + local dir = ('imports/%s'):format(key) + local chunk = LoadResourceFile(self.name, ('%s/%s.lua'):format(dir, self.context)) + local shared = LoadResourceFile(self.name, ('%s/shared.lua'):format(dir)) + + if shared then + chunk = (chunk and ('%s\n%s'):format(shared, chunk)) or shared + end + + if chunk then + local fn, err = load(chunk, ('@@ox_lib/%s/%s.lua'):format(key, self.context)) + + if not fn or err then + return error(('\n^1Error importing module (%s): %s^0'):format(dir, err), 3) + end + + rawset(self, key, fn() or noop) + + return self[key] end end })