ad208三国

 找回密码
 加入
搜索
热搜: 活动 交友 discuz
查看: 1131|回复: 2

魔兽世界开源版playerbot(机器人玩家)使用指南

[复制链接]
发表于 2024-4-1 14:05:15 | 显示全部楼层 |阅读模式

pc2g,电脑好游戏 说明:配合playerbot魔兽世界开源版就是一款一流的开放世界游戏~

魔兽世界是网络游戏,如果你单机玩是很要命的体验,很多需要组队的任务一个人是搞不定的,副本一个人也是排不平的,如果用等级碾压又会少了乐趣,怎么办?解决方案就是在游戏中增加玩家机器人(Playerbot),有了机器人玩家,游戏中绝大多数玩法都可以正常体验了,哪怕不用GM权限作弊,也能非常丝滑的娱乐,众多任务、剧情、职业、专业足够你玩半辈子。

目前开源的玩家机器人项目是很多的,但个人强烈推荐的是:https://github.com/liyunfan1223/mod-playerbots

推荐原因很简单,本人使用感觉功能齐全易上手,AI比我这种菜鸟玩家操作的都好(下副本时感觉AI队友格外靠谱),而且项目保持和AzerothCore最新版同步(这对我很重要,我是强迫症,不保持我的游戏是最新版我会很难受)。

playerBot基本功能包括:

    通过聊天命令进行精细的机器人控制
    数百个机器人随时在世界各地等待您的邀请或地下城查找器
    100 多个聊天命令,与机器人进行交互
    30 多种可选择的策略
    改进的拍卖行机器人,具有机器人作为竞标者和市场价格计算功能

你可以邀请机器人加入队伍(或使用地下城查找器),进行地下城、团队副本或进行一些 PvP;将您的小号角色作为机器人召唤,进行快速物品交换、施放一些法术、增益效果、升级、制作等操作;与对立阵营的机器人进行随机 PvP 或与您阵营的机器人进行决斗;进行交易和拍卖行活动……

增加Playerbot后,使《魔兽世界》成为一个完全的单机游戏!有兴趣可以先上 http://wow.gameivy.com 测试和在线机器人一起游戏。

如果你想在自己电脑上架设体验,可以看看我以前的文章AzerothCore服务端和Playerbot机器人编译指南,这里重点介绍机器人的使用方式。
 楼主| 发表于 2024-4-1 14:06:04 | 显示全部楼层
机器人(Playerbot)

需要提前说明的是游戏中机器人分为二个类型:随机机器人(random bots)和召唤机器人(summoned bots)。

随机机器人是服务器初始化时自动生成的在线角色,而召唤机器人是通过.playerbot bot addclass CLASSNAME(warrior/paladin/hunter/rogue/priest/shaman/mage/warlock/druid/dk)指令创建的角色和使用.playerbot bot login NAME上线的角色。相关代码:

