本帖最后由 MsYqgzt 于 2016-4-16 18:29 编辑
点击对应标题跳转页码
相关链接:【TCP|chengzi_SC】1.8多人小游戏 Vampre Z-吸血鬼大战
大家好,今天来讲解一下吸血鬼大战的运行原理
1、计分板系统&游戏机制
增加的计分板有:死亡数、杀死生物数、幸存者和吸血鬼两个队伍、以及一个VampireZ 主计分板、还有附加一些其他的变量(人数判定、回合切换等)、商店系统必要的一些变量:shop、money和blood
复制代码复制代码复制代码
队伍:
复制代码复制代码
商店计分板:
复制代码复制代码复制代码
在主计分板加入一系列假名,实现这样的效果

根据游戏规则,幸存者每杀死一个吸血鬼或僵尸,都会有金钱加成,吸血鬼同理,幸存者死亡变为吸血鬼

系统为一个分支脉冲

金钱奖励的系统为右侧的黄色和绿色羊毛处
黄色羊毛(幸存者)
复制代码不断探测是否有杀敌数为1的幸存者
如果有,按顺序执行以下:
复制代码将钱数加8
复制代码将杀敌数减1
吸血鬼部分同理
只是多加一个复制代码
杀死一个玩家获得短时间生命回复
金钱数如何体现呢,用的是穷举法
大约有600+穷举,用三秒一循环脉冲触发
幸存者的金钱显示
复制代码
吸血鬼的金钱显示
复制代码
简单粗暴,以此类推。
下一页为商店系统
相关链接:【TCP|chengzi_SC】1.8多人小游戏 Vampre Z-吸血鬼大战
大家好,今天来讲解一下吸血鬼大战的运行原理
1、计分板系统&游戏机制
增加的计分板有:死亡数、杀死生物数、幸存者和吸血鬼两个队伍、以及一个VampireZ 主计分板、还有附加一些其他的变量(人数判定、回合切换等)、商店系统必要的一些变量:shop、money和blood
队伍:
商店计分板:
在主计分板加入一系列假名,实现这样的效果

根据游戏规则,幸存者每杀死一个吸血鬼或僵尸,都会有金钱加成,吸血鬼同理,幸存者死亡变为吸血鬼

系统为一个分支脉冲

金钱奖励的系统为右侧的黄色和绿色羊毛处
黄色羊毛(幸存者)
不断探测是否有杀敌数为1的幸存者
如果有,按顺序执行以下:
将钱数加8
将杀敌数减1
吸血鬼部分同理
只是多加一个
杀死一个玩家获得短时间生命回复
金钱数如何体现呢,用的是穷举法
大约有600+穷举,用三秒一循环脉冲触发
幸存者的金钱显示
吸血鬼的金钱显示
简单粗暴,以此类推。
下一页为商店系统
2、商店系统
商店的物品复杂多样,如何做到没有偏差地交易呢
其实,书本的点击事件就可以极大地减小bug

此为商店系统,用高频控制

可以这么理解,每一个商品我们都给他一个独特的标号,就像教室排座号一样,将序号存储在关联玩家的shop计分板中
书本中的点击事件,只要将选择器写成 @p 将全部判定为持有此书本者
举书本中的例子,假设我拥有130金钱,要买一把【圣光之剑】,金钱足够,因为是第6个商品,所以标号为6.
,点击购买后,书本自触发一条指令
将购买的玩家shop变量设置为6
这时系统高频输出,类似送快递的流程:探测到shop变量为6的幸存者
将物品送货上门
货到付款
清除数据
一共有30+物品,也是穷举的一部分。
下一页为QTE系统讲解
3、QTE系统
顺带送上QTE效果图(教程关卡)

系统分为教程的和游戏中的,原理相同,以教程关为例子


创建一个计分板
QTE触发前,设置变量为1
然后进入QTE系统(重点)
将标题渐变设置为0
按顺序触发:
一下每个指令接中继器来控制延迟
。
。
。
直到
但是如何判定呢,重点在每个标题指令触发的同时,附上/setblock指令放置红石块,再让放置的红石块瞬间变为石头,坐出类似高频的触发效果

红石块边上放上探测指令
将QTE成功的玩家变量归0
随之可以惩罚变量为1 的玩家。
====================END======================
点击对应标题跳转页码
相关链接:【TCP|chengzi_SC】1.8多人小游戏 Vampre Z-吸血鬼大战
大家好,今天来讲解一下吸血鬼大战的运行原理
增加的计分板有:死亡数、杀死生物数、幸存者和吸血鬼两个队伍、以及一个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"}}
简单粗暴,以此类推。
下一页为商店系统
2021.12 数据,可能有更多内容
点击对应标题跳转页码相关链接:【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
杀死一个玩家获得短时间生命回复
金钱数如何体现呢,用的是穷举法

幸存者的金钱显示
代码:
- /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======================
本帖最后由 2362577123 于 2015-10-31 19:25 编辑
顶组长,其实运行原理也不难,相比之下我更好奇QTE所使用的随机器是什么,spreadplayers生物随机器吗?
还是说没有随机器,直接固定每一个技能触发的QTE?
顶组长,其实运行原理也不难,相比之下我更好奇QTE所使用的随机器是什么,spreadplayers生物随机器吗?
还是说没有随机器,直接固定每一个技能触发的QTE?
2362577123 发表于 2015-10-31 19:14
顶组长,其实运行原理也不难,相比之下我更好奇QTE所使用的随机器是什么,spreadplayers生物随机器吗?
还是 ...
技能指向随机玩家,只要在技能系统基础上改造一下就好了:)
商品探测不用探测足够金钱么 岂不是可以刷
QQ382009 发表于 2015-10-31 23:27
商品探测不用探测足够金钱么 岂不是可以刷
仔细看
/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}]}
低于钱数是不会给的
钱数显示600多穷举有必要吗……用一个for循环也可以啊……