Skip to content

currencies.yml 负责多货币定义。

当前版本的设计思想不是“系统里只有一种钱”,而是:

一个统一账户体系下,可以存在多个货币。


默认示例

yml
currencies:
  gold:
    display-name: "金币"
    symbol: "$"
    description: "主货币"
    enabled: true
    scale: 0
    default-balance: 0
    allow-negative: false
    max-balance: 999999999
    sort-order: 1

  point:
    display-name: "积分"
    symbol: "P"
    description: "活动积分"
    enabled: true
    scale: 0
    default-balance: 0
    allow-negative: false
    max-balance: 999999999
    sort-order: 2

结构说明

每个一级 key 都是货币 ID,例如:

  • gold
  • point
  • token

货币 ID 会被系统内部大量使用,所以建议:

  • 小写
  • 英文 / 数字 / 简单下划线
  • 不要频繁改名

字段说明

display-name

显示名,用于:

  • 命令输出
  • 个人经济面板显示
  • 排行榜展示
  • 系统资金池统计展示

例如:

yml
display-name: "金币"

symbol

货币符号。

例如:

yml
symbol: "$"

这不是必须字段,但会影响格式化展示体验。


description

描述信息,主要用于:

  • 管理理解
  • 后续页面 / GUI / 管理面板展示

enabled

是否启用该货币。

如果设为:

yml
enabled: false

通常意味着:

  • 不再作为玩家侧可用货币
  • 命令层不会把它当成正常启用货币
  • 但历史账务记录仍然存在

这和“删除货币”不同,更接近“归档 / 停用”。


scale

精度位数。

这个字段决定该货币如何把“外部输入金额”转换成内部 long 存储。

例子

scale: 0

yml
scale: 0

表示整数货币:

  • 输入 100
  • 内部也就是 100

scale: 2

yml
scale: 2

表示两位小数货币:

  • 输入 12.34
  • 内部会存成 1234

建议

  • 普通游戏币:0
  • 点券 / 带小数的积分:2

default-balance

新账户默认余额。

例如:

yml
default-balance: 0

如果你想新玩家开局就有启动资金,也可以改成:

yml
default-balance: 100

但要注意:

  • 这是账户初始值
  • 不是一条显式奖励流水

所以如果你非常强调可审计,通常还是更推荐开局通过命令 / 系统逻辑显式发放一次。


allow-negative

是否允许负余额。

例如:

yml
allow-negative: false

如果是 false

  • 扣钱扣到负数会被拒绝

如果是 true

  • 可以出现透支或欠款型设计

大多数常规服务器建议保持:

yml
false

max-balance

该货币允许的最大余额。

超过这个值时,相关入账会失败。

这个字段主要用于:

  • 防止异常刷钱
  • 防止导入脚本或命令误操作把余额打爆

sort-order

排序权重。

这个字段主要影响:

  • 货币列表显示顺序
  • 个人经济面板展示顺序
  • 管理员查看时的顺序体验

推荐的货币定义习惯

主货币

适合做:

  • 玩家交易
  • 商店支付
  • Vault 默认映射

通常建议:

  • 启用
  • scale 简单
  • 不允许负数
  • 作为 main-currency

功能积分 / 活动币

适合做:

  • 活动奖励
  • 限时积分
  • 非通用消耗币

通常建议:

  • 单独定义
  • 不一定开放给 /pay
  • 可以只在部分玩法中使用

动态管理与配置文件的关系

当前版本除了手改文件,还支持命令:

text
/hneco currency create ...
/hneco currency edit ...
/hneco currency enable ...
/hneco currency disable ...
/hneco currency setmain ...

这些命令会:

  1. 修改配置文件
  2. 保存配置
  3. 自动重载插件
  4. 同步数据库中的货币定义

也就是说:

  • 运行时命令不是“只改内存”
  • 而是会反写配置文件

推荐阅读

HN 系列插件文档