您当前的位置:首页 > 其他技术 > 天龙技术

天龙八部3的地图传送点修改教程

本文出处:网游动力作者:本站发布时间:2013-02-17阅读次数:

今天我也来写一个教程,我用的凤鸣天三,其中有的地图传送点位置不对有的没有传送点,今天把我的修改经验分享给大家,有不对之处欢迎指正,如果觉得不错请多支持!!!!!!

传送点修改

传送点相关文件

1.    PublicSceneSceneInfo.ini 描述了所有地图的信息

2.    PublicDataScript.dat 描述了所有脚本的信息

3.    PublicScene**_ area.ini 描述了地图传送点的信息(一般情况下,该文件名都带有对应地图的全拼这样,如凤鸣镇的文件对应是fengmingzhen_area.ini,不过要有的文件有多个,如洛阳,我的端就有luoyang__area.ini和luoyang_new_snow_area.ini两个文件,其实是用的后一个)

4.    PublicDataScripteventchuansongechuansong_**.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        ;详细含义参见 ServerConfigPvpRuler.txt         

BeginPlus=8122400  ;附加项有效时间起始(年月日时,YYMMDDHH)

_clientres=0        ;有效时间内使用此项替换clientres             

EndPlus=9030100            ;附加项有效时间终止(年月日时,YYMMDDHH)

IsReLive=0                      ;是否允许新手在本场景原地复活,缺省为0时新手不能在原地复活"

可以通过搜索场景名称查找对应的地图

Script.dat部分内容如下 www.5uwl.net

;传送点

400000=eventchuansongechuansong_luoyang_dunhuang.lua

400001=eventchuansongechuansong_luoyang_songshan.lua

400002=eventchuansongechuansong_luoyang_yannan.lua

其中400000为脚本代号,等号后面为对应的脚本文件

下面举例说明一下传送点的修改步骤

例如我用的端是凤鸣天三最新版本,其中洛阳到嵩山的传送点位置错误,在场景中传送点NPC在255、466,而该位置却不能触发传送,实际触发点在258、446,两点相差很远,下面就说明一下其修改步骤.

首先在PublicScene目录下找到文件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

保存该文件,上传到服务器,然后重启服务端即可.

如果要增加传送点,过程也类似.

不如我的端里 凤鸣镇的传送点都不好用,检查服务端,是没有传送点造成的,现在恢复传送点就要手动增加,如增加凤鸣镇到天岐南淮的传送点.

首先在PublicScene目录下找到文件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=objfengmingofengming_luomi.lua

045001=objfengmingofengming_ouyeqing.lua

045002=objfengmingofengming_jiaoying.lua

045003=objfengmingofengming_tongtianta.lua

045004=objfengmingofengming_ceshi.lua

可见其脚本号编写到045004,我们就增加一个045005,查找一下也没有被使用,所以就采用045005作为脚本号.然后起一个文件名,作为传送脚本文件名,这里就取名为

echuansong_fengming_tianqi.lua,然后在eventchuansong目录下建立该文件,其内容稍后再改.现在将Script.dat在045004下增加如下一行,然后保存.

045005=eventchuansongechuansong_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, 5755,276,145)

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.

其他地方都无需修改.

最后将刚才修改和新建的文件全部上传到服务端,然后重启服务端即可.