HyTickets

HyTickets

HyTickets是一款Hytale服务器插件,允许玩家开启、查看和关闭支持工单,同时管理员可以管理所有工单、回复、分配并传送至报告地点。

实用

HyTickets

HyTickets 是一个面向 Hytale 服务器的完整游戏内工单系统,围绕以清晰 UI 为核心的工作流程设计(命令作为完整备选方案)。

玩家可以创建工单、浏览自己的历史记录、回复工作人员,并在问题解决后关闭工单。工作人员可以查看所有工单、分配所有权、在游戏中回复、一键接管工单,并直接传送至报告地点

每个工单在创建时都会记录玩家的世界和坐标,使问题更容易复现和解决。

存储方式灵活:可在简单的 JSON 平面文件上运行,或为大型服务器使用 MySQL。如果从平面文件切换至 MySQL,HyTickets 可自动迁移现有工单数据。


核心亮点

  • UI 优先体验:玩家和工作人员的主要界面
  • 完整游戏内工作流程:创建、回复、查看、分配、关闭
  • 传送至问题地点:跳转到保存的世界/坐标
  • 灵活存储:JSON 平面文件或 MySQL
  • 自动迁移:切换存储类型时从平面文件迁移至 MySQL
  • 可选的 Discord 集成:每个工单一个线程、按钮、斜杠命令和账户关联

功能特性

玩家工作流程

  • 通过消息创建工单
  • 查看已开启/已关闭的工单(并可查看详细信息)
  • 在自己的工单上回复工作人员
  • 完成后关闭自己的工单

