commit
fbc70ba521
@ -639,47 +639,64 @@ core.statusBar.skill.innerHTML = core.getFlag('skillName', '无'); // 使用flag
|
||||
|
||||
### 技能的触发
|
||||
|
||||
我们可以按键触发技能。有关绑定按键请参见[自定义快捷键](#自定义快捷键)。
|
||||
#### 使用道具作为技能
|
||||
|
||||
下面是一个很简单的例子,当勇士按下W后,如果魔力不小于5点则允许开启技能"二倍斩",再次按W则关闭技能。
|
||||
由于手机端按键十分不方便,虚拟键盘不好用,因此强烈推荐**给每个技能设置一个道具图标,在道具栏点击使用!**
|
||||
|
||||
下面是个很简单的例子,要制作一个技能"二倍斩"。
|
||||
|
||||
我们可以设置一个道具,其cls是`constants`(永久道具),ID比如是`skill1`。
|
||||
|
||||
该道具的使用判定`canUseItemEffect`是`true`(表示任意时候都可使用),使用效果`useItemEffect`是:
|
||||
|
||||
``` js
|
||||
case 87: // W
|
||||
if (core.status.heroStop) { // 当前停止状态;这个if需要加,不能在行走过程中触发不然容易出错。
|
||||
if (core.getFlag('skill', 0)==0) { // 判断当前是否已经开了技能
|
||||
if (core.getStatus('mana')>=5) { // 这里要写当前能否开技能的条件判断,比如魔力值至少要多少
|
||||
core.setFlag('skill', 1); // 开技能1
|
||||
core.setFlag('skillName', '二倍斩'); // 设置技能名
|
||||
}
|
||||
else {
|
||||
core.drawTip("魔力不足,无法开技能");
|
||||
}
|
||||
}
|
||||
else { // 关闭技能
|
||||
core.setFlag('skill', 0); // 关闭技能状态
|
||||
core.setFlag('skillName', '无');
|
||||
}
|
||||
core.updateStatusBar(); // 立刻更新状态栏和地图显伤
|
||||
core.status.route.push("key:"+keyCode); // 录像的支持!这句话必须要加,不然录像回放会出错!
|
||||
if (core.getFlag('skill', 0)==0) { // 判断当前是否已经开了技能
|
||||
if (core.getStatus('mana')>=5) { // 这里要写当前能否开技能的条件判断,比如魔力值至少要多少
|
||||
core.setFlag('skill', 1); // 开技能1
|
||||
core.setFlag('skillName', '二倍斩'); // 设置技能名
|
||||
}
|
||||
break;
|
||||
else {
|
||||
core.drawTip("魔力不足,无法开技能");
|
||||
}
|
||||
}
|
||||
else { // 关闭技能
|
||||
core.setFlag('skill', 0); // 关闭技能状态
|
||||
core.setFlag('skillName', '无');
|
||||
}
|
||||
```
|
||||
|
||||
简单的说,用flag:skill判断当前开启的技能,flag:skillName表示该技能名。(可在状态栏显示)
|
||||
|
||||
在勇士处于停止的条件下,按下W键时,判断当前是否开启了技能,如果开启则关闭,没开则再判断是否允许开启(魔力值够不够等)。
|
||||
该(技能)道具任何时候都可被使用;使用时,判断当前是否开启了技能,如果开启则关闭,没开则再判断是否允许开启(魔力值够不够等)。
|
||||
|
||||
`core.status.route.push("key:"+keyCode);` 这句话是对录像的支持,一定要加(这样录像播放时也会模拟该按键)。
|
||||
#### 快捷键触发技能
|
||||
|
||||
在PC端,我们还可以按键触发技能。
|
||||
|
||||
在技能的道具定义完毕后,再将该道具绑定到一个快捷键上。有关绑定按键请参见[自定义快捷键](#自定义快捷键)。
|
||||
|
||||
下面是一个很简单的例子,当勇士按下W后,触发我们上面定义的二倍斩技能。
|
||||
|
||||
``` js
|
||||
case 87: // W
|
||||
if (core.status.heroStop) { // 当前停止状态;这个if需要加,不能在行走过程中触发不然容易出错。
|
||||
if (core.hasItem('skill1')) { // 判定该技能道具是否存在
|
||||
core.useItem('skill1'); // 使用道具(该技能)
|
||||
}
|
||||
}
|
||||
break;
|
||||
```
|
||||
|
||||
在勇士处于停止的条件下,按下W键时,判断技能的道具是否存在,如果存在再使用它。
|
||||
|
||||
!> 1,2,3这三个键被默认绑定到了破炸飞;如果想用的话也是一样,只不过是把已有的实现进行替换。
|
||||
|
||||
!> 手机端可以通过长按任何位置调出虚拟键盘,再进行按键,和键盘按键是等价的效果!
|
||||
|
||||
### 技能的效果
|
||||
|
||||
最后一点就是技能的效果;其实到了这里就和RM差不多了。
|
||||
|
||||
技能的效果要分的话有地图类技能,战斗效果类技能,后续影响类技能什么的,这里只介绍最简单的战斗效果类技能。
|
||||
|
||||
其他的几类技能根据需求可能更为麻烦,有兴趣可自行进行研究。
|
||||
|
||||
战斗效果内技能要改两个地方:战斗伤害计算,战后扣除魔力值。
|
||||
|
||||
@ -123,9 +123,8 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
||||
var equipAnimate = 'hand';
|
||||
if (core.flags.equipment) {
|
||||
var equipId = (core.status.hero.equipment||[])[0];
|
||||
if (core.isset(equipId) && core.isset(core.material.items[equipId])
|
||||
&& core.isset(core.material.items[equipId].equip.animate))
|
||||
equipAnimate = core.material.items[equipId].equip.animate;
|
||||
if (core.isset(core.material.items[equipId]) && core.isset(core.material.items[equipId].equip.animate))
|
||||
equipAnimate = core.material.items[equipId].equip.animate;
|
||||
}
|
||||
core.playSound('attack.mp3');
|
||||
core.drawAnimate(equipAnimate, x, y);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user