22pk论坛

查看: 1814|回复: 5

[开区图文教程] 传奇一条龙开区技术发布脚本制作教程

[复制链接]
  • TA的每日心情
    慵懒
    2015-11-3 13:52
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    7745

    主题

    8123

    帖子

    74万

    积分

    Rank: 9Rank: 9Rank: 9

    元宝
    589741

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2019-3-24 09:47:11 | 显示全部楼层 |阅读模式
    传奇一条龙开区技术发布脚本制作教程很多人都或多或少的接触过传奇服务器端脚本文件,也很想自己制作一点脚本来试试,但又不敢乱碰生怕改坏一点东西造成不能运行服务器端,其实“脚本语言“(我们暂且称他为一种语言)和C语言等等程序语言比起来那真是不值得一提。看完我给大家写的这篇文章后,你就自己偷着做吧...
    可以说传奇服务器端所有的重点都集中在\mir200\envir\中,这里面记载着所有服务器要在游戏中表现的东西。在游戏中的npc信息也在其中,npcs.txt文件和merchant.txt文件中记载着npc的名称、出现的地图、坐标、范围和形象代码。你要问两个记载的npc有什么不同?为什么不和在一起算了?我来告诉你,npcs.txt中记载的npc是对话型npc,在进入游戏后,不能够使用@reloadnpc刷新信息的npc。而merchant.txt是交易型和任务型npc,可以使用@reloadnpc刷新信息。但我也做过试验,两种npc互换后也可以使用,好像没有太大的限制。
    npcs.txt对应的文件在.\npc_def\文件夹中,merchant.txt对应的文件在.\market_def\文件夹中。你如果要添加npc的时候,要注意npc的文件名,例如你要创建一个超级商人的npc要他出现在比奇省330:330的坐标。首先你要在.\market_def\文件夹中创建一个文本文件命名为“超级商人-0“(这里你可以使用英文,也可以使用中文,但后面的数字必须要是这个npc出现的地图代码!),然后把你写好的脚本粘贴在里面。再打开merchant.txt文件,添加以下信息:
    ;调用的文件 地图 坐标x 坐标y 范围 人物代码 刷新时间
    超级商人 0 330 330 0 5 0
    相信大家可以看懂吧,这里面的空格不要紧,没有规定信息之间必须空几格。人物代码自己换吧,现在的npc有46种模样。
    和脚本的规则一样,这两个文件里面以;开头的行就当作注释部分不做编译。


    本站所有版本 24小时在线购买 金币不够请 点击 金币充值 版本GM亲测无误可直接开区
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2015-11-3 13:52
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    7745

    主题

    8123

    帖子

    74万

    积分

    Rank: 9Rank: 9Rank: 9

    元宝
    589741

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

     楼主| 发表于 2019-3-24 09:47:24 | 显示全部楼层
    很多人都或多或少的接触过传奇服务器端脚本文件,也很想自己制作一点脚本来试试,但又不敢乱碰生怕改坏一点东西造成不能运行服务器端,其实“脚本语言“(我们暂且称他为一种语言)和C语言等等程序语言比起来那真是不值得一提。看完我给大家写的这篇文章后,你就自己偷着做吧...
    可以说传奇服务器端所有的重点都集中在\mir200\envir\中,这里面记载着所有服务器要在游戏中表现的东西。在游戏中的npc信息也在其中,npcs.txt文件和merchant.txt文件中记载着npc的名称、出现的地图、坐标、范围和形象代码。你要问两个记载的npc有什么不同?为什么不和在一起算了?我来告诉你,npcs.txt中记载的npc是对话型npc,在进入游戏后,不能够使用@reloadnpc刷新信息的npc。而merchant.txt是交易型和任务型npc,可以使用@reloadnpc刷新信息。但我也做过试验,两种npc互换后也可以使用,好像没有太大的限制。
    npcs.txt对应的文件在.\npc_def\文件夹中,merchant.txt对应的文件在.\market_def\文件夹中。你如果要添加npc的时候,要注意npc的文件名,例如你要创建一个超级商人的npc要他出现在比奇省330:330的坐标。首先你要在.\market_def\文件夹中创建一个文本文件命名为“超级商人-0“(这里你可以使用英文,也可以使用中文,但后面的数字必须要是这个npc出现的地图代码!),然后把你写好的脚本粘贴在里面。再打开merchant.txt文件,添加以下信息:
    ;调用的文件 地图 坐标x 坐标y 范围 人物代码 刷新时间
    超级商人 0 330 330 0 5 0
    相信大家可以看懂吧,这里面的空格不要紧,没有规定信息之间必须空几格。人物代码自己换吧,现在的npc有46种模样。
    和脚本的规则一样,这两个文件里面以;开头的行就当作注释部分不做编译。
    本站所有版本 24小时在线购买 金币不够请 点击 金币充值 版本GM亲测无误可直接开区
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2015-11-3 13:52
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    7745

    主题

    8123

    帖子

    74万

    积分

    Rank: 9Rank: 9Rank: 9

    元宝
    589741

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

     楼主| 发表于 2019-3-24 09:47:35 | 显示全部楼层
    很多人都或多或少的接触过传奇服务器端脚本文件,也很想自己制作一点脚本来试试,但又不敢乱碰生怕改坏一点东西造成不能运行服务器端,其实“脚本语言“(我们暂且称他为一种语言)和C语言等等程序语言比起来那真是不值得一提。看完我给大家写的这篇文章后,你就自己偷着做吧...
    可以说传奇服务器端所有的重点都集中在\mir200\envir\中,这里面记载着所有服务器要在游戏中表现的东西。在游戏中的npc信息也在其中,npcs.txt文件和merchant.txt文件中记载着npc的名称、出现的地图、坐标、范围和形象代码。你要问两个记载的npc有什么不同?为什么不和在一起算了?我来告诉你,npcs.txt中记载的npc是对话型npc,在进入游戏后,不能够使用@reloadnpc刷新信息的npc。而merchant.txt是交易型和任务型npc,可以使用@reloadnpc刷新信息。但我也做过试验,两种npc互换后也可以使用,好像没有太大的限制。
    npcs.txt对应的文件在.\npc_def\文件夹中,merchant.txt对应的文件在.\market_def\文件夹中。你如果要添加npc的时候,要注意npc的文件名,例如你要创建一个超级商人的npc要他出现在比奇省330:330的坐标。首先你要在.\market_def\文件夹中创建一个文本文件命名为“超级商人-0“(这里你可以使用英文,也可以使用中文,但后面的数字必须要是这个npc出现的地图代码!),然后把你写好的脚本粘贴在里面。再打开merchant.txt文件,添加以下信息:
    ;调用的文件 地图 坐标x 坐标y 范围 人物代码 刷新时间
    超级商人 0 330 330 0 5 0
    相信大家可以看懂吧,这里面的空格不要紧,没有规定信息之间必须空几格。人物代码自己换吧,现在的npc有46种模样。
    和脚本的规则一样,这两个文件里面以;开头的行就当作注释部分不做编译。
    本站所有版本 24小时在线购买 金币不够请 点击 金币充值 版本GM亲测无误可直接开区
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2015-11-3 13:52
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    7745

    主题

    8123

    帖子

    74万

    积分

    Rank: 9Rank: 9Rank: 9

    元宝
    589741

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

     楼主| 发表于 2019-3-24 09:47:45 | 显示全部楼层
    这一节我们来研究一下设置函数的属性概率和问题
    我觉得脚本里面最难的也就是这个啦,其实我也没有真正搞清其中的奥秘,只知道其中的一些使用的方法。
    现在如果想制作脚本最主要的也就是做任务了吧,我看了盛大的命运之刃和制作炼狱的任务,其中都要定义一些函数值,就拿肉店任务来说,check [301] 1如果测试到某人[301]函数的值是1的话,那么#act goto @Q301否则#elseact goto @normal,那么如何定义某人[301]函数呢?用set [301] 1命令。但是现在我还没有弄清楚[]中所能定义的数字到底都有多少个,也不能乱定义数字的值,那样将会打乱原有任务。而且在盛大取消的赌场脚本里面有equal、mov好像也是检查函数定义函数的命令,但是只有在玩骰子的npc里面出现,像是专么测试骰子点数的函数,有待研究。
    还有一种概率命令,那就是random,我们来看一个范例。
    范例:
    ----------------
    [@main]
    #IF
    random 2
    #ACT
    goto @QUEST
    #ELSEACT
    goto @normal



    [@normal]
    你好,欢迎你来自由自在论坛<关 闭/@exit>



    [@quest]
    我们的网址<关 闭/@exit>
    ----------------
    这样一个脚本就牵扯一个概率问题,你在和这个npc对话的时候,看到2种信息的几率各有百分之50,也就是说每次你看到的信息都是随机的其中一个。注意这里面是2选1的时候,random的值就取2。
    在显示文本的时候,还存在一些随服务器或不同玩家而自动变换的信息,这里我们就不得不提起沙巴克城。我们知道,沙巴克的npc总要显示“该城堡的主人是***,我们对***行会的成员提供20%的折扣”那么不可能在每次沙巴克换主人后更改npc脚本,于是就有了这些随服务器变换的文本信息,<$LORD>显示为沙巴克城主的姓名,<$OWNERGUILD>显示为占领沙巴克的行会名称,<$CASTLEGOLD>显示沙巴克城堡的金钱,<$TODAYINCOME>显示为沙巴克今天的收入,<$CASTLEDOORSTATE>沙巴克城门的状态等等...另外还有现实不同玩家信息的命令<$USERNAME>,你手中的兵器<$USERWEAPON>。这些都用于加载在文本信息当中显示。
    本站所有版本 24小时在线购买 金币不够请 点击 金币充值 版本GM亲测无误可直接开区
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2015-11-3 13:52
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    7745

    主题

    8123

    帖子

    74万

    积分

    Rank: 9Rank: 9Rank: 9

    元宝
    589741

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

     楼主| 发表于 2019-3-24 09:47:57 | 显示全部楼层
    这一节我们来介绍交易类型npc
    交易类型的npc于普通npc脚本大同小异,但是文件头部需要定义npc的属性。拿土城武器店npc做例子。
    开头有个%100的字样,在石墓阵武器店的开头是%200,有什么区别呢?原来这是定义这个npc物价的语句。%200就是普通物价的2倍。那么接下来的+5、+6、+43是什么意思呢?这就定义了这个npc只能和你交易武器,也就是说你在铁匠那里不能卖手镯。具体什么数字的组合代表什么npc,我在先前的《脚本语言之不完全公略》一文中有详解。你要是想要npc万能的话,可以在开头把要+的数字都给它+上好了。
    接下来就是脚本正文,和我们前几讲的差不多,但其中用到了一些固定含义的语言,不能当作他用。
    @s_repair 特殊修理
    @buy 购买东西
    @sell 出售东西
    @repair 普通修理
    @makedrug 制作毒药
    @storage 保管物品
    @getback 取回物品
    @exit 关闭窗口
    @upgradenow 升级武器
    @getbackupgnow 取回武器
    交易型npc的结尾会有[goods]段落,这就是npc库存物品的显示栏,下面的写物品有一定的规则:
    ;名称 数量 时间
    木剑 10 10
    八荒 10 10
    凝霜 10 10
    炼狱 10 10
    ;屠龙 10 10
    还是那句话,不想显示的物品前面你就打上";"号。如果你想让武器店里面卖药,不改上面"+数字"的情况下,强行在[goods]里面加强效金创药 10 10 反正我没有试过,刷不刷的出来你自己试喽...
    范例:
    ;武器店,带特修,带仓库
    %100
    +5
    +6
    +43
    ; -------------(这里必须空一行)
    [@main]
    #if
    #act
    hello,<$USERNAME>,欢迎光临自由自在论坛我们将提供给你最优惠的服务。<买/@buy><卖/@sell><修理/@repair><特殊修理/@s_repair><保管/@storage>东西<找回/@getback>东西<关闭/@exit>



    [@buy]
    您想买些什么武器?\ \ <返 回/@Main>




    [@sell]
    给我您要卖的武器.\ \ <返 回/@Main>



    [@repair]
    您要修理武器吗?给我您要修理的武器.\ <返 回/@Main>
    ;物品修理前的对话框



    [~@repair]
    看起来修好了,欢迎下次再来.\ <返 回/@Main>
    ;物品修理后的对话框,注意这里的[~@repair]
    ;特修不需要添加类似对应段落,只在开头有<特殊修理/@s_repair>就可以,其对应段落写在m2server.exe中。
    [@storage]
    需要保管什么东西?\ \ <返 回/@Main>



    [@getback]
    请看目录决定找什么东西。\ \ <返 回/@Main>



    [goods]
    ;名称 数量 时间
    炼狱 10 10
    银蛇 10 10
    魔杖 10 10
    无极棍 10 10
    井中月 10 10
    血饮 10 10
    命运之刃 10 10
    裁决之杖 10 10
    龙纹剑 10 10
    骨玉权杖 10 10
    赤血魔剑 10 10
    嗜魂法杖 10 10
    屠龙 10 10
    超级银蛇 10 10

    本站所有版本 24小时在线购买 金币不够请 点击 金币充值 版本GM亲测无误可直接开区
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2015-11-3 13:52
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    7745

    主题

    8123

    帖子

    74万

    积分

    Rank: 9Rank: 9Rank: 9

    元宝
    589741

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

     楼主| 发表于 2019-3-24 09:48:07 | 显示全部楼层
    谈到交易类型npc脚本,我们不得不提仓库捆东西的脚本,看了才知道如此简单,就是用到了checkitem、take、give这几个命令。先检查你的包裹里面是否有这类物品,有了就拿取它们,给你一样东西。捆金条和现在很多人自己制作的"武器升级"脚本也是这种原理,我看过一些"武器升级"的脚本,她和盛大的武器升级系统相比简直就是小儿科的玩艺,就是你拿一些东西去换另一种东西的脚本。我们来看个范例。
    范例:
    ------------------
    %100
    [@main]
    你好,欢迎光临自由自在论坛,我们会竭诚为您服务。您想<捆/@mbind>东西<关 闭/@exit>



    [@mbind]
    #if
    #say
    你具体想捆什么东西?目前我能捆的就这些啦,捆一次手工费100块。<捆/@ch_bind1>强效金创药<返 回/@main>
    [@ch_bind1]
    #if
    checkitem 强效金创药 6
    #act
    goto @ch_bind1_1
    #elsesay
    你没有带齐东西啊,我没有办法帮你捆。<离 开/@exit>
    [@ch_bind1_1]
    #if
    checkgold 100
    checkitem 强效金创药 6
    #ACT
    take 金币 100
    take 强效金创药 6
    give 超级金创药 1
    #SAY
    已经捆好了... 我的技术不错吧.. 还有要捆的就拿给我吧..
    <继续捆/@mbind> <离 开/@exit>
    #ELSESAY
    你都没有钱捆东西,还捆什么? 快走吧.... <离 开/@exit>



    [@main]
    #if
    check [099] 1
    #say
    <$USERNAME>如果你刚才已经下过线了,\那请到
    监狱长那里重新登记吧!\要不你是出不去的!
    <好的/@cxsz> 我喜欢<呆在这里/@exit> <我
    没有下过线/@exit>
    #elseact
    goto @cd
    [@cd]
    <$USERNAME>你是来看望你朋友的吗?你要回去
    了?<回土城/@yes> <再等会吧/@exit>
    [@cxsz]
    #act
    set [099] 0
    mapmove 0128
    break
    [@yes]
    #act
    mapmove 3 320 320
    break
    监狱长-0128.txt内容如下:
    [@main]
    #if
    check [099] 0
    #say
    <$USERNAME>你将被重新送往监狱!\时间将重新开
    始计算!谁叫你中途下线的呀,活该!
    <好的/@cxsz> 我喜欢<呆在这里/@exit>
    [@cxsz]
    #act
    set [099] 1
    timerecall 120
    mapmove 0162
    break
    #elseact
    goto @cd
    [@cd]
    <$USERNAME>希望下次不要再见到你了哦<回土城/@bye> 我还想<再呆会儿/@exit>
    [@bye]
    #act
    set [099] 0
    mapmove 3 320 320
    break
    再在Npcs.txt里加入两行:
    监狱长 0 0128 3 5 0 8
    地牢看管员 0 0162 6 15 0 15
    本站所有版本 24小时在线购买 金币不够请 点击 金币充值 版本GM亲测无误可直接开区
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    GM基地开传奇一条龙服务及商业服务端下载

    All rights reserved.www.22pk.com 版权所有 网站分类 网站地图

    22pk论坛打造行业第一传奇版本论坛,所有商业版本均免费开放下载,力争做行业最大的教程及版本发布基地

    © 2001-2015 爱上gm论坛

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