用户:
hecos查看:5 回复:6 评论:5 创建时间:2020-07-12T10:06:26
看代码:
function find(arr,obj){//查找某元素在数组里的位置
var i=arr.length;
while(i>=0){
if(arr[i]===obj){
return i;
}
i--;
}
return -1;
}
const tick_time=喵;//每个滴答的时间(毫秒)
var player_name=[];//所有玩家名字都会记录在这个数组里,方便查找
var water_hurt_time=[];//方便记录玩家下一次被水伤害的时间,每个元素的位置都会对应player_name数组里的玩家名字
var in_water=[];//记录玩家是否在水里的状态,值为true或false
world.onPlayerJoin(({entity})=>{
entity.enableDamage=true;//如果不这样设置,后面就不能对玩家造成伤害
player_name.push(entity.player.name);
water_hurt_time.push(1000);
in_water.push(false);
//在某个玩家对应的数组里加入玩家信息
})
world.onFluidEnter(({entity})=>{
in_water[find(player_name,entity.player.name)]=true;//当玩家碰到水,将玩家是否在水中的信息设为true
})
world.onFluidLeave(({entity})=>{
in_water[find(player_name,entity.player.name)]=false;//与上面相反
})
world.onTick(()=>{
world.querySelectorAll('player').forEach((e)=>{
if(in_water[find(player_name,e.player.name)]===true&&water_hurt_time[find(player_name,e.player.name)]<=0){
e.hurt(10);
water_hurt_time[find(player_name,e.player.name)]=1000;
}
})
for(let i=0;i<water_hurt_time.length;i++){//将下一次减血时间不短减少
if(water_hurt_time[i]>0){
water_hurt_time[i]-=tick_time;
}
}
})
world.onPlayerLeave(({entity})=>{//当玩家退出游戏时,将玩家所有信息清空
index=find(player_name,entity.player.name);
player_name.splice(index,1);
water_hurt_time.splice(index,1);
in_water.splice(index,1);
})
下一次分享什么呢?
欢迎在评论区提问哦!