本帖最后由 咸鱼羊 于 2021-6-26 23:44 编辑
在代码之前,先说些无关紧要事情
这个脚本约是一年前写的,因为闲加了很多的注释(真的很多)
(里面的注释也是年前的)
以及其许多机制的偏旧,虽然有巨大的优化空间,
但因为太长所以不优化了,随他吧~
function tick(e){
if(!(e.player.getTempdata().get("MagicPremission") >= 1)){
//*此处检测是否有魔法权限(是否有记录过数据)
e.player.getTempdata().put("MagicPremission",1);
e.player.getTempdata().put("MagicCount",1);
e.player.getTempdata().put("MagicCD",0);
//*若没有记录过数据,则重置数据
}
var MagicCD = e.player.getTempdata().get("MagicCD")
if(MagicCD > 0){
e.player.getTempdata().put("MagicCD",MagicCD-1);
//*使减少冷却时间
}
var MagicDetime = e.player.getTempdata().get("MagicDetime")
//*使用防御魔法时记录的时间
var nowTime = e.player.world.getTime()
//*现在时间
var MiddleTime = nowTime - MagicDetime
//*间隔时间
if(MiddleTime >= 100 && MagicDetime !== null){
//*若间隔时间达到5s,且使用时的时间有记录时
e.player.getTempdata().remove("MagicDetime")
e.player.getTempdata().remove("MagicDe")
e.player.message("§b护盾消散!")
}
}
function keyPressed(e){
var MagicItemName = "§7[§6魔法§7] §3红石法杖"
//*魔法杖的名字
var TheMaxMagic = 2
//*魔法数量上限
var MagicCount = e.player.getTempdata().get("MagicCount");
//*执行前,玩家的魔法序号(使用的魔法)
var MagicPremission = e.player.getTempdata().get("MagicPremission");
//*玩家的魔法等级(权限)
if(e.key == 16){
//*按下Q
//*↓切换魔法的区块
if(e.player.getMainhandItem().getDisplayName() == MagicItemName){
//*检测物品
if(MagicCount < TheMaxMagic){
//*判断上限
if(MagicCount < MagicPremission){
//*判断玩家魔法等级(MagicPremission)
e.player.getTempdata().put("MagicCount",MagicCount+1);
var MagicCount = e.player.getTempdata().get("MagicCount");
//*更新变量,用于下面的文本提示
e.player.message("§c魔法切换至序号§f"+MagicCount);
}else{
//*大于等级的序号归1
e.player.getTempdata().put("MagicCount",1);
var MagicCount = e.player.getTempdata().get("MagicCount");
e.player.message("§c魔法切换至序号§f"+MagicCount);
}
}else{
//*大于上限的序号归1
e.player.getTempdata().put("MagicCount",1);
var MagicCount = e.player.getTempdata().get("MagicCount");
e.player.message("§c魔法切换至序号§f"+MagicCount);
}
}
}
}
function interact(e){
var MagicItemName = "§7[§6魔法§7] §3红石法杖"
//*魔法杖名字
var SecondMagicKnowItemName = "§7[§6魔法典册§7] §b魔能护盾"
//*第二级魔法获取物品
var power = e.player.getExpLevel()
//*与伤害公式等相关
var target = e.player.getLastAttacked()
//*用于锁定目标
var MagicCount = e.player.getTempdata().get("MagicCount");
var MagicPremission = e.player.getTempdata().get("MagicPremission");
var MagicCD = e.player.getTempdata().get("MagicCD")
if(e.player.getMainhandItem() !== null){
if(e.player.getMainhandItem().getDisplayName() == MagicItemName){
//*判断主手
if(MagicCD <= 0){
if(power >= 1){
//*判断经验等级不小于1
//*↓锁定敌人魔法区块
if(target !== null){
var x = target.getX()
var y = target.getY()
var z = target.getZ()
//*获取锁定目标的坐标
if(MagicCount == 1){
//*魔法序号1
var att = 20 * power
//*伤害值的公式
target.getWorld().explode(x,y,z,1,false,false)
target.getWorld().spawnParticle("flame",x,y,z,0,0,0,1,300)
e.player.getTempdata().put("MagicCD",6)
target.setHealth(target.getHealth() - att)
e.player.message("§e§lExplosion!")
}
}else{
if(MagicCount !== 2){
e.player.message("§6你没有锁定的目标")
}
}
//*↓无锁定魔法区块
if(MagicCount == 2){
//*减伤部分请自行实现
var x = e.player.getX()
var y = e.player.getY()
var z = e.player.getZ()
var De = 20 * power
//*防御公式
e.player.getWorld().spawnParticle("splash",x,y,z,0,0,0,1,600)
e.player.getTempdata().put("MagicDe",De)
e.player.getTempdata().put("MagicCD",6)
e.player.message("§b§lDefensive!")
e.player.message("§6使用了魔法护盾!当前护盾值§f"+De)
e.player.getTempdata().put("MagicDetime",e.player.world.getTime())
//*记录当前时间,用于护盾消散
}
}else{
e.player.message("§6剩余魔力达不到施法能级!")
}
}else{
e.player.message("§6你消耗了魔力!需要休息!剩余时间§f"+MagicCD/2+"s")
}
}
if(e.player.getMainhandItem().getDisplayName() == SecondMagicKnowItemName){
//*判断物品
if(MagicPremission < 1){
e.player.message("§6你的魔法造诣不够学习这篇典册!")
}else{
if(MagicPremission >=2){
e.player.message("§6你的魔法造诣不需要学习这篇典册!")
}else{
if(power >= 10){
//*当经验等级达到十级时,扣除物品并调设魔法等级
e.player.getMainhandItem().setStackSize(e.player.getMainhandItem().getStackSize()-1)
e.player.getTempdata().put("MagicPremission",2)
e.player.message("§6你成功学习了序号二魔法!")
}else{
e.player.message("§6你的魔力太过弱小!难以阅读这篇典册!")
}
}
}
}
}
}
原创,不作任何限制
不过我想也没有人会闲到用这个低效难用的法杖吧。
|