当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

单机传奇怪物攻城制作:沙巴克配置与脚本刷怪实操

热度:
先分清两种攻城。一种是行会打沙巴克,靠引擎自带城堡系统,改SabukW.txt和时间控制就能跑。另一种是怪物攻城,让祖玛教主、沃玛教主、半兽勇士成批冲土城/比奇,靠Robot机器人脚本定时触发,用MISSION+MOBPLACE让怪往集结点移动。单机自测推荐先做第二种,逻辑简单、见效快,跑通了再接沙巴克。

一、先备文件与地图编号

进D:\MirServer\Mir200\Envir,确认这几个地方:

MapInfo.txt:查攻城地图编号。比奇省常见0或1,土城/盟重常见3,沙巴克皇宫一般是0150,具体以你端里实际定义为准
Monster.DB:确认怪物名和Appr。祖玛教主、沃玛教主、半兽勇士这些名字必须和库里一字不差,多一个空格刷不出来
Robot_def\AutoRunRobot.txt:定时触发器
Robot_def\RobotManage.txt:触发后执行的逻辑
QuestDiary:自定义NPC和活动脚本目录
Castle\SabukW.txt:沙巴克配置(做行会攻城才动)

改之前把Envir整个目录先打一个zip备份,脚本写崩了能直接回滚。

二、怪物攻城最小可用脚本

目标:每天19:30,土城刷三波怪,怪自动往安全区移动,玩家清完给公告。

1.定时触发

打开Envir\Robot_def\AutoRunRobot.txt,末尾加:

AutoRunNPCRUNONDAY19:30@怪物攻城开始

RUNONDAY是每天触发。想每周六就写RUNONWEEK6:19:30。测试时把时间设成当前电脑时间延后2分钟,不用干等。

2.执行逻辑

打开Envir\Robot_def\RobotManage.txt,末尾加:

[@怪物攻城开始]
if

act

SENDMSG0【怪物攻城】大批怪物正涌向盟重,勇士速回城防守!
MISSION3330330
PARAM1360
PARAM2340
PARAM310
PARAM45
MOBPLACE半兽勇士
PARAM1350
PARAM2330
PARAM38
PARAM45
MOBPLACE沃玛卫士
PARAM1340
PARAM2320
PARAM32
PARAM43
MOBPLACE沃玛教主
PARAM1335
PARAM2315
PARAM31
PARAM42
MOBPLACE祖玛教主

字段含义:

MISSION3330330:地图3,集结点坐标(330330),怪刷出来后往这走
PARAM1/PARAM2:刷怪中心X/Y
PARAM3:数量
PARAM4:随机范围(格),0就是精准落点
MOBPLACE怪物名:实际刷哪种怪

MISSION必须先于MOBPLACE出现,且每次换刷怪点要重新写PARAM1~PARAM4,否则沿用上一次坐标。

3.多波次(进阶)

回到AutoRunRobot.txt:

AutoRunNPCRUNONDAY19:30@攻城第一波

AutoRunNPCRUNONDAY19:38@攻城第二波

AutoRunNPCRUNONDAY19:46@攻城BOSS波

RobotManage.txt里分三段:

[@攻城第一波]
if

act

SENDMSG0第一波:半兽军团来袭!
MISSION3330330
PARAM1360
PARAM2340
PARAM315
PARAM46
MOBPLACE半兽勇士
MOBPLACE僵尸

[@攻城第二波]
if

act

SENDMSG0第二波:沃玛精锐突破防线!
MISSION3330330
PARAM1350
PARAM2330
PARAM310
PARAM45
MOBPLACE沃玛卫士
MOBPLACE黑野猪

[@攻城BOSS波]
if

act

SENDMSG6警告:祖玛教主现身盟重!
MISSION3330330
PARAM1335
PARAM2315
PARAM31
PARAM42
MOBPLACE沃玛教主
MOBPLACE祖玛教主

