传奇电脑端脚本本质就是纯文本.txt,放在服务端Mir200\Envir里给M2解析。NPC功能放Market_Def,任务/活动放QuestDiary,登录/升级/杀怪/死亡等全局事件放QFunction-0.txt。用Notepad++写,编码用ANSI/GBK,别用记事本另存UTF-8BOM。
一、最小结构
[@main]
#SAY
我是传送员,选个地方去:\
<去比奇/@go_bichi><去盟重/@go_mengzhong>
[@go_bichi]
#if
checkgold1000
#act
take金币1000
mapmove0330330
sendmsg6已传送到比奇城
break
#elseact
messagebox金币不够1000,去不了
规则就三条:
•[@标签]是入口/跳转点,@main是点NPC第一个看的。
•#IF后面写条件,#ACT后面写动作,#ELSEACT是不满足条件时干的事。
•<显示文字/@标签>是玩家可点的按钮,点了就跳到对应段落。
二、常用条件命令(#IF段)
•checklevel>35等级大于35
•checkjobWarrior战士(Wizard法师/Taoist道士)
•checkitem金条1背包有1个金条
•checkgold1000金币≥1000
•checkgamegold>99元宝>99
•checkgamepoint>0绑定元宝/点券类
•checkbaggage背包满了
-random101/10概率(抽奖、爆率常用)
三、常用动作命令(#ACT段)
•give物品名数量给东西:give屠龙1
•take物品名数量扣东西:take金币1000
-gamegold+100加元宝(部分引擎GAMEGOLD+100)
•gamegold-100扣元宝
•changeexp+100000加经验
•mapmove地图号XY传送到坐标
•map地图号随机落点进图
•sendmsg6内容个人绿字提示
•sendmsg0内容全服公告
•messagebox内容弹窗
•close关NPC窗口
•break中断当前段,不再往下跑
•goto@标签跳段
四、让NPC在游戏里出现
光写脚本文件不够,还得在Envir\MerChant.txt里登记:
比奇城330330传送员080005
顺序大概是:地图名、X、Y、NPC名、方向、形象、功能码、是否沙城、是否移动、移动间隔。
然后Market_Def里建文件,文件名要和NPC对上,比如比奇城-传送员.txt。只登记不写脚本,点NPC没反应;只写脚本不登记,游戏里看不到人。
五、新手礼包NPC
[@main]
#SAY
找我领新手装备:\
<领战士包/@warrior><领法师包/@wizard><领道士包/@taoist>
[@warrior]
#if
#act
give青铜斧1
give布衣(男)1
give金创药(小量)5
sendmsg6战士新手包已发
close
[@wizard]
#if
#act
give海魂1
give布衣(女)1
give金创药(小量)5
sendmsg6法师新手包已发
close
[@taoist]
#if
#act
give桃木剑1
give布衣(男)1
give金创药(小量)5
sendmsg6道士新手包已发
close
这段没条件,谁点都给。要限制就加:
#if
checklevel>1
checkitem新手礼包已领0
#act
give...
take新手礼包已领0
give新手礼包已领1
用“发过就给个标记物品”来防重复领,是最土但最稳的办法。
六、抽奖NPC
[@main]
#SAY
200元宝抽一次:\
<抽奖/@choujiang>
[@choujiang]
#if
checkgamegold>199
#act
gamegold-200
#if
random500
#act
give时乘六龙盔1
sendmsg0恭喜【%s】抽到时乘六龙盔!
goto@main
#elseact
sendmsg6没中,下次再来
goto@main
#elseact
messagebox元宝不足200,抽不了
注意别用Gmexecute出来xxx这种二开私有命令,M2不认就报“命令不正确或没有足够权限”,但后面的sendmsg还会发,就会出现“系统恭喜、包里没东西”。
七、全修NPC
GOM/GEE类引擎认RepairAll:
[@main]
#SAY
花3元宝全身特修:\
<特修/@texiu>
[@texiu]
#if
checkgamegold>2
#act
gamegold-3
RepairAll
messagebox修理成功
goto@main
#elseact
messagebox元宝不足3个
引擎不认RepairAll就换RepairItem衣服RepairItem武器这种逐部位写;NPC本身得是能修理的NPC,不然引擎拒绝执行。
八、任务脚本(QuestDiary)
比如杀10只半兽人领奖:
Envir\QuestDiary\新手任务\杀半兽人.txt
[@KillMon]
#if
checkmonkill半兽人10
#act
give沃玛装备1
sendmsg6任务完成,奖励已发
set[杀半兽人任务]1
具体标签名看引擎:有的用@OnKillMonster,有的用MapQuest.txt配触发,有的在QF里写。先翻你引擎的QuestCommandList.txt/EngineCommand.txt,搜命令存在再写,别背网上通用命令。
九、变量
•S0S1人物字符变量
•N0N1人物数字变量
•G0G1全服全局变量
写法:
MOVS0已领取
INCN11
有的引擎要先声明,有的直接用。翎风/GEE对变量作用域比老清风严,乱用就红。
十、调试顺序
1.M2控制台看红字:会带Market_Def\xxx.txt第N行。
2.行号对上:多半是命令拼错、中文标点、变量没声明、物品名和数据库不一致。
3.先写@main加一个按钮,点了只发sendmsg6测试,能发就说明NPC挂上了。
4.再加条件、再加扣钱、再加给物品。
5.别一上来写抽奖+合成+转生+沙巴克,错一处全段崩。
十一、新手最容易踩的坑
•记事本另存UTF-8→中文命令全废
•<文字/@标签>标签名和[@标签]对不上→点了没反应
•物品名手打带空格→数据库里叫时乘六龙盔,脚本写时乘六龙盔,永远给不出
•金币和元宝搞反:checkgold是金币,checkgamegold才是元宝
•#IF下写动作命令,#ACT下写条件命令→引擎直接当未知行
•用别家引擎命令:GOM的Give、BLUE的AddPlayerItem(...)、HXM2的AddItemToBag(...)不是一回事
•NPC没登记到MerChant.txt→游戏里根本没这个人
•脚本热加载不生效→部分改动要M2里“重新加载脚本/NPC”或重启
十二、一个能直接抄的“传送+礼包+抽奖”合体
[@main]
#SAY
欢迎找我:\
<进石墓阵(1000金币)/@go_sg>\
<领新手包/@libao>\
<抽装备(200元宝)/@chou>
[@go_sg]
#if
checkgold1000
#act
take金币1000
mapmove71717
sendmsg6进石墓阵了
break
#elseact
messagebox金币不够
[@libao]
#if
#act
give金创药(小量)5
give随机传送卷2
sendmsg6新手包到手
close
[@chou]
#if
checkgamegold>199
#act
gamegold-200
#if
random200
#act
give裁决之杖1
sendmsg0【%s】抽到了裁决之杖!
goto@main
#elseact
sendmsg6没中
goto@main
#elseact
messagebox元宝不够200
电脑端传奇脚本不是“编程”,是“标签+条件+动作”的配置文件。先会@main、#IF、#ACT、give、take、mapmove、sendmsg这七个,就能做传送员、药店、礼包员、抽奖员、回收员;再往后才是随机、变量、任务链、全局触发、活动系统。
写之前先问三句:
•这功能在Market_Def还是QuestDiary?
•这命令我引擎命令表里搜得到吗?
•扣的东西、给的东西、判断的变量,数据库里真存在吗?
三句都答上来,脚本基本一次红都不用看。
一、最小结构
[@main]
#SAY
我是传送员,选个地方去:\
<去比奇/@go_bichi><去盟重/@go_mengzhong>
[@go_bichi]
#if
checkgold1000
#act
take金币1000
mapmove0330330
sendmsg6已传送到比奇城
break
#elseact
messagebox金币不够1000,去不了
规则就三条:
•[@标签]是入口/跳转点,@main是点NPC第一个看的。
•#IF后面写条件,#ACT后面写动作,#ELSEACT是不满足条件时干的事。
•<显示文字/@标签>是玩家可点的按钮,点了就跳到对应段落。
二、常用条件命令(#IF段)
•checklevel>35等级大于35
•checkjobWarrior战士(Wizard法师/Taoist道士)
•checkitem金条1背包有1个金条
•checkgold1000金币≥1000
•checkgamegold>99元宝>99
•checkgamepoint>0绑定元宝/点券类
•checkbaggage背包满了
-random101/10概率(抽奖、爆率常用)
三、常用动作命令(#ACT段)
•give物品名数量给东西:give屠龙1
•take物品名数量扣东西:take金币1000
-gamegold+100加元宝(部分引擎GAMEGOLD+100)
•gamegold-100扣元宝
•changeexp+100000加经验
•mapmove地图号XY传送到坐标
•map地图号随机落点进图
•sendmsg6内容个人绿字提示
•sendmsg0内容全服公告
•messagebox内容弹窗
•close关NPC窗口
•break中断当前段,不再往下跑
•goto@标签跳段
四、让NPC在游戏里出现
光写脚本文件不够,还得在Envir\MerChant.txt里登记:
比奇城330330传送员080005
顺序大概是:地图名、X、Y、NPC名、方向、形象、功能码、是否沙城、是否移动、移动间隔。
然后Market_Def里建文件,文件名要和NPC对上,比如比奇城-传送员.txt。只登记不写脚本,点NPC没反应;只写脚本不登记,游戏里看不到人。
五、新手礼包NPC
[@main]
#SAY
找我领新手装备:\
<领战士包/@warrior><领法师包/@wizard><领道士包/@taoist>
[@warrior]
#if
#act
give青铜斧1
give布衣(男)1
give金创药(小量)5
sendmsg6战士新手包已发
close
[@wizard]
#if
#act
give海魂1
give布衣(女)1
give金创药(小量)5
sendmsg6法师新手包已发
close
[@taoist]
#if
#act
give桃木剑1
give布衣(男)1
give金创药(小量)5
sendmsg6道士新手包已发
close
这段没条件,谁点都给。要限制就加:
#if
checklevel>1
checkitem新手礼包已领0
#act
give...
take新手礼包已领0
give新手礼包已领1
用“发过就给个标记物品”来防重复领,是最土但最稳的办法。
六、抽奖NPC
[@main]
#SAY
200元宝抽一次:\
<抽奖/@choujiang>
[@choujiang]
#if
checkgamegold>199
#act
gamegold-200
#if
random500
#act
give时乘六龙盔1
sendmsg0恭喜【%s】抽到时乘六龙盔!
goto@main
#elseact
sendmsg6没中,下次再来
goto@main
#elseact
messagebox元宝不足200,抽不了
注意别用Gmexecute出来xxx这种二开私有命令,M2不认就报“命令不正确或没有足够权限”,但后面的sendmsg还会发,就会出现“系统恭喜、包里没东西”。
七、全修NPC
GOM/GEE类引擎认RepairAll:
[@main]
#SAY
花3元宝全身特修:\
<特修/@texiu>
[@texiu]
#if
checkgamegold>2
#act
gamegold-3
RepairAll
messagebox修理成功
goto@main
#elseact
messagebox元宝不足3个
引擎不认RepairAll就换RepairItem衣服RepairItem武器这种逐部位写;NPC本身得是能修理的NPC,不然引擎拒绝执行。
八、任务脚本(QuestDiary)
比如杀10只半兽人领奖:
Envir\QuestDiary\新手任务\杀半兽人.txt
[@KillMon]
#if
checkmonkill半兽人10
#act
give沃玛装备1
sendmsg6任务完成,奖励已发
set[杀半兽人任务]1
具体标签名看引擎:有的用@OnKillMonster,有的用MapQuest.txt配触发,有的在QF里写。先翻你引擎的QuestCommandList.txt/EngineCommand.txt,搜命令存在再写,别背网上通用命令。
九、变量
•S0S1人物字符变量
•N0N1人物数字变量
•G0G1全服全局变量
写法:
MOVS0已领取
INCN11
有的引擎要先声明,有的直接用。翎风/GEE对变量作用域比老清风严,乱用就红。
十、调试顺序
1.M2控制台看红字:会带Market_Def\xxx.txt第N行。
2.行号对上:多半是命令拼错、中文标点、变量没声明、物品名和数据库不一致。
3.先写@main加一个按钮,点了只发sendmsg6测试,能发就说明NPC挂上了。
4.再加条件、再加扣钱、再加给物品。
5.别一上来写抽奖+合成+转生+沙巴克,错一处全段崩。
十一、新手最容易踩的坑
•记事本另存UTF-8→中文命令全废
•<文字/@标签>标签名和[@标签]对不上→点了没反应
•物品名手打带空格→数据库里叫时乘六龙盔,脚本写时乘六龙盔,永远给不出
•金币和元宝搞反:checkgold是金币,checkgamegold才是元宝
•#IF下写动作命令,#ACT下写条件命令→引擎直接当未知行
•用别家引擎命令:GOM的Give、BLUE的AddPlayerItem(...)、HXM2的AddItemToBag(...)不是一回事
•NPC没登记到MerChant.txt→游戏里根本没这个人
•脚本热加载不生效→部分改动要M2里“重新加载脚本/NPC”或重启
十二、一个能直接抄的“传送+礼包+抽奖”合体
[@main]
#SAY
欢迎找我:\
<进石墓阵(1000金币)/@go_sg>\
<领新手包/@libao>\
<抽装备(200元宝)/@chou>
[@go_sg]
#if
checkgold1000
#act
take金币1000
mapmove71717
sendmsg6进石墓阵了
break
#elseact
messagebox金币不够
[@libao]
#if
#act
give金创药(小量)5
give随机传送卷2
sendmsg6新手包到手
close
[@chou]
#if
checkgamegold>199
#act
gamegold-200
#if
random200
#act
give裁决之杖1
sendmsg0【%s】抽到了裁决之杖!
goto@main
#elseact
sendmsg6没中
goto@main
#elseact
messagebox元宝不够200
电脑端传奇脚本不是“编程”,是“标签+条件+动作”的配置文件。先会@main、#IF、#ACT、give、take、mapmove、sendmsg这七个,就能做传送员、药店、礼包员、抽奖员、回收员;再往后才是随机、变量、任务链、全局触发、活动系统。
写之前先问三句:
•这功能在Market_Def还是QuestDiary?
•这命令我引擎命令表里搜得到吗?
•扣的东西、给的东西、判断的变量,数据库里真存在吗?
三句都答上来,脚本基本一次红都不用看。

