快捷導航

淡绿

內容詳情

[單機] 【插件教室】EP.1 勾子函數、如果與否則、文字函數

柯智懷 Lv.3

2014-4-21 23:08:43 | 只看作者

馬上註冊,結交更多好友,享用更多功能。

您需要 登錄 才可以下載或查看,沒有帳號?立刻註冊

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)

評分

參與人數 1金錠 +10 經驗 +1 技術 +5 幫助 +10 收起 理由
edwinyoo44 + 10 + 1 + 5 + 10 神馬都是浮雲

查看全部評分

我愛MCPE.TW,快跟我一起加入吧^^#

檸檬茶 Lv.13

2014-4-22 00:08:37 | 只看作者
出版得有夠快XD
學習中......
我是愉懶鬼!
回復

使用道具 舉報

Randy嵐帝君 Lv.1

2014-4-22 00:46:50 論壇手機版 | 只看作者
先收藏惹唷~@@

来自:論壇 Android APP
,,,,,
我愛MCPE.TW,快跟我一起加入吧^^#
回復

使用道具 舉報

檸檬茶 Lv.13

2014-4-22 12:44:14 | 只看作者
老師老師~那麼這些方法可以應用在PC版插件上嗎?
另外,沒有開頭的開頭才是王道(呵呵
我是愉懶鬼!
回復

使用道具 舉報

a0932025381 Lv.1

2014-4-22 17:38:01 論壇手機版 | 只看作者
好讚的教學文喔!

来自:論壇 Android APP
,,,,,
我愛MCPE.TW,快跟我一起加入吧^^#
回復

使用道具 舉報

a0932025381 Lv.1

2014-4-22 18:40:18 論壇手機版 | 只看作者
大大這是伺服插件嗎

,,,,,
我愛MCPE.TW,快跟我一起加入吧^^#
回復

使用道具 舉報

柯智懷 Lv.3

 樓主| 2014-4-22 18:50:41 | 只看作者
不是,是單機插件喔
論壇復出達成!!
回復

使用道具 舉報

awe159789 Lv.1

2014-4-22 20:13:25 | 只看作者
小智該不會接下來就是var或for了吧
該會員沒有填寫今日想說內容.
回復

使用道具 舉報

韓luke Lv.3

2014-4-26 22:07:18 論壇手機版 | 只看作者
可以附圖嗎
我愛MCPE.TW,快跟我一起加入吧^^#
回復

使用道具 舉報

awe159789 Lv.1

2014-4-27 03:46:47 | 只看作者
請問你要那裡的圖
該會員沒有填寫今日想說內容.
回復

使用道具 舉報

12下一頁
您需要登錄後才可以回帖 登錄 | 立刻註冊

首頁

討論區

我的

快速回復 返回頂部 返回列表