MODPE

MODPE

MODPE是一種用於攜程版的模組。關於模組的詳情請見:MOD。目前用於的遊戲有 minecraft pe

這種編碼可以在系統自帶的記事本[notepad.exe]上修改。修改非常方便,例如:print("abc") > print("abcd")這樣,進遊戲時的"abc"就改成了"abcd"。

MODPE是需要第三方套用軟體導入運行的,通常使用Zhuowei Zhang的Block Launcher Pro(net.zhuoweizhang.mcpelauncher.pro),ModPE是由Treebl開發,首先在ios平台套用,之後停止更新,後被Zhuowei Zhang移植到安卓平台。

基本介紹

  • 中文名:便攜版Mod
  • 外文名:ModPE
  • 用於:攜程遊戲
  • 主要編寫語言jsphp
  • 需要編寫水平:極低
  • 主要交流平台:minecraftpe吧、mcbbs
  • 模組劃分:遊戲模組
  • 主要編寫程式:記事本、notepad++【推薦!】
  • 作者:Zhuowei Zhang
  • 主要啟動程式:Block Luncher
簡介,MODPE編寫語言介紹,特別注意,常見MODPE實例,歡迎語modpe,騎豬modpe,禁止攻擊modpe,MODPE相關教程,用於mcpe的modpe自定義函式模組集,鉤子(hook)函式,文字顯示函式,獲取坐標函式,實體設定函式,實體生成(spawn)函式,雜項函式,Level函式,Player函式,Entity函式,十一.1.5.5啟動器及以上可用材質函式,

簡介

有些熱愛遊戲的程式編寫高手,會嘗試進行修改遊戲中的部分資料設定,像人物的服裝、外貌、聲音、武器、工具、地圖等等,甚至寫出新的任務劇情,使修改後的遊戲產生大幅的變化,提高了遊戲性和耐玩度。想想看,把遊戲中的人物改為自己,聲音換成你的口頭禪,在你們家的後院裡來一場遊戲大戰,那是一種多么奇特的感覺,這種似乎可望而不可及的情景將通過MOD的威力得以實現。
MODPE拓展了遊戲模組所可以運用的平台,使得攜程版用戶也可以體驗到模組帶來的不一樣的遊戲享受,不過所有的模組都是不被遊戲商所認可的,但是卻處於一種“默認”的環境。相信過不了多久,開發商們將認識到遊戲模組的的魅力所在,從而真心接受遊戲模組,那將是我們所期待的明天。
不過就算是在當代,minecraft和minecraftpe對出現的模組也是持不打擊態度,這也是為什麼MODPE主要用於minecraftepe的原因之一。

MODPE編寫語言介紹

modpe主要用的編寫語言為:javascript和php,在minecraftpe吧和mcbbs都有關於MODPE的版面(貼吧為精品區)。
這兩種編輯語言都是屬於較簡單易學會的編程語言,而不像Java或是CC++那樣的專業程式語言。而且用於制定遊戲的MODPE還將有專屬的自定義模組函式,這將更加方便與編程愛好者的編輯。

特別注意

  1. 在討論MODPE的網站中,我們一般習慣叫用javascript編寫的MODPE為“js”,叫用php編寫的MODPE為“MOD”,請不要混亂。
  2. 在minecraft中預載入請使用:“function selectLevelHook()” 而不是 “funtion newLevel()” [詳見“常用MODPE實例”]

常見MODPE實例

注意:本標題內內容中出現的實例為用於minecraftepe的。

歡迎語modpe

function newLevel()//載入地圖(存檔)時觸發{print("HI!")//浮窗顯示括弧內容}function leaveGame()//退出地圖(存檔)時觸發{print("Seeyou!")//浮窗顯示括弧內容}

騎豬modpe

function attackHook(a,v)//當玩家攻擊時觸發{if(Entity.getEntityTypeId()==12)//如果攻擊實體而且實體ID為12(豬){rideAnimal(a,v);//讓玩家騎到豬身上}}

禁止攻擊modpe

