一、查看报错
查看报错是修复报错的前提,在工具后台——全局控制——游戏服务器控制(下拉)——查询游戏日记——查询(服务器类型选择游戏服务器,行数100,时间根据实际选择,其他默认即可)
一般查询内容中CRI为报错,SYS为系统信息,WRN为警告(可忽略)
解决:地图创建回调函数的参数类型与触发器的参数类型不一致,导致触发器调用不到该参数,将触发器AddTrigger中的参数与回调函数中的一致即可.(map_guid改为map_code)
c) 脚本中关联脚本(require)报错:脚本开头有很多require脚本,关联require脚本中的函数
解决:送财神树脚本中关联到装备系统,但没有require到装备系统.lua,报错。在送财神树脚本中require装备系统的脚本即可。
解决:在npc模板表中找到该npc,加上该npc功能脚本。
解决:脚本函数中多了一个end,一个function对应一个end
解决:更换刷新npc的坐标原先坐标可能有阻挡点或者npc未配置脚本
一般查询内容中CRI为报错,SYS为系统信息,WRN为警告(可忽略)
二、脚本报错:空值报错
a) 脚本空值报错——a nil value:遇到这类问题,要根据报错提供的信息查询脚本的函数定义是否传入空值
解决:开光表单中48行报错,在horse_t表中有一个坐骑的隐藏,开光该坐骑时,没有获得该表中的坐骑信息,所以空值报错。将horse_t中隐藏的解除即可。
解决:开光表单中48行报错,在horse_t表中有一个坐骑的隐藏,开光该坐骑时,没有获得该表中的坐骑信息,所以空值报错。将horse_t中隐藏的解除即可。
b) 函数调用参数出错:函数中传入的参数与触发器参数不一致
解决:地图创建回调函数的参数类型与触发器的参数类型不一致,导致触发器调用不到该参数,将触发器AddTrigger中的参数与回调函数中的一致即可.(map_guid改为map_code)
注:遇到相似问题先根据报错提示,在后台脚本接口中搜索接口的参数个数和用途,再结合报错信息修改错误的参数。
c) 脚本中关联脚本(require)报错:脚本开头有很多require脚本,关联require脚本中的函数
解决:送财神树脚本中关联到装备系统,但没有require到装备系统.lua,报错。在送财神树脚本中require装备系统的脚本即可。
d) 缺少脚本报错:NPC和活动表必须要配置脚本,不然会报缺少脚本错误
解决:在npc模板表中找到该npc,加上该npc功能脚本。
e) 脚本语法错误1:脚本中语法跟格式不对,使用不当
解决:脚本函数中多了一个end,一个function对应一个end
f) NPC刷新坐标错误
解决:更换刷新npc的坐标原先坐标可能有阻挡点或者npc未配置脚本
g) 脚本语法错误2:用table表形式将内容写入脚本中时,string型(道具名)内容必须在双引号内,不然会有语法错误。
解决:根据报错内容将 ”高级魔防精炼符” 在双引号内即可。
b) Npc任务关联表报错
根据逻辑和脚本功能检查,发现在 if 中未用SetInt接口将对象玩家的变量自动保存到数据库中,导致不能正常执行脚本功能。添加SetInt接口之后,实现脚本功能。
注:将脚本复制在lua编译器中编译,检查是否有语法错误时,有些脚本开头的路径和require函数要注释,这是游戏中的关联,与lua编译器无关。
八、预防逻辑错误:写功能脚本时,先将该脚本的功能要实现的功能和步骤在纸上先列清楚,然后一步步将功能和逻辑实现,方便出错时检查是哪一步出错了。
注:游戏后台报错明确提示语法错误之后,可将脚本内容复制到lua编译器中,用lua编译器检查错误。
三、任务报错:任务管理内容不全或任务关联的道具缺少等原因
a) 任务报错一般是 quest failed,后面有任务id和错误原因
解决:任务id=<11003>中,索引名为<恶魔先锋3>的怪物没有;或者任务系统复制不完全(根据代理实际情况解决是手动重新复制任务,还是添加该怪物,抑或删除该任务)
有些代理版本不需要的任务,删除任务时,要记得保存到服务器,否则,游戏中有任务,而后台中没有。若有任务报错而在任务管理中找不到任务,则需“从服务器重载任务”,重新删除,再“保存任务到服务器”即可。
b) Npc任务关联表报错
解决:删除全部任务时,要将相关的npc任务关联表相关内容也删除。
四、地图报错:地图报错一般相关脚本中调用该地图keyname时与该地图的keyname不一致,找不到该地图,或者配置官方逻辑格时出错。
a) keyname不符——can’t find keyname = “ ”
解决:将相关脚本的keyname改成与地图一致,或者重新建立一个keyname的新地图。
b) 逻辑格报错
解决:将错误地图的逻辑格文件名改成官方建议的逻辑格文件名
注:逻辑格错误的问题要先确保版本(45度,60度)是否正确,然后在地图模板表中查询是否有该地图,若缺少逻辑格文件可能是缺少地图资源,也可能是未更新地图。
五、数据报错:游戏运行中非常规错误,找技术支持解决
解决:这类问题咨询技术解决,一可更换端口,更新游戏配置等根据实际情况
六、表格报错:有些表格内容没有或者复制不完全会导致游戏启动失败;
a) 缺少表格
解决:掉落表打开失败,可能是没有掉落表相关内容,将掉落表相关内容上传,保存加载生效,重启。
b) 缺少脚本:活动表中的每个活动都要配置脚本
解决:id<1000>缺少活动脚本,在活动表中该项活动中加上该脚本,重启即可
七、脚本逻辑错误或脚本功能不实现时调试;
有时候写完脚本之后,想实现其功能,但是在游戏中却没有实现,在lua编辑器与游戏服务器中检查,没有脚本方面的报错,这可能是逻辑或者其他错误。需要一步步检查脚本,可用Msg方面的接口在游戏中打印信息。
例:自动打怪.lua
点击游戏中自动挂机图标,游戏人物不会执行自动打怪功能,但在游戏服务器与lua编辑器中没有自动打怪.lua及相关脚本的报错。检查自动打怪脚本.lua,用Msg接口SysMsg_SendBroadcastMsg输出信息,在脚本中else语句内容没有输出,没有执行else语句中的内容,说明在if时判断有误。
根据逻辑和脚本功能检查,发现在 if 中未用SetInt接口将对象玩家的变量自动保存到数据库中,导致不能正常执行脚本功能。添加SetInt接口之后,实现脚本功能。
注:将脚本复制在lua编译器中编译,检查是否有语法错误时,有些脚本开头的路径和require函数要注释,这是游戏中的关联,与lua编译器无关。
八、预防逻辑错误:写功能脚本时,先将该脚本的功能要实现的功能和步骤在纸上先列清楚,然后一步步将功能和逻辑实现,方便出错时检查是哪一步出错了。
例如:用lua编译器实现双色球功能。
功能:实现双色球功能——自动排序列出7个球
逻辑:1)要有红色球,蓝色球;
2)红球6个(1~33),蓝球1个(1~16);
3)红球的个数不能重复;
4)自动排序,从小到大;
5)输出
脚本实现:根据功能和逻辑步骤一步步用代码实现,得到所需要的功能。