mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-02-03 10:53:48 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f0dc6de606 |
71
README_CN.md
71
README_CN.md
@@ -1,71 +0,0 @@
|
|||||||
[English](README.md) | [Español](README_ES.md) | [中文](README_CN.md)
|
|
||||||
|
|
||||||
# 玩家机器人模块
|
|
||||||
|
|
||||||
欢迎使用AzerothCore的玩家机器人模块,这是一个基于IKE3玩家机器人的正在进行中的项目。这些玩家机器人利用实际的玩家数据,使您能够与您自己的替身进行交互,组建队伍,升级角色等等。
|
|
||||||
|
|
||||||
如果您遇到任何错误或出现崩溃,请您将它们报告为GitHub问题。您宝贵的反馈将帮助我们协作改进和增强这个项目。
|
|
||||||
|
|
||||||
## 安装
|
|
||||||
|
|
||||||
请注意,此模块需要对AzerothCore进行特定的自定义更改。为了确保兼容性,您必须使用我fork的自定义分支来编译它,可以在这里找到:[mod-playerbots/azerothcore-wotlk/tree/Playerbot](https://github.com/mod-playerbots/azerothcore-wotlk/tree/Playerbot)。
|
|
||||||
|
|
||||||
要安装此模块,请参考AzerothCore Wiki的详细说明:[AzerothCore安装指南](https://www.azerothcore.org/wiki/installation)。
|
|
||||||
|
|
||||||
我们提供了一个简单的方法来克隆该模块:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/mod-playerbots/azerothcore-wotlk.git --branch=Playerbot
|
|
||||||
cd azerothcore-wotlk/modules
|
|
||||||
git clone https://github.com/mod-playerbots/mod-playerbots.git --branch=master
|
|
||||||
```
|
|
||||||
|
|
||||||
## 快速开始与文档
|
|
||||||
|
|
||||||
要快速开始并了解一系列命令,您可以参考ike3原版playerbots的手册。该模块提供了大部分基本命令。您可以在此找到文档:[IKE3 Playerbots 文档](https://ike3.github.io/mangosbot-docs/)。请注意,在我们的模块中,您需要将文档中所有的 `.bot` 替换为 `.playerbot bot`。
|
|
||||||
|
|
||||||
请注意,由于项目仍在开发中,新添加的命令的文档目前尚不完善。
|
|
||||||
|
|
||||||
## 进展
|
|
||||||
|
|
||||||
该模块主要强调以下关键功能,并在这些领域实施了改进:
|
|
||||||
|
|
||||||
- **世界中的机器人(随机机器人):** 我们增强了随机机器人的行为,使它们更接近真实玩家的表现,从而创建了更真实的玩家服务器环境。
|
|
||||||
|
|
||||||
- **团队副本中的机器人:** 我们赋予机器人征服具有挑战性的团队副本内容的能力,通过为各种Boss实施特定策略,使团队副本更加吸引人。此外,我们增强了机器人在DPS、治疗和坦克等各种角色中的能力,确保它们有效地为团队的成功做出贡献。
|
|
||||||
|
|
||||||
- **战场中的机器人:** 机器人现在能够与真实玩家一起积极参与战场,为这些PvP场景增添了深度和刺激。
|
|
||||||
|
|
||||||
- **与机器人的交互:** 我们改进了真实玩家和机器人之间的交互,使玩家能够在与机器人伙伴合作时完成任务并升级多个角色。
|
|
||||||
|
|
||||||
- **玩家进阶路径:** 我们设计了一个改进的玩家进阶路径,辅以机器人,为玩家提供了一种替代且引人入胜的游戏体验。
|
|
||||||
|
|
||||||
- **稳定性:** 我们的努力主要集中在增强使用Playerbots模块时AzerothCore的整体稳定性。这些改进旨在防止服务器崩溃,并确保所有用户都能获得更流畅的体验。
|
|
||||||
|
|
||||||
- **配置:** 我们引入了一系列可配置的选项,以满足不同需求的玩家,从而提供更个性化的体验。
|
|
||||||
|
|
||||||
值得注意的是,随着我们继续改进项目,还有大量工作需要完成。我们欢迎每个人以不同的方式做出贡献。
|
|
||||||
|
|
||||||
## 插件
|
|
||||||
|
|
||||||
为了更好地控制机器人并简化命令的使用,您还可以使用我们的插件:[Unbot Addon](https://github.com/liyunfan1223/unbot-addon)。目前,该插件仅对简体中文客户端提供更好的支持。
|
|
||||||
|
|
||||||
## 常见问题
|
|
||||||
|
|
||||||
**机器人无法释放技能**
|
|
||||||
|
|
||||||
- 请确保必要的英文DBC文件(enUS)存在。
|
|
||||||
|
|
||||||
**编译错误**
|
|
||||||
|
|
||||||
- 我们支持Ubuntu、Windows和macOS。
|
|
||||||
|
|
||||||
- 我们建立了持续集成工作流。您可以在[GitHub Actions](https://github.com/mod-playerbots/mod-playerbots/actions)中查看构建状态。
|
|
||||||
|
|
||||||
- 如果最新的构建状态失败,请恢复到上一个提交。我们将尽快解决此问题。
|
|
||||||
|
|
||||||
## 致谢
|
|
||||||
|
|
||||||
该模块的代码来自[ZhengPeiRu21/mod-playerbots](https://github.com/ZhengPeiRu21/mod-playerbots)和[celguar/mangosbot-bots](https://github.com/celguar/mangosbot-bots)。我们衷心感谢@ZhengPeiRu21和@celguar对维护该模块的持续努力。
|
|
||||||
|
|
||||||
我们还要向所有为playerbot开发做出贡献的个人表示诚挚的感谢。您的奉献和努力对塑造这个项目至关重要,我们对您的贡献表示感谢。
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
-- Temporarily disables innodb_strict_mode for the session to allow the script to complete even if legacy table definitions contain InnoDB-incompatible attributes
|
|
||||||
SET SESSION innodb_strict_mode = 0;
|
|
||||||
|
|
||||||
-- Change the tables to InnoDB
|
|
||||||
ALTER TABLE playerbots_guild_names ENGINE=InnoDB;
|
|
||||||
ALTER TABLE playerbots_names ENGINE=InnoDB;
|
|
||||||
|
|
||||||
-- Re-enables innodb_strict_mode
|
|
||||||
SET SESSION innodb_strict_mode = 1;
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
-- Temporarily disables innodb_strict_mode for the session to allow the script to complete even if legacy table definitions contain InnoDB-incompatible attributes
|
|
||||||
SET SESSION innodb_strict_mode = 0;
|
|
||||||
|
|
||||||
-- Change the tables to InnoDB
|
|
||||||
ALTER TABLE playerbots_dungeon_suggestion_abbrevation ENGINE=InnoDB;
|
|
||||||
ALTER TABLE playerbots_dungeon_suggestion_definition ENGINE=InnoDB;
|
|
||||||
ALTER TABLE playerbots_dungeon_suggestion_strategy ENGINE=InnoDB;
|
|
||||||
ALTER TABLE playerbots_equip_cache ENGINE=InnoDB;
|
|
||||||
ALTER TABLE playerbots_item_info_cache ENGINE=InnoDB;
|
|
||||||
ALTER TABLE playerbots_rarity_cache ENGINE=InnoDB;
|
|
||||||
ALTER TABLE playerbots_rnditem_cache ENGINE=InnoDB;
|
|
||||||
ALTER TABLE playerbots_tele_cache ENGINE=InnoDB;
|
|
||||||
ALTER TABLE playerbots_travelnode ENGINE=InnoDB;
|
|
||||||
ALTER TABLE playerbots_travelnode_link ENGINE=InnoDB;
|
|
||||||
ALTER TABLE playerbots_travelnode_path ENGINE=InnoDB;
|
|
||||||
|
|
||||||
-- Re-enables innodb_strict_mode
|
|
||||||
SET SESSION innodb_strict_mode = 1;
|
|
||||||
@@ -1,101 +0,0 @@
|
|||||||
-- #########################################################
|
|
||||||
-- Playerbots - Add PVP / Arena texts for TellPvpAction
|
|
||||||
-- Localized for all WotLK locales (koKR, frFR, deDE, zhCN,
|
|
||||||
-- zhTW, esES, esMX, ruRU)
|
|
||||||
-- #########################################################
|
|
||||||
|
|
||||||
-- ---------------------------------------------------------
|
|
||||||
-- pvp_currency
|
|
||||||
-- [PVP] Arena points: %arena_points | Honor Points: %honor_points
|
|
||||||
-- ---------------------------------------------------------
|
|
||||||
INSERT INTO `ai_playerbot_texts`
|
|
||||||
(`name`, `text`, `say_type`, `reply_type`,
|
|
||||||
`text_loc1`, `text_loc2`, `text_loc3`, `text_loc4`,
|
|
||||||
`text_loc5`, `text_loc6`, `text_loc7`, `text_loc8`)
|
|
||||||
SELECT
|
|
||||||
'pvp_currency',
|
|
||||||
'[PVP] Arena points: %arena_points | Honor Points: %honor_points',
|
|
||||||
0, 0,
|
|
||||||
-- koKR
|
|
||||||
'[PVP] 투기장 점수: %arena_points | 명예 점수: %honor_points',
|
|
||||||
-- frFR
|
|
||||||
'[PVP] Points d''arène : %arena_points | Points d''honneur : %honor_points',
|
|
||||||
-- deDE
|
|
||||||
'[PVP] Arenapunkte: %arena_points | Ehrenpunkte: %honor_points',
|
|
||||||
-- zhCN
|
|
||||||
'[PVP] 竞技场点数:%arena_points | 荣誉点数:%honor_points',
|
|
||||||
-- zhTW
|
|
||||||
'[PVP] 競技場點數:%arena_points | 榮譽點數:%honor_points',
|
|
||||||
-- esES
|
|
||||||
'[PVP] Puntos de arena: %arena_points | Puntos de honor: %honor_points',
|
|
||||||
-- esMX
|
|
||||||
'[PVP] Puntos de arena: %arena_points | Puntos de honor: %honor_points',
|
|
||||||
-- ruRU
|
|
||||||
'[PVP] Очки арены: %arena_points | Очки чести: %honor_points'
|
|
||||||
WHERE NOT EXISTS (
|
|
||||||
SELECT 1 FROM `ai_playerbot_texts` WHERE `name` = 'pvp_currency'
|
|
||||||
);
|
|
||||||
|
|
||||||
-- ---------------------------------------------------------
|
|
||||||
-- pvp_arena_team
|
|
||||||
-- [PVP] %bracket: <%team_name> (rating %team_rating)
|
|
||||||
-- ---------------------------------------------------------
|
|
||||||
INSERT INTO `ai_playerbot_texts`
|
|
||||||
(`name`, `text`, `say_type`, `reply_type`,
|
|
||||||
`text_loc1`, `text_loc2`, `text_loc3`, `text_loc4`,
|
|
||||||
`text_loc5`, `text_loc6`, `text_loc7`, `text_loc8`)
|
|
||||||
SELECT
|
|
||||||
'pvp_arena_team',
|
|
||||||
'[PVP] %bracket: <%team_name> (rating %team_rating)',
|
|
||||||
0, 0,
|
|
||||||
-- koKR
|
|
||||||
'[PVP] %bracket: <%team_name> (평점 %team_rating)',
|
|
||||||
-- frFR
|
|
||||||
'[PVP] %bracket : <%team_name> (cote %team_rating)',
|
|
||||||
-- deDE
|
|
||||||
'[PVP] %bracket: <%team_name> (Wertung %team_rating)',
|
|
||||||
-- zhCN
|
|
||||||
'[PVP] %bracket: <%team_name> (评分 %team_rating)',
|
|
||||||
-- zhTW
|
|
||||||
'[PVP] %bracket: <%team_name> (評分 %team_rating)',
|
|
||||||
-- esES
|
|
||||||
'[PVP] %bracket: <%team_name> (índice %team_rating)',
|
|
||||||
-- esMX
|
|
||||||
'[PVP] %bracket: <%team_name> (índice %team_rating)',
|
|
||||||
-- ruRU
|
|
||||||
'[PVP] %bracket: <%team_name> (рейтинг %team_rating)'
|
|
||||||
WHERE NOT EXISTS (
|
|
||||||
SELECT 1 FROM `ai_playerbot_texts` WHERE `name` = 'pvp_arena_team'
|
|
||||||
);
|
|
||||||
|
|
||||||
-- ---------------------------------------------------------
|
|
||||||
-- pvp_no_arena_team
|
|
||||||
-- [PVP] I have no Arena Team.
|
|
||||||
-- ---------------------------------------------------------
|
|
||||||
INSERT INTO `ai_playerbot_texts`
|
|
||||||
(`name`, `text`, `say_type`, `reply_type`,
|
|
||||||
`text_loc1`, `text_loc2`, `text_loc3`, `text_loc4`,
|
|
||||||
`text_loc5`, `text_loc6`, `text_loc7`, `text_loc8`)
|
|
||||||
SELECT
|
|
||||||
'pvp_no_arena_team',
|
|
||||||
'[PVP] I have no Arena Team.',
|
|
||||||
0, 0,
|
|
||||||
-- koKR
|
|
||||||
'[PVP] 투기장 팀이 없습니다.',
|
|
||||||
-- frFR
|
|
||||||
'[PVP] Je n''ai aucune équipe d''arène.',
|
|
||||||
-- deDE
|
|
||||||
'[PVP] Ich habe kein Arenateam.',
|
|
||||||
-- zhCN
|
|
||||||
'[PVP] 我没有竞技场战队。',
|
|
||||||
-- zhTW
|
|
||||||
'[PVP] 我沒有競技場隊伍。',
|
|
||||||
-- esES
|
|
||||||
'[PVP] No tengo equipo de arena.',
|
|
||||||
-- esMX
|
|
||||||
'[PVP] No tengo equipo de arena.',
|
|
||||||
-- ruRU
|
|
||||||
'[PVP] У меня нет команды арены.'
|
|
||||||
WHERE NOT EXISTS (
|
|
||||||
SELECT 1 FROM `ai_playerbot_texts` WHERE `name` = 'pvp_no_arena_team'
|
|
||||||
);
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
|
||||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "TellPvpStatsAction.h"
|
|
||||||
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#include "ArenaTeam.h"
|
|
||||||
#include "ArenaTeamMgr.h"
|
|
||||||
#include "Event.h"
|
|
||||||
#include "Player.h"
|
|
||||||
#include "PlayerbotAI.h"
|
|
||||||
#include "PlayerbotTextMgr.h"
|
|
||||||
#include "Playerbots.h"
|
|
||||||
#include "SharedDefines.h"
|
|
||||||
#include "Language.h"
|
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
inline char const* BracketName(uint8 slot)
|
|
||||||
{
|
|
||||||
switch (slot)
|
|
||||||
{
|
|
||||||
case ARENA_SLOT_2v2: return "2v2";
|
|
||||||
case ARENA_SLOT_3v3: return "3v3";
|
|
||||||
default: return "5v5"; // ARENA_SLOT_5v5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TellPvpStatsAction::Execute(Event event)
|
|
||||||
{
|
|
||||||
if (!bot)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// Prefer the actual chat sender (whisper / say / etc.) if available.
|
|
||||||
Player* requester = nullptr;
|
|
||||||
|
|
||||||
if (Unit* owner = event.getOwner())
|
|
||||||
requester = owner->ToPlayer();
|
|
||||||
|
|
||||||
// Fallback to master if event owner is not available.
|
|
||||||
if (!requester)
|
|
||||||
requester = GetMaster();
|
|
||||||
|
|
||||||
// If we still do not have a valid player to answer to, bail out.
|
|
||||||
if (!requester)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// PVP currencies
|
|
||||||
std::map<std::string, std::string> currencyPlaceholders;
|
|
||||||
currencyPlaceholders["%arena_points"] = std::to_string(bot->GetArenaPoints());
|
|
||||||
currencyPlaceholders["%honor_points"] = std::to_string(bot->GetHonorPoints());
|
|
||||||
|
|
||||||
std::string const currencyText = PlayerbotTextMgr::instance().GetBotTextOrDefault(
|
|
||||||
"pvp_currency",
|
|
||||||
"[PVP] Arena points: %arena_points | Honor Points: %honor_points",
|
|
||||||
currencyPlaceholders);
|
|
||||||
|
|
||||||
bot->Whisper(currencyText, LANG_UNIVERSAL, requester);
|
|
||||||
|
|
||||||
// Arena Teams by slot
|
|
||||||
bool anyTeam = false;
|
|
||||||
for (uint8 slot = 0; slot < MAX_ARENA_SLOT; ++slot)
|
|
||||||
{
|
|
||||||
uint32 const teamId = bot->GetArenaTeamId(slot);
|
|
||||||
if (!teamId)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (ArenaTeam* team = sArenaTeamMgr->GetArenaTeamById(teamId))
|
|
||||||
{
|
|
||||||
anyTeam = true;
|
|
||||||
std::map<std::string, std::string> placeholders;
|
|
||||||
placeholders["%bracket"] = BracketName(slot);
|
|
||||||
placeholders["%team_name"] = team->GetName();
|
|
||||||
placeholders["%team_rating"] = std::to_string(team->GetRating());
|
|
||||||
|
|
||||||
std::string const teamText = PlayerbotTextMgr::instance().GetBotTextOrDefault(
|
|
||||||
"pvp_arena_team",
|
|
||||||
"[PVP] %bracket: <%team_name> (rating %team_rating)",
|
|
||||||
placeholders);
|
|
||||||
|
|
||||||
bot->Whisper(teamText, LANG_UNIVERSAL, requester);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!anyTeam)
|
|
||||||
{
|
|
||||||
std::string const noTeamText = PlayerbotTextMgr::instance().GetBotTextOrDefault(
|
|
||||||
"pvp_no_arena_team",
|
|
||||||
"[PVP] I have no Arena Team.",
|
|
||||||
std::map<std::string, std::string>());
|
|
||||||
|
|
||||||
bot->Whisper(noTeamText, LANG_UNIVERSAL, requester);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
|
||||||
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _PLAYERBOT_TELLPVPSTATSACTION_H
|
|
||||||
#define _PLAYERBOT_TELLPVPSTATSACTION_H
|
|
||||||
|
|
||||||
#include "Action.h"
|
|
||||||
|
|
||||||
class PlayerbotAI;
|
|
||||||
|
|
||||||
class TellPvpStatsAction : public Action
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
TellPvpStatsAction(PlayerbotAI* botAI) : Action(botAI, "tell pvp stats") {}
|
|
||||||
|
|
||||||
bool Execute(Event event) override;
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
@@ -67,7 +67,6 @@
|
|||||||
#include "TellItemCountAction.h"
|
#include "TellItemCountAction.h"
|
||||||
#include "TellLosAction.h"
|
#include "TellLosAction.h"
|
||||||
#include "TellReputationAction.h"
|
#include "TellReputationAction.h"
|
||||||
#include "TellPvpStatsAction.h"
|
|
||||||
#include "TellTargetAction.h"
|
#include "TellTargetAction.h"
|
||||||
#include "TradeAction.h"
|
#include "TradeAction.h"
|
||||||
#include "TrainerAction.h"
|
#include "TrainerAction.h"
|
||||||
@@ -98,7 +97,6 @@ public:
|
|||||||
creators["quests"] = &ChatActionContext::quests;
|
creators["quests"] = &ChatActionContext::quests;
|
||||||
creators["leave"] = &ChatActionContext::leave;
|
creators["leave"] = &ChatActionContext::leave;
|
||||||
creators["reputation"] = &ChatActionContext::reputation;
|
creators["reputation"] = &ChatActionContext::reputation;
|
||||||
creators["tell pvp stats"] = &ChatActionContext::tell_pvp_stats;
|
|
||||||
creators["log"] = &ChatActionContext::log;
|
creators["log"] = &ChatActionContext::log;
|
||||||
creators["los"] = &ChatActionContext::los;
|
creators["los"] = &ChatActionContext::los;
|
||||||
creators["rpg status"] = &ChatActionContext::rpg_status;
|
creators["rpg status"] = &ChatActionContext::rpg_status;
|
||||||
@@ -281,7 +279,6 @@ private:
|
|||||||
static Action* quests(PlayerbotAI* botAI) { return new ListQuestsAction(botAI); }
|
static Action* quests(PlayerbotAI* botAI) { return new ListQuestsAction(botAI); }
|
||||||
static Action* leave(PlayerbotAI* botAI) { return new LeaveGroupAction(botAI); }
|
static Action* leave(PlayerbotAI* botAI) { return new LeaveGroupAction(botAI); }
|
||||||
static Action* reputation(PlayerbotAI* botAI) { return new TellReputationAction(botAI); }
|
static Action* reputation(PlayerbotAI* botAI) { return new TellReputationAction(botAI); }
|
||||||
static Action* tell_pvp_stats(PlayerbotAI* botAI) { return new TellPvpStatsAction(botAI); }
|
|
||||||
static Action* log(PlayerbotAI* botAI) { return new LogLevelAction(botAI); }
|
static Action* log(PlayerbotAI* botAI) { return new LogLevelAction(botAI); }
|
||||||
static Action* los(PlayerbotAI* botAI) { return new TellLosAction(botAI); }
|
static Action* los(PlayerbotAI* botAI) { return new TellLosAction(botAI); }
|
||||||
static Action* rpg_status(PlayerbotAI* botAI) { return new TellRpgStatusAction(botAI); }
|
static Action* rpg_status(PlayerbotAI* botAI) { return new TellRpgStatusAction(botAI); }
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ public:
|
|||||||
creators["leave"] = &ChatTriggerContext::leave;
|
creators["leave"] = &ChatTriggerContext::leave;
|
||||||
creators["rep"] = &ChatTriggerContext::reputation;
|
creators["rep"] = &ChatTriggerContext::reputation;
|
||||||
creators["reputation"] = &ChatTriggerContext::reputation;
|
creators["reputation"] = &ChatTriggerContext::reputation;
|
||||||
creators["pvp stats"] = &ChatTriggerContext::pvp_stats;
|
|
||||||
creators["log"] = &ChatTriggerContext::log;
|
creators["log"] = &ChatTriggerContext::log;
|
||||||
creators["los"] = &ChatTriggerContext::los;
|
creators["los"] = &ChatTriggerContext::los;
|
||||||
creators["rpg status"] = &ChatTriggerContext::rpg_status;
|
creators["rpg status"] = &ChatTriggerContext::rpg_status;
|
||||||
@@ -225,7 +224,6 @@ private:
|
|||||||
static Trigger* stats(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "stats"); }
|
static Trigger* stats(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "stats"); }
|
||||||
static Trigger* leave(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "leave"); }
|
static Trigger* leave(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "leave"); }
|
||||||
static Trigger* reputation(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "reputation"); }
|
static Trigger* reputation(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "reputation"); }
|
||||||
static Trigger* pvp_stats(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "pvp stats"); }
|
|
||||||
static Trigger* log(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "log"); }
|
static Trigger* log(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "log"); }
|
||||||
static Trigger* los(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "los"); }
|
static Trigger* los(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "los"); }
|
||||||
static Trigger* rpg_status(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "rpg status"); }
|
static Trigger* rpg_status(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "rpg status"); }
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ void ChatCommandHandlerStrategy::InitTriggers(std::vector<TriggerNode*>& trigger
|
|||||||
PassTroughStrategy::InitTriggers(triggers);
|
PassTroughStrategy::InitTriggers(triggers);
|
||||||
|
|
||||||
triggers.push_back(new TriggerNode("rep", { NextAction("reputation", relevance) }));
|
triggers.push_back(new TriggerNode("rep", { NextAction("reputation", relevance) }));
|
||||||
triggers.push_back(new TriggerNode("pvp stats", { NextAction("tell pvp stats", relevance) }));
|
|
||||||
triggers.push_back(new TriggerNode("q", { NextAction("query quest", relevance),
|
triggers.push_back(new TriggerNode("q", { NextAction("query quest", relevance),
|
||||||
NextAction("query item usage", relevance) }));
|
NextAction("query item usage", relevance) }));
|
||||||
triggers.push_back(new TriggerNode("add all loot", { NextAction("add all loot", relevance),
|
triggers.push_back(new TriggerNode("add all loot", { NextAction("add all loot", relevance),
|
||||||
@@ -117,7 +116,6 @@ ChatCommandHandlerStrategy::ChatCommandHandlerStrategy(PlayerbotAI* botAI) : Pas
|
|||||||
supported.push_back("stats");
|
supported.push_back("stats");
|
||||||
supported.push_back("leave");
|
supported.push_back("leave");
|
||||||
supported.push_back("reputation");
|
supported.push_back("reputation");
|
||||||
supported.push_back("tell pvp stats");
|
|
||||||
supported.push_back("log");
|
supported.push_back("log");
|
||||||
supported.push_back("los");
|
supported.push_back("los");
|
||||||
supported.push_back("rpg status");
|
supported.push_back("rpg status");
|
||||||
|
|||||||
@@ -892,7 +892,6 @@ bool PlayerbotAI::IsAllowedCommand(std::string const text)
|
|||||||
unsecuredCommands.insert("invite");
|
unsecuredCommands.insert("invite");
|
||||||
unsecuredCommands.insert("leave");
|
unsecuredCommands.insert("leave");
|
||||||
unsecuredCommands.insert("lfg");
|
unsecuredCommands.insert("lfg");
|
||||||
unsecuredCommands.insert("pvp stats");
|
|
||||||
unsecuredCommands.insert("rpg status");
|
unsecuredCommands.insert("rpg status");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user