您的位置: 首页 > 游戏攻略 >

魔兽单机游戏:关于PlayerBot和NPCBot的一些区别

192次浏览     发布时间:2024-05-15 15:48:29    

关于PlayerBot和NPCBot的一些区别

在魔兽单机游戏中,PlayerBot是召唤出自己账号名下的其他角色,可以一起接交任务,打怪抢装备升级,可以指定谁是T谁是治疗,能自动和你一起打怪接任务,很好玩。

而NPCBot是召唤系统预定的一些NPC,这些NPC的等级会自动和你自己的角色的等级一样,这属于临时雇佣性质,可以给他穿上装备,选择天赋设定职责。

在副本中,很多BOSS不都是有点名嘛,例如ICC老1的骨刺,NPCBot是不会被点名的,而PlayerBot却是会被点名的,因为Playerbot是实打实的玩家角色。所以NPCBot和PlayerBot各有特点,看个人喜欢用哪个,从智能角度来讲,NPCBot更智能一些。我升级的时候喜欢用PlayerBot,是自己人,NPCBot只能叫雇佣兵。


最开始用TrinityCore源码编译服务器的时候,当时我用的中文客户端地图解压出的dbc,map,mmap,vmap等游戏数据,发现PlayerBot远程发呆不能使用技能,近战也只是平砍。开始时有些懵逼,后来网上一搜说用英文版的客户端导出游戏数据就好了。一实践确实解决这个问题。但是也发现带来了其他一些不好的体验,毕竟中文的客户端上显示一堆的英文的东西也不是很爽,比如对Playerbot使用spells指令查看他的所有可用法术,显示的全都是英文,看起来太费劲了。后来换成AzerothCore源码后依旧有同样的问题。


关于该问题的解决方案

咱原则是先解决能用,后解决好用的问题。服务器搭好也能玩了,就开始琢磨解决这个问题。看了PlayerBot源码,各种Trigger使用的都是技能的英文名称去施法,而不是法术ID,用中文客户端导出的dbc数据中法术名称都是中文的。知道问题就好改了,不就是把法术的英文名称在SpellInfo结构中正确加载进去的问题么。

1、首先用中文游戏客户端导出数据,服务器端使用该份数据,命名为data

2、再用英文版客户端导出数据,命名为data_en

3、网上找一个叫WDBXEditor的工具

4、用WDBXEditor打开data下的dbc目录下的Spell.dbc,将数据导出成csv格式,把该csv文件导入到表spell_dbc_zh。(数据库acore_world中有个spell_dbc表是额外扩充的一些法术,你可以看到里面只有4000多条记录,而spell_dbc_zh表中有49839条记录。)DBCStores.cpp会把data/dbc/Spell.dbc数据加载进去后,再把spell_dbc中的数据合并进去)

5、用WDBXEditor打开data_en下的Spell.dbc,将数据导出成csv格式,把该csv导入到表spell_dbc_en

6、创建spell_locale表:见图1


7、把spell_dbc_zh表的Name, NameSubtext插进去,locale设为zhCN。NameSubtext字段是Rank等级说明,例如法师的法术:寒冰箭(等级2),Name中存储的是“寒冰箭”,NameSubtext存储的是“等级2”。

insert into spell_locale(ID, locale, Name, NameSubtext) select ID, 'zhCN', Name_Lang_deDE, NameSubtext_Lang_deDE from spell_dbc_zh;

这里为啥是Name_Lang_deDE 而不是Name_Lang_zhCN字段呢。这就跟结构体的加载机制有关,其实在DBCStores中加载xxx_dbc表数据时,表字段的名称是没有意义的,而是根据结构体的结构和表的相应字段顺序依次加载。zhCN在LocalConstant中的值是4,也就是Name_开头字段的第五个,正好就是Name_Lang_deDE。开始我看的时候也是一脸的懵逼。

8、把spell_dbc_en表的Name, NameSubtext插进去,locale设置为enUS

