课程视频链接
沙巴克攻城脚本开发总结
1. 沙巴克攻城基础设置
-
开启方式
- 系统报名(复古玩法)
- M2 → 参数设置 → 城堡参数 → 设置报名时间、攻城时长等。
- 脚本触发(主流服常用)
-
机器人脚本配置
- 预告通知(提前10分钟):
[@预告]
#IF
#ACT
SendCenterMsg 0 251 "沙巴克攻城战将在10分钟后开启!" 100 200
SendCenterMsg 0 251 "请所有行会成员做好战斗准备!" 100 300
- 开启攻城:
[@开启]
#IF
#ACT
GMEXECUTE 调整工程 开启 // 具体指令名称需查看M2游戏命令
AddToCastleWarList ALL // 自动将所有行会加入攻城列表
- 结束攻城:
[@结束]
#IF
#ACT
GMEXECUTE 调整工程 关闭
2. 攻城期间功能实现
-
积分系统
- 定时器检测(每分钟执行):
[@OnTimer60]
#IF
CheckInMapRange 0150 50 50 30 // 检测是否在皇宫范围内
#ACT
INC G90 2 // 皇宫内每分钟+2积分
#ELSEIF
CheckInMapRange 6472 91 10 // 检测是否在复活点范围内
#ACT
INC G90 1 // 复活点每分钟+1积分
- 杀人奖励(QF脚本):
[@KillPlay]
#IF
CheckCastleWarNow // 检测是否攻城期间
CheckInMapRange 0150 50 50 30 // 检测是否在皇宫内
#ACT
INC G90 2 // 击杀玩家+2积分
-
限制与优化
- 禁止挂机:在挂机脚本中检测攻城状态或地图。
- 狂暴保护:检测死亡坐标,若在攻城区域则不扣除狂暴状态。
3. 攻城奖励发放
-
胜利方奖励(机器人触发):
[@奖励]
#IF
CheckCastleMaster <$USERNAME> // 检测是否为沙巴克城主
#ACT
Give 胜利盲盒 2
ChangeGameGold + 3000000
MOV A100 1 // 防止重复领取
#ELSEIF
CheckCastleMember // 检测是否为成员
Large G90 29 // 积分≥30
#ACT
Give 胜利盲盒 1
-
失败方奖励:
#IF
Not CheckCastleMember // 非胜利方成员
Large G90 29 // 积分≥30
#ACT
Give 安慰奖 1
4. 常见问题解决
- 积分重复计算:通过变量(如
G90
)和全局标记(如A100
)控制。
- 指令兼容性:不同版本的
GM命令
名称可能不同(如“调整工程”需替换为实际指令)。
- 输入框交互:需结合Lua实现高级功能(如点击修改数字)。
5. 扩展建议
- 邮件发放奖励:替代
Give
指令,避免背包满时丢失奖励。
- 多行会竞争:通过动态变量记录积分排名,增加额外奖励。
- 地图事件:攻城期间触发特殊BOSS或宝箱刷新。
总结:沙巴克攻城脚本核心在于定时触发、积分计算和奖励发放,结合机器人、QF脚本和M2参数即可实现完整流程。