望见流星 发表于 2026-4-21 22:45:41

关于GGE源码修改报错的问题

本帖最后由 望见流星 于 2026-4-24 18:57 编辑

报错如下
:12: attempt to call global 'ReadExcel1' (a nil value)..//按F4或双击此行可转到错误代码页。//
:142: attempt to call global '加载全局数据' (a nil value)..//按F4或双击此行可转到错误代码页。//

报错指向的代码如下

第一个:
炼妖配置 = ReadExcel1("炼妖数据","")
要读取的XLS文件存在

第二个:
require("Script/初始化脚本")
加载全局数据()

加载全局数据()这段的代码在脚本中存在,检查写的没问题
两个指向都没问题,但是运行就是会报空值,

但是我检查感觉是没有问题的,试过把ReadExcel1替换成ReadExcel后就会报错找不到“引擎”;感觉第二个问题有点像是因为第一段没用运行下去导致的(在初始化脚本中第一个报错在前)
本人半个小白,实在搞不明白问题出在哪里,
求大佬指点是缺文件了还是哪里缺声明:


以下是源文件链接

链接: https://pan.baidu.com/s/1UF4dhNyhcVKgA527zv0F6w?pwd=kux1 提取码: kux1

原本的服务端文件运行是正常的,就是源码编译后覆盖就会出现如上问题




望见流星 发表于 2026-4-21 22:55:42

有遇到这样情况的帮忙解决一下
或者上面提供信息不足的也可以说一下,我贴上来:

q375907713 发表于 2026-4-21 23:52:04

a nil value 一个空的变量
自己检查那两行的变量值

望见流星 发表于 2026-4-22 00:07:30

q375907713 发表于 2026-4-21 23:52
a nil value 一个空的变量
自己检查那两行的变量值

检查过,变量是有的,只是不知道为什么没调用成功,我看不出指向的变量代码有啥问题才来问的

xxooyeh 发表于 2026-4-22 09:02:46

把相关代码和数据文件打包上来看看,光说我们也不知道他的函数是怎么实现的。

望见流星 发表于 2026-4-22 12:04:18

xxooyeh 发表于 2026-4-22 09:02
把相关代码和数据文件打包上来看看,光说我们也不知道他的函数是怎么实现的。

好的,源文件度盘放在主贴了:

ily99 发表于 2026-4-22 13:14:44

先去客户端找找有没有ReadExcel1这个文件

zhimeng1 发表于 2026-4-23 07:23:20

应该是源文件残缺吧

望见流星 发表于 2026-4-23 10:43:05

zhimeng1 发表于 2026-4-23 07:23
应该是源文件残缺吧

应该是的,缺了readexcel这一段,我在试着补写:

xxooyeh 发表于 2026-4-24 09:05:52

这个一般在GEE里,也可以自己写,参考下这个
function ReadExcel(paths,stringkey)
                                path=程序目录.."//sysdata//"..paths..".data"

                                local key={}
                                for i=1,string.len(stringkey) do
                                table.insert(key,string.byte(string.sub(stringkey,i,i)))
                                end
         
--            if stringkey ~="小神授权" then
--                引擎.关闭()
--            end
                local file =assert(io.open(path, "rb"))
                local DecryptData ={}
                local number =0
                while true do
                                local bytes = file:read(1)

                                if not bytes then break end
                                for b in string.gfind(bytes, ".") do
                                                num=tonumber(string.byte(b))
                                                -- io.write(num,",")
                                                local a= number%#key
                                                DecryptData=bit.bxor(tostring(num),key)
                                                number=number+1
                                end
                end
                file:close()
                localindexes=0
                local bufToInt32 = function (dataTable)
                        local num = 0;
                        num = num+ math.floor(dataTable * (2 ^ 24))
                        num = num+ math.floor(dataTable * (2 ^ 16))
                        num = num+ math.floor(dataTable * (2 ^ 8))
                        num = num + dataTable;

                                indexes=indexes+4
                        return num;
                end
                localbufToInt16=function(dataTable)
                        local num = 0;
                        num = num + math.floor(dataTable * (2 ^ 8));
                        num = num + dataTable;
                                indexes=indexes+2
                        return num;
                end

                local Row= bufToInt32(DecryptData)
                local Column=bufToInt32(DecryptData)
                local ReadASCIIString =function(dataTable)
                                                local len = bufToInt16(dataTable);
                                                local a={}
                                                for i=1,len do
                                                        table.insert(a,dataTable)
                                                        indexes=indexes+1
                                                end

                                                returnstring.char(unpack(a))
                end
                local FieldName={}
                local GameData={}
                local GameDataName
                local funType={}

                for i=1,Row do
                       for j=1,Column do
                               local str = ReadASCIIString(DecryptData);
                               if i==1 then
                                               FieldName = str;
                               elseif i==3 then
                                               if str=="number" then
                                                                       funType=tonumber
                                               elseif str=="string" then
                                                                       funType=tostring
                                               elseif str=="array" then
                                                                                funType=toTablenumber
                                                elseif str=="table" then
                                                                                funType=toTable
                                               elseif str=="json" then
                                                                funType=cjson.decode
                                               end
                                                        --print(str)
                               elseif i>3 and str~="" then
                                                        if j==1 then
                                                        GameData(str))]={}
                                                        GameDataName=assert(funType(str))
                                                        else
                                                                --print(str)
                                                       GameData] = assert(funType(str))
                                                        end
                               end
                       end
                end

                                print(string.format("加载%s成功-->", paths))
       return GameData
end

望见流星 发表于 2026-4-24 18:57:04

xxooyeh 发表于 2026-4-24 09:05
这个一般在GEE里,也可以自己写,参考下这个
function ReadExcel(paths,stringkey)
                                path=程序目录.." ...

感谢大佬,真解决了:,
十分感谢

309495101 发表于 2026-5-11 22:54:17

为了增加权限,我也是拼了.
页: [1]
查看完整版本: 关于GGE源码修改报错的问题

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明