Hello,大家好我是最强灬神话,上一次我讲述了如何用雪球制作单人RPG枪战,但是那种方法是随机判断,还是有一定缺陷的,因此我又研究出了另外一种方法,在多人枪战以及单人枪战均可使用哦。
注意发射出去的雪球,上面有火哦
但是这并不是重点,火球只是画面渲染,并没有加大威力。
不一会就杀了一只僵尸。
终于它们被消灭了。
1.思路分析
我们知道雪球发射是没有威力的,所以我们需要让雪球有威力。
首先我们要了解雪球的NBT标签,很简单
- /entitydata @e[type=Snowball] {}
然后会出现这样一段话:
- [10:24:05] 数据标签未更改:{yTile:-1s,ownerName:"最强灬神话",UUIDLeast:-8738845387748348414L,Motion:[0:0.004025829317039583d,1:-1.5212842662955777d,2:-0.0030549332223299202d,],OnGround:0b,UUIDMost:-120784408820759814L,inGround:0b,shake:0b,Dimension:0,inTile:"",Air:300s,Pos:[0:-292.48389513720934d,1:4.013652273378782d,2:-859.6490612954307d,],PortalCooldown:0,Fire:0s,xTile:-1s,zTile:-1s,FallDistance:0.0f,Rotation:[0:127.192535f,1:-89.80579f,],Invulnerable:0b,}
所以得出结论:雪球的威力并不是0,而是没有威力,我们无法直接改变雪球的威力,因此要从怪物/玩家身上考虑。
首先了解怪物NBT(玩家无法entitydata)
出现这样一段话:
- [10:36:33] 数据标签未更改:{ConversionTime:-1,DropChances:[0:0.085f,1:0.085f,2:0.085f,3:0.085f,4:0.085f,],UUIDLeast:-4641943380614696668L,Attributes:[0:{Name:"generic.maxHealth",Base:20.0d,},1:{Name:"generic.knockbackResistance",Base:0.0d,Modifiers:[0:{Name:"Random spawn bonus",UUIDLeast:-4825598797627943558L,Operation:0,Amount:0.037188375191764766d,UUIDMost:-3321992349518967195L,},],},2:{Name:"generic.movementSpeed",Base:0.23000000417232513d,},3:{Name:"generic.followRange",Base:35.0d,Modifiers:[0:{Name:"Random spawn bonus",UUIDLeast:-7437413352283232182L,Operation:1,Amount:0.006604130929424228d,UUIDMost:-7826899445975594729L,},],},4:{Name:"generic.attackDamage",Base:3.0d,},5:{Name:"zombie.spawnReinforcements",Base:0.056160382254570276d,},],Motion:[0:0.0d,1:-0.0784000015258789d,2:0.0d,],Health:20s,HealF:20.0f,Fire:-1s,Invulnerable:0b,DeathTime:0s,CanBreakDoors:0b,AbsorptionAmount:0.0f,Equipment:[0:{},1:{},2:{},3:{},4:{},],OnGround:1b,HurtTime:0s,UUIDMost:847228973238405126L,HurtByTimestamp:0,Dimension:0,Air:300s,Pos:[0:-292.69999998807907d,1:1.0d,2:-859.6999999880791d,],CanPickUpLoot:0b,PortalCooldown:0,PersistenceRequired:0b,Leashed:0b,FallDistance:0.0f,Rotation:[0:17.772747f,1:0.0f,],}
这个NBT意思是受攻击变红的时间,0s代表最近没有被攻击(引自MinecraftWiki)
所以从这里下手。
- scoreboard objectives add 1 dummy
- scoreboard players add @e[type=Zombie] 1 1 {HurtTime:10s}
- kill @e[type=Zombie,score_1_min=2]
- entitydata @e[type=Snowball] {Fire:20s}
拓展:既然是HurtTime那么如果近距离攻击用手撸的话一样可以,就像L4D2中的主武器逼退一样,如果要实现逼退可以将半径为n的僵尸扣血即可,加大游戏的可玩性,如果不想这样的话可以创建damageTaken变量,用手撸这个变量会加分,这样就可以防止玩家手撸了。
2.多人PVP
用一样的方法,HurtTime是可以探测玩家的,仍然可以实现攻击。用之前讲的方法即可。
最后是title标题:
- 01.title @p title {text:"!",color:yellow,extra:[{text:"最强灬神话警报僵尸群",color:red}]}
- 02.title @p subtitle {text:"!",color:yellow,extra:[{text:"它们来了...",color:red}]}
@贰逼
@End-Enderman
@zwh007
@kongbaiyo
-
2015-02-24_10.05.46.png (225.72 KB, 下载次数: 39)
-
2015-02-24_10.05.50.png (213.54 KB, 下载次数: 39)