那些大佬的教程应该都已经很详细了,再加上楼主比较萌新,故此帖可当做水贴对待。不过虽然这贴和楼主都比较水,但是走过路过的好心人也要假装支持一下哦
下面从应用最广的触发技开始介绍
一:触发技
这是最常见的技能,并且几乎所有技能效果都能通过这个技能解决,基本思路是:判断角色是否能发动这个技能→游戏进行到某一个时机→符合这个技能发动所需的时机→执行技能的内容
①基本框架:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
skill={
xxx:xxx,
//详细介绍参考注释一
trigger:{
xxxxxxxxx;
//详细介绍参考注释二
},
filter:function(xxx){
xxxxxxxxx;
//详细介绍参考注释三
},
content:function(xxx){
xxxxxxxxx;
//详细介绍参考注释四
},
init:function(xxx){
xxxxxxxxx;
//详细介绍参考注释五
},
ai:function(xxx){
xxxxxxxxx;
//详细介绍参考注释六
},
}

②注释
注释一:此处可添加一些辅助功能,对技能的触发时机、触发内容无影响。
常见的有:
audio:2,
//添加配音,若想要配音正常触发,需要满足以下两个条件:Ⅰ配音需存在于该拓展文件夹或游戏自带的配音文件夹中,且格式不为.wav(经部分吧友实验.wav无法播放,未经楼主亲自检验)Ⅱ这个配音名称需要改为 技能名称+数字 形式,如给技能abc添加配音,则配音应重命名成abc1.mp3,给技能abc123添加配音,则配音应重命名成abc1231
priority:999,
//技能释放的优先程度为999,该数值越大,技能释放的优先程度越高,可为null,无穷大为Infinity,无穷小为-Infinity(字母中的I需大写,且仅有I需大写)
forced:true,
//该触发技是否满足条件就强制释放。若为true则强制,false则非强制
unique:true,
//该技能是否为特殊技能,即左慈化身能否获取等等,常与部分锁定技、主公技、觉醒技连用
ZhuSkill:true,
//是否为主公技
mark:true,
//是否标记,常和intro连用
skillAnimation:true
animationStr:’xx’
animationColor:’xx’
//第一行表示是否有技能动画,第二行表示动画显示的字符,第三行表示动画的颜色(虽然没看出来有什么区别)
noremove:true,
//不能被移除,需要和ai中语句连用
其余常见的可以参考极光大佬的教程(再写下去我的坑填不完了。。)
注释二:此处添加的是时机,即什么时候触发该技能
一般为global:’xxx’,
或者player:’xxx’,
常见的还有source:’xxx’和target:’xxx’
global为全场角色,player为拥有该技能的玩家,source为来源是你(如你造成伤害时),xxx为时机,很多时机可以用事件+过程英文组合的方式组合而成,如phaseDrawAfter便是摸牌阶段之后,其中phase表示回合或者阶段Draw表示抽卡After表示之后,damageBegin就是受伤开始过程,其中damage表示受伤或造成伤害,Begin表示开始
当有两个及以上的时点可以触发该技能时,时机需写成技能组格式,如player:[‘phaseBegin’,’damageBefore’]
当有多个时点且触发对象不同时,分别写出这些触发对象和相应的时点,再用逗号隔开,如trigger:{
player:’removeSkillBefore’,
global:[‘phaseBefore’,’gainEnd’],
source:’damageBefore’,
},
除此之外,有一些特殊的时点,可以不需要加过程的英文,可以直接用事件代替时点,如player:’damage’或player:’respond’
注释三:此处填写技能释放的条件,当条件true时,技能可以释放,当条件为false时,技能不能被释放。条件的true或false由return判断
如:fliter:function(){
if (player.hp>3) return false;
return true
},
//该技能在玩家体力>3时无法发动
此外,如果只有可以发动的条件,可以直接return加上可以发动的条件,发动条件中,如 return player.hp>3表示只有在玩家体力>3时才可发动。
此外,符号&&表示和,如条件a&条件b表示需要同时满足条件a和条件b才能发动,符号||表示或,如条件a||条件b,表示只要满足条件a和b中任意一个即可发动。(&&在有些情况下也可写作&,||同理)当直接return多个条件时,条件需要加括号,如
filter:function(){
return (player.isIn&&player.isAlive)
},
//当玩家未被移出游戏且玩家存活时可发动
此外,filter:function(){}还可以用来限制选择的目标,此时函数可写为filter加选择的对象英文:function(){},如
filterTarget:function(){
return target.isAlive()
},
//限制选择的目标角色,只有目标角色存活时才能发动
filterCard:function(){
return true
},
//限制选择的卡,任意卡均可选择
当然,在filter:function()括号中添加参数,也是可以实现上述目标的,不过在这里不详细介绍了,不然这坑填不完了
注释四:该部分为技能内容,各类代码效果请查看game.js或我之前开的一个代码效果整理帖(不过这个帖子不全),此外,有一点要注意,当代码中出现未定义的函数时,技能效果只执行到该函数的上一个语句,之后则不执行,如
player.draw();
player.abcdefg();
player.damage();
当这些代码同时出现在content:function中时,只执行摸牌效果,而之后的受到伤害的效果则不执行
这个部分应该是大佬们讲的最多最详细的部分,所以我在这里就不啰嗦了
注释五:该函数为获得技能时,若满足技能需求,则立刻获得的效果,常用于判断是否有同样武将或者初始获得的标记,也有时候用于重写或定义函数
例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 init:function (player){
player.storage.niepan=false;
},
//涅槃技能未发动
init: function(player){
if (!game.cmpName(player, 'dan_kamukura')) {
player.clearSkills();
return false;
}
var tp;
var notonly = false;
if(player.name2){
notonly = true;
}else{
for (var i = 0; i < game.players.length; i++) {
tp = game.players[i];
if (tp == player) continue;
if (tp.isKamukura) {
notonly = true;
break;
}
}
}
if (notonly) {
player.reinit('dan_kamukura','dan_rixianga');
player.hp = player.maxHp;
}
},

