七日杀XML进阶:buffs.xml与gameevent.xml配置详解

发布于 2026-08-20 16:00 790 字 4 min read ... 访问量

KK avatar

KK

KK 的个人技术博客,记录服务器、网络、编程相关的折腾日常

在掌握 items.xml 基础后,这篇进阶文章讲解 buffs.xml 和 gameevent.xml 的配置方法,让你能创建自定义 Buff 效果和游戏事件触发。 Buffs.xml 概述 Buff 系统控制玩家和实体的各种状态效果,包括增益、减益、持续伤害等。 Buff 基础结构 核心属性 | stack_type |

在掌握 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 命令重新加载配置(服务器端)

参考来源