本帖最后由 3346673454 于 2020-8-19 19:22 编辑 
http://wpa.qq.com/msgrd?v=3&uin=3346673454&site=qq&menu=yes
版本:1.12.2
召唤大法半小时才可以使用一次
60秒后传送失效
有人使用大法的时候其他玩家不能使用
以上两个链接是示范
希望做的能让我看懂
http://wpa.qq.com/msgrd?v=3&uin=3346673454&site=qq&menu=yes
可以不做金币什么的吗?
天佑酱 发表于 2020-8-19 19:38
可以不做金币什么的吗?
可以不用做金币也行
3346673454 发表于 2020-8-20 08:16
可以不用做金币也行
我这里有一个我自己做的更简便的。不是召唤术,不过比召唤术更易使用
更简便的玩家间传送
https://www.mcbbs.net/thread-1106297-1-1.html
(出处: Minecraft(我的世界)中文论坛)
 本帖最后由 天佑酱 于 2020-8-20 11:22 编辑 
一本书就写几个字怪怪的,这里召唤术我用Q键,申请传送我用F键
给我们一个特殊的东西,比如传送卷轴
复制代码
冷却&触发:
先创建一个虚拟型的计分板
再一直给这个计分板加分(循环执行)
复制代码
召唤术:
当计分板数目大于36000(30分钟以上),并且玩家Q键丢出卷轴则开启召唤术(高频执行)
复制代码
60s失效:
因为玩家发动召唤术后,计时半个小时的计分板会清零,那我们检测计分板数目到达1200(60s)不就可以了:(循环执行)
scoreboard players tag @a[score_SMFX122_min=1200,score_SMFX122=1200] remove SMFX123
申请传送至其他玩家:
检测玩家按下换手键(F键):
复制代码
邀请:
先创建一个虚拟的计分板
scoreboard objectives add SMFX125 dummy
再检测玩家按下F键并且触发邀请:(高频)
execute @a[tag=SMFX124] ~ ~ ~ tellraw @a {"text":"","extra":[{"selector":"@a[tag=SMFX124]","color":"yellow"},{"text":"请求传送至你这里","color":"gold"},{"text":"点击接受邀请","color":"green","underlined":true,"clickEvent":{"action":"run_command","value":"/scoreboard players set @s SMFX125 1"}}]}
如果玩家同意了,则把玩家传送过来
tp @a[tag=SMFX124] @a[tag=SMFX125]
并且清除玩家的tag、换掉副手,以免反复横跳
replaceitem entity @a[tag=SMFX125] slot.weapon.mainhand minecraft:paper 1 0 {Tags:["SMFX120"],display:{Name:"§e-= §6§lPortal Scoroll §e=-",Lore:["§7 - Q键发起一个全局召唤术,F键申请传送至其他玩家",]}}
replaceitem entity @a[tag=SMFX125] slot.weapon.offhand air
scoreboard players tag @a[tag=SMFX125] remove SMFX155
这个道具实现起来看似麻烦,实际上都是由一些基础命令拼合的,如果基本看不懂我上面说的,并且你是想学命令,那我建议你从简单的开始学,如果只是想实现,照抄就行,如果你看得懂我说的,部分不明白,欢迎追问。如果是服务器的话我建议直接插件,没必要用命令了。
3346673454 发表于 2020-8-20 08:16
可以不用做金币也行
一本书就写几个字怪怪的,这里召唤术我用Q键,申请传送我用F键
给我们一个特殊的东西,比如传送卷轴
- give @p minecraft:paper 1 0 {Tags:["SMFX120"],display:{Name:"§e-= §6§lPortal Scoroll §e=-",Lore:["§7 - Q键发起一个全局召唤术,F键申请传送至其他玩家",]}}
冷却&触发:
先创建一个虚拟型的计分板
scoreboard objectives add SMFX121 dummy
再一直给这个计分板加分(循环执行)
- scoreboard players add @a SMFX121 1
召唤术:
当计分板数目大于36000(30分钟以上),并且玩家Q键丢出卷轴则开启召唤术(高频执行)
- scoreboard players tag @e[type=item] add SMFX122 {Item:{tag:{Tags:["SMFX120"]}}}
 
- execute @e[type=item,tag=SMFX122] ~ ~ ~ scoreboard players tag @a[r=2] add SMFX123
 
- execute @a[score_SMFX121_min=36000] ~ ~ ~ execute @e[r=2,type=item,tag=SMFX122] ~ ~ ~ scoreboard players set @a[rm=2,score_SMFX122_min=34800] SMFX122 34800
 
- execute @a[score_SMFX121_min=36000] ~ ~ ~ execute @e[r=2,type=item,tag=SMFX122] ~ ~ ~ tellraw @a {"text":"","extra":[{"text":"[**]","color":"red","bold":true},{"selector":"@a[score_SMFX121_min=36000]"},{"text":"开启了召唤术。","color":"blue"},{"text":"\n 点我传送","color":"green","underlined":true,"clickEvent":{"action":"run_command","value":"/tp @s @a[tag=SMFX123]"}}]}
 
- execute @a[score_SMFX121_min=36000] ~ ~ ~ execute @e[r=2,type=item,tag=SMFX122] ~ ~ ~ scoreboard players set @a[score_SMFX121_min=36000] SMFX121 0
 
- execute @a[score_SMFX121_min=0] ~ ~ ~ kill @e[r=2,type=item,tag=SMFX122]
60s失效:
因为玩家发动召唤术后,计时半个小时的计分板会清零,那我们检测计分板数目到达1200(60s)不就可以了:(循环执行)
scoreboard players tag @a[score_SMFX122_min=1200,score_SMFX122=1200] remove SMFX123
申请传送至其他玩家:
检测玩家按下换手键(F键):
- scoreboard players tag @a add SMFX124 {Inventory:[{Slot:-106b,tag:{Tags:["SMFX120"]}}]}
邀请:
先创建一个虚拟的计分板
scoreboard objectives add SMFX125 dummy
再检测玩家按下F键并且触发邀请:(高频)
execute @a[tag=SMFX124] ~ ~ ~ tellraw @a {"text":"","extra":[{"selector":"@a[tag=SMFX124]","color":"yellow"},{"text":"请求传送至你这里","color":"gold"},{"text":"点击接受邀请","color":"green","underlined":true,"clickEvent":{"action":"run_command","value":"/scoreboard players set @s SMFX125 1"}}]}
如果玩家同意了,则把玩家传送过来
tp @a[tag=SMFX124] @a[tag=SMFX125]
并且清除玩家的tag、换掉副手,以免反复横跳
replaceitem entity @a[tag=SMFX125] slot.weapon.mainhand minecraft:paper 1 0 {Tags:["SMFX120"],display:{Name:"§e-= §6§lPortal Scoroll §e=-",Lore:["§7 - Q键发起一个全局召唤术,F键申请传送至其他玩家",]}}
replaceitem entity @a[tag=SMFX125] slot.weapon.offhand air
scoreboard players tag @a[tag=SMFX125] remove SMFX155
这个道具实现起来看似麻烦,实际上都是由一些基础命令拼合的,如果基本看不懂我上面说的,并且你是想学命令,那我建议你从简单的开始学,如果只是想实现,照抄就行,如果你看得懂我说的,部分不明白,欢迎追问。如果是服务器的话我建议直接插件,没必要用命令了。