每波间隔几分钟,玩家有喘息和清场节奏。单机自测可以先把间隔压到10秒,快速看效果。

4.结束清理

[@攻城结束]
if

act

CLEARMAPMON3
SENDMSG0怪物攻城已结束,感谢各位勇士守城!

CLEARMAPMON地图号会清空该图所有动态怪,防止测试时怪越刷越多卡服。

三、GM手动触发(测试用)

不想等定时器,进游戏用GM号直接打:

@ReloadRobot
或在M2里点控制,重新加载机器人脚本

也可以做个NPC手动开。在Envir\Market_Def新建攻城使者.txt:

[攻城使者3320320]
脚本功能:手动开启怪物攻城

[@main]
欢迎来到盟重,是否开启怪物攻城测试?
<开启攻城/@open_siege><关闭攻城/@close_siege>

[@open_siege]
IF

ACT

CALLRUN@怪物攻城开始
SENDMSG0GM开启了怪物攻城测试!

[@close_siege]
IF

ACT

CLEARMAPMON3
SENDMSG0攻城测试已强制结束。

NPC坐标3320320必须在土城可站立点,别写墙里。

四、沙巴克行会攻城(可选)

想做真正行会抢皇宫,走引擎城堡系统。

1.改SabukW.txt

进Mir200\Envir\Castle\SabukW.txt:

[Setup]
Enable=1
WarDay1=6
StartTime=20:00
EndTime=22:00
ReadyDay=0
ReadyTime=19:00

WarDay1=6是周六攻城,ReadyDay=0取消提前申请等待,单机测试方便。

2.M2里重载

M2菜单,控制,重新加载,城堡数据。或者重启M2。

3.攻城触发脚本

AutoRunRobot.txt:

AutoRunNPCRUNONDAY20:00@沙巴克攻城开启

RobotManage.txt:

[@沙巴克攻城开启]
if

act

GMEXECUTE开始攻城
SENDMSG0沙巴克攻城战正式开始!

部分引擎用AddAttackSabukAll0代替开始攻城,具体看M2命令帮助。

4.皇宫占领判定

QuestDiary\沙巴克\占领触发.txt:

[@进入皇宫]
if

ISCASTLEMASTER
act

SENDMSG0该行会正在占领沙巴克皇宫!
elsesay

行会正在试图占领皇宫,击杀守方即可抢占!

地图链接在MapInfo.txt配:

3333333->01501010

表示土城(333333)进沙巴克皇宫(1010)。

五、刷怪命令差异(很重要)

不同引擎命令不一样,混抄必崩:

GOM/GEE/Hero:MISSION+PARAM1~4+MOBPLACE,适合攻城类怪追玩家
通用定点刷怪:MonGen地图XY怪物名数量范围,怪原地不动
翎风等另类引擎:标签和参数顺序可能不同,先查引擎自带命令文档

测试建议先用MonGen验证坐标能出怪,再换MOBPLACE做追击效果。

六、奖励机制

攻城BOSS击杀奖励,在QFunction-0.txt加:

[@MobMissionKill]
if

CHECKKILLMONNAME祖玛教主
act

SENDMSG6恭喜击杀攻城BOSS祖玛教主!
GIVE屠龙1
GIVE元宝500
BROADCAST全服恭喜守城成功,神器现世!

CHECKKILLMONNAME是击杀判定,不同引擎可能是KILLMON或其他,按M2命令列表调。

七、单机测试顺序

1.先手动刷一只怪验证坐标
MonGen3330330半兽勇士10
能看见怪,说明地图号和怪物名对。

2.手动跑一次MOBPLACE逻辑
把RobotManage.txt里的[@怪物攻城开始]用GM命令或NPCCALLRUN触发,看怪是否往集结点走。

3.怪原地不动
MISSION没写或写在MOBPLACE后面了。MISSION必须在前,且集结点坐标要是可行走区域。