//获得此技能时,先判断该技能所有者名字是否满足game.CMPname函数(即判断名字是否为神座出流),若否玩家清空所有技能,然后,判断场上的角色是否有同名的角色,若有则按站场顺序变为日向创(对方先在场上则自己变为日向创,自己先在场上则对方变为日向创),如果在国战或双将模式,自己变为日向创
注释六:用来告诉ai是否发动技能,发动技能的对象等等,ai这块在无名杀教程手册(可乐大佬的教程)中较为完善的阐述了,而且触发技基本不需要ai,所以这块先跳过,在其他种类技能里会讲到
至此,触发技完结,撒花
二:主动技
这是另一类常见技能,该类技能需要手动选择是否发动。此外,这也是需要一定ai技术的技能,若该类技能不添加ai,则ai基本不会发动此类技能
①基本框架:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
skill={
xxx:xxx,
//详细介绍参考注释七
enable:'xxx',
//详细介绍参考注释八
filter:function(xxx){
xxxxxxxxx;
//详细介绍参考注释三
},
content:function(xxx){
xxxxxxxxx;
//详细介绍参考注释四
},
init:function(xxx){
xxxxxxxxx;
//详细介绍参考注释五
},
ai:function(xxx){
xxxxxxxxx;
//详细介绍参考注释六、注释九
},
}

注释七:这里也是可以添加一些辅助的功能的,如动画之类
usable:x,
//该技能在一回合内最多使用n次,若技能在结算前被自己/其他角色的技能取消,则不计入使用次数
popup:true,
//使用该技能的时候是否在武将上弹出该技能名称
selectCard:x,
//选择x张卡才能发动,常和check:function(){return xxx}(告诉ai如何选牌)和position:’xx’(可以选择什么位置的牌,如’h’则为手牌)连用
这块大佬也讲过很多了,作为一只萌新我就简略一点了
注释八:这里填写的也是技能可发动的时机,命名规则和触发技相同,但是主动技特殊的点在于:如果你命名的时点是你不能够操控角色的阶段,即自动进行的,则该技能无法发动
例1:如设置的时机为enable:’phaseJudge’,则若你的判定区内没有牌时,判定阶段不会询问是否发动该技能,你直接通过判定阶段进入摸牌阶段以及之后的阶段,若你的判定区有牌,则你可以在判定过程中选择发动此技能
例2:如你设置的时机为enable:’chooseToUse’,则你可以在任意你可以操控角色的阶段释放此技能,若场上所有人都没有关于弃牌阶段结算的技能,则该技能也无法释放



本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!