日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

我的世界1.12版函數(shù)命令系統(tǒng)教學(xué)詳解 函數(shù)命令系統(tǒng)教程( 三 )


對(duì)于一個(gè)完整的命令系統(tǒng)而言,模塊一般可以分為三類:對(duì)執(zhí)行順序先后有要求的高頻模塊、對(duì)執(zhí)行順序先后無要求的高頻模塊、非高頻模塊 。在函數(shù)系統(tǒng)中,我們同樣可以將模塊分成這三類 。為了方便后續(xù)講解 。我們作這樣的設(shè)定:
將 system:_main設(shè)為 glf ,并稱之為主進(jìn)程或者主時(shí)鐘
對(duì)于上面講到的三類模塊,我們通過三種不同的方式去調(diào)用 。
對(duì)執(zhí)行順序先后有要求的高頻模塊,在主進(jìn)程中按照需要的順序排列好來調(diào)用 。對(duì)執(zhí)行順序先后沒有要求的高頻模塊,在主進(jìn)程中可以比較隨意放置位置,但是一般不會(huì)考慮優(yōu)先執(zhí)行 。特別地,如果這個(gè)模塊是針對(duì)每一個(gè)玩家獨(dú)立執(zhí)行的,可以使用進(jìn)度系統(tǒng)中的"tick"觸發(fā)器來調(diào)用,而不需要放在主進(jìn)程中 。僅在特定情況下觸發(fā)的非高頻模塊,在主進(jìn)程中調(diào)用,但是輔以execute、scoreboard和選擇器參數(shù)去控制其在合適的時(shí)候被調(diào)用,這里的選擇器,包括了在1.12 pre-4中新增的if/unless的部分 。
非高頻模塊在特定條件下激活,也在很大程度上減少了模塊中大量重復(fù)出現(xiàn)execute的現(xiàn)象,并完全杜絕了超長(zhǎng)的Conditional鏈,因?yàn)閒unction中并不直接支持Conditional 。不直接支持,說明可以間接支持,對(duì)吧 。我們來看一個(gè)例子 。
假設(shè)有紅藍(lán)兩隊(duì),在開始前考慮到互毆問題不進(jìn)行分隊(duì),而是采用掛tag的方式 。
紅隊(duì)以tag=redTeam為標(biāo)記,藍(lán)隊(duì)則以tag=blueTeam為標(biāo)記,準(zhǔn)備觀戰(zhàn)的玩家以tag=specTeam為標(biāo)記
當(dāng)玩家站在相應(yīng)區(qū)域(紅藍(lán)兩隊(duì)的所有玩家還需要選擇了職業(yè))添加Ready的標(biāo)記,視為準(zhǔn)備就緒 。
如果玩家不在相應(yīng)區(qū)域時(shí)就移除Ready的標(biāo)記 。
選擇了職業(yè)的玩家,其記分板項(xiàng)selectClass數(shù)值大于等于1
全部玩家準(zhǔn)備就緒后,游戲進(jìn)入倒計(jì)時(shí),倒計(jì)時(shí)結(jié)束時(shí)游戲開始
倒計(jì)時(shí)未結(jié)束,有玩家脫離準(zhǔn)備就緒的狀態(tài),則倒計(jì)時(shí)中斷
條件比較多,我們先來看看怎么寫這個(gè)模塊,再進(jìn)行分析 。在這里,我們準(zhǔn)備了一個(gè)名為gameStat的aec實(shí)體作為標(biāo)記,所有游戲進(jìn)程會(huì)以tag或者score的形式掛載到該實(shí)體上 。請(qǐng)看指令部分
execute @p[tag=redTeam,score_selectClass_min=1] ~ ~ ~ execute @p[tag=blueTeam,score_selectClass_min=1] ~ ~ ~ scoreboard players tag @e[type=area_effect_cloud,name=gameStat,tag=notGaming] add allReady
execute @p[tag=!Ready,m=2] ~ ~ ~ scoreboard players tag @e[name=gameStat,type=area_effect_cloud,tag=notGaming] remove allReady
execute @p[tag=!Ready,m=2] ~ ~ ~ execute @e[name=gameStat,type=area_effect_cloud,tag=notGaming] ~ ~ ~ execute @s[tag=!allReady,score_waitTime_min=1] ~ ~ ~ title @a clear
execute @p[tag=!Ready,m=2] ~ ~ ~ execute @e[name=gameStat,type=area_effect_cloud,tag=notGaming] ~ ~ ~ execute @s[tag=!allReady,score_waitTime_min=1] ~ ~ ~ title @a reset
execute @p[tag=!Ready,m=2] ~ ~ ~ execute @e[name=gameStat,type=area_effect_cloud,tag=notGaming] ~ ~ ~ scoreboard players reset @s[tag=!allReady] waitTime
scoreboard players add @e[name=gameStat,tag=allReady] waitTime 1
execute @e[name=gameStat,score_waitTime=1,score_waitTime_min=1] ~ ~ ~ title @a times 10 140 10
execute @e[name=gameStat,score_waitTime=1,score_waitTime_min=1] ~ ~ ~ title @a subtitle [{"color":"aqua","text":"請(qǐng)玩家站在準(zhǔn)備區(qū)域不要離開"}]
execute @e[name=gameStat,score_waitTime=1,score_waitTime_min=1] ~ ~ ~ title @a title [{"color":"yellow","text":"游戲即將開始"}]
execute @e[name=gameStat,score_waitTime=40,score_waitTime_min=40] ~ ~ ~ title @a subtitle [{"color":"aqua","text":"3"}]
execute @e[name=gameStat,score_waitTime=40,score_waitTime_min=40] ~ ~ ~ execute @a ~ ~ ~ playsound block.note.pling voice @p ~ ~ ~ 1 0

推薦閱讀