17173有料社区

    查看: 263|回复: 1

    [互助技巧] 教你如何在服务器中做签到装置

    [复制链接]

    351

    主题

    424

    帖子

    1979

    积分

    实习版主

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    发表于 2017-12-23 08:50:32 | 显示全部楼层 |阅读模式
    教你如何用命令方块做签到装置
    Thousand arrive Machine
    【EGS】

    我看大家总是说我做的都是新手向,这回来一个难一点的的
    大家应该都知道在服务器中可以签到,对吧。这里就给大家介绍一个用原版命令方块做的签到装置,我用的版本是1.12(1.9以上的应该都行),废话不多说了,先开始吧!

    首先来一张效果图(也就这么几个):

    132742rgwxx2dcj3d1jgoz.png

    我们先要创建一些变量:
    • scoreboard objectives add qd dummy

    [color=rgb(51, 102, 153) !important]复制代码

    • scoreboard objectives add time1 dummy

    [color=rgb(51, 102, 153) !important]复制代码

    • scoreboard objectives add time2 dummy

    [color=rgb(51, 102, 153) !important]复制代码

    • scoreboard objectives add jl dummy

    [color=rgb(51, 102, 153) !important]复制代码

    这些变量分别是qd(签到),time1(时间1),time2(时间2),jl(奖励)
    然后给予一本签到书来签到:/give @a minecraft:written_book 1 0 {title:"签到书",author:"遛遛",pages:["[{text:\"========\",color:green,bold:true,clickEvent:{action:\"run_command\",value:\"/scoreboard players set @s qd 1\"},hoverEvent:{action:\"show_text\",value:\"点我签到\"}},{text:签到处,color:red,bold:true},{text:\"========\",color:green,bold:true},{text:\"                        \"},{text:\"    \"},{text:abc,color:red,bold:true,obfuscated:true},{text:点我签到,color:gold,bold:true,obfuscated:false},{text:cba,color:red,bold:true,obfuscated:true},{text:\"                            ========\",color:green,obfuscated:false,bold:true},{text:\"签到处\",color:red,bold:true},{text:\"========\",color:green,bold:true}]"]}
    只要点击书本的"点我签到"就可以签到了
    165037q99m98m6vdqcbclm.png
    不过这条指令有点复杂,我解释一下:
    英语注释用法意思
    written_book/give @a written_book 1 0给所有玩家一本书
    title标题{title:"呵呵"}标题为"呵呵"
    author作者{author:"遛遛"}作者为"遛遛"
    pages页数{pages:["{text:\"Page1\"}","{text:\"Page2\"}"]}在第一页显示"Page1"在第二页显示"Page2"
    text内容{text:\"Here is nothing\"}内容为"Here is nothing"
    color颜色{color:aqua}颜色为蓝色
    bold粗体{bold:true}粗体为真
    obfuscated乱码{obfuscated:false}乱码为假
    clickEvent点击事件{clickEvent:{action:\"run_command\",value:\"/say Hello\"}}点击就会触发指令:"/say Hello"
    hoverEvent触摸事件{hoverEvent:{action:\"show_text\",value:\"Hi\"}}触摸就会显示:"Hi"
    action(run_command)动作{clickEvent:{action:\"run_command\",value:\"/kill @s\"}}点击就会运行指令(value)
    action(show_text)动作{hoverEvent:{action:\"show_text\",value:\"You will die!\"}}触摸就会显示内容(value)
    value  {clickEvent:{action:\"run_command\",value:\"/say No!!!\"}}点击就会运行值("/say No!!!")
    (注:run_command只能用在clickEvent上,show_text也只能用在hoverEvent上)
    有些玩家可能会问:
    为什么在用些地方的"会变成\"?比如:/give @a written_book 1 0 {title:"疑问",author:"Netro777",pages:["{text:\"疑问\"}"]}
    先举个例子,如果我要用tellraw指令打出:
    他们说:"那个男生说:"我考了0分""
    一般人会打成这样:
    tellraw @a [{"text":"他们说:"那个男生说:"我考了0分"""}]
    其实是错的,是这样:
    tellraw @a [{"text":"他们说:\"那个男生说:\"我考了0分\"\""}]
    加了"\",就让符号"区分了关系,指令的符号"和句子里的符号"会让电脑混淆了关系,加了"\",就让电脑知道哪个是指令里的符号",哪个是句子里的符号的"
    跟这个书本指令一样,如果在两个符号"之中的符号"没有加符号\的话也会让电脑出错
    不好意思,有点扯远了
    接下来是循环部分:
    162310v2fcf4u04jfcujsu.png
    额额,好像拍到了什么不该拍的东西了以下指令分别是从下往上每个命令方块的指令(第5,6个为条件制约):注意:第五个和第六个指令方块为条件制约
    第一个为保持开启的RCB
    其余的都为保持开启的CCB
    1~6指令为签到成功并重置
    7~9指令为没按时签到并重置
    10~12指令为计算时间
    13~14为奖励部分(可以自己设定)
    • /tellraw @a[score_qd_min=1,score_time1=0] [{"text":"恭喜您!","color":"yellow","bold":"true"},{"text":"签到成功!","color":"aqua","bold":"true"}]
    • /tellraw @a[score_qd_min=1,score_time1=0] [{"text":"以后要","color":"dark_aqua","bold":"true"},{"text":"继续签到哟!","color":"gold","bold":"true"}]

    [color=rgb(51, 102, 153) !important]复制代码

    这里是用来提醒玩家他们已经签到成功了(上面)
    • scoreboard players set @a[score_qd_min=1,score_time1=0] jl 1

    [color=rgb(51, 102, 153) !important]复制代码

    这里将目标jl(奖励)设成1(上面)
    • scoreboard players set @a[score_qd_min=1] time2 0
    • scoreboard players set @a[score_qd_min=1] time1 86400
    • scoreboard players set @a[score_qd_min=1] qd 0

    [color=rgb(51, 102, 153) !important]复制代码


    这里将时间,签到分数重置(上面,这里搞错了,这三条指令要放到最后面)
    • /tellraw @a[score_qd_min=1,score_time1_min=1] [{"text":"您现在还不能签到哟","color":"red","bold":"true"}]
    • /tellraw @a[score_qd_min=1,score_time1_min=1] [{"text":"您还需要","color":"red","bold":"true"},{"score":{"name":"*","objective":"time1"},"color":"gold","bold":"true"},{"text":"秒才能签到哟","color":"red","bold":"true"}]

    [color=rgb(51, 102, 153) !important]复制代码

    这里提醒玩家还需要多少时间才能签到(上面)
    • scoreboard players set @a[score_qd_min=1,score_time1_min=1] qd 0

    [color=rgb(51, 102, 153) !important]复制代码

    这里将玩家的签到分数设成0(上面)
    • scoreboard players add @a time2 1
    • scoreboard players remove @a[score_time2_min=20,score_time1_min=1] time1 1
    • scoreboard players set @a[score_time2_min=20] time2 0

    [color=rgb(51, 102, 153) !important]复制代码

    这里是计算时间的(上面),命令方块一直给time2加一分,所以time2的分数到了20,也就是1秒(每一刻游戏刻命令方块都在运作,20游戏刻=1秒,所以过了20游戏刻,就相当于加了20分),当time2的分数到达20(一秒)时,就给time1减1分并把time2重新设成0,这样就形成了一个循环。一开始如果签到成功时就把time1设成86400(因为这是用秒作单位,所以24x60x60),每一秒减一分,当分数到了0就不减(因为score_time1_min=1,就代表当分数大于等于1时就减1,到了0就小于1,也就不减了)
    • /tellraw @a[score_jl_min=1] [{"text":"奖励:","color":"yellow","bold":"true"},{"text":"获得15胜点","color":"aqua","bold":"true"}]
    • scoreboard players set @a[score_jl_min=1] jl 0


    [color=rgb(51, 102, 153) !important]复制代码

    这里告诉玩家奖励(上面),奖励可以自己设置,不过最后的scoreboard players set @a[score_jl_min=1] jl 0要加上,重置嘛
    注意:循环指令的方向是从第一个到最后一个
    签到不成功和签到成功的效果:
    164316octnrqi5hcw710q3.png 164323lqxcqbq489uaz48h.png
    之前没有考虑到多人的特性,现在改了改,应该没问题了

    回复

    使用道具 举报

    头像被屏蔽

    0

    主题

    90

    帖子

    194

    积分

    禁止发言

    发表于 2017-12-23 11:52:58 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复

    使用道具 举报

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

    本版积分规则

    点击这里给我发消息 点击链接加入【17173社区玩家群1】