馬上註冊,結交更多好友,享用更多功能。
您需要 登錄 才可以下載或查看,沒有帳號?立刻註冊
x
大家好~我是柯智懷~
今天發基礎的插件教學~
我也不知道開頭要說什麼啦XD
開始教學吧~
==========================
第一步 準備動作
需要以下東西:
一、一台裝有BlockLauncher與任何一種文本編輯器的手機
這樣就沒了:P
另外文本編輯器可以是很陽春的,比如內建的編輯器,不過我推薦比較好用的是920文本編輯器。
第二步 開始你的插件:勾子函數
function newLevel()
{
clientMessage("Welcome")
}
這是最為簡單的歡迎插件,其中有一個以function開頭的函數
類似的還有function attackHook、function modTick等
這些稱為「勾子函數(HookFunction)」,用於使一個插件開始運作
HookFunction可以是被「開啟新世界」觸發,可以是被「破壞、放置方塊觸發」。
然後後面的clientMessage是屬於兩種文字函數之一,用於「顯示文字在聊天欄位」。
以下是常用的HookFunction列表:
1.function useItem(x,y,z,itemId,blockId,side,itemDamage,blockDamage){}
當進行一次點擊時(如使用物品或放置方塊,食用食物不包括在內)會觸發這個函數,並返回數據。
x:被點擊方塊的x坐標
y:被點擊方塊的y坐標
z:被點擊方塊的z坐標
itemId:點擊時手裡拿的物品id(空手為0)
blockId:被點擊方塊的id
side:方塊被從哪個方向點擊
itemDamage:點擊時手裡拿的物品附加值(傷害值)
blockDamage:被點擊方塊的附加值(傷害值)
2.function attackHook(attacker,victim){}
當點擊或攻擊了一個生物mob(動物,怪物,玩家(待確認))時會觸發這個函數,並返回數據。
attacker:兇手
victim:被害人
3.function modTick(){}
每刻(0.05秒)執行一次
4.function procCmd(cmd){}
在聊天裡輸入指令時觸發
cmd:在聊天裡輸入的以"/"開頭的文字(不包含"/")
5.function newLevel(){}
當世界被載入時(出現"Building terrain"時)會觸發
6.function leaveGame(){}
當離開當前世界(返回主菜單)時會觸發
7.function entityAddedHook(entity){}
當一個新的實體被添加(包括箭,下落的方塊,點燃的TNT等)時會觸發
entity:被添加的自然實體
8.function entityRemovedHook(entity){}
當一個實體(包括箭,下落的方塊,點燃的TNT等)消失或死亡時會觸發
entity:被移除的實體
9.function deathHook(murderer, victim){}
當一個實體死亡時會觸發
murderer:殺手
victim:被害人
10.function levelEventHook(entity,eventType,x,y,z,data){}
當門(木門,柵欄門,陷阱門)被打開或關閉時會觸發
當羊吃掉草時觸發
睡覺時觸發
entity:動作的實體(觀測數據。總是為0)
eventType:事件類型(觀測數據。開關門數據為1003,羊吃草的數據為2001,睡覺的數據為9800)
x,y,z:被點擊的門方塊的坐標,被吃掉的草方塊的坐標,睡覺時為(0,0,0)
data:未知(觀測數據。關閉為0,打開為1,打開過程中為2(待確認)。檢查大箱子時第二個被放置的箱子數值改變,另一個一直為0)
12.function destroyBlock(x,y,z,side){}
當一個方塊被破壞時會觸發
x,y,z:方塊的坐標
side:方塊被從哪個方向破壞
有人可能注意到後方的()內有一些文字,那些文字叫做「參數」,用於設定條件的插件,這個在下一步會講到。
第三步 設定一個條件:如果和否則
接下來我們選擇一個勾子函數和條件設定....我們設定以下條件好了:
設定讓玩家把苦力怕殺死時在聊天欄顯示「苦力怕被玩家殺死了」
我們需要用到一個勾子函數:
function deathHook(murderer, victim){}
當一個生物實體死亡時會觸發
murderer:殺手
victim:被害人
但「殺手」與「被害人」並非直接填入function deathHook(murderer, victim){}的欄位中,而是另外設定一個條件。
這個設定條件的函數就稱為「if」。
function deathHook(murderer, victim)<---這裡是勾子函數,注意function deathHook(murderer, victim){}後面的{}要先刪掉。
{<---這個是用來分隔函數的
if(murderer==getPlayerEnt()&&victim==33)<---這句等會解釋
{<---再做一次分隔函數
clientMessage("苦力怕被玩家殺死了")<---這句接下來會解釋
}<---}必須集中在插件的最後面,有幾個{就有幾個}
}
這是一個完成的插件。讓我們看到第三句。
if(murderer==getPlayerEnt()&&victim==33)
if()的括號裡面是條件,滿足條件才會執行後面的代碼。
至於後面這個murderer==getPlayerEnt()
前面murderer==是指「當殺手是.....的時候」,==後面要填寫實體ID;而後面的getPlayerEnt()是用來獲取玩家實體ID的函數,雖說玩家的實體ID是0,但是相機的實體ID同樣是0,所以當實體ID輸入0時預設為相機,必須輸入getPlayerEnt()才認為是玩家。
後面這個&&是當你想要「滿足兩個以上條件時」所用來連接兩個條件的符號。
if(murderer==getPlayerEnt()&&victim==33)
意思就是殺手為玩家這個條件還不能滿足這個執行條件,必須滿足後面的「victim==33」才能執行代碼。
這個victim==33意思就是被害人為苦力怕,苦力怕的ID為33。
這邊列出生物的ID一覽表:
getPlayerEnt():玩家
0:相機
10:雞
11:牛
12:豬
13:羊
21:礦車
32:殭屍
33:苦力怕
34:骷髏
35:蜘蛛
36:殭屍豬人
64:掉落的物品
65:點燃的TNT
66:下落的方塊
第三步 顯示文字的函數
既然我們已經訂完條件了,那麼我們來顯示文字吧!
顯示文字的函數有三種:
clientMessage() 用於「將文字顯示於聊天欄位」
print() 用於「將文字顯示於螢幕上」
ModPE.showTipMessage() 用於「將文字顯示於螢幕中央」
我們這裡用clientMessage()做示範,不過實際上這三種函數的使用方法是相同的。
那就是在括號中寫字。注意寫字的時候必須在頭尾兩端加上"
所以說應該要這樣:
clientMessage("苦力怕被玩家殺死了")
或者說,
print("苦力怕被玩家殺死了")
ModPE.showTipMessage("苦力怕被玩家殺死了")
現在我們回頭來看看這個完成的插件:
function deathHook(murderer, victim)
{
if(murderer==getPlayerEnt()&&victim==33)
{
clientMessage("苦力怕被玩家殺死了")
}
}
是不是有比較懂了呢>.0
如果有不懂的可以在下面留言
如果喜歡這個教學的話可以在左下角點個收藏,左上角訂閱淘專輯
隨時訂閱教學文章,隨時追蹤教學動態。
下一集Episode再見囉!
SEE YOU GUYS! BYE,BYE YA!
(今天完美抄襲阿神閉幕XD) |