一、核心脚本模板(单机通用版)
以下为单机传奇取走武器脚本通用模板,适配主流单机引擎(HERO、GOM精简版),可直接复制至对应脚本文件使用,核心实现“触发条件-取走武器-反馈提示”完整逻辑。
# 取走武器核心脚本(场景:NPC对话触发/任务触发)
[@TakeWeapon]
#IF
CHECKUSEITEM 1 # 校验玩家是否佩戴武器(位置1为武器栏)
CHECKITEM 武器名称 1 # 可选:指定取走某类武器,无则取走当前佩戴武器
#ACT
TAKE 武器名称 1 # 取走目标武器(无名称则取走当前佩戴武器)
TakeOnItem 1 # 清空武器栏佩戴状态
SENDMSG 5 你的武器已被取走! # 玩家个人提示
SENDMSG 0 玩家〖<$USERNAME>〗的武器被取走! # 全服提示(单机可删除)
#ELSEACT
MESSAGEBOX 你未佩戴武器,无法执行操作! # 条件不满足提示
Break
# 拓展:任务触发式取走武器脚本
[@TaskTakeWeapon]
#IF
CHECKTASKSTATE 1 2 # 校验任务状态(任务ID1,阶段2)
CHECKUSEITEM 1 # 校验是否佩戴武器
#ACT
TAKEUSEITEM 1 # 直接取走武器栏佩戴的武器,无需指定名称
SENDMSG 5 任务所需武器已上交,可前往NPC处领取奖励。
SETTASKSTATE 1 3 # 更新任务状态至下一阶段
goto @TaskNext # 跳转至任务下一环节
#ELSEACT
MESSAGEBOX 未佩戴武器或任务状态不符,无法上交!
Break
二、逐句代码注解(核心命令详解)
1. 触发标识与条件判断段注解
- [@TakeWeapon]/[@TaskTakeWeapon]:脚本触发标识,前者为通用触发(如NPC对话、命令触发),后者为任务专属触发,单机可根据需求自定义标识名称(需与触发入口对应)。
- #IF:条件判断起始命令,后续紧跟校验规则,仅所有条件满足时,才执行#ACT段命令。
- CHECKUSEITEM 1:核心校验命令,“1”对应玩家装备栏位置(1=武器栏、2=头盔栏...),含义为“校验玩家武器栏是否有佩戴装备”,单机场景必加,避免无武器时触发错误。
- CHECKITEM 武器名称 1:可选校验命令,指定取走某类武器(如“CHECKITEM 裁决之杖 1”),无此命令则默认取走武器栏当前佩戴的任意武器,适合精准取走任务武器。
- CHECKTASKSTATE 1 2:任务场景专属命令,含义为“校验ID为1的任务,是否处于阶段2”,仅任务推进至对应阶段时,才可触发取走武器操作,单机任务脚本核心校验项。
2. 执行操作段注解(#ACT)
- TAKE 武器名称 1:取走物品核心命令,“武器名称”为目标武器名称(需与单机物品数据库一致),“1”为取走数量,仅当玩家背包或装备栏有该武器时生效;无武器名称时,需搭配CHECKUSEITEM 1使用,否则可能取走错误物品。
- TAKEUSEITEM 1:精准取走命令,直接取走武器栏(位置1)佩戴的武器,无需指定名称,比TAKE命令更适配“取走当前佩戴武器”场景,单机任务脚本优先使用。
- TakeOnItem 1:清空佩戴状态命令,执行后武器栏自动清空,避免“武器已被取走但图标仍显示”的视觉异常,单机场景建议搭配TAKE命令使用,提升体验。
- SENDMSG 5/0 提示内容:消息发送命令,“5”为玩家个人红色提示(仅自己可见),“0”为全服白色提示(单机可删除,避免冗余),用于告知玩家操作结果,增强脚本反馈。
- SETTASKSTATE 1 3:任务状态更新命令,将ID为1的任务更新至阶段3,实现任务推进,单机任务取走武器后必加,确保任务流程连贯。
- goto @TaskNext:跳转命令,执行后跳转至[@TaskNext]标识对应的脚本段,用于衔接任务下一环节,避免玩家手动触发下一流程。
3. 条件不满足段注解(#ELSEACT)
- MESSAGEBOX 提示内容:弹窗提示命令,当#IF段条件不满足时,弹出弹窗告知玩家原因(如未佩戴武器、任务状态不符),单机场景不可缺少,避免玩家困惑操作失败原因。
- Break:脚本终止命令,执行后结束当前脚本流程,避免后续代码误触发,所有脚本结尾建议添加,确保逻辑闭环。
三、单机专属配置要点
1. 脚本文件放置路径
单机传奇脚本需放置对应目录,确保引擎识别:HERO单机引擎放置于“Mir200\Envir\QuestDiary”,GOM单机引擎放置于“Mir200\Envir\Market_Def”,若为任务脚本,需与任务主脚本放置同一目录,且触发标识与任务入口对应。
2. 物品名称与ID适配
脚本中“武器名称”需与单机物品数据库(Items.txt/MonItems.DB)完全一致,包括大小写(如“裁决之杖”不可写为“裁决杖”);若不知武器名称,可打开单机DB编辑器,检索武器ID对应的名称,避免因名称错误导致取走失败。
3. 触发入口配置(单机实操)
1. NPC触发:打开单机NPC脚本(如NPC.txt),在目标NPC对话脚本中添加“取走我的武器”,保存后重启引擎,对话NPC即可触发;2. 命令触发:在单机M2控制台输入“@TakeWeapon 玩家名称”,可手动触发脚本取走指定玩家武器,适合测试调试;3. 任务触发:在任务接取脚本中添加触发入口,确保任务推进至对应阶段可触发。
4. 常见适配调整
单机引擎精简版可能不支持部分命令,如TAKEUSEITEM可替换为“TAKE 武器名称 1”+“CHECKUSEITEM 1”组合;无任务系统的单机版本,删除任务相关命令(CHECKTASKSTATE、SETTASKSTATE等),保留核心取走武器逻辑即可。
四、单机场景常见问题及解决
1. 脚本触发后无法取走武器
核心成因:武器名称与数据库不一致、未添加CHECKUSEITEM 1校验、脚本路径错误。解决办法:核对物品数据库修正武器名称,添加CHECKUSEITEM 1校验,确认脚本放置于对应目录,重启单机引擎。
2. 武器取走后图标仍显示
核心成因:未添加TakeOnItem 1命令,引擎未更新装备栏状态。解决办法:在TAKE/TAKEUSEITEM命令后添加TakeOnItem 1,保存脚本并重启引擎,测试装备栏显示是否正常。
3. 任务触发后不更新状态
核心成因:SETTASKSTATE命令参数错误(任务ID、阶段错误)、未绑定任务主脚本。解决办法:核对任务ID与阶段数值,确保与任务主脚本一致,将取走武器脚本与任务脚本放置同一目录,重启引擎。
4. 弹窗提示不显示
核心成因:MESSAGEBOX命令拼写错误、单机引擎关闭弹窗功能。解决办法:修正命令拼写,在单机M2设置中开启“弹窗提示”功能,重启引擎后测试。
五、拓展脚本(单机特色场景)
# 场景1:死亡后自动取走武器(单机PVE特色)
[@Die]
#IF
CHECKUSEITEM 1
#ACT
TAKEUSEITEM 1
DropItem 武器名称 1 %x %y # 武器掉落至死亡位置
SENDMSG 5 死亡后武器已掉落至当前位置!
Break
# 场景2:定时取走武器(单机活动场景)
[@TimerTakeWeapon]
#IF
CHECKUSEITEM 1
#ACT
TAKEUSEITEM 1
GIVE 金币 1000 # 补偿金币
SENDMSG 5 定时回收武器完成,获得1000金币补偿。
SetOnTimer 1 60 # 60秒后再次触发(单机可调整时长)
Break

