欢迎光临散文网 会员登陆 & 注册

新元的无名杀扩展教程(一)技能_8一些简单函数

2022-10-29 20:56 作者:新元noname  | 我要投稿

前言

在前面,我们已经了解了各种数据类型。在本篇文章中,我们就将学习一些函数的基本用法。

在这之前,先说明一下,我们将数据类型的名称按以下方式简写:

布尔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可以来创造一张牌。

新元的无名杀扩展教程(一)技能_8一些简单函数的评论 (共 条)

分享到微博请遵守国家法律