新元的無名殺擴展教程(一)技能_8一些簡單函數
前言
在前面,我們已經了解了各種數據類型。在本篇文章中,我們就將學習一些函數的基本用法。
在這之前,先說明一下,我們將數據類型的名稱按以下方式簡寫:
布爾boolean→bool
數字number→num
字符串string→str
對象object→obj
函數function→func
在無名殺中如角色,牌這些對象,我們把它單獨列出來,在正文中按以下方式表示:
角色→player
牌→card
我們將由角色構成的數組表示為players
我們提過的game.players就是一個players
我們將由牌構成的數組表示為cards
我們將用來表示屬性的字符串表示為nature
如
"thunder"雷屬性,"fire"火屬性,"ice"冰屬性,"kami"神屬性,等等
我們將一個區(qū)域表示為position
如
"h"手牌區(qū);"e"裝備區(qū);"j"判定區(qū),等等
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就叫形參,它用于處理數據。
在實際處理效果中,形參和實參一一對應,比如,我們自己創(chuàng)建個對象并創(chuàng)建個函數:
let obj={
say:function(str1,str2,str3){
game.print(str1,str2,str3)
}
}
然后我們調用這個函數
obj['say']("一","二","三")
實際執(zhí)行的代碼相當于:
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時,若角色已橫置/背面朝上,則無事發(fā)生;若角色未橫置/正面朝上,則角色橫置/翻面。
總而言之,填了個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',傷害不由卡牌造成(曹操不能發(fā)動奸雄)
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//更改勢力,不影響國戰(zhàn)身份
常用參數有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//進入混亂狀態(tài)
有一個obj參數其寫法和技能中的trigger一樣。
比如:
player.goMad({player:"phaseBegin"})
混亂狀態(tài)會持續(xù)到角色下個回合開始時。
12.player.revive//復活
有兩個參數一個為num,一個為bool
num用于設置角色復活時恢復的體力值,
bool為false時游戲不會有l(wèi)og
比如
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即棄牌區(qū)域(默認為"he",即手牌區(qū)裝備區(qū)),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//六個對區(qū)域的操作,分別為:廢除判定區(qū),恢復判定區(qū),廢除裝備區(qū),恢復裝備區(qū),交換裝備區(qū),交換手牌區(qū)
player.disableJudge()
角色的判定區(qū)就廢除了
player.enableJudge()
角色的判定區(qū)就恢復了
player.disableEquip的參數為num
(1,2,3,4,5,6)對應于(武器,防具,+1馬,-1馬,寶物,坐騎(兩個都廢除))
player.disableEquip(1)
武器區(qū)就被廢除了
同理,player.enableJudge
player.enableJudge(1)
武器區(qū)就恢復了
兩個交換函數player.swapEquip和player.swapHandcards常用參數有player,就是"和誰交換"中的誰
player.swapEquip(game.me)
角色和玩家我交換了裝備區(qū)
player.swapHandcards(game.me)
角色和玩家我交換了手牌區(qū)
20.player.gain//獲得牌
這個函數的常用參數有:
card/cards,player,str
card就是你獲得的牌(一張),
cards就是你獲得的那些牌(多張),
player是牌的來源,
str中寫的也有很多
"gain2","draw","giveAuto"之類設置獲得牌的動畫,具體效果自己試
"fromRenku"
表示從仁庫中獲得的牌
"fromStorage"
表示從標記中獲得的牌
player.gain(game.createCard("sha"),"gain2")
角色就獲得一張【殺】
注:game.createCard可以來創(chuàng)造一張牌。