本帖最后由 Msure 于 2019-2-1 19:22 编辑
今天给大家带来的是签到系统 一般租赁服里的签到系统都是每天计时(通过每秒20gt)重置一次 但是一般其他游戏里都会有显示连续签到天数之类的 所以这次带来了类似功能的签到系统 如图: 可以显示连续签到天数,并达到一定天数给予额外奖励 若数天不签到,再次签到时会显示未签到天数
原理: (1)重置和校准 和计时重置不同,计时重置会由于卡顿造成时间偏差,还需要手动设置当前时间。 受到素学姐丢人钟的原理启发,使用testforblock来读取现实中的时间。 (执行命令时返回信息前会有一个时间,通过testforblock来检测命令方块的时间是否到达某时间点,再执行命令) (2)连续签到天数和未签到天数 创建了一个day记分板来记录当前天数,每天24点重置时都会给这个记分板分数+1。当玩家签到时,会把当前天数和上次签到时记录的天数相减,通过差值来判断玩家是否每天连续签到。同时: 差值=未签到天数+1 即可得到未签到天数。
两个签到版本: 为了照顾服务器资源,做了两个签到,一个低配版(乞丐版),一个正常版。 低配版没有显示连续签到、未签到天数、给予连续签到奖励的功能,只能每天让玩家签到一次,给予固定的签到奖励。但是命令较少,占用资源少。 正常版功能如开始的展示图所示,所有功能一应俱全。 正常版的连续签到奖励只写了第7天的,需要更多天数的可插入命令方块自己添加(插入位置命令方块内有文字说明)。
指令: - rcb:/scoreboard players enable @a click
- /give @a[score_click_min=1,score_sign=0] diamond 1 0
- /execute @a[score_click_min=1,score_sign=0] ~ ~ ~ scoreboard players operation @p day1 = @p day
- /execute @a[score_click_min=1,score_sign=0] ~ ~ ~ scoreboard players operation @p day1 -= @p day2
- /scoreboard players set @a[score_click_min=1,score_sign=0,score_day1_min=2] day3 0
- /scoreboard players add @a[score_click_min=1,score_sign=0] day3 1
- /scoreboard players remove @a[score_click_min=1,score_sign=0] day1 1
- /execute @a[score_day3=1,score_click_min=1,score_sign=0] ~ ~ ~ tellraw @p {"text":"","extra":[{"text":"签到成功!您之前有 ","color":"gold","bold":true},{"score":{"name":"@p","objective":"day1"},"color":"red","bold":true},{"text":" 天未签到。","color":"gold","bold":true}]}
- /execute @a[score_day3_min=2,score_click_min=1,score_sign=0] ~ ~ ~ tellraw @p {"text":"","extra":[{"text":"签到成功!您已经连续签到 ","color":"gold","bold":true},{"score":{"name":"@p","objective":"day3"},"color":"green","bold":true},{"text":" 天。","color":"gold","bold":true}]}
- /execute @a[score_click_min=1,score_sign_min=1] ~ ~ ~ tellraw @p {"text":"","extra":[{"text":"今天已经签过到了!当前连续签到天数: ","color":"red","bold":true},{"score":{"name":"@p","objective":"day3"},"color":"green","bold":true},{"text":" 天。","color":"red","bold":true}]}
- /give @a[score_click_min=1,score_day3_min=7,score_day3=7,score_sign=0] diamond_block 1 0
- /give @a[score_click_min=1,score_day3_min=15,score_day3=15,score_sign=0] 15天签到奖励,可在此继续插入命令方块自定义连续签到奖励
- /execute @a[score_click_min=1,score_sign=0] ~ ~ ~ scoreboard players operation @p day2 = @p day
- /scoreboard players set @a[score_click_min=1,score_sign=0] sign 1
- /scoreboard players set @a[score_click_min=1] click 0
- /gamemode
- /testforblock ~ ~-1 ~ chain_command_block 1 {LastOutput:"{"extra":[{"color":"red","translate":"commands.generic.usage","with":[{"translate":"commands.gamemode.usage"}]}],"text":"[23:59:58] "}"}
- cond:/scoreboard players set * sign 0
- cond:/setblock ~ ~4 ~ minecraft:redstone_block
- /testforblock ~ ~-4 ~ chain_command_block 1 {LastOutput:"{"extra":[{"color":"red","translate":"commands.generic.usage","with":[{"translate":"commands.gamemode.usage"}]}],"text":"[29:59:59] "}"}
- cond:/setblock ~ ~2 ~ minecraft:air
- icb:/scoreboard players add * day 1
复制代码- /summon falling_block ~ ~1.5 ~ {Time:1,Block:"minecraft:redstone_block",Motion:[0d,-1d,0d],Passengers:[{id:falling_block,Time:1,Block:"minecraft:activator_rail",Passengers:[{id:commandblock_minecart,Command:"blockdata ~ ~-2 ~ {auto:0b,Command:""}"},{id:commandblock_minecart,Command:"/scoreboard objectives add day dummy"},{id:commandblock_minecart,Command:"/scoreboard objectives add day1 dummy"},{id:commandblock_minecart,Command:"/scoreboard objectives add day2 dummy"},{id:commandblock_minecart,Command:"/scoreboard objectives add day3 dummy"},{id:commandblock_minecart,Command:"/scoreboard objectives add sign dummy"},{id:commandblock_minecart,Command:"/scoreboard objectives add click trigger"},{id:commandblock_minecart,Command:"setblock ~2 ~3 ~0 chain_command_block 1 replace {Command:"/scoreboard players tag @a[tag=!sign] add sign",auto:1b}"},{id:commandblock_minecart,Command:"setblock ~2 ~2 ~0 chain_command_block 1 replace {Command:"/scoreboard players add @a[tag=!sign] sign 0",auto:1b}"},{id:commandblock_minecart,Command:"setblock ~2 ~1 ~0 chain_command_block 1 replace {Command:"/scoreboard players add @a[tag=!sign] day3 0",auto:1b}"},{id:commandblock_minecart,Command:"setblock ~2 ~0 ~0 chain_command_block 1 replace {Command:"/scoreboard players add @a[tag=!sign] day2 0",auto:1b}"},{id:commandblock_minecart,Command:"setblock ~2 ~-1 ~0 chain_command_block 1 replace {Command:"/scoreboard players add @a[tag=!sign] day1 0",auto:1b}"},{id:commandblock_minecart,Command:"setblock ~2 ~-2 ~0 repeating_command_block 1 replace {Command:"/scoreboard players set @a[tag=!sign] day 1",auto:1b}"},{id:commandblock_minecart,Command:"setblock ~ ~1 ~ command_block 0 replace {auto:1b,Command:"fill ~ ~ ~ ~ ~-2 ~ air"}"},{id:commandblock_minecart,Command:"kill @e[type=commandblock_minecart,r=1]"}]}]}
复制代码
OOC: 回复后查看原网页及ooc *请在网页论坛浏览*
各位看官给个赞吧!
|