本帖最后由 zdfwyh 于 2013-2-17 16:11 编辑
今天我也来写一个教程,我用的凤鸣天三,其中有的地图传送点位置不对有的没有传送点,今天把我的修改经验分享给大家,有不对之处欢迎指正,如果觉得不错请多支持!!!!!!
传送点修改 传送点相关文件 1. Public\Scene\SceneInfo.ini 描述了所有地图的信息 2. Public\Data\Script.dat 描述了所有脚本的信息 3. Public\Scene\**_ area.ini 描述了地图传送点的信息(一般情况下,该文件名都带有对应地图的全拼这样,如凤鸣镇的文件对应是fengmingzhen_area.ini,不过要有的文件有多个,如洛阳,我的端就有luoyang__area.ini和luoyang_new_snow_area.ini两个文件,其实是用的后一个) 4. \Public\Data\Script\event\chuansong\echuansong_**.lua传送脚本(该文件名通常会包含需要传送的两个的地图的全拼, 如洛阳到敦煌的文件名是echuansong_luoyang_dunhuang.lua,该文件名是在Script.dat中声明的,也可能有例外的情况) SceneInfo.ini文件部分内容如下 [system] scenenumber=723 ;游戏世界的场景总数
[scene0] threadindex=30 ;驱动线程的索引 clientres=0 ;客户端使用的场景资源,定义于客户端/Config/SceneDefine.txt文件的最开始列数值 name=洛阳 ;场景名字 active=1 ;场景是否激活 file=luoyang.scn ;场景文件名 serverid=0 ;此场景是由哪个服务器端程序调用的 type=0 ;场景类型,如果是0,表示普通游戏场景,如果是1表示副本 4表示帮会城市" PvpRuler=0 ;详细含义参见 Server\Config\PvpRuler.txt BeginPlus=8122400 ;附加项有效时间起始(年月日时,YYMMDDHH) _clientres=0 ;有效时间内使用此项替换clientres EndPlus=9030100 ;附加项有效时间终止(年月日时,YYMMDDHH) IsReLive=0 ;是否允许新手在本场景原地复活,缺省为0时新手不能在原地复活" 可以通过搜索场景名称查找对应的地图 Script.dat部分内容如下 ;传送点 400000=\event\chuansong\echuansong_luoyang_dunhuang.lua 400001=\event\chuansong\echuansong_luoyang_songshan.lua 400002=\event\chuansong\echuansong_luoyang_yannan.lua 其中400000为脚本代号,等号后面为对应的脚本文件 下面举例说明一下传送点的修改步骤 例如我用的端是凤鸣天三最新版本,其中洛阳到嵩山的传送点位置错误,在场景中传送点NPC在255、466,而该位置却不能触发传送,实际触发点在258、446,两点相差很远,下面就说明一下其修改步骤. 首先在Public\Scene目录下找到文件luoyang_new_snow_area.ini,打开后,内容如下(部分): [area_info] area_count=7 [area0] guid=0 script_id=400000 left=79.0000 top=253.0000 right=85.0000 bottom=262.0000 [area1] guid=0 script_id=400001 left=256.0000 top=438.0000 right=262.0000 bottom=448.0000 [area2] guid=0 script_id=400002 left=450.0000 top=255.0000 right=470.0000 bottom=265.0000 其中area_count表示传送点数目, [area0]表示第一个传送点,以此类推. script_id对应触发脚本,在Script.dat中可以查到,可以查出,400000是表示传送到敦煌, 400001是传送到嵩山, 400002是传送到雁南.我们要修改的坐标是嵩山对应的坐标,可见,255,466是无法落在其声明的区域内的,所以将该区域进行一下修改即可,修改后如下 [area_info] area_count=7 [area0] guid=0 script_id=400000 left=79.0000 top=253.0000 right=85.0000 bottom=262.0000 [area1] guid=0 script_id=400001 left=253.0000 top=464.0000 right=258.0000 bottom=467.0000 [area2] guid=0 script_id=400002 left=450.0000 top=255.0000 right=470.0000 bottom=265.0000 保存该文件,上传到服务器,然后重启服务端即可. 如果要增加传送点,过程也类似. 比如我的端里 凤鸣镇的传送点都不好用,检查服务端,是没有传送点造成的,现在恢复传送点就要手动增加,如增加凤鸣镇到天岐南淮的传送点. 首先在Public\Scene目录下找到文件fengmingzhen_area.ini打开后,内容如下: [area_info] area_count=0 [area0] guid=0 script_id=400906 left=112.0000 top=26.0000 right=123.0000 bottom=34.0000 可见其中area_count =0,表示没有传送点.要增加传送点首先要找到一个空闲的脚本号,打开Script.dat查找”凤鸣镇”,可以找到如下内容: ;凤鸣镇NPC 045000=\obj\fengming\ofengming_luomi.lua 045001=\obj\fengming\ofengming_ouyeqing.lua 045002=\obj\fengming\ofengming_jiaoying.lua 045003=\obj\fengming\ofengming_tongtianta.lua 045004=\obj\fengming\ofengming_ceshi.lua 可见其脚本号编写到045004,我们就增加一个045005,查找一下也没有被使用,所以就采用045005作为脚本号.然后起一个文件名,作为传送脚本文件名,这里就取名为 echuansong_fengming_tianqi.lua,然后在\event\chuansong\目录下建立该文件,其内容稍后再改.现在将Script.dat在045004下增加如下一行
045005=\event\chuansong\echuansong_fengming_tianqi.lua
然后保存.再将fengmingzhen_area.ini按照下面进行修改,并保存. [area_info] area_count=1 [area0] guid=0 script_id=045005 ;天岐南淮 left=438.0000 top=142.0000 right=442.0000 bottom=146.0000 然后打开刚才建立的文件echuansong_fengming_tianqi.lua,键入如下内容:(可以从其他文件复制过来再修改,我就是复制的洛阳传送脚本再修改的) --玩家进入一个 area 时触发 function x400000_OnEnterArea( sceneId, selfId ) CallScriptFunction((400900),"TransferFunc",sceneId, selfId, 575,39,216) end --玩家在一个 area 呆了一段时间没走则定时触发 function x400000_OnTimer( sceneId, selfId ) -- 毫秒,看在这个 area 停留多久了 StandingTime =QueryAreaStandingTime( sceneId, selfId ) -- 5秒后仍未传送 if StandingTime>= 5000 then x400000_OnEnterArea(sceneId, selfId ) ResetAreaStandingTime(sceneId, selfId, 0 ) end end --玩家离开一个 area 时触发 function x400000_OnLeaveArea( sceneId, selfId ) end
其中的关键点在 CallScriptFunction((400900),"TransferFunc",sceneId, selfId, 575,39,216) 这里面575,39,216三个数字,第一个是地图号,到SceneInfo.ini中可以查到天岐南淮的代号是575,后面两个数字表示x和y坐标,不过对于未知的地图该坐标需要自己去实验,那不好就落到山顶或地图边缘而动不了J. 其他地方都无需修改. 最后将刚才修改和新建的文件全部上传到服务端,然后重启服务端即可. |