新版本的ESX框架不支持通过esx:getSharedObject事件获取ESX全局变量了,但是很多老框架插件都是用这个事件的,就要每个插件里都要改ESX全局变量获取方式,很繁琐,所以,我研究了一下框架核心,把框架改成兼容两种ESX全局变量获取方式
以1.10.1版本为例,其他版本若略有不同请自行研究!
由于涉及框架核心代码,风险未知,请自行斟酌是否修改,出了问题自行承担!!!
首先找到 es_extended 文件 打开 es_extended\server\common.lua (用编程软件打开,记事本打开有几率编码错误导致插件报错!)
找到以下代码
AddEventHandler("esx:getSharedObject", function()
local Invoke = GetInvokingResource()
print(("[^1ERROR^7] Resource ^5%s^7 Used the ^5getSharedObject^7 Event, this event ^1no longer exists!^7 Visit https://documentation.esx-framework.org/tutorials/tutorials-esx/sharedevent for how to fix!"):format(Invoke))
end)
并将其替换为
AddEventHandler("esx:getSharedObject", function(cb)
local obj = exports['es_extended']:getSharedObject()
cb(obj)
end)
服务端的改完了,接着改客户端的,打开 es_extended\client\common.lua (用编程软件打开,记事本打开有几率编码错误导致插件报错!)
找到以下代码
AddEventHandler("esx:getSharedObject", function()
local Invoke = GetInvokingResource()
print(("[^1ERROR^7] Resource ^5%s^7 Used the ^5getSharedObject^7 Event, this event ^1no longer exists!^7 Visit https://documentation.esx-framework.org/tutorials/tutorials-esx/sharedevent for how to fix!"):format(Invoke))
end)
并将其替换为
AddEventHandler("esx:getSharedObject", function(cb)
local obj = exports['es_extended']:getSharedObject()
cb(obj)
end)
改完重启服务器,两种获取ESX全局变量的方法就都可用了
由于涉及框架核心代码,风险未知,请自行斟酌是否修改,出了问题自行承担!!!