diff --git a/vmf_source/scripts/mods/vmf/modules/core/network.lua b/vmf_source/scripts/mods/vmf/modules/core/network.lua index 099092d..406657c 100644 --- a/vmf_source/scripts/mods/vmf/modules/core/network.lua +++ b/vmf_source/scripts/mods/vmf/modules/core/network.lua @@ -2,6 +2,12 @@ local vmf = get_mod("VMF") local _RPC_CALLBACKS = {} +local _LOCAL_MODS_MAP = {} +local _LOCAL_RPCS_MAP = {} + +local _SHARED_MODS_MAP = {} +local _SHARED_RPCS_MAP = {} + VMFMod.rpc_register = function (self, rpc_name, rpc_function) if type(rpc_name) ~= "string" then @@ -17,4 +23,31 @@ VMFMod.rpc_register = function (self, rpc_name, rpc_function) _RPC_CALLBACKS[self:get_name()] = _RPC_CALLBACKS[self:get_name()] or {} _RPC_CALLBACKS[self:get_name()][rpc_name] = rpc_function -end \ No newline at end of file +end + +vmf.create_network_dictionary = function() + + local i = 0 + for mod_name, mod_rpcs in pairs(_RPC_CALLBACKS) do + + i = i + 1 + + _SHARED_MODS_MAP[mod_name] = i + _LOCAL_MODS_MAP[i] = mod_name + + _SHARED_RPCS_MAP[mod_name] = {} + _LOCAL_RPCS_MAP[i] = {} + + local j = 0 + for rpc_name, _ in pairs(mod_rpcs) do + + j = j + 1 + + _SHARED_RPCS_MAP[mod_name][rpc_name] = j + _LOCAL_RPCS_MAP[i][j] = rpc_name + end + end + + _SHARED_MODS_MAP = cjson.encode(_SHARED_MODS_MAP) + _SHARED_RPCS_MAP = cjson.encode(_SHARED_RPCS_MAP) +end diff --git a/vmf_source/scripts/mods/vmf/vmf_loader.lua b/vmf_source/scripts/mods/vmf/vmf_loader.lua index c85fa18..4a436bc 100644 --- a/vmf_source/scripts/mods/vmf/vmf_loader.lua +++ b/vmf_source/scripts/mods/vmf/vmf_loader.lua @@ -40,6 +40,7 @@ return { object.vmf.initialize_keybinds() object.vmf.initialize_vmf_options_view() + object.vmf.create_network_dictionary() object.vmf.all_mods_were_loaded = true end