点击对应标题跳转页码
相关链接:【TCP|chengzi_SC】1.8多人小游戏 Vampre Z-吸血鬼大战
大家好,今天来讲解一下吸血鬼大战的运行原理
1、计分板系统&游戏机制
增加的计分板有:死亡数、杀死生物数、幸存者和吸血鬼两个队伍、以及一个VampireZ 主计分板、还有附加一些其他的变量(人数判定、回合切换等)、商店系统必要的一些变量:shop、money和blood
- /scoreboard objectives add Vampires dummy ┣ Vampire Z ┫
- /scoreboard objectives add kill totalKillCount kill
- /scoreboard objectives add death deathCount death
队伍:
- /scoreboard teams add survivor
- /scoreboard teams add vampires
商店计分板:
- /scoreboard objectives add shop dummy shop
- /scoreboard objectives add money dummy money
- /scoreboard objectives add blood dummy blood
在主计分板加入一系列假名,实现这样的效果
根据游戏规则,幸存者每杀死一个吸血鬼或僵尸,都会有金钱加成,吸血鬼同理,幸存者死亡变为吸血鬼
系统为一个分支脉冲
金钱奖励的系统为右侧的黄色和绿色羊毛处
黄色羊毛(幸存者)
- /testfor @a[team=survivor,score_kill_min=1]
如果有,按顺序执行以下:
- /scoreboard players add @a[team=people,score_kill_min=1] money 8
- /scoreboard players remove @a[team=people,score_kill_min=1] kill 1
吸血鬼部分同理
只是多加一个
- /effect @a[team=vampires,score_kill_min=1] minecraft:regeneration 2 1 true
杀死一个玩家获得短时间生命回复
金钱数如何体现呢,用的是穷举法
大约有600+穷举,用三秒一循环脉冲触发
幸存者的金钱显示
- /replaceitem entity @a[score_blood=53,score_blood_min=53] slot.hotbar.7 minecraft:redstone 1 0 {ench:[],display:{Name:"53 Blood"}}
吸血鬼的金钱显示
- /replaceitem entity @a[score_blood=32,score_blood_min=32] slot.hotbar.7 minecraft:redstone 1 0 {ench:[],display:{Name:"32 Blood"}}
简单粗暴,以此类推。
下一页为商店系统
2、商店系统
商店的物品复杂多样,如何做到没有偏差地交易呢
其实,书本的点击事件就可以极大地减小bug
此为商店系统,用高频控制
可以这么理解,每一个商品我们都给他一个独特的标号,就像教室排座号一样,将序号存储在关联玩家的shop计分板中
书本中的点击事件,只要将选择器写成 @p 将全部判定为持有此书本者
举书本中的例子,假设我拥有130金钱,要买一把【圣光之剑】,金钱足够,因为是第6个商品,所以标号为6.
,点击购买后,书本自触发一条指令
- /scoreboard players set @p shop 6
将购买的玩家shop变量设置为6
这时系统高频输出,类似送快递的流程:
- /testfor @a[score_shop=6,score_shop_min=6,team=survivor]
- /give @a[score_money_min=130,score_shop=6,score_shop_min=6,team=survivor] minecraft:iron_sword 1 0 {display:{Name:"圣光之剑"},ench:[{id:17,lvl:2}]}
- /scoreboard players remove @a[score_shop=6,score_shop_min=6,score_money_min=130,team=survivor] money 130
- /scoreboard players set @a[score_shop=6,score_shop_min=6,team=survivor] shop 0
一共有30+物品,也是穷举的一部分。
下一页为QTE系统讲解
3、QTE系统
顺带送上QTE效果图(教程关卡)
系统分为教程的和游戏中的,原理相同,以教程关为例子
创建一个计分板
- /scoreboard objectives add test dummy
QTE触发前,设置变量为1
- /scoreboard players set @a test 1
然后进入QTE系统(重点)
- /title @a times 0 10 0
按顺序触发:
- /title @a[score_test=1,score_test_min=1] title {text:"",extra:[{text:"==========",color:blue,bold:true},{text:"▌",color:red,bold:true}]}
- /title @a[score_test=1] subtitle {text:"",extra:[{text:"QTE :持有砂石 !",color:gold,bold:true}]}
一下每个指令接中继器来控制延迟
- /title @a[score_test=1,score_test_min=1] title {text:"",extra:[{text:"=========",color:blue,bold:true},{text:"▌",color:red,bold:true},{text:"=",color:blue,bold:true}]}
- /title @a[score_test=1,score_test_min=1] title {text:"",extra:[{text:"========",color:blue,bold:true},{text:"▌",color:red,bold:true},{text:"==",color:blue,bold:true}]}
- /title @a[score_test=1,score_test_min=1] title {text:"",extra:[{text:"=======",color:blue,bold:true},{text:"▌",color:red,bold:true},{text:"===",color:blue,bold:true}]}
。
。
直到
- /title @a[score_test=1,score_test_min=1] title {text:"",extra:[{text:"",color:blue,bold:true},{text:"▌",color:red,bold:true},{text:"==========",color:blue,bold:true}]}
但是如何判定呢,重点在每个标题指令触发的同时,附上/setblock指令放置红石块,再让放置的红石块瞬间变为石头,坐出类似高频的触发效果
红石块边上放上探测指令
- /scoreboard players set @a[score_test_min=1] test 0 {SelectedItem:{id:"minecraft:sandstone"}}
随之可以惩罚变量为1 的玩家。
====================END======================
[groupid=1009]The Command's Power[/groupid]