设为首页收藏本站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
广告位招租中
广告位招租中
广告位招租中
广告位招租中
广告位招租中
广告位招租中
查看: 310|回复: 0

脚本详解篇,一篇通晓脚本逻辑

[复制链接]

536

主题

7

回帖

1万

积分

管理员

积分
10082
    发表于 2026-4-9 17:51:47 | 显示全部楼层 |阅读模式
    技能献祭,Get 新技能:传奇技能——脚本语言逻辑
    跟航家学技能,用干货带你飞,现学现用,底部有配套学习资源
    传奇这款游戏的脚本,是航家已知的,最简单的脚本语言,它直接写在以.txt为后缀的文本中。
    本篇目录:
    一、几个关键脚本及路径(位置)
    二、脚本语言写法格式
    三、常用变量
    四、具体实例
    准备工具:GOM引擎帮助文档.chm,在提供学习资源的[常用工具]中有。用以查解脚本命令。
    一、几个关键脚本及路径(位置)
    讲脚本语言之前,先来认识下主要有哪些常用到的脚本文本,以及如何找到它们。
    对版本的修改重塑,基本在这个文件夹下:Mir200,也就是前面章节讲到的M2,见下图
    下图注明的几个关键内容,带Log的是平常操作的日志记录,Gate是各种网关。因免费提供的基础版本,是与本系列教程章节内容是配套的,所以当你下载好服务端,看到的MirServer下也是这些文件,一个不多一个不少。如果用的别的版本,关键内容不变。

    服务端-关键文件夹
    网站:用于展示装备;
    DBServer,合区时主要合这里面的东西;
    Mud2,初次安装DBE2000数据库时,创建的HeroDB,保存的路径,就是这个文件夹的DB
    Mir200,简称M2,经常操作的几个脚本内容:
    路径(位置):D:\MirServer\Mir200\Envir ,在Envir文件夹下,见下图选中的几个主要文件夹

    M2-关键脚本文件夹
    MapQuest_Def,任务型脚本,指的是:QManage.txt,这个脚本文本;用于执行角色登录数据(如:获得的称号,属性点,回收勾选记录以及私人变量等)、活动任务、计时任务、地图加、减价等任务。
    Market_Def,NPC脚本文本默认存放路径(前面章节有讲);触发类脚本,指的是:QFunction-0.txt,这个脚本文本,它也是功能脚本,因它触发类较多,为方便区分叫它触发类脚本。
    如,改变发型颜色,转职变性,会员福利,个人商店创建,过滤信息等,均属功能型;而达到指定等级自动穿戴装备,是否在安全区判定,人物死亡增加PK值,双击烟花效果,打开大红包等都属触发类。
    QuestDiary,功能脚本默认存放处,意思是:当没有指定完整关联路径时,程序会自动寻找此文件夹下的脚本文本,没有则提示不存在。
    如,【#CALL [\游戏功能\实物回收.txt] @实物回收】,程序会自动寻找,功能文件夹:QuestDiary下的【游戏功能\实物回收.txt】文本;如果将【游戏功能】文件夹,剪切到:Market_Def,文件夹下,就会提示找不到。
    Robot_def,此文件夹下,有两个脚本文本:AutoRunRobot.txt,RobotManage.txt
    AutoRunRobot.txt,机器人自动执行控制脚本;
    脚本格式:#AutoRun NPC 时间单位 值 执行内容
    时间单位有:HOUR(小时),RUNONDAY(每天执行),MIN(分钟),SEC(秒)
    示例:
    #AutoRun NPC HOUR 4 @清空天下第一;意为:每4小时清空天下第一
    #AutoRun NPC RUNONDAY 7:00 @早上提示;意为:每天早上七点,执行提示内容
    #AutoRun NPC MIN 2 @秒修装备;意为:每2分钟,修理一次装备
    #AutoRun NPC SEC 1 @光环效果;意为:安全区框定区域的光环效果,每秒执行一次
    RobotManage.txt,机器人任务内容脚本;
    它与AutoRunRobot,协作使用,AutoRunRobot,负责控制执行时间,RobotManage,负责执行内容的书写和存放。@秒修装备,就是写在RobotManage.txt,脚本文本中的。
    完成执行过程,还需要一个动作,写在任务类脚本文本:Qmanage.txt,中;
    故,[@秒修装备],机器人自动执行的完整过程,举一例,如下:
    第一步,AutoRunRobot.txt,文本中写:
    #AutoRun NPC MIN 2 @秒修装备
    第二步,RobotManage.txt,文本中写:
    [@秒修装备]
    #If
    #Act
    GMEXECUTE 开始提问 @秒修装备1
    第三步,Qmanage.txt,文本中写:
    [@秒修装备1]
    #IF
    #ACT
    ACTREPAIRALL
    解析:第一步,机器人每2分钟,执行一次秒修装备;第二步,执行内容:执行GM脚本命令;第三步,执行任务,修理装备。至此,秒修装备完成一次自动执行。因第一步,控制时间为2分钟一次,所以每2分钟会重复一次这个过程。
    解释两个命令:GMEXECUTE,意为,执行GM脚本命令;ACTREPAIRALL,意为,修理装备。可以通过工具,GOM引擎帮助文档.chm,来查看命令功能和格式。接触到脚本语言会经常用到这个帮助文档。其中,GMEXECUTE,命令为帮助文档中未公开的一个命令。
    二、脚本语言写法格式
    这里只简单介绍下,脚本语言的基本写法格式,也是脚本段的主体内容,后续的实例内容中,将根据项目需要实现的功能,在实际解决问题的过程中深入学习这门脚本语言。
    基本格式:
    #IF
    ;检测段,检测条件,定义变量
    #ACT
    ;执行段,检测条件为真,执行此段内容
    #ELSEACT
    ;否则段,检测条件为假,则执行此段内容
    BREAK
    解析:所有脚本功能的实现,都是通过此基本格式来实现,当检测条件#IF为空时,可以不写条件#IF,直接写执行内容#ACT,BREAK,意为一个完整脚本段的结束。
    注:检测段的内容不能写在执行段和否则段,同样的执行段的内容也不能写在检测段,否则一定会出错。某些脚本段的错误会导致小退再登陆黑屏,进不了游戏,所以每写完一个脚本,注意重新加载,运行一次,看M2,是否出现错误提示。
    三、常用变量
    在GOMX引擎帮助文档.chm,中输入:程序变量,查找查看详细说明。
    P0-P99 (私人变量,数字型) 关闭对话框重置为0。
    D0-D99 (私人变量,数字型) 下线不保存.摇筛子变量.
    M0-M99 (私人变量,数字型) 下线不保存.切换地图清空.
    N0-N99 (私人变量,数字型) 下线不保存.小退归0.
    S0-S99 (私人变量,字符型) 下线不保存.小退归0.
    I0-I99 (全局变量,数字型) 下线不保存.小退归0.
    G0-G499 (全局变量,数字型) 可保存。(存放在Mir200/GlobalVal.ini文件里面)
    A0-A499 (全局变量,字符型) 可保存。(存放在Mir200/GlobalVal.ini文件里面)
    U0-U49 (私人变量,数字型) 可保存。(存放在人物数据库Mir.db里面)
    T0-T49 (私人变量,字符型) 可保存。(存放在人物数据库Mir.db里面)
    注意: 自定义变量名称不要以P、D、M、N、S、I、G、A开头
    变量应用场景:如,冲级奖励只能领一取,领取会员后不能再次领取,开狂爆头顶图标与死亡图标的消失,首爆奖励只能触发一次,升官爵,称号等等。
    四、具体实例
    下面以免费领取至尊会员,为例,来具体化功能脚本的应用。
    先来观查下,它在游戏中显示的样子:

    主体脚本段-文本-可视化内容
    再来看下上图显示内容的脚本段:

    #SAY脚本段
    解析:[@main]表示,主体内容;"\"表示换行,两个表示换两行;"<>",是成对出现的,用以实现脚本功能,对于纯文字,也可以不用"<>",直接写文字;"/AUTOCOLOR=253",用以定义文字显示的颜色。
    <领取至尊/@至尊>,此为功能段脚本,用以实现某功能,取决于“[@至尊]”脚本段内容。它不用定义颜色,默认显示黄色。
    <领取至尊/@至尊>,意为,点击“领取至尊”,执行脚本段“@至尊”,会在此文本中,寻找用中括号“[@至尊]”框起来的脚本段。如图

    功能脚本段
    解析:[@至尊],为点击“领取会员”,执行的内容;equal u22 4,意为:定义私人变量:u22=4,也可以理解为:当u22=4,时...。equal,等于。拓展:large,大于;small,小于。
    MESSAGEBOX,是跳出对话框,提示信息,脚本命令;当领取过会员,再次点击,如下图

    对话框提示信息
    与之相似的有:SENDMSG,聊天框内发送,提示信息,脚本命令。可以通过GOM引擎帮助文档,查看具体功能和应用。
    gender man,检测角色性别,男;gender woman,检测角色性别,女。
    MOV U22 4,给变量赋值,意为:将值4赋给U22,相当于U22=4;这里注意与#IF段区别,#IF段是条件检测,#ACT段是执行赋值。
    GIVE 天精岩五转 3,给物品“天精岩五转”,3个;GIVE,给。
    [@至尊]功能段脚本内容,是作为程序内部执行的内容,是不显示给玩家看的。以上实例便是,免费领取至尊会员的显示内容、显示内容的脚本段,以及脚本执行内容的完整展示。
    当然,看似简单的脚本语言,事实上并非这么简单,它的难点在于功能脚本命令数量,常用变量以及自定义变量的应用。但这并不妨碍我们从它的脚本基本执行格式中理解它的执行逻辑,抓住主体,修枝剪叶,记几个主体脚本命令,其他熟悉下即可。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|烽火版本库 ( 鲁ICP备2020035849号-2 )|网站地图

    GMT+8, 2026-5-24 05:17 , Processed in 0.052203 second(s), 26 queries .

    Powered by Discuz! X3.5

    © 2001-2026 Discuz! Team.

    快速回复 返回顶部 返回列表