function useItem(z,v){preventDefault();//阻止原來的操作clientMessage("您失去了攻擊能力");//這個clientMessage和print用法不同!} 
載入物品modpe
 function selectLevelHook(){//比newLevel早2-3ticks,物品不會丟失    ModPE.setItem(1600,"sword",4,"§e神劍§b藍寶石",1,1);//裝載神劍藍寶石}
註:本頁所視的MODPE皆為模組大家庭中很簡單的模組,如果想了解更多,請前往相應貼吧或是討論學習。

MODPE相關教程

在百度貼吧 minecraftpe吧和mcbbs有許多教材,請前往查看。

用於mcpe的modpe自定義函式模組集

鉤子(hook)函式

當執行了特定動作時,這些函式會運行並執行其他函式
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:進行了點擊或攻擊動作的mob
victim:被點擊或攻擊的mob
3.function modTick(){}
每刻(1/20s 0.05s)執行一次
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){}
當一個生物mod死亡時會觸發
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,羊吃草的數據為2)
11.function blockEventHook(x,y,z,eventType,data){}
每三秒檢查所有箱子的開關狀態
x,y,z:箱子的坐標
eventType:事件類型(觀測數據為1)
data:未知(觀測數據。關閉為0,打開為1,打開過程中為2(待確認)。檢查大箱子時第二個被放置的箱子數值改變,另一個一直為0)
12.function destroyBlock(x,y,z,side){}
當一個方塊被破壞時會觸發
x,y,z:方塊的坐標
side:方塊被從哪個方向破壞

文字顯示函式

也就是在遊戲中現實文字的函式,也比較常用。
1.print(text);
將數據顯示在浮動視窗里
text可以是非實體變數或被“"”括起來的字元串
如print("text");
2.clientMessage(text);
將數據顯示在聊天框裡
text可以是非實體變數或被"括起來的字元串
如clientMessage("text");

顏色部分:
  1. clientMessage(ChatColor.顏色+text);
    例子:clientMessage(ChatColor.YELLOW + "It's the " + ChatColor.RED + "Red " + ChatColor.GREEN + "Green " + ChatColor.YELLOW + "show!");
    顏色表:BLACK,DARK_BLUE,DARK_GREEN,DARK_AQUA,DARK_RED,DARK_PURPLE,GOLD,GRAY,DARK_GRAY,BLUE,GREEN,AQUA,RED,LIGHT_PURPLE,YELLOW,WHITE
  2. clientMessage("§顏色代碼.文字")
    直接§加上顏色代碼,後面也直接跟文字,這個字元按住“Alt”,然後在小鍵盤上輸入167【注意!小鍵盤!】

獲取坐標函式

即在遊戲中獲取一個坐標,並使用。
1.getPlayerX();getPlayerY();getPlayerZ();
獲取玩家的x,y,z坐標
2.getPlayerEnt();
獲取玩家的實體
3.getYaw(ent);
獲取實體ent的頭部所朝向(左右)的角度值
ent為空時默認為玩家
面向z軸 正方向是時為0±360n,面向x軸負方向時為90±360n
4.getPitch(ent);
獲取實體ent的頭部所朝向(上下)的角度值
ent為空時默認為玩家
面向y軸正方向時為-90,面向y軸負方向時為90
5.getCarriedItem();
獲取玩家手裡正在拿著的物品或方塊的id
6.getTile(x,y,z);
獲取坐標為(x,y,z)的方塊的id

實體設定函式

對某個實體設定某種事件,並將其觸發。
1.setPosition(ent,x,y,z);
將一個實體ent的坐標設定為(x,y,z)
ent:目標實體
x,y,z:目標坐標
2.setPositionRelative(ent,x,y,z);
設定指定實體對於玩家的相對位置
ent:目標實體
x,y,z:相對坐標
3.setRot(ent,yaw,pitch);
將一個實體的頭部方向設為(yaw,pitch)
ent:目標實體
yaw:水平角度
pitch:垂直角度
4.setVelX(ent,velocity);setVelY(ent,velocity);setVelZ(ent,velocity);
將一個實體ent的x/y/z軸速度設為velocity
ent:目標實體
velocity:速度
5.setTile(x,y,z,blockID,damageValue);
將特定的方塊放置
x,y,z:放置的坐標
blockId:放置方塊的id
damageValue:放置方塊的附加值(傷害值)
6.setPlayerHealth(halfHearts);
設定玩家的血量
helfHearts:半心量,20時為滿血,但可以更高(<=255)
7.setNightMode(boolean);
夜晚模式。此函式尚未被證實能正常使用,但存在於源碼中
boolean:布朗值,只能為true或fals