4.定时器不触发
AutoRunRobot.txt里#AutoRunNPC前缀不能少,RobotManage.txt里标签名要完全对应,大小写敏感看引擎。

5.刷怪坐标在墙里
怪刷出来但看不见或卡住,换开阔坐标,比如土城安全区附近320~360范围。

6.脚本报错
QFunction、RobotManage用ANSI编码保存,别存UTF-8带BOM,否则参数解析乱码。

7.清缓存重载
M2点重新加载脚本文件,不行就重启M2。别只改文件不重载。

八、常见故障对照

怪刷出来但不动:MISSION集结点缺失或坐标不可达
满屏怪清不掉:没写CLEARMAPMON,或定时器重复触发没加状态锁
公告发了没怪:怪物名和Monster.DB不一致,或地图号错
只在服务器日志触发、游戏里没反应:Robot系统没启用,检查Envir\Robot.txt里系统控制autorunrobot是否开启
攻城期间卡顿:一波刷太多,单机先压到10~20只,BOSS单只
沙巴克没法占领:皇宫地图没配FIGHT参数,MapInfo.txt里加[0150沙巴克皇宫]FIGHT
变量重复报错:QManage里VAR定义重复,删掉多余声明

九、参数调优建议

单机怀旧节奏:

小怪每波10~15只,范围5~8格
精英每波5~8只
BOSS每次1~2只
波次间隔5~10分钟
集结点放土城安全区外侧,别放安全区正中间,怪会挤成一团
攻城总时长控制在30~60分钟

想做成“守城活动”而不是“清怪副本”,可以把集结点设在药店门口或仓库门口,逼玩家接战。

十、把活动做成可复用模板

端跑稳后,建一个QuestDiary\活动\怪物攻城.txt统一管理:

[@Init]
;初始化状态变量
SETVARGLOBAL攻城状态0

[@StartSiege]
if

CHECKLEQUALGLOBAL攻城状态0
act

SETVARGLOBAL攻城状态1
CALLRUN@怪物攻城开始

[@StopSiege]
if

act

SETVARGLOBAL攻城状态0
CLEARMAPMON3
SENDMSG0攻城活动已结束

用全局变量锁状态,避免定时器重复触发把怪叠满。变量存到QuestDiary\活动\变量.ini,重启M2也不丢。

十一、和沙巴克系统并存

两套可以一起开:

周三、周五:怪物攻城(守城打怪)
周六:行会沙巴克(抢皇宫)

AutoRunRobot.txt:

AutoRunNPCRUNONWEEK3:20:00@怪物攻城开始

AutoRunNPCRUNONWEEK5:20:00@怪物攻城开始

AutoRunNPCRUNONWEEK6:20:00@沙巴克攻城开启

互不冲突,怪物攻城走RobotManage刷怪,沙巴克走城堡系统。注意沙巴克期间别在皇宫地图叠怪物攻城,不然判定乱。

十二、防坑习惯

RobotManage.txt每次只加一段,测完再加下一段
MISSION坐标先用人站过去看可行走,再写脚本
怪物名从Monster.DB直接复制,别手打
所有活动脚本另存.bak
CLEARMAPMON必须配对每个攻城地图,防止测试残留
单机调试把刷怪间隔设短,稳定后再恢复正式时间
M2日志里看Robot执行记录,不生效先查日志不是先改数值

怪物攻城本质就三件事:定时器把脚本唤起、MOBPLACE把怪刷出来并追上集结点、CLEARMAPMON把场子收干净。沙巴克则是城堡配置加皇宫占领判定。两套机制拆开做,先跑通怪物攻城,再叠行会攻沙,比一上来抄完整攻沙大脚本稳妥得多。

端起来之后,怪物攻城可以当日常活动,每天固定时段开,配合爆率、排行榜、守城积分,单机也能玩出节奏。脚本别贪多,一波小怪、一波精英、一只BOSS,先把链路跑通,再往里加花活。
[顶部]