新元的无名杀扩展教程(一)技能_8一些简单函数
前言
在前面,我们已经了解了各种数据类型。在本篇文章中,我们就将学习一些函数的基本用法。
在这之前,先说明一下,我们将数据类型的名称按以下方式简写:
布尔boolean→bool
数字number→num
字符串string→str
对象object→obj
函数function→func
在无名杀中如角色,牌这些对象,我们把它单独列出来,在正文中按以下方式表示:
角色→player
牌→card
我们将由角色构成的数组表示为players
我们提过的game.players就是一个players
我们将由牌构成的数组表示为cards
我们将用来表示属性的字符串表示为nature
如
"thunder"雷属性,"fire"火属性,"ice"冰属性,"kami"神属性,等等
我们将一个区域表示为position
如
"h"手牌区;"e"装备区;"j"判定区,等等
player
在本文中所指的player指的是角色,如
game.me(玩家你),_status.currentPhase(当前回合角色),game.players[i](i是一个数字)(场上某个角色)之类
player的函数都是自己专属的,player的函数,card(本文中指一张实体牌)就不能用。
比如,就不存在card.draw;card.recover这类函数。(当然你可以自己定义)
函数
函数func,实际上就是一段既成的代码。在需要使用就引用它,引用的方法是,obj.函数名(),或,obj[函数名]()如:
player.draw()
player['draw']()
函数随着参数的不同,会使作用效果有些不同。
我们将引用函数时,实际传入的参数叫做实参,如:
player.draw(10)
这个函数的实参就是10
我们将写在定义函数中的参数叫做形参。
如我们写在filter的func
function(event,player){
}
这个event,player就叫形参,它用于处理数据。
在实际处理效果中,形参和实参一一对应,比如,我们自己创建个对象并创建个函数:
let obj={
say:function(str1,str2,str3){
game.print(str1,str2,str3)
}
}
然后我们调用这个函数
obj['say']("一","二","三")
实际执行的代码相当于:
game.print("一","二","三")
这里的"一","二","三"就会作为一个有序集合传给相应的func,这个有序集合在我们定义的函数那里就叫arguments,而这里的arguments和我们之前所讲的是一样的。就不作赘述。
一些函数的一些形参
1.player.draw //摸牌
其参数类型有num,str,bool,player等
num决定着角色的摸牌数(默认为一),如
player.draw(2)
角色就摸两张牌
bool决定着摸牌是否有动画(默认有动画),如
player.draw(false)
角色摸牌就没有动画
player决定着角色的摸牌的来源角色
player.draw(_status.currentPhase)
角色的摸这一张牌来源就为当前回合角色
str又分为几种
'visible',摸牌可见
player.draw('visible')
'nodelay',摸牌无延迟
player.draw('nodelay')
'bottom',从底部摸牌
player.draw('bottom')
将以上所有参数都调用就为:
player.draw(5,false,player,'visible','nodelay','bottom')
角色就无动画从底部地摸五张牌,且这些牌所有角色可见,不延迟。
2.player.link/*横置*/及player.turnOver/*翻面*/
这两个的函数的参数都只有一个,其类数据型为bool
在我们没有参数时,这两个函数是这样运作的:
若角色已横置/翻面,则重置/翻回;否则,角色横置/翻面
我们填入参数时它又是这样运作的:
如
player.link(true)
player.turnOver(true)
这两个函数,其参数为true时,若角色已横置/背面朝上,则无事发生;若角色未横置/正面朝上,则角色横置/翻面。
总而言之,填了个true,结果是:角色一定横置/背面朝上
反之,若填入的参数为false
player.link(false)
player.turnOver(false)
角色一定未横置/正面朝上。
3.player.damage//受到伤害
该函数常用的参数有以下几种:
num,nature,player,str
num决定着受到伤害的数值(默认为1),如
player.damage(2)
角色就受到2点伤害
nature即伤害的属性(默认为无),如
player.damage("thunder")
角色就受到1点雷属性伤害
player来设置伤害来源,如:
player.damage(game.me)
角色的伤害来源就为玩家你
str也有几种:
'nosource',伤害无来源
player.damage('nosource')
'nocard',伤害不由卡牌造成(曹操不能发动奸雄)
player.damage('nocard')
4.player.recover//恢复体力
常用的参数有num,player,str('nocard','nosource')用法与damage类似,就不多赘述
5.player.loseHp,player.gainMaxHp,player.loseMaxHp//分别为失去体力,加体力上限,减体力上限
常用的参数有num,其决定着事件的数值(默认为1)
如
player.loseHp(2)
player.gainMaxHp(3)
player.loseMaxHp(4)
角色就依次失去2点体力,加3点体力上限,减4点体力上限。
6.player.die//死亡
player.die()
角色就直接死亡
7.player.changeHujia//更改护甲
参用参数有num
当num为正数时,角色增加护甲:
player.changeHujia(2)
当num为负数时,角色减少护甲:
player.changeHujia(-2)
8.player.changeGroup//更改势力,不影响国战身份
常用参数有str,此为必填且必须是第一项
player.changeGroup("shu")
角色势力就更改为蜀
9.player.drawTo//将手牌摸至
有两个参数,num,Array
num指的是手牌摸至的值,如:
player.drawTo(5)
角色就将手牌摸至五张
Array中填的数据为player.draw中除num的数据
比如
player.drawTo(5,[game.players[0],"visible"])
角色就将手牌摸至五张,来源是一号位,摸的牌所有角色可见。
num,Array的顺序不可互换。
10.player.getBuff和player.getDebuff//获得正面效果/负面效果(什么效果自己试)
player.getBuff
角色就获得一个正面效果
player.getDeBuff()
角色就获得一个负面效果
11.player.goMad//进入混乱状态
有一个obj参数其写法和技能中的trigger一样。
比如:
player.goMad({player:"phaseBegin"})
混乱状态会持续到角色下个回合开始时。
12.player.revive//复活
有两个参数一个为num,一个为bool
num用于设置角色复活时恢复的体力值,
bool为false时游戏不会有log
比如
player.revive(2)
复活,且复活时体力值为1点
13.player.init//本来是用于角色登场的,也可以用于替换武将
参数有str1,str2,bool
str1指的是登场的主将的id名
str2指的是登场的副将的id名
bool用于设定是否添加武将牌的技能
比如
player.init("caocao","liubei")
就将武将替换为了曹操、刘备
14.player.clearSkills//清除武将所有的技能,除了charlotte技、superCharlotte、tempSkill
参数全部为str,这里指技能的id,可以写任意个id,这些技能不会被清除。
player.clearSkills("yiji","jianxiong")
遗计,奸雄就不会被清除
15.player.insertPhase//额外进行一个回合
player.insertPhase()
角色就额外进行一个回合。
16.player.removeSkill//移除技能
只有一个参数,可以为str或者Array,str是移除技能的id,Array是要移除的技能的集合。
比如
player.removeSkill("yiji")
再如
player.removeSkill(["yiji","jianxiong"])
17.player.randomDiscard//随机弃置牌
有三个参数:
num,position,bool
num即弃牌数(默认为1),position即弃牌区域(默认为"he",即手牌区装备区),bool即是否延迟
player.randomDiscard(2,"h")
这样就随机弃置了角色两张牌。
18.player.randomGain//随机获得指定角色牌
有四个参数:
player,position,num,bool
其中position和num与player.randomDiscard相同就不作赘述
player指"你获得谁的牌"中的谁
bool用于控制是否有指示线
比如:
player.randomGain(_status.currentPhase,2,"h")
你就随机获得当前回合角色两张手牌
19.player.disableJudge,player.enableJudge,player.disableEquip,player.enableEquip,player.swapEquip,player.swapHandcards//六个对区域的操作,分别为:废除判定区,恢复判定区,废除装备区,恢复装备区,交换装备区,交换手牌区
player.disableJudge()
角色的判定区就废除了
player.enableJudge()
角色的判定区就恢复了
player.disableEquip的参数为num
(1,2,3,4,5,6)对应于(武器,防具,+1马,-1马,宝物,坐骑(两个都废除))
player.disableEquip(1)
武器区就被废除了
同理,player.enableJudge
player.enableJudge(1)
武器区就恢复了
两个交换函数player.swapEquip和player.swapHandcards常用参数有player,就是"和谁交换"中的谁
player.swapEquip(game.me)
角色和玩家我交换了装备区
player.swapHandcards(game.me)
角色和玩家我交换了手牌区
20.player.gain//获得牌
这个函数的常用参数有:
card/cards,player,str
card就是你获得的牌(一张),
cards就是你获得的那些牌(多张),
player是牌的来源,
str中写的也有很多
"gain2","draw","giveAuto"之类设置获得牌的动画,具体效果自己试
"fromRenku"
表示从仁库中获得的牌
"fromStorage"
表示从标记中获得的牌
player.gain(game.createCard("sha"),"gain2")
角色就获得一张【杀】
注:game.createCard可以来创造一张牌。