在掌握 items.xml 基础后,这篇进阶文章讲解 buffs.xml 和 gameevent.xml 的配置方法,让你能创建自定义 Buff 效果和游戏事件触发。
Buffs.xml 概述
Buff 系统控制玩家和实体的各种状态效果,包括增益、减益、持续伤害等。
Buff 基础结构
<configs>
<buffs>
<buff name="myCustomBuff">
<property name="description_key" value="myCustomBuffDesc"/>
<property name="icon" value="ui_game_symbol_medical"/>
<property name="stack_type" value="ignore"/>
<property name="duration" value="600"/>
<property name="tick" value="5"/>
<property name="update_type" value="duration"/>
<effect_group>
<passive_effect name="HealthGain" operation="base_set" value="2"/>
<passive_effect name="HealthMax" operation="perc_add" value="0.1"/>
</effect_group>
</buff>
</buffs>
</configs>核心属性
| 属性名 | 说明 | 示例值 |
|---|---|---|
| description_key | 描述文本键 | 本地化文本ID |
| icon | 图标 | ui_game_symbol_medical |
| stack_type | 叠加类型 | ignore(不叠加) / replace(替换) / extend(延长时间) |
| duration | 持续时间(秒) | 600(10分钟) |
| tick | 效果间隔(秒) | 5(每5秒触发一次) |
| update_type | 更新方式 | duration(倒计时) / None(无限) |
常用被动效果
| 效果名 | 说明 |
|---|---|
| HealthGain | 生命恢复速率 |
| HealthMax | 最大生命值 |
| StaminaMax | 最大耐力值 |
| StaminaGain | 耐力恢复速率 |
| MoveSpeed | 移动速度 |
| DamageResist | 伤害减免 |
| HeatResist | 火焰抗性 |
| ColdResist | 冰冻抗性 |
| FoodWaterMax | 最大饱食度/水分 |
实操:自定义持续回血 Buff
<buff name="buffRegeneration">
<property name="description_key" value="buffRegenerationDesc"/>
<property name="icon" value="ui_game_symbol_medical"/>
<property name="stack_type" value="ignore"/>
<property name="duration" value="120"/>
<property name="tick" value="10"/>
<effect_group>
<passive_effect name="HealthGain" operation="base_set" value="3"/>
<passive_effect name="MoveSpeed" operation="perc_add" value="-0.1"/>
</effect_group>
</buff>这个 Buff 持续120秒,每10秒恢复3点生命,但移动速度降低10%。
Buff 触发方式
Buff 可以通过多种方式触发:
- 物品使用:在 items.xml 中设置
<effect_group trigger="onSelf" /> - 装备穿戴:穿特定护甲套装时自动激活
- 环境效果:如高温/低温环境
- 事件触发:通过 gameevent.xml 关联
gameevent.xml 概述
gameevent.xml 控制游戏中的事件触发机制,如血月、任务触发、特殊事件等。
事件基础结构
<configs>
<gameevents>
<gameevent name="myCustomEvent">
<property name="Group" value="mainQuest"/>
<property name="Phase" value="1"/>
<property name="subtitle_key" value="myEventSubtitle"/>
<property name="icon" value="ui_game_symbol_quest"/>
<objective type="GotoPOI">
<property name="id" value="myPOI"/>
<property name="distance" value="10"/>
<property name="nav" value="waypoint"/>
</objective>
</gameevent>
</gameevents>
</configs>事件类型
| 类型 | 说明 |
|---|---|
| 任务触发 | 玩家到达指定位置触发 |
| 时间触发 | 指定游戏时间触发 |
| 条件触发 | 满足特定条件触发 |
| 手动触发 | 通过控制台命令触发 |
实操:自定义血月事件
<gameevent name="customBloodMoon">
<property name="Group" value="hordeNight"/>
<property name="Phase" value="1"/>
<objective type="SpawnWave">
<property name="count" value="50"/>
<property name="interval" value="10"/>
<property name="spawn_radius" value="30"/>
</objective>
</gameevent>事件关联
事件可以通过 trigger 属性关联到其他系统:
<!-- 任务完成触发事件 -->
<objective type="QuestComplete">
<property name="quest" value="myQuest"/>
<property name="trigger" value="myCustomEvent"/>
</objective>
组合使用示例
自定义职业系统
通过 Buff + 事件实现职业选择:
<!-- 职业选择 Buff -->
<buff name="classWarrior">
<property name="duration" value="None"/>
<property name="stack_type" value="replace"/>
<effect_group>
<passive_effect name="EntityDamage" operation="perc_add" value="0.15"/>
<passive_effect name="HealthMax" operation="perc_add" value="0.2"/>
<passive_effect name="StaminaMax" operation="perc_add" value="-0.1"/>
</effect_group>
</buff>自定义天气事件
<gameevent name="acidRainEvent">
<property name="Group" value="weather"/>
<objective type="Weather">
<property name="type" value="acid"/>
<property name="duration" value="300"/>
</objective>
<objective type="ApplyBuff">
<property name="buff" value="debuffAcidBurn"/>
<property name="target" value="allPlayers"/>
</objective>
</gameevent>调试技巧
- 日志查看:buff 和事件的触发会在日志中记录
- 控制台命令:用
buff <buff名>命令手动触发 Buff 测试 - 热重载:修改 XML 后可以用
reload命令重新加载配置(服务器端)
参考来源
- 七日杀 buffs.xml 翻译解析:https://www.7risha.com/48428.html
- 七日杀 gameevent.xml 全事件配置:https://www.7risha.com/59894.html