insert into spell_locale(ID, locale, Name, NameSubtext) select ID, 'enUS', Name_enUS, NameSubtext_Lang_enUS from spell_dbc_en;

9、数据准备好了,服务器端还需加载进去,这时候就得撸代码啦。修改SpellMgr.cpp,在LoadSpellInfoStore()方法中把spell_locale的数据加载进去并修改SpellInfo的SpellName字段:见图2


编译启动服务,PlayerBot不发呆了,各种技能嗖嗖的发啊

#兽世界怀旧服# #Playerbot# #AzerothCore#

相关文章

平台逾期有什么影响(信用卡、网贷逾期后的四个后果)

信用卡、网贷逾期会不会坐牢?"信用卡、网贷逾期后面临的"四个"后果。信用卡网贷逾期会不会坐牢?收到一个粉丝的私信很有意思,问我信用卡逾期的后果是什么?催收说要进行刑事诉讼,是不是真的?我会不会因为这样子而坐牢?在这里今天小猪哥完完整整的整理了一个视频,帮助需要的朋友了解一下,逾期后会面临的情况及问题
2025-06-07 02:08:53

养老年金是什么保险种类(有社保了还有必要买养老年金吗?)

一、什么是养老年金险?什么是什么是养老年金险?简单来说,就是按照一定年限或者金额给保险公司交保费,保险公司到了合同约定的年龄,按照合同约定的金额给付被保险人生存金的一个险种,可以是按月给付,也可以是按年给付。由于它的生存保险金的给付,通常采取的是按年度周期给的方式,而且主要是用来养老的,因此称为养老
2025-06-07 00:04:31

蓝筹股是什么股票(什么是蓝筹股和红筹股?)

也许你经常会看到一些股市牛人每天更新大盘,用上的各种术语你是看得一头雾水,这样的话,即使再好再准的股评你也是看不明白的,等于这些信息将于你无关,所以作为新手,一定要入乡随俗把一些基本的股市术语理解了,才能在股市里有更好的交流。下面就全面的给大家讲解一些基本的术语。蓝筹股:蓝筹股是指稳定的现金股利政策
2025-06-06 14:34:43

利息1分是什么意思(民间借贷利息约定几分以下,才能受法律保护?)

利息和利率,是在民间借贷中很多朋友关心但又不清楚相关计算方法及法律规定的问题。1、利率和利息是如何计算的呢?利率与利息是两个不同的概念。利率,是“利息率”的简称,就是指一定期限内利息额与本金的比率。利率通常分为三种表示方式,年利率、月利率、日利率。年利率以本金的百分之几(%)表示,月利率以千分之几(
2025-06-06 14:07:53

兰花为什么没开就干了(兰花叶夹过早干枯通常由以下原因导致)

空气干燥或浇水不及时,叶甲会因缺水干枯发黄。需保持环境湿度(如喷雾、放湿盆),避免过度干旱。高湿环境下通风差,叶甲易闷湿腐烂变黑。需加强空气流通,避免闷湿环境。茎腐病等病菌从根部蔓延,叶甲最先变黑枯萎。需剪除病叶,喷杀菌剂(如多菌灵),并检查根部是否腐烂。老苗叶甲自然退化属正常现象,但新苗若过早干枯
2025-05-09 11:26:51

如何实现黑神话悟空如何全物品全通关

随着《黑神话:悟空》这款国产游戏巨作的横空出世,它不仅以其精美的画面、深厚的文化底蕴以及极具挑战性的游戏玩法赢得了广大玩家的热烈追捧,更在全社会范围内掀起了一股西游文化的热潮。更令人兴奋的是,这股热潮还巧妙地与文旅产业相结合,为玩家们带来了前所未有的福利——通关《黑神话:悟空》即可享受多地景区的免费
2025-05-08 03:36:47

网站内容来自网络,如有侵权请联系我们,立即删除!
Copyright © 阔百科 琼ICP备2023010365号-4