實體生成(spawn)函式

如題,我不多說。
1.spawnCow(x,y,z,"image");spawnChicken(x,y,z,"image");
在特定位置生成一隻牛/雞,並將貼圖換成image
x,y,z:生成mod的坐標
image:在assets資料夾下的圖片路徑
2.spawnPigZombie(x,y,z,heldItemID,"image");
在特定位置生成一隻殭屍豬人,並將貼圖換成image
x,y,z:生成mod的坐標
heldItemID:豬人手裡拿的物品id
image:在assets資料夾下的圖片路徑

雜項函式

一些五花八門的雜項函式。
1.explode(x,y,z,radius);
在坐標為(x,y,z)處引發一場半徑為radius的爆炸
2.rideAnimal(player,target);
讓player騎在target身上
player,target為實體
3.addItemInventory(ID,amount,damageValue);
在背 包里添加amount個id為ID,附加值(傷害值)為damageValue的物品(1)
amount可以為負
4.preventDefault();
阻止原有動作
七.啟動器(BlockLauncher-only)函式
這些函式只能在BlockLauncher啟動器里使用
1.bl_spawnMob(x,y,z,mobID,"image");(停用,請使用Level.spawnMob)
在特定位置生成一個實體,並替換貼圖
x,y,z:指定位置
mobID:實體類別id
image:在assets資料夾下的圖片路徑
2.bl_setMobSkin(mob,"image");
將指定實體的貼圖更換
mob:指定的實體(不是實體類別)
image:在assets資料夾下的圖片路徑

Level函式

Level.explode(x,y,z,radius);
1.在坐標為(x,y,z)處引發一場半徑為radius的爆炸
與explode(x,y,z,radius)相同
2.Level.getTile(x,y,z);
獲取坐標為(x,y,z)的方塊的id
和getTile(x,y,z);相同
3.Level.setTile(x,y,z,blockID);
放置方塊
和setTile(x,y,z,blockID);相同
4.Level.getData(x,y,z);
獲取坐標為(x,y,z)的方塊的傷害值(附加值)
5.Level.getWorldDir();
返回當前世界所在的資料夾的名字
6.Level.getWorldName();
返回當前世界的名字
7.Level.spawnChicken(x,y,z,"image");Level.spawnCow(x,y,z,"image");
在特定位置生成一隻牛/雞,並將貼圖換成image
8.x,y,z:生成mod的坐標
image:在assets資料夾下的圖片路徑
和spawnCow(x,y,z,"image");spawnChicken(x,y,z,"image");相同
9.Level.destroyBlock(x,y,z,shouldDropItem);
破壞一個方塊,擁有正常破壞時的所有特效
x,y,z:方塊坐標
shouldDropItem:是否掉落被破壞的方塊本身。布爾值,只能為true/false
10.Level.dropItem(x,y,z,range,id,count,damage);
從指定坐標掉落方塊
x,y,z:指定坐標
range;掉落的距離
id:掉落物id
count:掉落物數量
damage:掉落物傷害值
11.Level.getAddress();
用途不明。。
返回值是實體。。
12.Level.getChestSlot(x,y,z,slot);
讀取指定箱子指定位置的物品id
x,y,z:箱子坐標
slot:物品位置
13.Level.getChestSlotCount(x,y,z,slot);
讀取指定箱子指定位置的物品數量
x,y,z:箱子坐標
slot:物品位置
14.Level.getChestSlotData(x,y,z,slot);
讀取指定箱子指定位置的物品傷害值(附加值)
x,y,z:箱子坐標
slot:物品位置
15.Level.setChestSlot(x,y,z,slot,id,damage,amount);
向箱子指定位置放置物品
x,y,z:箱子坐標
slot:物品位置
id,damage,amount:物品id,傷害值,數量
16.Level.getGameMode();
獲取遊戲模式。生存為0,創造為1。
Level.setGameMode(mode);
17.設定遊戲模式。生存為0,創造為1。
Level.getTime();
獲取當前時間。0為正午,7200為日落,8280為晚上,13320為日出。
18.Level.setTime(time);
設定時間。0為正午,7200為日落,8280為晚上,13320為日出。
19.Level.getSignText(x,y,z,line);
獲取指定牌子的內容,為空時返回null
x,y,z:牌子的坐標
line:獲取的行數,第一行為0
20.Level.setSignText(x,y,z,line,"text");
設定指定牌子的內容
x,y,z:牌子的坐標
line:設定的行數,第一行為0
text:內容。必須是字元串
21.Level.playSound(x,y,z,sound,volume,pitch);
播放聲音
x,y,z:指定坐標
sound:MCPE中的聲音
volume:音量
pitch:角度,用途不明
22.Level.playSoundEnt(ent,sound,volume,pitch);
ent:自然實體
sound:MCPE中的聲音
volume:音量
pitch:角度,用途不明
23.Level.setNightMode(boolean);
夜晚模式。此函式尚未被證實能正常使用,但存在於源碼中
boolean:布朗值,只能為true或false
與setNightMode(boolean)相同
24.Level.setSpawn(x,y,z);
設定復活點
25.Level.setTile(x,y,z,blockID);
將特定的方塊放置
x,y,z:放置的坐標
blockId:放置方塊的id
和setTile(x,y,z,blockID)相同

