报错:尝试索引nil值(global 'ESX'),求解决办法!
问题分析与解决
报错原因
- ESX未正确加载或依赖缺失:全局变量
ESX为nil,说明tb_fuel脚本未成功关联ESX框架,要么是脚本的资源配置里没声明对ESX的依赖,要么是ESX资源本身未正常启动。 - 函数调用逻辑错误:就算ESX正常加载,当前
getplayer函数的写法也有问题——ESX.GetPlayerFromId是需要传入玩家ID(source)的函数,但代码里只引用了函数本身,既没执行调用,也没传参数。
解决步骤
1. 配置ESX依赖
打开tb_fuel资源目录下的fxmanifest.lua(老版本可能是__resource.lua),添加ESX的依赖声明,确保ESX在tb_fuel之前加载:
dependency 'es_extended' -- 针对ESX Legacy版本,还需添加必要的脚本引用 server_scripts { '@es_extended/locale.lua', '@es_extended/server/functions.lua', -- 其他服务器脚本... }
2. 修正getplayer函数
把第117行的代码改成正确写法,调用ESX.GetPlayerFromId时传入source参数,同时用局部变量避免全局污染:
function getplayer(source) local xPlayer = ESX.GetPlayerFromId(source) return xPlayer end
3. 重启资源
修改完成后,在FiveM控制台执行命令重启tb_fuel资源(若修改了fxmanifest.lua,建议重启整个服务器):
stop tb_fuel start tb_fuel
内容的提问来源于stack exchange,提问作者EthanP
相关产品推荐
相关产品推荐

