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