工作人员工作流程

  • 列出所有工单(可选择按状态过滤)
  • 将工单分配给自己(或在 UI 中点击接管工单
  • 在服务器内回复玩家
  • 传送至工单保存的世界/坐标
  • 过滤视图:已开启 / 全部 / 指派给我 / 已关闭 / 未分配

通知(仅在线时)

  • 新工单创建时通知工作人员
  • 工作人员回复时通知工单所有者
  • 玩家回复已分配的工单时通知分配者
  • 工单关闭时通知工单所有者

存储

  • FLATFILE_JSON(简单,零配置)
  • MYSQL(推荐用于大规模服务器)
  • 更改存储类型时自动从平面文件迁移至 MySQL

UI(可选但推荐)

  • 整洁的游戏内工单浏览器
  • 包含首条消息预览的工单列表
  • 包含完整对话和元数据的工单详情视图
  • 工作人员专属操作:传送、接管工单、回复、关闭
  • 工作人员专属的过滤按钮,可循环切换视图

Discord 集成(可选)

  • 每个工单一个线程:在配置的频道中,每个工单对应一个内嵌消息和一个线程
  • 内嵌消息上的按钮:接管 / 回复 / 关闭
  • 斜杠命令:/ticket view <id>/ticket list [status] [assigned]
  • 账户关联:游戏内 /hytickets link + Discord 中 /link <code>
  • 角色限制:仅允许的角色 ID 可使用按钮/命令
  • 工单变更时自动更新内嵌消息和线程事件行
  • 切换存储类型时,Discord 映射自动从平面文件迁移至 MySQL

配置 (config.json)

核心配置

  • StorageTypeFLATFILE_JSONMYSQL
  • FlatfilePath:JSON 存储的文件路径
  • UiEnabledtrue / false
  • TranslationsFile:翻译文件位置(相对路径)

MySQL

  • MySql.Host
  • MySql.Port
  • MySql.Database
  • MySql.Username
  • MySql.Password
  • MySql.UseSsl
  • MySql.TablePrefix

Discord(可选)

  • Discord.Enabled:启用 Discord 模块
  • Discord.BotToken:机器人令牌
  • Discord.GuildId:注册斜杠命令的服务器 ID
  • Discord.TicketChannelId:工单内嵌消息/线程的频道 ID
  • Discord.AllowedRoleIds:允许使用按钮/命令的角色 ID(用逗号或空格分隔)
  • Discord.StorageTypeFLATFILE_JSONMYSQL
  • Discord.FlatfilePath:Discord 映射的 JSON 文件
  • Discord.MySql.*:Discord 存储的 MySQL 设置
  • Discord.LinkCodeExpiryMinutes:关联码过期时间
  • Discord.EmbedColor:十六进制颜色(例如 2B90D9
  • Discord.EmbedFooter:页脚文本
  • Discord.EmbedIncludeLocation:在内嵌消息中包含世界/坐标

示例配置(完整)

{
  "StorageType": "FLATFILE_JSON",
  "FlatfilePath": "tickets.json",
  "MySql": {
    "Host": "127.0.0.1",
    "Port": 3306,
    "Database": "hytickets",
    "Username": "root",
    "Password": "password",
    "UseSsl": false,
    "TablePrefix": "hyt_"
  },
  "UiEnabled": true,
  "Discord": {
    "Enabled": false,
    "BotToken": "",
    "GuildId": "",
    "TicketChannelId": "",
    "AllowedRoleIds": "",
    "StorageType": "FLATFILE_JSON",
    "FlatfilePath": "discord.json",
    "MySql": {
      "Host": "127.0.0.1",
      "Port": 3306,
      "Database": "hytickets",
      "Username": "root",
      "Password": "password",
      "UseSsl": false,
      "TablePrefix": "hyt_"
    },
    "LinkCodeExpiryMinutes": 10,
    "UseHyDiscordXLinking": false,
    "EmbedColor": "2B90D9",
    "EmbedFooter": "HyTickets",
    "EmbedIncludeLocation": true
  }
}

集成

可选的 HyDiscordX 集成将禁用 HyTickets 中的 link 功能,改为使用 HyDiscordX 中的已关联账户。要启用,请在配置中将 UseHyDiscordXLinking 设置为 true

命令

玩家命令

权限: hytickets.command.basic

命令 描述
/hytickets 打开游戏内工单 UI(推荐)。
/hytickets create [message...] 使用完整描述创建新工单。
/hytickets view [id] 查看您的工单,或按 ID 查看特定工单。
/hytickets reply [id] [message...] 回复您自己的工单。
/hytickets close [id] 关闭您的一个工单。
/hytickets link 为您的账户生成 Discord 关联码。

工作人员命令

权限: hytickets.command.staff

命令 描述
/hytickets list [status] 列出所有工单(可选择按状态过滤)。
/hytickets assign [id] 将工单分配给自己。
/hytickets reply [id] [message...] 回复任何工单。
/hytickets tp [id] 传送至工单保存的位置。

Discord 命令(可选)

需要允许的角色 + 已关联的账户

命令 描述
/link [code] 将您的 Discord 账户关联到 Hytale。
/ticket view [id] 查看工单详情和线程链接。
/ticket list [status=open/closed] [assigned=me/any] 使用过滤器列出工单。

本地化

首次运行时,会在插件数据目录中创建一个 translations.json 文件。社区翻译仓库可在此处找到,欢迎贡献:https://github.com/winglessraven/HyTicketsTranslations

编辑它以翻译 UI 标签、按钮、Discord 消息和游戏内聊天文本。可使用的变量:

  • {count}
  • {filter}
  • {page}
  • {pages}
  • {id}
  • {status}
  • {preview}
  • {assigned}
  • {name}
  • {world}
  • {coords}
  • {role}
  • {author}
  • {content}
  • {owner}
  • {updated}
  • {message}
  • {thread}
  • {minutes}
  • {version}
  • {location}

Discord 设置说明

  • 机器人需要在工单频道拥有查看频道发送消息创建公开线程在线程中发送消息的权限。
  • 所有 Discord 按钮/命令操作都需要关联账户。在游戏中使用 /hytickets link,然后在 Discord 中使用 /link <code>。注意:如果启用了 HyDiscordX 集成,则将使用其中的关联账户,且此命令将被禁用。