随便找个npc的功能代码

上图可见,这个功能文件里面包含了三个代码段。
- [@main] 表示主函数(主代码段),也就是点击npc第一个执行的代码段
- []传奇脚本是以中括号的形式来定义代码段的。
- \ 表示换行 有几个换几行
- <> 用来表示按钮,按钮中的 /@SY 表示点击按钮执行的代码段
- / 转义符 如果直接 写@SY 那他就是普通的文字 ,而/@SY 表示代码段SY
- ; 注释符号
- 脚本自带了一些函数 例如@exit 表示关闭弹窗
[@j] 代码段讲解
#IF //if判断开始标识 checkitem 金条 1 //判断玩家是否有1个金条 #ACT //上面的判断如果成立(true)执行下面的操作 take 金条 1 //拿走玩家身上的金条 TimeRecall 60 //限时60分钟,超时传送到原来位置 mapmove B101 //将玩家移动到B101地图 break //执行结束 #ELSESAY //如果判断不成立(false)显示下面的内容 你没有钱!\ //弹出窗上显示的文字 <取消/@exit>\ //显示取消按钮 步骤讲解
点击npc时,会自动执行[@main]中的代码
也就是弹出弹窗显示内容和按钮

当我点击 打听圣域的消息 时,会执行[@SY]代码段
也就是在弹窗显示新的内容。点击关闭 调用@exit 会关闭弹窗

当我点击 去 的时候会执行[@j] 代码段,进行一系列的操作,根据是否有金币,觉得是执行#ACT还是#ELSESAY
当然了,我没有钱,执行了#ELSESAY

常用代码
| 指令 | 含义 |
|---|---|
| #IF | if判断 |
| #ACT | 执行代码 |
| #ELSEACT | 执行代码 |
| break | 结束命令,不再向下执行了 |
| #SAY | 在弹窗上显示内容 |
| #ELSESAY | 在弹窗上显示内容 |
| close | 关闭对话框 |
| #call | 调用子程序命令。例#CALL [\商人\杂货铺.txt] @杂货铺 表示: D:\MirServer\Mir200\Envir\QuestDiary\商人 |
| goto @段 | 跳转到指定段,开始执行相当于B中的语句 |
#call详解:#CALL [\商人\杂货铺.txt] @杂货铺
表示:调用 D:\MirServer\Mir200\Envir\QuestDiary\商人\杂货铺.txt 文件中的 @杂货铺 代码段

