当前位置: 首页 > news >正文

PlayerChoice系统介绍

PlayerChoice系统是TrinityCore中用于向玩家显示选项并处理其选择的机制。它允许服务器向玩家展示一组选项,玩家选择其中一个后,服务器可以执行相应的操作,如给予奖励、启动任务等。

数据库表结构详解

playerchoice

这个表定义了玩家选择的基本属性:

  • ChoiceId - 选择的唯一标识符
  • UiTextureKitId - UI纹理资源ID,控制选项界面的外观
  • SoundKitId - 声音效果ID,当选项出现时播放的声音
  • CloseSoundKitId - 关闭声音效果ID
  • Duration - 选项持续时间(秒),超时后自动关闭
  • PendingChoiceText - 等待选择时显示的文本
  • Question - 选项的主要问题或标题文本
  • HideWarboardHeader - 是否隐藏战争板标题
  • KeepOpenAfterChoice - 选择后是否保持窗口打开
  • ShowChoicesAsList - 是否以列表形式显示选项
  • ForceDontShowChoicesAsList - 强制不以列表形式显示选项
  • MaxResponses - 最大可选响应数
  • ScriptName - 关联的脚本名称
  • InfiniteRange - 是否无限距离可用

playerchoice_response

这个表定义了每个选项的具体响应内容:

  • ChoiceId - 关联的选项ID
  • ResponseId - 响应的唯一标识符
  • Index - 响应在界面中的显示顺序
  • ChoiceArtFileId - 选项艺术文件ID
  • Flags - 响应标志(如禁用、隐藏等)
  • WidgetSetID - 控件集ID
  • UiTextureAtlasElementID - UI纹理图集元素ID
  • SoundKitID - 响应声音效果ID
  • GroupID - 分组ID
  • UiTextureKitID - UI纹理资源ID
  • Header - 响应标题
  • SubHeader - 响应子标题
  • ButtonTooltip - 按钮提示文本
  • Answer - 响应答案文本
  • Description - 响应详细描述
  • Confirmation - 确认文本
  • RewardQuestID - 奖励任务ID

PlayerChoice系统相关表

PlayerChoice系统支持多种类型的奖励:

  • playerchoice_response_reward - 基础奖励(头衔、技能点、金钱、经验等)
  • playerchoice_response_reward_item - 物品奖励
  • playerchoice_response_reward_currency - 货币奖励
  • playerchoice_response_reward_faction - 阵营声望奖励
  • playerchoice_response_reward_item_choice - 可选物品奖励
  • playerchoice_response_maw_power - Maw Power特殊奖励

系统工作原理

  1. 服务器启动时通过 LoadPlayerChoices() 函数加载所有选项数据到内存中
  2. 当需要向玩家显示选项时,使用 Player::SendPlayerChoice() 方法
  3. 玩家做出选择后,服务器通过 PlayerChoiceScript 处理响应
  4. 可以通过脚本自定义选择后的处理逻辑

使用示例

在代码中,可以通过以下方式发送一个 PlayerChoice 给玩家:

player->SendPlayerChoice(senderGuid, choiceId);

当玩家做出选择后,会触发 PlayerChoiceScript::OnResponse 回调,可以在自定义脚本中处理玩家的选择:

class MyPlayerChoiceScript : public PlayerChoiceScript
{
public:MyPlayerChoiceScript() : PlayerChoiceScript("MyPlayerChoiceScript") { }void OnResponse(WorldObject* object, Player* player, PlayerChoice const* choice, PlayerChoiceResponse const* response, uint16 clientIdentifier) override{// 处理玩家选择// 可以根据 choice->ChoiceId 和 response->ResponseId 执行不同操作}
};

http://www.dtcms.com/a/446063.html

相关文章:

  • 网站要实名认证旅游网站建设方案之目标
  • [ SpringWeb ] 搭建和配置
  • 高层次综合hls设计第一章
  • Docker 启动 Easysearch 时自定义初始密码的几种方式
  • 15.C++三大重要特性之继承
  • AI 训练大显存配置实战:24G 显存(RTX 4090)如何配 32G 内存?—— 从 “显存挪用” 到 “效率翻倍”
  • JVM即时编译
  • 【JVM】——结构组成和垃圾回收
  • 建站模板推荐设计公司的企业使命
  • php网站怎么做百度做网站不给FTP密码
  • 自由学习记录(105)
  • 聚类之KMeans
  • 汽车企业管理系统自己的网站怎么做关键词优化
  • 大模型落地的四大核心引擎:从技术突破到产业重构
  • find 命令使用介绍
  • 蓝桥杯Python备考全攻略:从入门到精通
  • 数据结构初阶(第六讲)单链表的功能实现
  • 做付费推广哪个网站好工作室网页模板
  • 合川网站建设天津自助建站
  • 元模型训练中平衡历史数据与实时市场变化的关系
  • 新手直播冷场难破?场景模拟工具解决测试与练手难题
  • 半球陀螺仪吸气剂热激活真空共晶炉
  • C++多态特性详解
  • 嵌入式第六十七天(SPI子系统架构)
  • MVC 视图
  • 公司网站运营方案东莞市建设工程检测中心网站
  • 从 C 到 C++:用 C 语言思维理解面向对象四大特性
  • SOFA 架构--02--核心中间件与工具
  • 如何利用淘宝建设网站挣钱在线注册个体工商户
  • 近世代数(抽象代数)详细笔记--域