搜索
查看: 131|回复: 5
收起左侧

[无意义] 这串代码的意思

[复制链接]

升级进度: 18%

2609462116 发表于 2024-2-24 21:34:56 | 显示全部楼层 |阅读模式
服务器运行过程中会出现SCRIPT ERROR: error object is not a string
这是咋引起的
回复 论坛版权

使用道具 举报

ChatGPT 发表于 2024-2-24 21:35:08 | 显示全部楼层
这个错误可能是由于在服务器脚本中使用了错误的数据类型导致的。服务器脚本中的错误对象应该是一个字符串,但是实际上传入的是其他类型的对象。

你可以检查一下你的代码,确保在引发错误时使用的是字符串对象。另外,还可以尝试在引发错误之前对错误对象进行类型检查,以确保它是一个字符串。

例如,在使用错误对象之前,你可以使用下面的代码进行类型检查:
if type(errorObject) == "string" then
    -- 使用错误对象
else
    -- 错误对象类型不正确,做出相应处理
    print("错误对象不是一个字符串")
end

此外,还需要注意脚本中可能存在其他引起该错误的问题,比如变量未定义或者使用了错误的函数等。如果以上方法没有解决问题,建议你提供更多的相关代码和错误信息,以便我们更好地帮助你定位问题。
回复

使用道具 举报

升级进度: 18%

 楼主| 2609462116 发表于 2024-2-24 21:40:20 | 显示全部楼层
本帖最后由 2609462116 于 2024-2-24 21:41 编辑

看一下这个报错
[script:AI-Doctor-EMS] SCRIPT ERROR: @AI-Doctor-EMS/server.lua:22: attempt to index a nil value (local 'xPlayer')[  script:es_extended] SCRIPT ERROR: error object is not a string


ESX.RegisterServerCallback('pazzodoktor:doktorsOnline', function(source, cb)
        local xPlayer = ESX.GetPlayerFromId(source)
        local xPlayers = ESX.GetPlayers()
        local medicsOnline = 0
        local enoughMoney = false
        if xPlayer.getMoney() >= Config.Price then
                enoughMoney = true
        else
                if xPlayer.getAccount('bank').money >= Config.Price then
                    enoughMoney = true
                end
        end

        for i=1, #xPlayers, 1 do
                local xPlayer = ESX.GetPlayerFromId(xPlayers)
                if xPlayer.job.name == 'ambulance' then
                        medicsOnline = medicsOnline + 1
                end
        end

        cb(medicsOnline, enoughMoney)
end)
回复

使用道具 举报

ChatGPT 发表于 2024-2-24 21:40:32 | 显示全部楼层
2609462116 发表于 2024-02-24 21:40
看一下这个报错
> handler (@es_extended/server/mod ...


根据你提供的代码和报错信息,问题出现在 `ESX.RegisterServerCallback` 的回调函数中。

首先需要确保你在服务器脚本中正确导入了 `ESX`,并且 `ESX.GetPlayerFromId` 和 `ESX.GetPlayers` 等函数是可用的。

另外,报错信息提示 `error object is not a string`,这可能是由于回调函数中的 `cb` 参数被传递了一个错误的数据类型。请检查你在调用该回调函数时,传递给 `cb` 参数的值是否是字符串类型。

如果以上方法没有解决问题,建议你提供完整的报错日志和相关代码,以便更好地帮助你定位问题。
回复

使用道具 举报

升级进度: 18%

 楼主| 2609462116 发表于 2024-2-24 21:43:52 | 显示全部楼层
看一下这个报错
[script:AI-Doctor-EMS] SCRIPT ERROR: @AI-Doctor-EMS/server.lua:22: attempt to index a nil value (local 'xPlayer')[  script:es_extended] SCRIPT ERROR: error object is not a string


ESX.RegisterServerCallback('pazzodoktor:doktorsOnline', function(source, cb)
        local xPlayer = ESX.GetPlayerFromId(source)
        local xPlayers = ESX.GetPlayers()
        local medicsOnline = 0
        local enoughMoney = false
        if xPlayer.getMoney() >= Config.Price then
                enoughMoney = true
        else
                if xPlayer.getAccount('bank').money >= Config.Price then
                    enoughMoney = true
                end
        end

        for i=1, #xPlayers, 1 do
                local xPlayer = ESX.GetPlayerFromId(xPlayers)
                if xPlayer.job.name == 'ambulance' then
                        medicsOnline = medicsOnline + 1
                end
        end

        cb(medicsOnline, enoughMoney)
end)
回复

使用道具 举报

ChatGPT 发表于 2024-2-24 21:44:11 | 显示全部楼层
2609462116 发表于 2024-02-24 21:43
看一下这个报错
SCRIPT ERROR: @AI-Doctor-EMS/serve ...


根据你提供的代码和报错信息,问题出现在第22行 `xPlayer` 的索引上。错误提示是尝试对一个空值(nil)进行索引操作。

在你的代码中,有两个地方使用了 `xPlayer` 变量。首先是在第3行使用 `ESX.GetPlayerFromId(source)` 来获取玩家对象,并将其赋值给 `xPlayer`。然后在第19和20行,你又在条件判断中使用了 `xPlayer` 变量。

然而,第19和20行的条件判断块是嵌套在第7到12行的条件判断块中的。这导致在第7到12行的条件判断中创建的 `xPlayer` 变量屏蔽了外部的 `xPlayer` 变量。在此之后,尝试在第19和20行对外部的 `xPlayer` 进行索引操作时,由于它的值为 `nil`,就会出现错误。

为了解决这个问题,你可以考虑修改第19和20行的代码,使其使用外部的 `xPlayer` 变量。像这样:
if xPlayer.getMoney() >= Config.Price then
    enoughMoney = true
else
    if xPlayer.getAccount('bank').money >= Config.Price then
        enoughMoney = true
    end
end

这样,你就可以正确地访问来自玩家对象的数据并进行判断。

请记住,在代码中避免重复定义同名变量,以避免混淆和错误。
回复

使用道具 举报

ahome_bigavatar:guest
ahome_bigavatar:welcomelogin
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|首页 ( 冀ICP备2021005225号-1 ) |网站地图

GMT+8, 2024-6-13 03:47 , Processed in 0.762767 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 ELITE论坛【技术无价-分享快乐】

快速回复 返回顶部 返回列表