Player函式

1.Player.addItemInventory(ID,amount,damage);
在 背包里添加amount個id為ID,附加值(傷害值)為damageValue的物品
amount可以為負
和addItemInventory(ID,amount,damage)相同
2.Player.clearInventorySlot(slot);
清除背包里指定位置的物品
slot:物品在背包的位置
3.Player.getInventorySlot(slot);
獲取背包里指定位置的物品id
slot:物品在背包的位置
4.Player.getInventorySlotCount(slot);
獲取背包里指定位置的物品數量
slot:物品在背包的位置
5.Player.getInventorySlotData(slot);
獲取背包里指定位置的物品傷害值(附加值)
slot:物品在背包的位置
6.Player.getSelectedSlotId();
獲取被選中的物品欄的id(slot)
7.Player.getArmorSlot(slot);
獲取身上的指定裝備id
slot:裝備位置
8.Player.getArmorSlotDamage(slot);
獲取身上指定裝備的傷害值(耐久)
slot:裝備位置
9.Player.setArmorSlot(slot,id,damage);
設定身上的裝備
slot:裝備的位置
id:裝備id
damage:裝備傷害值(附加值)
10.Player.getCarriedItem();
獲取玩家手裡正在拿著的物品或方塊的id
和getCarriedItem()相同
11.Player.getCarriedItemCount();
獲取玩家手裡正在拿著的物品或方塊的數量
12.Player.getCarriedItemData();
獲取玩家手裡正在拿著的物品或方塊的傷害值(附加值)
13.Player.getEntity();
獲取玩家的實體
和getPlayerEnt()相同
14.Player.getX();Player.getY();Player.getZ();
獲取玩家的x,y,z坐標
和getPlayerX();getPlayerY();getPlayerZ();相同
15.Player.setHealth(health);
設定玩家生命
health:半心量,20時為滿血,但可以更高(<=255)
和setPlayerHealth(halfHearts)相同

Entity函式

