藏宝湾网游单机站

 找回密码
 注册

QQ登录

只需一步,快速开始

★69 元包站 Gm 手游平台★

★69 元包站 Gm 手游平台★

★Gm 游戏平台【无限资源包站平台,真正体验gm和土豪感觉】★

★白嫖放置传奇 玩通关算你赢★

★白嫖放置传奇 玩通关算你赢★

★白嫖长久耐玩型 放置类挂机传奇游戏 充值可打 安全挂机 可交易 无PK★

★@梦幻长久耐玩全新大唐九黎★

★@!!——梦幻长久耐玩全新大唐九黎——!!★

★★新增全新门派九黎城, ★侵烛系统 ★静脉系统 ★赐福系统 ★战斗动作声效系统 ★全场景NPC、召唤兽迭代最新 ★17个副本,完全还原 ★独家PK系统,享受极致免费PK★★

承接推广
★承接推广★

★承接推广★

☆ 六一活动开放-放置传奇☆

★ 六一活动开放-放置传奇★

★可白嫖 上班摸鱼类 放置文字传奇游戏(放置休闲)qq群756025698★

★三职业复古★开局送神装★爆率100%★零氪首选★

★三职业复古★开局送神装★爆率100%★零氪首选★

★〖双线〗〖无忧传奇〗〖每日新区〗〖开局送神装 100%高爆率 装备元宝打怪爆〗★

承接推广

★承接推广★

★承接推广★

承接推广

★承接推广★

★承接推广★

★DNF★全职业平衡★公益服★
★DNF★全职业平衡★公益服★

【dnf86版本】【怀旧服】【全职业平衡】【非变态服】【非商业服】【774031300】

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

查看: 696|回复: 11

[已解决] 关于GGE源码修改报错的问题

[复制链接]
 楼主| 发表于 2026-4-21 22:45:41 | 显示全部楼层 |阅读模式
本帖最后由 望见流星 于 2026-4-24 18:57 编辑

报错如下
[string "script/初始化脚本"]:12: attempt to call global 'ReadExcel1' (a nil value)..//按F4或双击此行可转到错误代码页。//
[string "main"]: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 | 显示全部楼层
有遇到这样情况的帮忙解决一下
或者上面提供信息不足的也可以说一下,我贴上来
回复 支持 反对

使用道具 举报

发表于 2026-4-21 23:52:04 | 显示全部楼层
a nil value 一个空的变量
自己检查那两行的变量值
[发帖际遇]: 一个袋子砸在了 q375907713 头上,q375907713 赚了 5 枚 金币. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-4-22 00:07:30 | 显示全部楼层
q375907713 发表于 2026-4-21 23:52
a nil value 一个空的变量
自己检查那两行的变量值

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

使用道具 举报

发表于 2026-4-22 09:02:46 | 显示全部楼层
把相关代码和数据文件打包上来看看,光说我们也不知道他的函数是怎么实现的。
回复 支持 反对

使用道具 举报

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

好的,源文件度盘放在主贴了
回复 支持 反对

使用道具 举报

发表于 2026-4-22 13:14:44 来自手机 | 显示全部楼层
先去客户端找找有没有ReadExcel1这个文件
回复 支持 反对

使用道具 举报

发表于 2026-4-23 07:23:20 来自手机 | 显示全部楼层
应该是源文件残缺吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-4-23 10:43:05 | 显示全部楼层
zhimeng1 发表于 2026-4-23 07:23
应该是源文件残缺吧

应该是的,缺了readexcel这一段,我在试着补写
回复 支持 反对

使用道具 举报

发表于 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[number+1]=bit.bxor(tostring(num),key[a+1])
                                                number=number+1
                                end
                end
                file:close()
                local  indexes=0
                local bufToInt32 = function (dataTable)
                        local num = 0;
                        num = num  + math.floor(dataTable[indexes+4] * (2 ^ 24))
                        num = num  + math.floor(dataTable[indexes+3] * (2 ^ 16))
                        num = num  + math.floor(dataTable[indexes+2] * (2 ^ 8))
                        num = num + dataTable[indexes+1];

                                indexes=indexes+4
                        return num;
                end
                local  bufToInt16=function(dataTable)
                        local num = 0;
                        num = num + math.floor(dataTable[indexes+2] * (2 ^ 8));
                        num = num + dataTable[indexes+1];
                                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+1])
                                                        indexes=indexes+1
                                                end

                                                return  string.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[j] = str;
                                 elseif i==3 then
                                                 if str=="number" then
                                                                         funType[j]=tonumber
                                                 elseif str=="string" then
                                                                         funType[j]=tostring
                                                 elseif str=="array" then
                                                                                funType[j]=toTablenumber
                                                elseif str=="table" then
                                                                                funType[j]=toTable
                                                 elseif str=="json" then
                                                                funType[j]=cjson.decode
                                                 end
                                                        --print(str)
                                 elseif i>3 and str~="" then
                                                        if j==1 then
                                                        GameData[assert(funType[j](str))]={}
                                                        GameDataName=assert(funType[j](str))
                                                        else
                                                                --print(str)
                                                         GameData[GameDataName][FieldName[j]] = assert(funType[j](str))
                                                        end
                                 end
                         end
                end

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

评分

参与人数 1金币 +1 收起 理由
望见流星 + 1 『快乐!分一点给你哟~』

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-4-24 18:57:04 | 显示全部楼层
xxooyeh 发表于 2026-4-24 09:05
这个一般在GEE里,也可以自己写,参考下这个
function ReadExcel(paths,stringkey)
                                path=程序目录.." ...

感谢大佬,真解决了
十分感谢
回复 支持 反对

使用道具 举报

发表于 2026-5-11 22:54:17 | 显示全部楼层
为了增加权限,我也是拼了.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

排行榜|联系我们|小黑屋|手机版|Archiver|游戏藏宝湾 |

GMT+8, 2026-6-4 12:48 , Processed in 0.179087 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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