【成功】龙洞加传送NPC的痛苦经历
把21墨拉登的60区传送NPC加到龙洞里,再复制21.evt该NPC的传送部分,命名文件为34.evt,将该文件放到EB目录map文件夹里,结果能成功传送到60区。evt文件名要和地图编号一致。只能传送兽的,因为byGroup是1(兽),原来加入的NPC也能顺利传送,因为他们的NpcId相同,而人族的NPC不同。
看来关键的问题是evt代码。evt文件放到eb目录下即可,AI目录下不放也一样。
我是如何找到MLD的60区传送的:
因为MLD的60区传送可用(在河对面码头处),MLD的代码是21,所以21.evt里必然有60区NPC的传送代码。
用记事本打开21.evt,找到了注释;;;传送到60区;;;,这段一定是桑德夫的传送脚本了。
第一行是EVENT 15310,15310一定指向该传送NPC,查找《EVT事件对应的npc表的bybyte值》,知道EVT_NUM值15310对应TYPE_NUM值151
在k_npc表中查找:select * fromk_npc where bytype=151 and strName='【传送】桑德夫'
得到2个结果,一个sSid值是27008,另一个是16093
select * fromk_npc where bytype=151 and strName='【传送】桑德夫'
表k_npc的sSid值对应表k_npcpos的npcid,所以在k_npcpos中查找哪个是21MLD的桑德夫。
select * fromk_npcpos where npcid=27008 and zoneid=21
select * fromk_npcpos where npcid=16093 and zoneid=21
查到16093是,照抄k_npcpos的设置,只把地图id改成34龙洞,添加该npc到龙洞。
复制21.evt的相关代码,用GM号飞到龙洞,点NPC成功传到60区,原来加的ID也是16093,也能成功传送。
看来点NPC有没有反应主要看以NPC所在地图ID为文件名的.evt文件所用数值是否和你加入的NPC对应,
这个也是难点,因为不知道这种对应关系去哪儿找,只能利用已知的。
K_NPC字段名
sSid strName sPid sSize iWeapon1 iWeapon2 byGroup byActType byType byFamily byRank byTitle iSellingGroup sLevel iExp iLoyalty iHpPoint sMpPoint sAtk sAc sHitRate sEvadeRate sDamage sAttackDelay bySpeed1 bySpeed2 sStandtime iMagic1 iMagic2 iMagic3 sFireR sColdR sLightningR sMagicR sDiseaseR sPoisonR sLightR sBulk byAttackRange bySearchRange byTracingRange iMoney sItem byDirectAttack byMagicAttack byMoneyType
16093 【传送】桑德夫 25200 100 0 0 1 1 151 1 0 1 0 60 0 0 30000 0 0 5000 194 194 1000 1500 2 5 1000 0 0 0 250 250 250 250 250 250 250 90 7 14 25 0 22203 0 0 1
K_NPCPOS字段名
ZoneID NpcID ActType RegenType DungeonFamily SpecialType TrapNumber LeftX TopZ RightX BottomZ LimitMinZ LimitMinX LimitMaxX LimitMaxZ NumNPC RegTime byDirection DotCnt path
MLD的桑德夫
34 16093 104 0 0 0 0 108 16 108 16 108 16 108 16 1 3600 -99 3
LINUX的桑德夫
34 16093 104 0 0 0 0 104 18 104 18 104 18 104 18 1 30 0 0 NULL
2个桑德夫不同之处是RegTime刷新时间,byDirection不知何意,DotCnt不知何意,再有就是坐标不同。
可见只要npcid对,其它的不重要。
改MLD桑德夫的国籍(byGroup值为3),
update K_NPC set byGroup=3 where strName='【传送】桑德夫' and sSid=16093
3既不是人族也不是兽族,就像迷宫里的警戒塔一样,人兽都不能攻击且能为2国服务,解决人兽同时进入时故意打死对方NPC的问题。
开始主要的,比较从21.evt复制过来的evt和linux端的34.evt文件。
惊奇的发现2个文件基本一样,区别只有传送地点的限制级别,为什么我原来点没反应呢。
原来16093是兽族的NPC,而我用的是人族GM号,第二次测试用的是兽族的GM号,
EVENT 15310对应兽族的NPC有效,而人族NPC没有相应代码,所以后加进的人族NPC没反应。
把NPC的byGroup改成3,就可以人兽共用,也用不着加2个NPC了。
如果开始再用兽族的NPC试验一下,也用不着折腾好几天了。
人族桑德夫的代码是17008,k_npc中查找这个NPC的byType值是149,查找《EVT事件对应的npc表的bybyte值》得知EVT_NUM值是17520
insert into k_npcpos values
('34','17008','104','0','0','0','0','113','17','113','17','113','17','113','17','1','30','0','0','NULL')
EVENT 15310改成EVENT 17520,其它地方再做相应改动,应该能激活人族NPC,这个不试验了。
下面是从21.evt复制过来的evt,单独保存为34.evt放到EB目录里,AI目录里没放。分号是注释。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;【传送】桑德夫 传送到60区 bytype=151;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;传送到60区;;;
EVENT 15310
E RUN_EVENT 15311
E RUN_EVENT 15312
END
EVENT 15311
A CHECK_NATION 1;卡鲁斯移动到60区
E SELECT_MSG 2 4632 4226 4226 4227 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
END
EVENT 4226
E RUN_EVENT 4227
E RUN_EVENT 4228
END
EVENT 4227
A CHECK_LV 1 59;不够60级
E SELECT_MSG 2 4751 6002 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
E RETURN
END
EVENT 4228
E ZONE_CHANGE 85 233 487
E RETURN
END
EVENT 15312
A CHECK_NATION 2;艾莫尔移动到60区
E SELECT_MSG 2 4631 4226 4229 4227 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
END
EVENT 4229
E RUN_EVENT 4230
E RUN_EVENT 4231
END
EVENT 4230
A CHECK_LV 1 59;不够60级
E SELECT_MSG 2 4751 6002 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
E RETURN
END
EVENT 4231
E ZONE_CHANGE 86 233 487
E RETURN
END
---分割线--------------------------------------------
下面是Linux2.0端的34.evt
;;;传送到21区;;;
EVENT 15310
E RUN_EVENT 15311
E RUN_EVENT 15312
END
EVENT 15311
A CHECK_NATION 1;卡鲁斯移动到墨拉登
E SELECT_MSG 2 4632 4226 4226 4227 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
END
EVENT 4226
E RUN_EVENT 4227
E RUN_EVENT 4228
END
EVENT 4227
A CHECK_LV 1 81;检查级别
E SELECT_MSG 2 4751 6002 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
E RETURN
END
EVENT 4228
E ZONE_CHANGE 21 814 435
E RETURN
END
EVENT 15312
A CHECK_NATION 2;艾莫尔移动到墨拉登
E SELECT_MSG 2 4631 4226 4229 4227 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
END
EVENT 4229
E RUN_EVENT 4230
E RUN_EVENT 4231
END
EVENT 4230
A CHECK_LV 1 81;检查级别
E SELECT_MSG 2 4751 6002 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
E RETURN
END
EVENT 4231
E ZONE_CHANGE 21 814 435
E RETURN
END
补充内容 (2014-6-8 00:01):
下面更正部分错误:
把21墨拉登的60区传送NPC加到龙洞里,再复制21.evt该NPC的传送部分,命名文件为34.evt,将该文件放到EB目录map文件夹里,结果能成功传送到60区。
evt文件名要和地图编号一致。只能传送兽的...
补充内容 (2014-6-8 00:02):
看楼下吧,这个有失误 猛虎端龙洞加入NPC和怪,龙洞是自带的34号地图
因为之前用GM号飞过龙洞,地图代号是34,所以判断猛虎端有完整的龙洞地图.
在ZONE_INFO中有龙洞地图dungeon_1211.smd,不知道为什么和另一个文件同名,只是编号不同.
在Quest_Talk_ch发现关于龙洞的对话,
在item_org_ch.tbl中发现物品龙的珍珠
由以上原因可判断猛虎端有完整的龙洞及传送,只是相关信息被人为删除了.
所以主要应该恢复被删除的东西,而不用论坛上说的66号地图,更用不着一堆111111开头的文件了.
查询命令:
select * from START_POSITION where zoneid=34
select * from k_npcpos where zoneid=34
第1步:
加起始位置,没这个/村庄命令无效,有去无回。
(Linux2.0端的)
insert into START_POSITION values('34','109','21','109','21','1','1','0','0','0','0')
K_NPC字段名
sSid strName sPid sSize iWeapon1 iWeapon2 byGroup byActType byType byFamily byRank byTitle iSellingGroup sLevel iExp iLoyalty iHpPoint sMpPoint sAtk sAc sHitRate sEvadeRate sDamage sAttackDelay bySpeed1 bySpeed2 sStandtime iMagic1 iMagic2 iMagic3 sFireR sColdR sLightningR sMagicR sDiseaseR sPoisonR sLightR sBulk byAttackRange bySearchRange byTracingRange iMoney sItem byDirectAttack byMagicAttack byMoneyType
K_NPCPOS字段名
ZoneID NpcID ActType RegenType DungeonFamily SpecialType TrapNumber LeftX TopZ RightX BottomZ LimitMinZ LimitMinX LimitMaxX LimitMaxZ NumNPC RegTime byDirection DotCnt path
第2步:
加入Linux2.0端的传送NPC桑德夫:
insert into k_npcpos values
('34','16093','104','0','0','0','0','104','18','104','18','104','18','104','18','1','30','0','0','NULL')
修改传送NPC的国籍,使其能为2个国家服用而不被恶意攻击。
update K_NPC set byGroup=3 where strName='【传送】桑德夫' and sSid=16093
3既不是人族也不是兽族,就像迷宫里的警戒塔一样,人兽都不能攻击且能为2国服务,解决人兽同时进入时故意打死对方NPC的问题。
加入Linux2.0端的怪。7035是"红龙",N组"龙的侍从"7036和"骷髅勇士"7037。怪有点多,呵呵。
insert into k_npcpos values
('34','7035','1','1','0','7','1','36','67','39','64','0','0','0','0','1','32767','45','0','NULL')
insert into k_npcpos values
('34','7036','1','0','0','0','0','20','66','21','65','0','0','0','0','1','300','45','0','NULL')
insert into k_npcpos values
('34','7036','1','0','0','0','0','34','46','35','45','0','0','0','0','1','300','45','0','NULL')
insert into k_npcpos values
('34','7036','1','0','0','0','0','34','86','35','85','0','0','0','0','1','300','44','0','NULL')
insert into k_npcpos values
('34','7037','1','0','0','0','0','36','51','37','50','0','0','0','0','1','300','46','0','NULL')
insert into k_npcpos values
('34','7037','1','0','0','0','0','39','46','40','45','0','0','0','0','1','300','44','0','NULL')
insert into k_npcpos values
('34','7037','1','0','0','0','0','36','42','38','41','0','0','0','0','1','300','44','0','NULL')
insert into k_npcpos values
('34','7037','1','0','0','0','0','21','70','23','69','0','0','0','0','1','300','46','0','NULL')
insert into k_npcpos values
('34','7037','1','0','0','0','0','24','66','26','65','0','0','0','0','1','300','45','0','NULL')
insert into k_npcpos values
('34','7037','1','0','0','0','0','21','61','23','60','0','0','0','0','1','300','44','0','NULL')
insert into k_npcpos values
('34','7037','1','0','0','0','0','39','86','40','85','0','0','0','0','1','300','45','0','NULL')
insert into k_npcpos values
('34','7037','1','0','0','0','0','36','83','38','81','0','0','0','0','1','300','45','0','NULL')
insert into k_npcpos values
('34','7037','1','0','0','0','0','36','90','37','89','0','0','0','0','1','300','46','0','NULL')
第3步:
用记事本建34.evt并放到eb目录的map下,文件内容如下:
;;;传送到21区;;;
EVENT 15310
E RUN_EVENT 15311
E RUN_EVENT 15312
END
EVENT 15311
A CHECK_NATION 1;卡鲁斯移动到墨拉登
E SELECT_MSG 2 4632 4226 4226 4227 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
END
EVENT 4226
E RUN_EVENT 4227
E RUN_EVENT 4228
END
EVENT 4227
A CHECK_LV 1 59;检查级别
E SELECT_MSG 2 4751 6002 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
E RETURN
END
EVENT 4228
E ZONE_CHANGE 21 814 435
E RETURN
END
EVENT 15312
A CHECK_NATION 2;艾莫尔移动到墨拉登
E SELECT_MSG 2 4631 4226 4229 4227 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
END
EVENT 4229
E RUN_EVENT 4230
E RUN_EVENT 4231
END
EVENT 4230
A CHECK_LV 1 59;检查级别
E SELECT_MSG 2 4751 6002 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
E RETURN
END
EVENT 4231
E ZONE_CHANGE 21 814 435
E RETURN
END 谁能告诉我,正常情况下迷宫怎么进龙洞,如果不手工添加进龙洞的NPC。 本帖最后由 falcon4585 于 2014-6-7 01:00 编辑
自己做个标记,明天改。
还要加物品龙珠。加红龙的代码不对,会引起EB不刷NPC和怪。错字服务服用 把21墨拉登的60区传送NPC加到龙洞里,再复制21.evt该NPC的传送部分,命名文件为34.evt,将该文件放到EB目录map文件夹里,结果能成功传送到60区。
evt文件名要和地图编号一致。只能传送兽的,因为byGroup是1(兽),原来加入的NPC也能顺利传送,因为他们的NpcId相同,而人族的NPC不同。
看来关键的问题是evt代码。evt文件放到eb目录下即可,AI目录下不放也一样。
我是如何找到MLD的60区传送的:
因为MLD的60区传送可用(在河对面码头处),MLD的代码是21,所以21.evt里必然有60区NPC的传送代码。
用记事本打开21.evt,找到了注释;;;传送到60区;;;,这段一定是桑德夫的传送脚本了。
第一行是EVENT 15310,15310一定指向该传送NPC,查找《EVT事件对应的npc表的bybyte值》,知道EVT_NUM值15310对应TYPE_NUM值151
在k_npc表中查找:select * fromk_npc where bytype=151 and strName='【传送】桑德夫'
得到2个结果,一个sSid值是27008,另一个是16093
select * fromk_npc where bytype=151 and strName='【传送】桑德夫'
表k_npc的sSid值对应表k_npcpos的npcid,所以在k_npcpos中查找哪个是21MLD的桑德夫。
select * fromk_npcpos where npcid=27008 and zoneid=21
select * fromk_npcpos where npcid=16093 and zoneid=21
查到16093是,照抄k_npcpos的设置,只把地图id改成34龙洞,添加该npc到龙洞。
复制21.evt的相关代码,用GM号飞到龙洞,点NPC成功传到60区,原来加的ID也是16093,也能成功传送。
看来点NPC有没有反应主要看以NPC所在地图ID为文件名的.evt文件所用数值是否和你加入的NPC对应,
这个也是难点,因为不知道这种对应关系去哪儿找,只能利用已知的。
K_NPC字段名
sSid strName sPid sSize iWeapon1 iWeapon2 byGroup byActType byType byFamily byRank byTitle iSellingGroup sLevel iExp iLoyalty iHpPoint sMpPoint sAtk sAc sHitRate sEvadeRate sDamage sAttackDelay bySpeed1 bySpeed2 sStandtime iMagic1 iMagic2 iMagic3 sFireR sColdR sLightningR sMagicR sDiseaseR sPoisonR sLightR sBulk byAttackRange bySearchRange byTracingRange iMoney sItem byDirectAttack byMagicAttack byMoneyType
16093 【传送】桑德夫 25200 100 0 0 1 1 151 1 0 1 0 60 0 0 30000 0 0 5000 194 194 1000 1500 2 5 1000 0 0 0 250 250 250 250 250 250 250 90 7 14 25 0 22203 0 0 1
K_NPCPOS字段名
ZoneID NpcID ActType RegenType DungeonFamily SpecialType TrapNumber LeftX TopZ RightX BottomZ LimitMinZ LimitMinX LimitMaxX LimitMaxZ NumNPC RegTime byDirection DotCnt path
MLD的桑德夫
34 16093 104 0 0 0 0 108 16 108 16 108 16 108 16 1 3600 -99 3
LINUX的桑德夫
34 16093 104 0 0 0 0 104 18 104 18 104 18 104 18 1 30 0 0 NULL
2个桑德夫不同之处是RegTime刷新时间,byDirection不知何意,DotCnt不知何意,再有就是坐标不同。
可见只要npcid对,其它的不重要。
改MLD桑德夫的国籍(byGroup值为3),
update K_NPC set byGroup=3 where strName='【传送】桑德夫' and sSid=16093
3既不是人族也不是兽族,就像迷宫里的警戒塔一样,人兽都不能攻击且能为2国服务,解决人兽同时进入时故意打死对方NPC的问题。
开始主要的,比较从21.evt复制过来的evt和linux端的34.evt文件。
惊奇的发现2个文件基本一样,区别只有传送地点的限制级别,为什么我原来点没反应呢。
原来16093是兽族的NPC,而我用的是人族GM号,第二次测试用的是兽族的GM号,
EVENT 15310对应兽族的NPC有效,而人族NPC没有相应代码,所以后加进的人族NPC没反应。
把NPC的byGroup改成3,就可以人兽共用,也用不着加2个NPC了。
如果开始再用兽族的NPC试验一下,也用不着折腾好几天了。
人族桑德夫的代码是17008,k_npc中查找这个NPC的byType值是149,查找《EVT事件对应的npc表的bybyte值》得知EVT_NUM值是17520
insert into k_npcpos values
('34','17008','104','0','0','0','0','113','17','113','17','113','17','113','17','1','30','0','0','NULL')
EVENT 15310改成EVENT 17520,其它地方再做相应改动,应该能激活人族NPC,这个不试验了。
下面是从21.evt复制过来的evt,单独保存为34.evt放到EB目录里,AI目录里没放。分号是注释。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;【传送】桑德夫 传送到60区 bytype=151;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;传送到60区;;;
EVENT 15310
E RUN_EVENT 15311
E RUN_EVENT 15312
END
EVENT 15311
A CHECK_NATION 1;卡鲁斯移动到60区
E SELECT_MSG 2 4632 4226 4226 4227 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
END
EVENT 4226
E RUN_EVENT 4227
E RUN_EVENT 4228
END
EVENT 4227
A CHECK_LV 1 59;不够60级
E SELECT_MSG 2 4751 6002 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
E RETURN
END
EVENT 4228
E ZONE_CHANGE 85 233 487
E RETURN
END
EVENT 15312
A CHECK_NATION 2;艾莫尔移动到60区
E SELECT_MSG 2 4631 4226 4229 4227 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
END
EVENT 4229
E RUN_EVENT 4230
E RUN_EVENT 4231
END
EVENT 4230
A CHECK_LV 1 59;不够60级
E SELECT_MSG 2 4751 6002 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
E RETURN
END
EVENT 4231
E ZONE_CHANGE 86 233 487
E RETURN
END
---分割线--------------------------------------------
下面是Linux2.0端的34.evt
;;;传送到21区;;;
EVENT 15310
E RUN_EVENT 15311
E RUN_EVENT 15312
END
EVENT 15311
A CHECK_NATION 1;卡鲁斯移动到墨拉登
E SELECT_MSG 2 4632 4226 4226 4227 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
END
EVENT 4226
E RUN_EVENT 4227
E RUN_EVENT 4228
END
EVENT 4227
A CHECK_LV 1 81;检查级别
E SELECT_MSG 2 4751 6002 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
E RETURN
END
EVENT 4228
E ZONE_CHANGE 21 814 435;这个坐标如果错误会飘在空中,/村庄回城,然后修改坐标。
E RETURN
END
EVENT 15312
A CHECK_NATION 2;艾莫尔移动到墨拉登
E SELECT_MSG 2 4631 4226 4229 4227 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
END
EVENT 4229
E RUN_EVENT 4230
E RUN_EVENT 4231
END
EVENT 4230
A CHECK_LV 1 81;检查级别
E SELECT_MSG 2 4751 6002 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
E RETURN
END
EVENT 4231
E ZONE_CHANGE 21 814 435;这个坐标如果错误会飘在空中,/村庄回城,然后修改坐标。
E RETURN
END
页:
[1]