最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

新元的無名殺擴(kuò)展教程(一)技能13_trigger總結(jié)與補(bǔ)充(下)

2023-03-19 15:45 作者:新元noname  | 我要投稿

函數(shù)

函數(shù)func,實(shí)際上就是一段既成的代碼。在需要使用就引用它,引用的方法是,obj.函數(shù)名(),或,obj[函數(shù)名]()如:

player.draw()

player['draw']()

函數(shù)隨著參數(shù)的不同,會使作用效果有些不同。

我們將引用函數(shù)時,實(shí)際傳入的參數(shù)叫做實(shí)參。

我們在定義的函數(shù)時,寫出的函數(shù)應(yīng)該有的參數(shù)叫做形參。


事件

事件是什么?

事件,指的是可以觸發(fā)技能的函數(shù)。

比如player.damage(),可以觸發(fā)有關(guān)damage的技能,我們就把"damage"稱為一個事件。特別的,技能本身的content函數(shù)也是一個事件。

相對的,另一些函數(shù)無法觸發(fā)技能,就不是事件。

事件也可以指該函數(shù)的有關(guān)參數(shù)(如_status.event當(dāng)前事件的參數(shù),技能中filter函數(shù)的event參數(shù),content的trigger參數(shù)),還可以指函數(shù)執(zhí)行的過程。

事件的執(zhí)行流程

1.分步執(zhí)行

事件可以將一串代碼分割成幾步,按步驟順序執(zhí)行。

"step 0"→"step 1"→"step 2"……

有一些函數(shù)可以調(diào)整步驟執(zhí)行的順序,

比如event.goto,可以調(diào)至指定步數(shù)。

"step 0"(event.goto(5))→"step 5"→"step 6"……

event.redo,可以重復(fù)該步數(shù)。

"step 0"→"step 1"(event.redo())→"step 1"→"step 1 "……

event.finish,可以讓事件在當(dāng)前步打住。

"step? 0"(event.finish())

2.事件流程

事件的流程為:

觸發(fā)事件函數(shù)→生成事件并傳遞事件參數(shù)→將相應(yīng)事件添加到事件流上→執(zhí)行相應(yīng)事件

執(zhí)行事件時一般也可分為這幾個階段(也可能有別的階段):

事件Before→事件Begin→事件→事件End→事件After

當(dāng)事件尚未執(zhí)行的時候,我們就可以對事件進(jìn)行修改。

如:

content中寫trigger.cancel()就可以取消這一事件的發(fā)生。

也可以修改其他參數(shù),這樣就會改變事件的實(shí)際效果。

如:

周瑜的〖英姿〗中有這樣一串代碼:

trigger.num++?

這里就修改了事件的參數(shù)。這里的trigger.num決定了摸牌數(shù),因此,改變了它就改變了周瑜的摸牌數(shù)。

除此之外,執(zhí)行事件者(trigger.player),事件來源(trigger.source),事件名稱(trigger.name)都可以修改以造成不同的效果。

3.父子關(guān)系

你有一個技能A:先造成傷害再摸牌。

它發(fā)動這個技能的過程是這樣的:

你對一名造成傷害→你摸牌

不巧這個角色有個技能B:受到傷害后,摸牌

當(dāng)你發(fā)動這個A技能對這個角色造成傷害,而因此這個角色發(fā)動技能B摸牌,然后你再摸牌。

這是這個事件的流程:

你對一名角色造成傷害(該角色發(fā)動技能B(其摸牌))→你摸牌

加粗字體是執(zhí)行技能是引入的事件。

傷害事件其下又分了諸多小事件,在結(jié)算了小事件的過程中,又引入了技能的結(jié)算。這種事件的包含關(guān)系形象地用父子(母子)關(guān)系來表示,就是:

父事件? ?damage

子事件? ?原本damage的子事件? skillB

控制輸入代碼時,也是這種插入結(jié)算,相當(dāng)于為當(dāng)前父(母)事件中添加一個子事件。

當(dāng)然,除了為當(dāng)前事件添加子事件外,還可以對其父(母)事件添加子事件。避免這種結(jié)算方式,結(jié)果如下:

你對一名角色造成傷害→其發(fā)動技能B(摸牌)→你摸牌

4.同步順序

1.原則上,同一步驟的代碼,從上而下執(zhí)行。

2.因?yàn)槭录瘮?shù)的特性,是將事件添加到事件流上,輪到這一事件再處理,所以會發(fā)生一些奇怪的事。

比如:

player.damage(player.hp-1)

player.hp=3;

player.draw(player.hp);

假定開始時,player.hp為2

按照自上而下的順序:

開始時,角色會受到一點(diǎn)傷害,之后會摸三張牌。

實(shí)際效果是,角色先受到兩點(diǎn)傷害,再摸三張牌。

因此,注意事件函數(shù)的延遲特性。

所以推薦寫法是:

"step 0"

player.damage(player.hp-1)

"step 1"

player.hp=3;

player.draw(player.hp);

這樣分步寫,問題即可解決。

事件更改

我們已提到過,content中對trigger的修改,可以改變事件參數(shù)。會影響事件效果。

其實(shí),在事件函數(shù)執(zhí)行時,其返回值便是事件參數(shù),我們也可以對它進(jìn)行修改。

比如:

player.damage().num=10

這樣,角色受到的傷害就為10

我們更建議用事件的set函數(shù)修改,因?yàn)槠浞祷刂狄彩鞘录?shù),可以連續(xù)修改

player.damage().set("num",10).set("player",game.zhu)//主公受到10點(diǎn)傷害


Result,Event

因?yàn)槭录瘮?shù)是延后執(zhí)行的,所以當(dāng)前步驟注定拿不到player.chooseControl,player.chooseTarget的結(jié)果,那怎么辦呢?把結(jié)果傳遞給下一步!

這就是我們用choose函數(shù)必須分步的原因。

對應(yīng)的,

chooseTarget結(jié)果是result.targets(一個players)

chooseControl結(jié)果是result.control

chooseButton結(jié)果是result.links(一個Array)

可是當(dāng)我連續(xù)多次用choose函數(shù)那怎么辦呢?result數(shù)據(jù)只有一步的有效期呀!

此時有一個貫穿全部步驟的object,event對象,把數(shù)據(jù)存至其中即可。


后記

trigger技就此講完了,以后會轉(zhuǎn)入對主動技的講解。主要是主動技的一些不同之處,但其實(shí)正真重要的東西,已在trigger技中講解的差不多了。

新元的無名殺擴(kuò)展教程(一)技能13_trigger總結(jié)與補(bǔ)充(下)的評論 (共 條)

分享到微博請遵守國家法律
哈尔滨市| 镇安县| 崇明县| 年辖:市辖区| 泾川县| 富民县| 罗城| 垣曲县| 朝阳市| 普洱| 新河县| 务川| 积石山| 海口市| 广平县| 永寿县| 北流市| 达日县| 大厂| 克山县| 如东县| 合肥市| 华安县| 新乡县| 阳城县| 清镇市| 巨野县| 太仆寺旗| 武威市| 城口县| 平阳县| 望奎县| 固阳县| 西平县| 秀山| 新平| 赫章县| 通榆县| 上犹县| 塔河县| 五原县|