快轉到主要內容

ModPE Script 插件教學 Part 2 - 函式

分類   遊戲攻略 Minecraft
標籤   BlockLauncher
🗓️ 民國104年 乙未年
✍ 切換正體/簡體字

我們又見面囉,有JS基礎就讓我們繼續看下去~

本文重點是函式(Function)

函式在JS中是可以自己創的…不過BLP提供一些函式讓遊戲去執行,見下文。

你還需要跟插件方法(ModPE Script Methods)相結合,請見Part 3。

函式用法:跟JS一樣,把程式碼包起來:

function useItem(){
//程式碼
}

OK,接著是一些有特別功能的函式。

註:有些可以使用preventDefault()阻止發生原本的效果,請參看modpescriptdump.txt附的函數表。

attackHook(attacker,victim)

觸發: 實體被攻擊時
用法: attacker為發動攻擊的實體,victim為被攻擊的實體,目前對象皆不能指向玩家。
實體被攻擊(被攻擊者非玩家無效)

blockEventHook(x,y,z,eventType,data)

翻譯:blockEventHook(x,y,z,事件,副ID)
觸發:每3秒執行一次,開關箱子時。
用法:事件代碼不明。
x,y,z是事件發生的座標。
副ID在被開啟時為0,關閉為1。

continueDestroyBlock(x, y, z, side, progress)

觸發:玩家破壞方塊時
用法:x,y,z為方塊座標,side為方塊的面,progress為破壞進度值。

chatHook(str)

觸發:當有玩家輸入訊息時,str即輸入的字串內容。

deathHook(murder,victim)

翻譯:deathHook(殺人者,被殺者)
觸發:實體死亡時。(跟entityRemoveHook()不太一樣)
用法:跟attackHook()差不多。

destroyBlock(x,y,z,side)

翻譯:destroyBlock(x座標,y座標,z座標,方塊面)
觸發:玩家破壞方塊後
用法:用Level.getTile()取得被破壞的方塊訊息等。

eatHook(hearts, saturationRatio)

觸發: 玩家吃東西時
用法: hearts為恢復的飽食度,saturationRatio為隱藏飽食度。

entityAddedHook(entity)

觸發:一個實體出現時。
用法:entity是實體。

entityRemoveHook(entity)

觸發:一個實體被移除時。
用法:entity是實體。

eatHook(hearts, saturationRatio)

觸發:玩家吃東西時
用法:hearts為玩家血量,saturationRatio為飢餓值比例。

explodeHook(entity, x, y, z, power, onFire)

觸發:有爆炸產生後
用法:entity為產生爆炸的實體,xyz為座標,power為威力(半徑),onFire為是否著火(布林值)。

entityHurtHook(attacker, victim, halfhearts)

觸發:有實體受到傷害時
用法:attacker為攻擊的實體,victim為受到攻擊的實體,halfhearts為受到的傷害(以半顆心計)。

levelEventHook(entity,eventType,x,y,z,data)

翻譯:levelEventHook(實體,事件,x,y,z,副ID)
觸發:開關門(陷阱、柵欄)時、羊吃草、玩家睡覺時
用法:實體就是玩家,
事件代碼開關門為1003,羊吃草2001,睡覺9800。
x,y,z是事件發生的座標,睡覺時為0,0,0。
附ID在門被開啟時為0,關閉為1。

leaveGame()

觸發:離開世界時。

modTick()

觸發:一進入某個世界就每20秒一次,一直觸發。
用法:死不了, 一直存在的函式,可以用來做計時器。

newLevel()

觸發:進入世界時。

playerAddExpHook(player, experienceAdded)

觸發:玩家得到經驗值時
用法:player為得到經驗值的玩家(單人就是Player.getEntity()),experienceAdded為得到的經驗值。

procCmd(cmd)

翻譯:procCmd(指令)
觸發:玩家在聊天欄輸入開頭帶有"/“斜線號時觸發。

用法:用於做指令,cmd是指令內容(不包括”/")。

playerExpLevelChangeHook(player, levelsAdded)

觸發:玩家等級有變化時
用法:player為等級變化的的玩家(單人還是Player.getEntity()),levelsAdded為變化的等級。

projectileHitBlockHook(projectile, blockX, blockY, blockZ, side)

觸發:拋射實體撞到方塊時
用法:projectile為該實體,blocX、blockY、blockZ為座標,side為方塊的面。

projectileHitEntityHook(projectile, targetEntity)

觸發:有拋射實體(如雪球)碰到另一個實體時
用法:projectile為拋射實體,targetEntity為它碰到的實體。

screenChangeHook(screenName)

觸發: 當視窗切換時,例如開啟背包等。
用法: screenname為切換的視窗代碼。
可自行使用這函數並在當中使用print(),顯示出視窗的對應代碼。

serverMessageReceiveHook(str)

觸發:伺服收到訊息
用法:str為收到的字串內容

startdestroyBlock(x,y,z,side)

翻譯:startdestroyBlock(x座標,y座標,z座標,方塊面)
觸發:玩家要開始破壞方塊時
用法:可以提前偵測方塊,用Level.getTile()取得要破壞的方塊訊息等。

redstoneUpdateHook(x, y, z, newCurrent, wolrdloading, blockId, blockData)

觸發:紅石訊號更新時
用法:xyz為座標,newCurrent為其訊號為開或關(布林值),worldloading為是否在世界載入時就偵測紅石訊號(布林值),blockId為方塊ID,blockData為方塊副ID。
useItem(x,y,z,itemID,blockID,side,itemdamage,blockdamage)

觸發:點擊方塊。
用法:x,y,z就是方塊座標,
itemid就是你手持物品id,
blockid就是你點擊的方塊,
itemdamage手持物品附ID,
blockid被點擊方塊附ID。
至於方塊面,有1~6,就是你點擊的方塊面。
所以,你需要ID表,可以參考這個或用TMI看。

Part 3見!

參考來源: Connor4898/ModPE Scripts Functions List

相關文章

ModPE Script 插件教學 Part 1 - 前置作業
分類   遊戲攻略 Minecraft
標籤   BlockLauncher Minecraft Bedrock
2014年~2015年國中時,我與她的絕對領域(下)
分類   人文藝術 隨筆
標籤   Memoir

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。