1.Entity.setFireTicks(ent,time);
使實體燃燒
ent:自然實體
time:燃燒時間,單位為秒
2.Entity.getAnimalAge(ent);
獲取動物年齡
ent:動物實體
取值為-24000到0,玩家一直為0
3.Entity.setAnimalAge(ent,age);
設定動物年齡
ent:動物實體
age:動物年齡(-24000(幼年)到0(成年))
對敵對生物和玩家無效
4.Entity.getEntityTypeId(ent);
返回實體種類id
5.Entity.getYaw(ent);
獲取實體ent的頭部所朝向(左右)的角度值
ent為空時默認為玩家
面向z軸正方向 是時為0±360n,面向x軸負方向時為90±360n
和getYaw(ent)相同
6.Entity.getPitch(ent);
獲取實體ent的頭部所朝向(上下)的角度值
ent為空時默認為玩家
面向y軸正方向時為-90,面向y軸負方向時為90
和getPitch(ent)相同
7.Entity.setRot(ent,yaw,pitch);
將一個實體的頭部方向設為(yaw,pitch)
ent:目標實體
yaw:水平角度
pitch:垂直角度
與setRot(ent,yaw,pitch);相同
8.Entity.remove(ent);
移除實體。如果玩家實體被移除,玩家將不可見且不可移動
ent:自然實體
9.Entity.rideAnimal(player,target);
讓player騎在target身上
10.player,target為實體
和rideAnimal(player,target)相同
11.Entity.getHealth(ent);
獲取實體生命
ent:生物實體
12.Entity.setHealth(ent,health);
設定實體生命
ent:生物實體
health:半心量,20時為滿血,但可以更高(<=255)
13.Entity.setCarriedItem(ent,ID,int,DamageValue);
ent:實體。只能是玩家,殭屍豬人,小白(skeletons)
ID:物品id
int:未知值。數字
DamageValue:物品傷害值(附加值)
Entity.setSneaking(ent,boolean);
Entity.getX(ent);Entity.getY(ent);Entity.getZ(ent);
獲取實體坐標
ent:自然實體
Entity.setPosition(ent,x,y,z);
將一個實體ent的坐標設定為(x,y,z)
ent:目標實體
x,y,z:目標坐標
和setPosition(ent,x,y,z);相同
14.Entity.setPositionRelative(ent,x,y,z);
設定指定實體對於玩家的相對位置
ent:目標實體
x,y,z:相對坐標
和setPositionRelative(ent,x,y,z);相同
15.Entity.setVelX(ent,vel);Entity.setVelY(ent,vel);Entity.setVelZ(ent,vel);
將一個實體ent的x/y/z軸速度設為vel
ent:目標實體
vel:速度
與setVelX(ent,vel);setVelY(ent,vel);setVelZ(ent,vel);相同
16.Entity.spawnMob(x,y,z,mobID,"image");(停用,請使用Level.spawnMob)
在特定位置生成一個實體,並替換貼圖
x,y,z:指定位置
mobID:實體類別id
image:在assets資料夾下的圖片路徑
與bl_spawnMob(x,y,z,mobID,"image");相同
17.Entity.setMobSkin(mob,"image");
將指定實體的貼圖更換
mob:指定的實體(不是實體類別)
image:在assets資料夾下的圖片路徑
與bl_setMobSkin(mob,"image");相同
18.Entity.setRenderType(ent,type);
用不同的模型來偽裝實體
ent:自然實體
type:模型種類(0.no idea 1.no override 2.點燃的TNT 3.玩家 4.掉落的物品 5.??? 6.雞 7.牛 8.豬 9.羊 10.??? 11.殭屍 12.小白(骷髏) 13.蜘蛛 14.苦力怕(jj怪)(替換困難,有機率失敗) 15.射出的箭 16.玩家(因為沒有名字標籤,遊戲會崩潰) 17.扔出的雞蛋 18.扔出的雪球 19.掛畫(遊戲崩潰) 20.正在掉下落的方塊)
實體id:
10:雞
11:牛
12:豬
13:羊
32:殭屍
33:苦力怕(jj怪)
34:骷髏(小白)
35:蜘蛛
36:殭屍豬人
64:掉落的物品
65:點燃的TNT
66:下落的方塊

十一.1.5.5啟動器及以上可用材質函式

  1. Block.defineBlock(blockId,name,[textures/*六面材質*/],0/*材料源id*/,true/*透明*/, int renderType/*未知*/)
    2.Block.setShape(blockId,x1,y1,z1,x2,y2,z2)//形狀
    3.Block.setDestroyTime(id,time);
    4.Block.setExplosionResistance(id,res)//爆炸阻力,未實現
    5.Block.setLightLevel(id,level);
    6.Block.setColor(id,[color/*數組*/]);
    7.Block.setStepSound(blockId,sourceId);//未實現
    8.Block.defineBlock(blockId,name,[1,2,3,4,5,6/*六面材質,右上角為0*/],0/*材料源id*/,true/*透明*/, renderType)
    renderType
    0 標準
    1 花
    2 火把
    3 火
    4 流體
    6 作物
    7 門
    8 台階
    10 樓梯
    11 柵欄
    13 仙人掌
    14 床
    18 玻璃板
    19 植物的莖
    21 柵欄門

相關詞條

熱門詞條

聯絡我們