内功修炼脚本的核心就三件事:给经验、升级、加属性或开技能。引擎若自带内功系统,直接用原生命中令;引擎不带就用自定义变量模拟。下面以GOM/GEE风格脚本写一套通用模拟方案,其他引擎把命令名替换成自己的即可。
一、准备变量与文件
在QuestDiary下建目录“内功”,建文件“内功数据.txt”存玩家数据。变量用HUMAN系列,登录时读取,下线前保存。
变量规划:
NGLevel内功等级
NGExp当前内功经验
NGNeed当前等级升级所需经验
NGPower内功值
NGSkillLevel技能等级
登录读取:
QManage.txt登录段:
[@Login]
IF
ACT
LOADVARHUMANNGLevel..\QuestDiary\内功\内功数据.txt
LOADVARHUMANNGExp..\QuestDiary\内功\内功数据.txt
LOADVARHUMANNGPower..\QuestDiary\内功\内功数据.txt
LOADVARHUMANNGSkillLevel..\QuestDiary\内功\内功数据.txt
GOTO@内功升级检测
首次登录变量为空时,用默认值。可在升级检测里补0。
二、打怪获得内功经验
在QFunction-0.txt写怪物死亡触发。若引擎支持@OnKillMon,或没有原生触发,可用MapQuest或机器人扫描。最常用的是在QFunction里加:
[@OnKillMon]
IF
ACT
MOVD0100
CALCVARHUMANNGExp+<$D0>
SAVEVARHUMANNGExp..\QuestDiary\内功\内功数据.txt
GOTO@内功升级检测
若引擎没有@OnKillMon,改用怪物名字判断:
[@OnKillMon]
IF
EQUAL<$MONSTERNAME>白野猪
ACT
CALCVARHUMANNGExp+200
SAVEVARHUMANNGExp..\QuestDiary\内功\内功数据.txt
GOTO@内功升级检测
不同引擎的怪物名变量可能是<CURRRTARGETNAME>或<MONSTER_NAME>,按实际修改。
三、升级检测与属性提升
内功升级检测脚本:
[@内功升级检测]
IF
ACT
GOTO@判断是否需要升级
[@判断是否需要升级]
IF
CHECKVARHUMANNGExp><$HUMAN(NGNeed)>
ACT
CALCVARHUMANNGExp-<$HUMAN(NGNeed)>
CALCVARHUMANNGLevel+1
CALCVARHUMANNGNeed=<$HUMAN(NGLevel)>*1000
GOTO@判断是否需要升级
ELSESAY
ACT
GOTO@内功等级加成
[@内功等级加成]
IF
ACT
MOVD0<$HUMAN(NGLevel)>
MOVD1<$D0>*10
CHANGEHPMAX+<$D1>
CHANGEMAGICMAX+<$D1>
SENDMSG6内功提升至<HUMAN(NGLevel)>级,HP和MP上限各增加<D1>。
这里要注意循环升级用GOTO自身容易死循环,但内功经验一般一次不会升太多级,可以接受。严谨做法用多段判断或引擎循环命令,按实际版本调整。
四、内功技能修炼
内功技能修炼有两种:一是使用特定技能时加技能熟练度,二是使用内功技能书直接学。示例:
使用雷电术时增加内功技能经验:
[@MagSelfFunc]
IF
EQUAL<$USESKILL>雷电术
ACT
CALCVARHUMANNGSkillLevel+1
SAVEVARHUMANNGSkillLevel..\QuestDiary\内功\内功数据.txt
SENDMSG6内功技能熟练度+1
技能升级检测:
[@技能升级检测]
IF
CHECKVARHUMANNGSkillLevel>10
ACT
CALCVARHUMANNGSkillLevel-10
SENDMSG6内功技能升级,效果增强!
具体触发段名随引擎而变,如@UseSkill、@MagSelfFunc、@Attack等。
五、泡点加内功经验
机器人定时给在线玩家加经验,AutoRunRobot.txt:
AutoRunNPCRUNONDAY10:00:00@内功泡点
RobotManage.txt:
[@内功泡点]
IF
ACT
MOVD050
CALCVARHUMANNGExp+<$D0>
SAVEVARHUMANNGExp..\QuestDiary\内功\内功数据.txt
SENDMSG6内功泡点增加<$D0>经验。
GOTO@内功升级检测
若机器人不能只对玩家执行,则用在线定时器或地图触发。
六、内功修炼NPC
Market_Def建“内功大师-0.txt”:
[@main]
查看内功状态/status
修炼内功技能/skill
重置内功/reset
[@status]
IF
ACT
SENDMSG6当前内功等级<HUMAN(NGLevel)>,经验<HUMAN(NGExp)>/<HUMAN(NGNeed)>,技能等级<HUMAN(NGSkillLevel)>。
[@skill]
IF
ACT
@@InPutString输入要修炼的技能名称
GOTO@修炼技能
[@修炼技能]
IF
CHECKITEM内功技能书1
ACT
TAKE内功技能书1
CALCVARHUMANNGSkillLevel+1
SAVEVARHUMANNGSkillLevel..\QuestDiary\内功\内功数据.txt
SENDMSG6内功技能修炼成功!
ELSESAY
SENDMSG6缺少内功技能书。
[@reset]
IF
CHECKITEM回生神水1
ACT
TAKE回生神水1
CALCVARHUMANNGLevel=0
CALCVARHUMANNGExp=0
CALCVARHUMANNGPower=0
CALCVARHUMANNGSkillLevel=0
SAVEVARHUMANNGLevel..\QuestDiary\内功\内功数据.txt
SAVEVARHUMANNGExp..\QuestDiary\内功\内功数据.txt
SAVEVARHUMANNGPower..\QuestDiary\内功\内功数据.txt
SAVEVARHUMANNGSkillLevel..\QuestDiary\内功\内功数据.txt
SENDMSG6内功已重置。
ELSESAY
SENDMSG6需要回生神水才能重置。
七、内功值消耗
使用内功技能时消耗内功值,例如:
[@内功技能触发]
IF
CHECKVARHUMANNGPower>10
ACT
CALCVARHUMANNGPower-10
SAVEVARHUMANNGPower..\QuestDiary\内功\内功数据.txt
SENDMSG6内功技能发动,消耗10点内功。
ELSESAY
SENDMSG6内功不足,技能无法发动。
内功值通过打怪或吃药补充,可另做一个补内功值的药品和脚本。
八、引擎原生命令适配
若引擎自带内功系统,把CALCVARHUMANNGLevel换成引擎命令。GOM没有内功,GEE有内功但命令版本不同;Hero用ChangeNGExp、CheckNGLevel;3K用内功经验相关命令。具体命令查M2命令帮助,找不到就用上面的自定义变量模拟。
九、排错
不涨经验:检查怪物死亡触发段是否被占用,命令名是否拼对。
升级不加属性:升级检测GOTO跳转层级不对,或CHECKVAR写错。
不保存:SAVEVAR路径不存在,先建目录和文本。
技能不触发:QFunction的段名与引擎触发器不匹配,换成实际可用的技能触发段。
这套脚本适合任何引擎,只要把命令替换成你服务器实际支持的写法即可。
一、准备变量与文件
在QuestDiary下建目录“内功”,建文件“内功数据.txt”存玩家数据。变量用HUMAN系列,登录时读取,下线前保存。
变量规划:
NGLevel内功等级
NGExp当前内功经验
NGNeed当前等级升级所需经验
NGPower内功值
NGSkillLevel技能等级
登录读取:
QManage.txt登录段:
[@Login]
IF
ACT
LOADVARHUMANNGLevel..\QuestDiary\内功\内功数据.txt
LOADVARHUMANNGExp..\QuestDiary\内功\内功数据.txt
LOADVARHUMANNGPower..\QuestDiary\内功\内功数据.txt
LOADVARHUMANNGSkillLevel..\QuestDiary\内功\内功数据.txt
GOTO@内功升级检测
首次登录变量为空时,用默认值。可在升级检测里补0。
二、打怪获得内功经验
在QFunction-0.txt写怪物死亡触发。若引擎支持@OnKillMon,或没有原生触发,可用MapQuest或机器人扫描。最常用的是在QFunction里加:
[@OnKillMon]
IF
ACT
MOVD0100
CALCVARHUMANNGExp+<$D0>
SAVEVARHUMANNGExp..\QuestDiary\内功\内功数据.txt
GOTO@内功升级检测
若引擎没有@OnKillMon,改用怪物名字判断:
[@OnKillMon]
IF
EQUAL<$MONSTERNAME>白野猪
ACT
CALCVARHUMANNGExp+200
SAVEVARHUMANNGExp..\QuestDiary\内功\内功数据.txt
GOTO@内功升级检测
不同引擎的怪物名变量可能是<CURRRTARGETNAME>或<MONSTER_NAME>,按实际修改。
三、升级检测与属性提升
内功升级检测脚本:
[@内功升级检测]
IF
ACT
GOTO@判断是否需要升级
[@判断是否需要升级]
IF
CHECKVARHUMANNGExp><$HUMAN(NGNeed)>
ACT
CALCVARHUMANNGExp-<$HUMAN(NGNeed)>
CALCVARHUMANNGLevel+1
CALCVARHUMANNGNeed=<$HUMAN(NGLevel)>*1000
GOTO@判断是否需要升级
ELSESAY
ACT
GOTO@内功等级加成
[@内功等级加成]
IF
ACT
MOVD0<$HUMAN(NGLevel)>
MOVD1<$D0>*10
CHANGEHPMAX+<$D1>
CHANGEMAGICMAX+<$D1>
SENDMSG6内功提升至<HUMAN(NGLevel)>级,HP和MP上限各增加<D1>。
这里要注意循环升级用GOTO自身容易死循环,但内功经验一般一次不会升太多级,可以接受。严谨做法用多段判断或引擎循环命令,按实际版本调整。
四、内功技能修炼
内功技能修炼有两种:一是使用特定技能时加技能熟练度,二是使用内功技能书直接学。示例:
使用雷电术时增加内功技能经验:
[@MagSelfFunc]
IF
EQUAL<$USESKILL>雷电术
ACT
CALCVARHUMANNGSkillLevel+1
SAVEVARHUMANNGSkillLevel..\QuestDiary\内功\内功数据.txt
SENDMSG6内功技能熟练度+1
技能升级检测:
[@技能升级检测]
IF
CHECKVARHUMANNGSkillLevel>10
ACT
CALCVARHUMANNGSkillLevel-10
SENDMSG6内功技能升级,效果增强!
具体触发段名随引擎而变,如@UseSkill、@MagSelfFunc、@Attack等。
五、泡点加内功经验
机器人定时给在线玩家加经验,AutoRunRobot.txt:
AutoRunNPCRUNONDAY10:00:00@内功泡点
RobotManage.txt:
[@内功泡点]
IF
ACT
MOVD050
CALCVARHUMANNGExp+<$D0>
SAVEVARHUMANNGExp..\QuestDiary\内功\内功数据.txt
SENDMSG6内功泡点增加<$D0>经验。
GOTO@内功升级检测
若机器人不能只对玩家执行,则用在线定时器或地图触发。
六、内功修炼NPC
Market_Def建“内功大师-0.txt”:
[@main]
查看内功状态/status
修炼内功技能/skill
重置内功/reset
[@status]
IF
ACT
SENDMSG6当前内功等级<HUMAN(NGLevel)>,经验<HUMAN(NGExp)>/<HUMAN(NGNeed)>,技能等级<HUMAN(NGSkillLevel)>。
[@skill]
IF
ACT
@@InPutString输入要修炼的技能名称
GOTO@修炼技能
[@修炼技能]
IF
CHECKITEM内功技能书1
ACT
TAKE内功技能书1
CALCVARHUMANNGSkillLevel+1
SAVEVARHUMANNGSkillLevel..\QuestDiary\内功\内功数据.txt
SENDMSG6内功技能修炼成功!
ELSESAY
SENDMSG6缺少内功技能书。
[@reset]
IF
CHECKITEM回生神水1
ACT
TAKE回生神水1
CALCVARHUMANNGLevel=0
CALCVARHUMANNGExp=0
CALCVARHUMANNGPower=0
CALCVARHUMANNGSkillLevel=0
SAVEVARHUMANNGLevel..\QuestDiary\内功\内功数据.txt
SAVEVARHUMANNGExp..\QuestDiary\内功\内功数据.txt
SAVEVARHUMANNGPower..\QuestDiary\内功\内功数据.txt
SAVEVARHUMANNGSkillLevel..\QuestDiary\内功\内功数据.txt
SENDMSG6内功已重置。
ELSESAY
SENDMSG6需要回生神水才能重置。
七、内功值消耗
使用内功技能时消耗内功值,例如:
[@内功技能触发]
IF
CHECKVARHUMANNGPower>10
ACT
CALCVARHUMANNGPower-10
SAVEVARHUMANNGPower..\QuestDiary\内功\内功数据.txt
SENDMSG6内功技能发动,消耗10点内功。
ELSESAY
SENDMSG6内功不足,技能无法发动。
内功值通过打怪或吃药补充,可另做一个补内功值的药品和脚本。
八、引擎原生命令适配
若引擎自带内功系统,把CALCVARHUMANNGLevel换成引擎命令。GOM没有内功,GEE有内功但命令版本不同;Hero用ChangeNGExp、CheckNGLevel;3K用内功经验相关命令。具体命令查M2命令帮助,找不到就用上面的自定义变量模拟。
九、排错
不涨经验:检查怪物死亡触发段是否被占用,命令名是否拼对。
升级不加属性:升级检测GOTO跳转层级不对,或CHECKVAR写错。
不保存:SAVEVAR路径不存在,先建目录和文本。
技能不触发:QFunction的段名与引擎触发器不匹配,换成实际可用的技能触发段。
这套脚本适合任何引擎,只要把命令替换成你服务器实际支持的写法即可。

