- 打卡等级:魔龙套勇士
- 打卡总天数:131
- 打卡月天数:24
- 打卡总奖励:14956
- 最近打卡:2025-08-24 00:16:44
管理员
本站站长
- 积分
- 8652
|
以下是基于 GOM 引擎的怪物属性扩展教程,涵盖基础配置、脚本编写及高级功能实现:
一、基础属性扩展配置
1. 新增属性字段
文件路径:Envir\MonSpAbilList.txt
格式说明:
plaintext
怪物名 忽视防御(0-100) 增加伤害(0-255) 伤害反弹(0-100) 物伤减少(0-100) 魔伤减少(0-100) 麻痹-几率-时间(0-1 0-10 0-10) 防麻痹(0-1) 防全毒(0-1) 防火墙(0-1) 防诱惑(0-1) 破复活(0-1) 破护身(0-1)
示例配置:
plaintext
白野猪 30 50 20 15 10 0.3 5 1 1 0 1 1
该配置使白野猪忽视 30% 防御,增加 50 点伤害,反弹 20% 物理伤害,减少 15% 物理 / 10% 魔法伤害,30% 几率触发 5 秒麻痹,免疫麻痹、全毒,可破除复活和护身效果。
2. 数据库字段调整
文件路径:DBC2000\Monster.DB
关键字段:
RACE:行动模式(如 81 = 范围攻击,92 = 瞬移)
APPR:外观代码(参考引擎素材库)
COOLEYE:主动攻击范围(数值越高反隐形能力越强)
HP/MP:生命 / 魔法值
DC/MC/SC:物理 / 魔法 / 道术攻击
人形怪特殊配置:
在Envir目录下创建MonUseItems文件夹,放置怪物装备配置文件(如白野猪.txt):
plaintext
USEITEMS1=裁决之杖
USEITEMS2=圣战头盔
二、行为逻辑脚本编写
1. 基础触发事件
文件路径:QFunction-0.txt
怪物死亡事件:
plaintext
[@KillMon]
#IF
CHECKMONNAME 白野猪
#ACT
DROPITEM 祝福油 1 100% ; 100%掉落1个祝福油
SENDMSG 6 白野猪被击杀!
玩家攻击事件:
plaintext
[@OnPlayerAttackMon]
#IF
CHECKMONNAME 祖玛教主
#ACT
SETSKILLLEVEL 群体雷电术 3 ; 触发群体雷电术
2. 动态属性调整
血量百分比触发:
plaintext
[@MonHPLow]
#IF
CHECKMONNAME 牛魔王
CHECKMONHP < 30%
#ACT
ADDSKILL 火焰盾 1 ; 血量低于30%时获得火焰盾
CHANGEHP +5000 ; 恢复5000点生命
技能释放条件:
plaintext
[@MonSkill]
#IF
CHECKMONNAME 虹魔教主
CHECKMONSMP > 80%
#ACT
CASTSKILL 吸血术 ; 魔法值高于80%时释放吸血术
三、高级功能实现
1. 技能特效与动画
技能关联:
在Monster.DB中设置SKILL字段(如群体雷电术,火墙)
编辑!Setup.txt关联技能 ID 与动画资源:
plaintext
[SKILLINFO]
群体雷电术=32,100,50 ; 技能ID=32,伤害范围100,消耗MP50
自定义动画:
将动画文件(如mon_attack_01.mdl)放置在Res\Monster目录
在Monster.DB的APPR字段引用动画名称
2. 复杂 AI 逻辑
仇恨机制:
plaintext
[@MonHate]
#IF
CHECKMONNAME 赤月恶魔
CHECKPLAYERNUM > 3
#ACT
SETTARGET 随机玩家 ; 超过3名玩家时随机选择目标
移动模式:
在Monster.DB设置WALK-SPD(行走速度间隔)和WALKSTEP(步伐)
结合脚本实现巡逻路径:
plaintext
[@MonPatrol]
#IF
CHECKMONNAME 沃玛卫士
#ACT
MOVETO 330 330 ; 移动到指定坐标
3. 版本兼容性处理
引擎更新适配:
2024 年 10 月后版本需启用怪物标识:
plaintext
; 在MonSpAbilList.txt中添加
白野猪 30 50 20 15 10 0.3 5 1 1 0 1 1 <$MONFLAG:1> ; 标识1用于脚本判断
脚本中使用标识控制行为:
plaintext
[@MonFlagCheck]
#IF
CHECKMONFLAG 1
#ACT
ADDSKILL 抗拒火环 1
四、测试与调试
1. 日志分析
开启调试:
在M2Server→选项→日志控制中勾选记录怪物行为
关键日志文件:
Envir\MonLog\Monster.log:记录怪物属性加载和技能释放
Envir\QLog.txt:记录脚本执行过程
2. 游戏内验证
GM 命令测试:
@moninfo:查看怪物实时属性
@castskill 怪物名称 技能名称:强制释放技能
版本回退:
若新版本配置异常,可参考Envir\Backup目录下的历史备份文件
五、常见问题解决
1. 属性不生效
排查步骤:
检查MonSpAbilList.txt格式是否正确(字段顺序不可调换)
确认Monster.DB中对应怪物的RACE和APPR字段与引擎版本匹配
重启 M2Server 使配置生效
2. 脚本逻辑异常
调试方法:
在脚本关键位置添加SENDMSG输出变量值:
plaintext
SENDMSG 6 当前怪物血量:<$CURRENT_MON_HP>
对比日志时间戳与游戏行为时间点,定位执行顺序问题
3. 模型加载失败
修复方案:
确保Res\Monster目录下存在对应模型文件
在Monster.DB中检查APPR字段是否与模型文件名一致
清理客户端缓存Data\Local目录
六、进阶案例:动态属性 BOSS
1. 配置需求
血量低于 50% 时触发狂暴,攻击提升 50%,防御降低 20%
每 30 秒召唤小怪协助作战
2. 实现步骤
MonSpAbilList.txt:
plaintext
终极BOSS 0 0 0 0 0 0 0 0 0 0 0 0
QFunction-0.txt:
plaintext
[@MonHPLow]
#IF
CHECKMONNAME 终极BOSS
CHECKMONHP < 50%
#ACT
CHANGEEXP -1 ; 移除原有经验值
CHANGEDC +50 ; 攻击+50
CHANGEAC -20 ; 防御-20
SENDMSG 6 终极BOSS进入狂暴状态!
[@MonTimer]
#IF
CHECKMONNAME 终极BOSS
TIMER 30
#ACT
SPAWNMOB 半兽勇士 330 330 3 ; 召唤3只半兽勇士
RESETTIMER
Monster.DB:
设置RACE=81(范围攻击)
COOLEYE=100(反隐形)
通过以上配置,可实现具备动态属性变化和召唤能力的高级 BOSS。实际开发中需结合引擎版本特性,灵活调整配置参数和脚本逻辑,确保游戏体验流畅。
|
|