占位符 - woshiermuqwq/mythic-chinese GitHub Wiki
也许您想给您的技能组写一个计时器,以取代技能冷却或制作技能持续时间
有很多种方法来制作计时器 占位符(仅限付费版)、记分板、Meta(拓展技能)
记分板做法-> 点我
实体配置:
计时器测试:
Type: Wither_Skeleton
Options:
NoAI: true
Skills:
- setvariable{var=caster.Tick;type=float;value="0"} @self ~onSpawn
- setvariable{var=caster.Tick;type=float;value="<caster.var.Tick> - 0.05"} @self ~onTimer:1
- message{m=<caster.var.Tick>} @EIR{r=16} ~onTimer:1
生成后将自身身上的变量: Tick的值 设为0
每0.05秒将自身身上的变量: Tick的值 -0.05(这样1秒就是-1)
每0.05秒向半径16方块格内的所有实体发送聊天栏信息
信息为 自身身上的变量: Tick1的值
这样, 一个计时器就写好了, 当然, 加值也可以这么写(箭头表变更):
实体配置:
计时器测试:
Type: Wither_Skeleton
Options:
NoAI: true
Skills:
- setvariable{var=caster.Tick;type=float;value="0"} @self ~onSpawn
- setvariable{var=caster.Tick;type=float;value="<caster.var.Tick> - 0.05"} @self ~onTimer:1 -> - skill:加值 @self ~onSpawn
- message{m=<caster.var.Tick>} @EIR{r=16} ~onTimer:1
现在,实体将在 生成后 激活技能组: 加分技能组
当然触发器不一定非得是 ~onSpawn
技能配置:
加值:
Skills:
- setvariable{var=caster.Tick;type=float;value="<caster.var.Tick> - 0.05"}
诶, 这不是只给变量: Tick的值 -0.05么? 别急(箭头表变更):
加值:
Skills:
- setvariable{var=caster.Tick;type=float;value="<caster.var.Tick> - 0.05"} @self -> - - setvariable{var=caster.Tick;type=float;value="<caster.var.Tick> - 0.05";repeat=199;repeatInterval=1} @self
现在,它将在生成后每0.05秒 将为自身身上的变量: Tick的值 -0.05 (因重复间隔为1刻), 共-10(因重复次数为199次)
那如果不用 Repeat 与 RepeatInterval
且使用 ~onTimer:1 来加分,怎么做分数限制呢(箭头表变更):
实体配置:
计时器测试:
Type: Wither_Skeleton
Options:
NoAI: true
Skills:
- setvariable{var=caster.Tick;type=float;value="<caster.var.Tick> - 0.05"} @self ~onTimer:1 -> - skill:加值 @self ~onTimer:1
- message{m=<caster.var.Tick>} @EIR{r=16} ~onTimer:1
每0.05秒 将为自身身上的变量: Tick的值 -0.05
技能配置:
加值:
Conditions:
- variableinrange{var=<caster.Tick>;v=>-10}
Skills:
- modifytargetscore{o=Tick;v=1;a=ADD} @self
因为 '每 0.05秒 激活1次技能组: 加值' , 而此技能组的内容就是 '为自身身上的变量: Tick的值 -0.05'
所以效果仍相当于 '每0.05秒 将为自身身上的变量: Tick的值 -0.05'
这里的 '- variableinrange{var=<caster.Tick>;v=>-10}' 是干什么的呢?
当自身身上的变量: Tick的值大于 -10 时符合条件(默认条件活动为 true 也就是 符合条件后激活)
这样,此变量的值最多只能为-10,也就是-10秒.
原实体配置:
计时器测试:
Type: Wither_Skeleton
Options:
NoAI: true
Skills:
- skill:某技能组 @self ~onDamaged
受伤后 对自己激活技能组: 某技能组
原技能配置:
某技能组:
Cooldown: 10.1
Skills:
- damage{a=10;pi=true}
某技能组的内容为 对技能目标(自身 因为实体配置内的目标选择器为 @self) 造成 10点 伤害,且 无视受伤间隔
此技能组的冷却为 10.1 秒.
现实体配置:
计时器测试:
Type: Wither_Skeleton
Options:
NoAI: true
Skills:
- skill:某技能组 @self ~onDamaged
- setvariable{var=caster.Cooldown;type=float;value="<caster.var.Cooldown> - 0.05"} @self ~onTimer:1
- setvariable{var=caster.Cooldown;type=float;value="0"} @self ~onSpawn
受伤后 对自己激活技能组: 某技能组
每0.05秒 将为自身身上的变量: Cooldown的值 设为 当前变量: Cooldown的值 -0.05
现技能配置(箭头为单行变更):
某技能组:
Cooldown: 10.1 -> Conditions:
- variableinrange{var=<caster.Cooldown>;v=<0}
Skills:
- damage{a=10;pi=true}
- setvariable{var=caster.Cooldown;type=float;value="10.1"}
某技能组的内容为:
对技能目标(自身 因为实体配置内的目标选择器为 @self) 造成 10点 伤害,且 无视受伤间隔
将自身(var的前缀为caster, 也就是施法者)身上的变量: Cooldown 值设为 10.1
某技能组的条件为: 自身身上的变量: Tick的值≤0
当没有激活技能组时, 变量会被减为负数, 但由于是 ≤0 所以仍然符合条件
setvariable的技能目标必须是自身, 所以以防万一还是在后面写上 @self
var的值一定要以caster.开头
这样,激活技能组时会将施法者身上的变量: Cooldown的值设为10.1 施法者每0.05秒将自身身上的变量: Cooldown的值 设为 当前变量: Cooldown的值 -0.05
在 应用计时器1: 替代冷却 的基础上编写
实体配置:
计时器测试:
Type: Wither_Skeleton
Options:
NoAI: true
Skills:
- skill:某技能组 @self ~onDamaged
- setvariable{var=caster.Cooldown;type=float;value="<caster.var.Cooldown> - 0.05"} @self ~onTimer:1
- setvariable{var=caster.Cooldown;type=float;value="0"} @self ~onSpawn
- skill:缩减翻倍 @self ~onTimer:400
现在该实体每20秒将对自己激活技能组: 缩减翻倍
技能组配置(新增):
缩减翻倍:
Skills:
- setvariable{var=caster.Cooldown;type=float;value="<caster.var.Cooldown> - 0.05"} @self
缩减翻倍的内容是,重复99次且重复间隔为0.05秒,将自身身上的变量: Cooldown的值 设为 当前变量: Cooldown的值 -0.05
这样,这个实体在激活技能组: 缩减翻倍 后的 5秒 内,冷却缩减速度为原先的俩倍,因为
技能组: ·- setvariable{var=caster.Cooldown;type=float;value="<caster.var.Cooldown> - 0.05"} @self·
与实体配置:- setvariable{var=caster.Cooldown;type=float;value="<caster.var.Cooldown> - 0.05"} @self ~onTimer:1
相叠加
也就相当于每20秒, 就有5秒是冷却缩减速度翻倍的, 假设实体一直受到伤害, 那么原先
每10秒激活1次技能组:每技能组, 30秒激活3次 现在 每10秒激活1次,但每20秒就有5秒的冷却缩减速度翻倍
所以激活3次某技能组只需要25秒.
实体配置:
计时器测试:
Type: Wither_Skeleton
Options:
NoAI: true
Skills:
- skill:持续性技能 @self ~onDamaged
- setvariable{var=caster.Time;type=float;value="<caster.var.Time> - 0.05"} @self ~onTimer:1
- setvariable{var=caster.Time;type=float;value="0"} @self ~onSpawn
- skill:持续性技能效果 @self ~onTimer:1
受伤后向自身激活技能组: 持续性技能 每0.05秒将自身身上的变量: Cooldown的值 设为 当前变量: Cooldown的值 -0.05 生成后新建一个位于自身身上的变量: Cooldown, 值为0 每0.05秒激活1次技能组: 持续性技能效果
技能组配置:
持续性技能:
Skills:
- setvariable{var=caster.Time;type=float;value="5"} @self ~onSpawn
持续性技能内容: 自身身上的变量: Cooldown的值 设为 5
持续性技能效果:
Conditions:
- variableinrange{var=caster.Time;value=>0}
Skills:
- skill:又套了一层技能效果 @EIR{r=10}
持续性技能效果内容: 对半径10方块格范围内的所有实体激活技能组: 又套了一层技能效果
又套了一层技能效果:
TargetConditions:
- isPlayer true
Skills:
- pull{v=999}
又套了一层技能效果内容: 将@EIR所选择的所有实体 且实体类型为玩家的实体引向自身
讲解下上方个技能组叭..
- 持续性技能在受伤后将自身身上的变量: Cooldown的值 设为 当5
- 持续性技能效果虽每0.05秒激活1次,但由于条件: '- variableinrange{var=caster.Time;value=>0}' 也就是自身身上的变量: Time的值 ≥0
- 由于实体配置内写有功能为 '每0.05秒将自身身上的变量: Cooldown的值 设为 当前变量: Cooldown的值 -0.05
' 的技能行
所以, 持续性技能效果 只会在激活 持续性技能后的5秒内不断激活.
整个技能组的效果就是: 受伤后在5秒内将半径10米内所有玩家引向自身.
当然,用repeat也能做, 改法与 计时器2: 自定义冷却缩减速度 所写的一致