条件命令(用于#IF后面的校验)
| 指令 | 含义 | 示例 |
|---|---|---|
| CHECKITEM 物品名 数量 | 检测当前人物所带物品及数量 | |
| CHECKGOLD 数量 | 检测当前人物所带金币数量 | |
| CHECKLEVELEX (>,<,=) 等级数 | 检测当前人物等级 | |
| CHECKCREDITPOINT (>,<,=) 声望数 | 检测当前人物声望 | |
| CHECKJOB (Warrior,Wizard,Taoist) | 检测当前人物所属职业 | |
| CHECKHUM 地图名 数量 | 检测指定地图的玩家数量 | |
| CHECKITEMW 物品名 数量 | 检测当前人物是否佩带指定物品 | |
| CHECKDURAEVA 物品名 数值 | 检测当前人物所带矿物等物品的品质 | |
| CHECKBAGGAGE | 检测当前人物的背包是否已满 | |
| ONLINELONGMIN (>,<,=) 时长 | 检测当前人物在线时长 | |
| CHECKCASTLEDOOR (损坏,开启,关闭) | 检测沙城城门状态 | |
| CASTLEWARAY (>,<,=) 天数 | 检测上次攻城到现在的天数 | |
| CASTLECHANGEDAY (>,<,=) 天数 | 检测沙巴克占领天数 | |
| CHECKOFGUILD 行会名称 | 检测当前人物行会名称 | |
| CHECKNAMELIST 角色名列表.txt | 检测当前人物角色名是否在列表中 | |
| CHECKGUILDLIST 行会列表.txt | 检测当前人物行会是否在列表中 | |
| CHECKACCOUNTLIST 帐号列表.txt | 检测当前人物帐号是否在列表中 | |
| CHECKIPLIST IP列表.txt | 检测当前人物IP是否在列表中 | |
| CHECKACCOUNTIPLIST 帐号和IP列表.txt | 检测当前人物登录帐号与IP是否与列表中匹配 | |
| CHECKNAMEIPLIST 角色名和IP列表.txt | 检测当前人物角色名称与IP是否与列表中匹配 | |
| ISADMIN | 检测当前人物是否为管理员 | |
| HAVEGUILD | 检测当前人物是否加入行会 | |
| ISCASTLEGUILD | 检测当前人物是否为沙城成员 | |
| ISCASTLEMASTER | 检测当前人物是否为沙城老大 | |
| ISGUILDMASTER | 检测当前人物是否为行会老大 | |
| ISNEWHUMAN | 检测当前人物是否为新人 | |
| CHECKSLAVECOUNT (>,<,=) 数量 | 检测当前人物所带宠物的数量 | |
| CHECKSLAVELEVEL (>,<,=) 等级数(7) | 检测当前人物所带宠物的等级 | |
| CHECKEXP (>,<,=) 经验值 | 检测当前人物经验值 | |
| CHECKPOSELEVEL (>,<,=) 等级数 | 检测当前人物对面人物的等级 | |
| CHECKPOSEGENDER 性别(男,女) | 检测当前人物对面人物的性别 | |
| CHECKMEMBERLEVEL 类型 (>,<,=) 等级数 | 检测当前人物的会员等级 | |
| CHECKMEMBERTYPE (=,>,<) 类型数 | 检测当前人物的会员类型 | |
| CHECKRENEWLEVEL (=,>,<) 转生次数 | 检测当前人物的转生次数 | |
| CheckBagSize 数量 | 检测当前人物背包空格数 | |
| CHECKDC (=,>,<) 攻击下限 (=,>,<) 攻击上限 | 检测当前人物攻击力的上限及下限值 | |
| CHECKMC (=,>,<) 魔法下限 (=,>,<) 魔法上限 | 检测当前人物魔法力的上限及下限值 | |
| CHECKSC (=,>,<) 道术下限 (=,>,<) 道术上限 | 检测当前人物道术力的上限及下限值 | |
| CHECKHP (=,>,<) HP下限 (=,>,<) HP上限 | 检测当前人物HP值的上限及下限值 | |
| CHECKMP (=,>,<) MP下限 (=,>,<) MP上限 | 检测当前人物MP值的上限及下限值 | |
| CHECKUSEITEM 物品位置 | 检测当前人物身上指定位置是否戴物品 | |
| CHECKITEMTYPE 物品位置 物品类型 | 检测当前人物身上指定位置戴的物品是否为指定类型 | |
| CHECKGAMEPOINT 活力值 | 检测当前人物活力值 | |
| ISLOCKPASSWORD | 检测当前人物的仓库是否解锁 | |
| PASSWORDERRORCOUNT (=,>,<) 次数 | 检测当前人物输入仓库密码错误次数 | |
| CheckRangeMonCount 地图号 X Y 范围 (=,>,<) 数量 | 检测一个坐标范围内怪物数量 | |
| CheckMonMap 地图号 数量 | 检测一个指定地图内的怪物数量 | |
| CHECKMON 数量 | 检测当前人物所在地图内的怪物数量 | |
| CHECKSKILL 技能名称 (=,>,<) 修炼等级 | 检测当前人物已学技能 |
功能命令(一般用于 #ACT,#ELSEACT 后面)
| 指令 | 含义 | 示例 |
|---|---|---|
| MAP 地图名 | 将当前人物移动到指定地图 | |
| give 物品名 数量 | 给物及数量 | |
| take 物品名 数量 | 拿走物及数量 | |
| MOVEMAP 地图名 X Y | 将当前人物移动到指定地图的指定坐标 | |
| TIMERECALL 时间值 | 指定当前人物到达多少时间后被传回这里 | |
| BREAKTIMERECALL | 中断指定人物达多少时间后被传回这里 | |
| RECALLMOB 怪物名称 宝宝等级(最高为 7) 叛变时间(分钟) 是否自动变色(0、1)固定颜色(1-7) | 给予当前人物指定怪物为宝宝 | |
| setautogetexp 命令 时间 经验 是否安全区(0为任何地方) 地图号(任何地图请不用填) | 指定当前人物在线泡经验(直接得到经验) | |
| GAMEGOLD (=,+,-) 数量 | 调整当前人物的元宝数量 | |
| SETRANKLEVELNAME 封号 | 调整当前人物的封号 | |
| ADDGUILDLIST 行会列表.txt | 将当前人物行会名加入列表 | |
| DELGUILDLIST 行会列表.txt | 将当前人物行会名从列表删除 | |
| ADLNAMELIST 角色名列表.txt | 将当前人物角色名加入列表 | |
| DELNAMELIST 角色名列表.txt | 将当前人物角色名从列表删除 | |
| CLEARNAMELIST 列表.txt | 清除列表内的所有信息 | |
| HAIRSTYLE 数值 | 调整当前人物的发型 | |
| CHANGENAMECOLOR 数值 | 调整当前人物的名字颜色 | |
| CHANGEJOB 职业名称(Warrior,Wizard,Taoist) | 调整当前人物的所属职业 | |
| CHANGEGENDER 数值 | 调整当前人物的所属性别 | |
| ADDSKILL 技能名称 技能等级 | 给予当前人物添加指定技能 | |
| DELSKILL 技能名称 | 删除当前人物的指定技能 | |
| SKILLLEVEL 技能名称 (=,+,-) 技能等级 | 调整当前人物的指定技能为指定等级 | |
| DELNOJOBSKILL | 删除当前人物非本职业的所有技能 | |
| CLEARSKILL | 删除当前人物的所有技能 | |
| GAMEPOINT (=,+,-) 数量 | 调整当前人物的活力值 | |
| CREDITPOINT (=,+,-) 数量 | 调整当前人物的声望点数 | |
| SETMEMBERLEVEL (=,+,-) 等级数 | 调整当前人物的会员等级 | |
| SETMEMBERTYPE (=,+,-) 等级数 | 调整当前人物的会员类型 | |
| CHANGELEVEL (=,+,-) 等级数 | 调整当前人物的等级 | |
| CHANGEPKPOINT (=,+,-) 点数 | 调整当前人物的PK点数 | |
| CHANGEEXP (=,+,-) 经验值 | 调整当前人物的经验值 | |
| CHANGEMODE 模式类型(1管理模式、2无敌模式、3隐身模式) 开关(1为开,0为关) | 调整当前人物的游戏模式 | |
| CHANGEPERMISSION 权限等级 | 调整当前人物的权限等级 | |
| KILLMONEXPRATE 倍率 有效时间 | 调整当前人物的杀怪经验倍率 | |
| POWERRATE 倍率 有效时间 | 调整当前人物的攻击力倍率 | |
| KICK | 将当前人物踢下线 | |
| KILL 数值 | 将当前人物杀死,并设置杀死类型 | |
| KILLSLAVE | 将当前人物的宝宝全部杀死 | |
| CLEARPASSWORD | 清除当前人物的仓库密码 | |
| RestRenewLevel | 将人物的转生次数复位为零,即未转生 | |
| DELMARRY | 清除当前人物的结婚信息 | |
| DELMASTER | 清除当前人物的拜师信息 | |
| RENEWLEVEL 转次数 转后等级 0 | 将当前人物转生,并设置转生次数以及转生后人物等级跳到多少级 | |
| SENDMSG 信息类型代码 %s信息内容%d | 发送文字信息 | |
| CLEARMAPMON 地图号 | 清除指定地图的所有怪物 | |
| RESTBONUSPOINT | 清除当前人物的属性点 | |
| PARAM1 地图 | NPC指定刷怪地图 | |
| PARAM2 横坐标 | NPC刷怪X坐标 | |
| PARAM3 纵坐标 | NPC刷怪Y坐标 | |
| MONGEN 怪物名称 数量 时间 | NPC刷怪命令+怪物+数量+时间 | |
| OpenBigDialogBox | 打开大的弹出层 | |
| GuildNoticeMsg | 发送自定义颜色的文字信息 | |
| MESSAGEBOX | 弹出带有确定按钮的提示文字对话框 | |
| GetRandomText | 从文件中随机获取一行字符串 | GetRandomText 文件路径 变量(S0–S99) 指定行(0-10000) |
| SetNewItemValue | 给装备附加新属性 | SetNewItemValue 位置(0-12) 属性(0-5) 操作符(+,-,=) 值(1-100) |
| AutoTakeOnItem | 自动穿装备 | 装备名称 位置(0-16) |
| AutoTakeOffItem | 自动脱装备 | 装备名称 位置(0-16) |
内置变量
| 指令 | 含义 |
|---|---|
| <$USERNAME> | 人物名称 |
| <$GUILDNAME> | 行会名称 |
| <$RANKNAME> | 行会职位名称 |
| <$LEVEL> | 等级 |
| <$HP> | 生命值 |
| <$AC> | 防御力 |
| <$MAXAC> | 最高防御力 |
| <$MAC> | 魔法防御力 |
| <$MAXMAC> | 最高魔法防御力 |
| <$DC> | 物理攻击力 |
| <$MAXDC> | 最高物理攻击力 |
| <$MC> | 魔法力 |
| <$MAXMC> | 最高魔法力 |
| <$SC> | 道术 |
| <$MAXSC> | 最高道术 |
| <$EXP> | 当前经验值 |
| <$MAXEXP> | 升级经验值 |
| <$PKPOINT> | PK点数 |
| <$CREDITPOINT> | 声望点数 |
| <$GOLDCOUNT> | 金币数量 |
| <$GAMEGOLD> | 游戏币数 |
| <$GAMEPOINT> | 游戏点数 |
| <$HW> | 腕力 |
| <$MAXHW> | 最高腕力 |
| <$BW> | 背包重量 |
| <$MAXBW> | 最高背包重量 |
| <$WW> | 负重力 |
| <$MAXWW> | 最高负重 |
| <$HUNGER> | 饥饿程度 |
| <$LOGINTIME> | 登录时间 |
| <$LOGINLONG> | 登录时长 |
| <$DRESS> | 衣服 |
| <$WEAPON> | 武器 |
| <$RIGHTHAND> | 蜡烛 |
| <$HELMET> | 头盔 |
| <$NECKLACE> | 项链 |
| <$RING_R> | 右戒指 |
| <$RING_L> | 右戒指 |
| <$ARMRING_R> | 右手镯 |
| <$ARMRING_L> | 左手镯 |
| <$BUJUK> | 护身符 |
| <$BELT> | 腰带 |
| <$BOOTS> | 鞋子 |
| <$CHARM> | 宝石 |
| <$CASTLENAME> | 沙城名称 |
服务器活动变量
| 指令 | 含义 |
|---|---|
| <$SERVERNAME> | 服务器名字 |
| <$SERVERIP> | 服务器IP地址 |
| <$WEBSITE> | 游戏网址 |
| <$BBSSITE> | 论坛网址 |
| <$CLIENTDOWNLOAD> | 客户端程序下载地址 |
| <$QQ> | 联系QQ号 |
| <$PHONE> | 联系电话号码 |
| <$BANKACCOUNT0> | 银行帐号信息 |
| <$BANKACCOUNT1> | 银行帐号信息 |
| <$BANKACCOUNT2> | 银行帐号信息 |
| <$BANKACCOUNT3> | 银行帐号信息 |
| <$BANKACCOUNT4> | 银行帐号信息 |
| <$BANKACCOUNT5> | 银行帐号信息 |
| <$BANKACCOUNT6> | 银行帐号信息 |
| <$BANKACCOUNT7> | 银行帐号信息 |
| <$BANKACCOUNT8> | 银行帐号信息 |
| <$BANKACCOUNT9> | 银行帐号信息 |
| <$GAMEGOLDNAME> | 游戏币名称 |
| <$USERCOUNT> | 在线人数 |
| <$DATETIME> | 当前日期时间 |
| <$GAMEGOLDNAME> | 游戏币名称 |
| <$HIGHLEVELINFO> | 最高等人物信息 |
| <$HIGHPKINFO> | 最高PK点数人物信息 |
| <$HIGHDCINFO> | 最高攻击力人物信息 |
| <$HIGHMCINFO> | 最高魔法力人物信息 |
| <$HIGHSCINFO> | 最高道术人物信息 |
变量命名规则
P0-P9 私人变量(数字型) 不可保存 命令: MOV INC DEC MUL equal small large
G0-G499 全局变量(数字型) 可保存 命令: MOV INC DEC MUL equal small large
M0-M99 私人变量(数字型) 不可保存 命令: MOV INC DEC MUL equal small large
I0-I99 全局变量(数字型) 不可保存 命令: MOV INC DEC MUL equal small large
D0-D9 私人变量(数字型) 不可保存 命令: MOV INC DEC MUL equal small large
N0-N99 私人变量(数字型) 不可保存 命令: MOV INC DEC MUL equal small large
S0-S99 私人变量(字符型)(自定义输入@@InPutString) 不可保存 命令: MOV INC DEC MUL equal small large
A0-A499 全局变量(字符型)(自定义输入@@InPutInteger) 可保存 命令: MOV INC DEC MUL equal small large
操作变量
| 指令 | 含义 |
|---|---|
| RANDOM 随机数 | 一般用在#IF语句中作为触发#IF机率 |
| EQUAL 变量名 数值 | 检测变量是否等于指定数值 |
| LARGE 变量名 数值 | 检测变量是否大于指定数值 |
| SMALL 变量名 数值 | 检测变量是否小于指定数值 |
| MOV 变量名 数值 | 给予变量赋于指定值 |
| INC 变量名 数值 | 给予变量加上指定值 |
| DEC 变量名 数值 | 给予变量减去指定值 |
| SUM 变量名A 变量名B | 将两个变量相加 |
| MOVR 数值 | 变量赋予小于指定数值的随机非负数 |
| $STR(变量)> | 把变量转为字符串 |
| SET [变量名] 数值 | 定义变量 |
| RESET [变量名] 连续数字 | 变量清零,reset [100] 7 就是把100 101 102 103 104 105 106这7个变量赋值为0 |
| CHECK [变量数值] 数值 | 检测变量是否等于指定数值 |