请选择 进入手机版 | 继续访问电脑版

传奇服务端

 找回密码
 立即注册
六六论坛
查看: 168|回复: 4

[传奇教程] 传奇系列教程第083课: 装备合成和变量教程

[复制链接]
  • TA的每日心情
    奋斗
    前天 09:07
  • 签到天数: 247 天

    [LV.8]以坛为家I

    5063

    主题

    5841

    帖子

    14万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    147746
    发表于 2019-4-13 08:47:09 | 显示全部楼层 |阅读模式
    现金奖励计划

    这一节课教大家写合成脚本 个人变量和 全局变脸的运用!


    大家有什么不懂的或者是有更好的建议可以加我QQ:800856856


    D:\mirserver\Mir200\Envir\MonUseItems    人形怪数据库
    D:\MirServer\Mir200\Envir\AdminList.txt  GM名单数据库
    D:\MirServer\Mir200\Command.ini          GM命令数据库
    D:\MirServer\Mir200\Notice               传奇公告数据库
    D:\MirServer\Mir200\GuildBase            行会文件数据库
    D:\MirServer\DBServer\FDB                任务数据库
    D:\MirServer\LoginSrv\IDDB               ID数据库
    D:\MirServer\Mir200\!Setup.txt           修改经验库
    D:\MirServer\Mir200\Envir\MonGen.txt     刷怪数据库
    D:\Mirserver\Mir200\Envir\MonItems       爆率数据库
    D:\mirserver\Mir200\Envir\market_def\Qfunction-0.txt   功能脚本,触发脚本
    D:\mirserver\Mir200\Envir\MapInfo.txt    地图数据库
    D:\Mirserver\Mir200\Envir\MerChant.TXT  加NPC路径
    D:\MirServer\Mir200\Envir\market_def    NPC脚本
    D:\mirserver\Mir200\Envir\LevelOrder    传奇排行版数据
    D:\MirServer\Mir200\Envir\StartPoint.txt  传奇地图复活点
    D:\mirserver\Mir200\Envir\MiniMap.txt    传奇小地图配置
    D:\Mirserver\Mir200\Envir\MapQuest_def   地图加经验脚本
    D:\MirServer\Mir200\Envir\Boxs           开箱子数据
    D:\MirServer\Mir200\Envir\QuestDiary    登陆设置  新手背包物品 等
    D:\Mirserver\Mir200\Envir\HintItemList.txt   LEG物品掉落提示文件
    D:\mirserver\Mir200\Envir\QuestDiary   关联数据库
    D:\MirServer\LoginSrv\!addrtable.txt     多线路添加
    D:\Mirserver\Mir200\Envir\UserCmd.txt    自定义命令 对应的脚本是QFunction-0.txt
    D:\Mirserver\Mir200\Envir\MapQuest_def\QManage.txt   登录脚本
    D:\Mirserver \Mir200\Envir\SuiteItemsList.txt    LEG装备属性
    D:\mirserver\Mir200\Envir\StartPoint.txt      安全区光环



    示范脚本

    [@main]
    两把裁决之杖可以合成一把屠龙。\
    你是否要合成呢?\ \
    <我要合成/@合成>\


    [@合成]
    #if
    checkitem 裁决之杖 2
    #act
    take 裁决之杖  2
    give  屠龙  1
    SENDMSG 0  玩家:<$USERNAME>,在传奇帮处合成了[屠龙]一件!
    break
    #elseact
    messagebox 你没有两把裁决之杖,不能合成屠龙。











    dayofweek sun      星期天
    dayofweek mon      星期一
    dayofweek tue      星期二
    dayofweek wed      星期三
    dayofweek thu      星期四
    dayofweek fri      星期五
    dayofweek sat      星期六

    变量解析
    一.标识

    [001]-[499](各引擎不同标识的上限值不能。正常的是499个),这不是变量,这是标识
    标识的初始值是关闭的,它不会因为人物下线或服务器重启而重置
    相关命令格式:
    Check [001] 0 的意思是检测你的标识[001]是否关闭
    SET [001] 1 的意思是设置你的标识[001]为开的状态

    1.关于reset命令的详解:
    reset [XXX] 7 意思是将从XXX开始的7个变量回复到原始值0
    比如:reset [100] 7 就是把100 101 102 103 104 105 106 107这7个变量赋值为0。
    它等同与:set [100] 0
    set [101] 0
    set [102] 0
    set [103] 0
    set [104] 0
    set [105] 0
    set [106] 0

    二.变量

    P0-P99 (私人变量,数字型) 关闭对话框重置为0。
    D0-D99 (私人变量,数字型) 不可保存。
    M0-M99 (私人变量,数字型) 不可保存。
    N0-N99 (私人变量,数字型) 不可保存。
    S0-S99 (私人变量,字符型) 不可保存。
    I0-I99 (全局变量,数字型) 不可保存,服务器重启自动重置为0。
    G0-G99 (全局变量,数字型) 可保存。
    A0-A99 (全局变量,字符型) 可保存。

    变量与数字之间的常用格式:

    small G88 5 ;检测变量G88,是否小于5
    large G88 5 ;检测变量G88,是否大于5
    equal G88 5 ;检测变量G88,是否等于5
    mov G88 5 ;设置G88=5
    INC G88 5 ;设置变量G88=G88+5
    DEC G88 5 ;设置变量G88=G88-5   减少值,DEC  1 就是减1
    MUL G88 5 ;设置变量G88=G88*5
    DIV G88 5 ;设置变量G88=G88/5
    PERCENT G88 5 ;设置变量G88=G88/5*100%

    变量与变量之间的常用格式:

    small M88 <$STR(G88)> ;检测私人变量M88,是否小于全局变量G88
    large M88 <$STR(G88)> ;检测私人变量M88,是否大于全局变量G88
    EQUAL M88 <$STR(G88)> ;检测私人变量M88,是否等于全局变量G88
    mov G88 <$STR(M88)> ;设置全局变量G88=M88
    inc G88 <$STR(M88)> ;设置全局变量G88=G88+M88
    DEC G88 <$STR(M88)> ;设置全局变量G88=G88-M88
    MUL M88 $STR(M89) ;设置私人变量M88=M88*M89
    DIV M88 $STR(M89) ;设置私人变量M88=M88/M89
    PERCENT M88 $STR(M89) ;设置私人变量M88=M88/M89*100%

    Small、Large、Equal、mov、INC、DEC、MUL、DIV、PERCENT 支持第3参数,例:
    #IF
    LARGE N1 <$STR(P0)> <$STR(M5)> //检测表达式为: N1 > ( $STR(P0) * $STR(M5) ) ,即检测N1是否大于( $STR(P0) 乘以 $STR(M5) )
    用法类似:GameGold - <$STR(P0)> <$STR(M5)>

    其他变量命令:
    1.关于SUM命令的详解:
    首先有MOV (变量X) 0 ;(变量X)清0
    sum (变量A) (变量B) ;X=A+B
    sum (变量C) ;X=X+C
    2.关于movr命令的详解:
    movr (变量) (数值) ;随机把指定数值以下的数(正数)给变量
    3.DEC特殊用法
    支持A,S变量的DEC操作,格式:DEC A0 X Y
    其中X,Y表示位置,操作的结果:删除A0字符串中从X开始到Y结束之间的字符
    以下操作去掉“ABCDEFGHIJK”
    MOV S0 屠龙ABCDEFGHIJK刀
    DEC S0 5 15

    三.自定义变量
    注意: 自定义变量不要以P、G、M、I、D、N、S、A开头

    说明

    数据类型

    Integer 整型

    String 字符串

    变量类型

    HUMAN 个人变量

    GUILD 行会变量

    GLOBAL 公共变量

    自定义变量与数字之间的常用格式:

    CHECKVAR HUMAN 自定义变量 > 5 ;检测[自定义变量]是否大于5
    CHECKVAR HUMAN 自定义变量 = 5 ;检测[自定义变量]是否等于5
    CHECKVAR HUMAN 自定义变量 < 5 ;检测[自定义变量]是否大于5
    CALCVAR HUMAN 自定义变量 = 5 ;设置[自定义变量]=5
    CALCVAR HUMAN 自定义变量 + 5 ;设置[自定义变量]=[自定义变量]+5
    CALCVAR HUMAN 自定义变量 - 5 ;设置[自定义变量]=[自定义变量]-5

    自定义变量与变量之间的常用格式:

    MOV M88 <$HUMAN(自定义变量)> ;设置变量M88=[自定义变量]
    CALCVAR HUMAN 自定义变量 = <$STR(M88)> ;设置[自定义变量]=变量M88
    CALCVAR HUMAN 自定义变量 + <$STR(M88)> ;设置[自定义变量]=[自定义变量]+变量M88
    CALCVAR HUMAN 自定义变量 - <$STR(M88)> ;设置[自定义变量]=[自定义变量]-变量M88







    个人变量

    公有和私有变量

    自定义变量


    G0-G99 全局变量(数字型) 可保存

    A0-A99 全局变量(字符型) 可保存

    M0-M99 私人变量(数字型) 不可保存

    I0-I99 全局变量(数字型) 不可保存

    D0-D9 私人变量(数字型) 不可保存

    N0-N99 私人变量(数字型) 不可保存

    S0-S99 私人变量(字符型) 不可保存

    P0-P9 私人变量(数字型) 不可保存


    reset [x]  1   将X开始的连续1个变量状态设置为0    个人
    reset G11  2  将g11开始的连续2个变量状态设置为0   全局

    check (变量) (数值) 检测变量是否等于某数值
    set   (变量) (数值) 给予指定变量一个数值
    inc   (变量) (数值) 加指定数值到变量
    small (变量) (数值) 检测变量是不是小于指定数值
    large (变量) (数值) 检测变量是不是大于指定数值
    equal (变量) (数值) 检测变量是不是等于指定数值



    <$STR(x)> 显示当前变量的数值 X等于变量的数值



    check [123]   0      检测个人变量   123  是不是等于零

    set   [123]   1      给予个人变量    123   + 1


    以下脚本展示。。。。

    [@main]
    每人领取一次金条\
    <领取/@lq>  <离开/@exit>\

    [@lq]
    #if
    check [123]  0    -------检测123变量值是不是0       变量值000-499可自由选择,不能跟其它脚本变量值相同。
    #act
    give 金条
    set [123]  1    -----------增加123变量值1
    #ELSESAY        ----------条件不满足就执行以下语句。
    对不起,你已经领取过了。




    升级奖励展示
    [@main]
    升级10级赠送1个金条,10个名额,已经领取【<$STR(G11)>】个名额。\
    升级20级赠送1个金砖,10个名额,已经领取【<$STR(G12)>】个名额。\

    <领取10级奖励/@10级>  <领取20级奖励/@20级>\


    [@10级]
    #if
    CHECKLEVELEX > 9    -----检测等级超过9级
    small G11  10      ------检测G11变量值是不是小于10  10代表可领取数  G0-G99可自由选择,不要和其它变量值相同
    check [122]  0     -----检测个人变量122 是不是0  变量值000-499可自由选择,不能跟其它脚本变量值相同。
    #act
    give 金条  
    inc  G11          ----增加全局G11变量值  增加1 ,也可以 inc  G11   2 ,就是加2,没写2就是默认加1点
    set [122]  1     -----增加个人122变量值 +1  (那么领取过的人就加1,如果再次领取就不能满足check [122]  0)了
    break
    #elseact
    messagebox 你未达到要求,或者名额已满。
    close


    解释如上:


    [@20级]
    #if
    CHECKLEVELEX > 19
    small G12  10      
    check [124]  0
    #act
    give 金条  
    inc  G12
    set [124]  1
    break
    #elseact
    messagebox 你未达到要求,或者名额已满。
    close









    1、首先要声明变量

    2、读取变量

    3  对变量进行编辑 可以 加 减 等等等....

    4、保存变量



    公有    GLOBAL

    私有    HUMAN


    Integer   数字型

    String    字符型


    1.声明变量


    VAR Integer 公有/私有 变量名称 数字型

    VAR String 公有/私有 变量名称 字符型

    2.读取变量


    LOADVAR 公有/私有 变量名称 ..\QuestDiary\某某目录\某某.txt


    3.修改变量

    CALCVAR 公有/私有 变量名称 + - * / =      脚本命令CALCVAR支持对变量进行+ - * / =五种操作


    4、保存变量

    SAVEVAR 公有/私有 变量名称 ..\QuestDiary\某某目录\某某.txt


    检测变量

    CHECKVAR 公有/私有 变量名称 > < =     脚本命令CHECKVAR支持对变量进行 > < = 三种操作


    查看变量

    <$公有/私有(变量名称)>



















    示例
    [@main]
    \ \
    在我这里每天可以领取一根金条\
    但不能重复领取,如果你连续领取一个礼拜的金条,\
    礼拜天便能领取一个金砖。\
    <星期一金条/@星期一金条> <星期二金条/@星期二金条> <星期三金条/@星期三金条> <星期四金条/@星期四金条>\
    <星期五金条/@星期五金条> <星期六金条/@星期六金条> <星期天金条/@星期天金条> <每周领金砖/@每周领金砖>

    [@星期一金条]
    #if
    dayofweek mon
    check [601] 0
    #act
    give 金条 1
    set [601] 1
    break
    #elseact
    messagebox 没到星期一或你已经领取了星期一的奖励。
    [@星期二金条]
    #if
    dayofweek tue
    check [602] 0
    #act
    give 金条 1
    set [602] 1
    break
    #elseact
    messagebox 没到星期二或你已经领取了星期二的奖励。
    [@星期三金条]
    #if
    dayofweek wed
    check [603] 0
    #act
    give 金条 1
    set [603] 1
    break
    #elseact
    messagebox 没到星期三或你已经领取了星期三的奖励。
    [@星期四金条]
    #if
    dayofweek thu
    check [604] 0
    #act
    give 金条 1
    set [604] 1
    break
    #elseact
    messagebox 没到星期四或你已经领取了星期四的奖励。
    [@星期五金条]
    #if
    dayofweek fri
    check [605] 0
    #act
    give 金条 1
    set [605] 1
    break
    #elseact
    messagebox 没到星期五或你已经领取了星期五的奖励。
    [@星期六金条]
    #if
    dayofweek sat
    check [606] 0
    #act
    give 金条 1
    set [606] 1
    break
    #elseact
    messagebox 没到星期六或你已经领取了星期六的奖励。
    [@星期天金条]
    #if
    dayofweek sun
    check [607] 0
    #act
    give 金条 1
    set [607] 1
    break
    #elseact
    messagebox 没到星期天或你已经领取了星期天的奖励。
    [@每周领金砖]
    #if
    dayofweek sun
    check [601] 1
    check [602] 1
    check [603] 1
    check [604] 1
    check [605] 1
    check [606] 1
    check [607] 1
    #act
    reset [601] 7
    give 金砖 1
    break
    #elseact
    messagebox 你已经领取了每周金砖或者你没有连续领取每日的金条。

    看到这里相信大家已经明白了,
    reset [601] 7
    的功能其实就等同于
    set [601] 0
    set [602] 0
    set [603] 0
    set [604] 0
    set [605] 0
    set [606] 0
    set [607] 0

    其实细心的朋友会发现,这个脚本有一个很大的漏洞。
    如果你发现了,可以谈谈你的解决办法。



    领取星期天的奖励,签到满7天的奖励后,清除了之前所有的变量
    等于说星期天的变量也没了,那么也可以领取一次了。

    3.png
    游客,如果您要查看本帖隐藏内容请回复








    上一篇:传奇系列教程第082课: 关于触发脚本详细讲解教程
    下一篇:传奇系列教程第084课: 传奇服务端添加地图教程
    温馨提示:
    1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
    2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
    3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
    4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
    5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
  • TA的每日心情
    开心
    2019-5-15 13:09
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    176

    帖子

    10

    积分

    新手上路

    Rank: 1

    积分
    10
    发表于 2019-4-21 18:39:28 | 显示全部楼层
    啥也不说了,感谢楼主分享哇!
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2019-5-25 09:05
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    0

    主题

    440

    帖子

    6

    积分

    新手上路

    Rank: 1

    积分
    6
    发表于 2019-5-8 16:46:31 | 显示全部楼层
    啥也不说了,感谢楼主分享哇!
    回复

    使用道具 举报

  • TA的每日心情

    2019-5-19 00:28
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    0

    主题

    431

    帖子

    59

    积分

    注册会员

    Rank: 2

    积分
    59
    发表于 2019-5-14 23:46:59 | 显示全部楼层
    正需要,支持楼主大人了!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-5-31 00:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    300

    帖子

    15

    积分

    新手上路

    Rank: 1

    积分
    15
    发表于 2019-5-30 21:37:37 | 显示全部楼层
    啥也不说了,感谢楼主分享哇!
    回复

    使用道具 举报

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

    本版积分规则

    Archiver|手机版|小黑屋|GM66 ( 苏ICP备16007506号-2 )PHP/Linux/Java/Discuz!插件|网站地图

    GMT+8, 2019-6-21 02:50 , Processed in 1.543946 second(s), 44 queries .

    Powered by Gm66.Com X3.4

    © 2001-2018 传奇服务端

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