if (!strcmp(cmd, "addclass")
    {
        if (sPlayerbotAIConfig->addClassCommand == 0 && master->GetSession()->GetSecurity() < SEC_GAMEMASTER) {
            messages.push_back("You do not have permission to create bot by addclass command";
            return messages;
        }
        if (!charname) {
            messages.push_back("addclass: invalid CLASSNAME(warrior/paladin/hunter/rogue/priest/shaman/mage/warlock/druid/dk)";
            return messages;
        }
        uint8 claz;
        if (!strcmp(charname, "warrior"))
        {
            claz = 1;
        }
        else if (!strcmp(charname, "paladin"))
        {
            claz = 2;
        }
        else if (!strcmp(charname, "hunter"))
        {
            claz = 3;
        }
        else if (!strcmp(charname, "rogue"))
        {
            claz = 4;
        }
        else if (!strcmp(charname, "priest"))
        {
            claz = 5;
        }
        else if (!strcmp(charname, "shaman"))
        {
            claz = 7;
        }
        else if (!strcmp(charname, "mage"))
        {
            claz = 8;
        }
        else if (!strcmp(charname, "warlock"))
        {
            claz = 9;
        }
        else if (!strcmp(charname, "druid"))
        {
            claz = 11;
        }
        else if (!strcmp(charname, "dk"))
        {
            claz = 6;
        }
        else
        {
            messages.push_back("Error: Invalid Class. Try again.");
            return messages;
        }
        uint8 master_race = master->getRace();
        std::string race_limit;
        switch (master_race)
        {
            case 1:
            case 3:
            case 4:
            case 7:
            case 11:
                race_limit = "1, 3, 4, 7, 11";
                break;
            case 2:
            case 5:
            case 6:
            case 8:
            case 10:
                race_limit = "2, 5, 6, 8, 10";
                break;
        }
        // find a bot fit conditions and not in any guild
        QueryResult results = CharacterDatabase.Query("SELECT guid FROM characters "
            "WHERE name IN (SELECT name FROM playerbots_names) AND class = '{}' AND online = 0 AND race IN ({}) AND guid NOT IN ( SELECT guid FROM guild_member ) "
            "ORDER BY account DESC LIMIT 1", claz, race_limit);
        if (results)
        {
            Field* fields = results->Fetch();
            ObjectGuid guid = ObjectGuid(HighGuid:layer, fields[0].Get<uint32>());
            AddPlayerBot(guid, master->GetSession()->GetAccountId());

            messages.push_back("addclass " + std::string(charname) + " ok");
            return messages;
        }
        messages.push_back("addclass failed.");
        return messages;
    }

随机机器人和召唤机器人的核心区别有几点:

    随机机器人可以自己上下线,自己和玩家一样正常的游戏,而召唤机器人不会自己上线练级,而且在召唤的玩家下线后会自动下线。
    你可以使用.playerbot bot init指令来初始化召唤机器人的等级、装备、天赋,深度定制机器人,但无法这样控制随机机器人。
    随机机器人类似其它独立的玩家,你不能强制交易他们的物品,而召唤机器人和你的小号都是可以随意交易的。

关于bot init指令的用法后面介绍,这里我们先跳过。比较特别的是玩家同一个账号下的小号也是可以当机器人对待的,小号综合了随机机器人和召唤机器人的特点,
 楼主| 发表于 2024-4-1 14:06:29 | 显示全部楼层
机器人基础用法

游戏中的玩家机器人你都可以和其他玩家一样看待,但和真实玩家的区别主要有二点:1. 他们不会和真人一样聊天(也许后期接入AI可以解决);2. 他们会自动接受玩家的组队、公会邀请、交易等要求,并根据玩家行动做出相应的反应。

机器人的基础用法很简单,你邀请他组队一起游戏即可。除非服务器做了限制(检查等级差距、检查装备差距),否则机器人都会自动同意和你组队,如果是跨区域机器人会自动传送到你身边,如果是在同一个地图,机器人会自己寻路跑到你身边,组队后机器人就会一直追随你,并根据你的行动产生行为,具体如下:
玩家行动        机器人的反应
玩家接受任务        机器人也会接对应的任务
玩家与任务提供者交谈        机器人会提交已完成的任务
玩家使用炉石        机器人也会自动炉石
玩家使用食物        机器人也会自动吃喝
玩家向机器人交易        机器人会自动打开交易并告诉你他有什么物品
玩家邀请机器人组队、加入公会        机器人接受邀请
玩家开始团队检查准备        机器人会自动准备并根据自己的天赋选择分工
玩家上马/下马        机器人自动上马/下马
玩家进入副本        机器人跟随进入副本
玩家攻击怪物        机器人根据自己的职业自动攻击或治疗

也就是组队后你不需要特意控制,机器人全自动AI管理,而且和机器人一起组队做任务时你可以把拾取模式改为自由拾取,这样所有东西都只有你自己拾取,只要你的任务物品够了,哪怕机器人没有任何任务物品,在你交任务时机器人也会同样完成任务,但务必注意要让机器人在身边。而下副本时推荐把拾取模式改为队长分配,这样机器人会自动拾取,免得玩家一个人太忙,或者背包装不下,而且遇到好装备可以由玩家控制分给谁,如果机器人分到好装备也会自动装备的。
机器人进阶用法

除了完全自动化外,玩家也可以使用一系列指令来指挥机器人,需要注意的指令只能使用以下二种方式:1. 私聊方式控制单个机器人,2. 小队聊天控制全队机器人。

你可以私聊机器人help查看可用的控制指令,因为指令非常多,这里列出最有用的部分。

以下指令都可以做成宏来方便使用,比如/p follow或/w follow。
行动
指令        说明
follow        让机器人跟随玩家
stay        让机器人原地等待
flee        让机器人跟随玩家逃跑
grind        让机器人自动打怪练级

提示:默认机器人是自动follow玩家的,但如果玩家挂了,机器人会stay在原地,这时玩家复活后需要用follow指令让机器人重新跟随
物品

注意以下指令中的[item]都是在游戏中按shift+点击物品生成的链接。
指令        说明
e [item]        让机器人装备指定item
u [item]        让机器人使用指定item
u [item] [target]        让机器人在指定对象上使用item
s [item]        在NPC处出售item
s *        在NPC处出售所有灰色品质的item
b [item]        让机器人在NPC处购买item
bank [item]        让机器人把物品存银行
bank -[item]        让机器人从银行取出物品
gb [item]        让机器人把物品存公会银行
gb -[item]        让机器人从公会银行取物品
[item]        在交易时让机器人交易指定物品给你

提示:在你和机器人交易时可以用类似2g 3s 5c(2金3银5铜)的指令让机器人交易金币给你,但是除非是自己的小号或自己召唤的机器人,否则你必须给机器人等价值物品才能交易。
任务

注意以下指令中的[quest]都是在游戏中按shift+点击任务生成的链接。
指令        说明
accept [quest]        机器人接受选择NPC的指定任务
accept *        机器人接受选择NPC的所有任务
drop [quest]        机器人放弃指定任务
r [item]        让机器人选择任务奖励(需服务器配置开启由玩家选择)
quests        查看机器人任务摘要(未完成/已完成/任务数)
quests incompleted        查看机器人未完成的任务列表
talk        让机器人和选择NPC对话,这对对话听故事类任务非常有用

提示:你可以把自己任务共享给机器人,如果机器人符合条件且日志未满是会自动接受的。另外组队任务时只要玩家任务物品够了,哪怕机器人没有任何任务物品在你交任务时只要机器人在身边,机器人也能自动完成任务。
其它
指令        说明
los        列出机器人可见的所有游戏对象
stats        列出机器人的资料(包括金币、经验、背包空间状态等)
trainer learn        让机器人学习指定NPC的技能(提前是能学习)
spells        显示机器人的技能
cast [spell]        让机器人使用技能
home        把机器人的炉石设置在当前旅馆
summon        召唤机器人到身边
release        机器人死后释放灵魂(先release再summon就直接在身边复活了)
ll all        机器人默认不会loot抢你的东西,好东西他们全放弃,你可以用这个指令让他们参与loot,all也可以换为skill``quest``normat等

提示:summon是非常重要的一个作弊级指令,副本中机器人挂了都不用跑图,让机器人释放灵魂后就直接召回,只要自己不死都能车轮战强推BOSS,可让副本难度直线下降。
.playerbot指令

以上指令都是普通的机器人互动指令,下面几个是非常重要的机器人管理指令,包括让机器人上下线和创建召唤机器人,直接输入.playerbot bot [指令],具体指令如下:
指令        说明
login [name1,name2,name3,name4,...]        让指定机器人上线(也可以上线自己账号下的其它角色做为机器人)
logout [name1,name2,name3,name4,...]        让指定机器人下线(组队时你下线机器人会自动下线,无需指令)
addclass [CLASSNAME]        召唤指定职业的机器人,职业包括warrior/paladin/hunter/rogue/priest/shaman/mage/warlock/druid/dk
init=auto [name1,name2,name3,name4,...]        快速设置机器人的等级、装备到你的阶段,并初始化任务、技能等状态,此指令仅针对addclass召唤机器人
initself=epic        GM级指令,让自己初始化为一身紫装(正常服务端会禁止玩家使用这个指令)

提示1:init=auto和initself=epic为GM级指令,有的服务器会限制使用,除了用auto还可以用"rare"(蓝装)、"uncommon"(绿装)、"epic"(紫装)。

提示2:推荐加机器人为好友或邀请到同一个公会中,方便随时组队,当然最推荐的还是自己把小号用机器人指令登录到游戏,这样可以1带4实现自己和自己组队游戏。

Archiver|手机版|小黑屋|ad208三国

GMT+8, 2024-10-10 00:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表