【攻略】想製作地圖但不會寫程序?沒關係!您也能使用lua設備方塊!

大家好 我是misk。
相信有很多接觸studio的玩家都有看過這個方塊,但卻不知道這個方塊的用途,
而這個方塊是什麼呢?就是函數調用Script方塊(這邊簡稱為藍lua)。
這邊先說明這顆方塊的用處。
這個方塊能在遊戲中調用lua函數,舉一個比較貼近生活的例子,今天您想跟一位朋友聊天,但是你們身處在不同地點,這時候就需要電話,而電話就是藍lua,也就是負責連接你(遊戲)跟朋友(lua)的橋樑。有的時候你需要使用藍lua來達成一般設備方塊做不到的事情,例如重置設備方塊。

但我就是不會寫程序阿,怎麼辦?沒關係,本人寫了一些比較實用的指令讓大家使用,讓大家也能在不會寫程序的情況下,使用藍lua達成重置設備方塊,更改玩家金錢、血量等功能。

首先介紹一下藍lua方塊的介面。

按E打開藍lua方塊介面,應該會是這個樣子。
(上面是指令名稱,下方是要設置的參數。)
接下來,您需要複製以下代碼到Game.lua中。
(如果不知道Game.lua的文件位置,請參考這篇。

function pos_transform(str)

    — x座標
    locate = string.find(str, “,”, 1)
    x = string.sub(str, 1, locate – 1)
    str = string.gsub(str, x .. “,”, “”, 1)
    x = math.floor(x)

    — y座標
    locate = string.find(str, “,”, 1)
    y = string.sub(str, 1, locate – 1)
    str = string.gsub(str, y .. “,”, “”, 1)
    y = math.floor(y)

    — z座標
    z = math.floor(str)

    return {x = x, y = y, z = z}
end

— 重置設備方塊
function Reset(onoff, position)
    if onoff == false then
        return
    end
    EntityBlock = Game.EntityBlock:Create(pos_transform(position))
    EntityBlock:Event({action = “reset”})
end
— 發送玩家位置
function Convey(onoff, position)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end

    player.position = pos_transform(position)
end
— 增加玩家金幣
function Add_coin(onoff, coin)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end
    
    player.coin = player.coin + math.floor(coin)
end
— 更改玩家金幣
function Change_coin(onoff, coin)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end
    
    player.coin = math.floor(coin)
end
— 更改玩家最大血量
function Change_maxhealth(onoff, maxhealth)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end
    
    player.maxhealth = math.floor(maxhealth)
end
— 增加玩家最大血量
function Add_maxhealth(onoff, maxhealth)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end
    
    player.maxhealth = player.maxhealth + math.floor(maxhealth)
end
— 更改玩家血量
function Change_health(onoff, health)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end
    
    player.health = math.floor(health)
end
— 增加玩家血量
function Add_health(onoff, health)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end
    
    player.health = player.health + math.floor(health)
end
— 更改玩家最大護甲
function Change_maxarmor(onoff, maxarmor)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end
    
    player.maxarmor = math.floor(maxarmor)
end
— 增加玩家最大護甲
function Add_maxarmor(onoff, maxarmor)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end
    
    player.maxarmor = player.maxarmor + math.floor(maxarmor)
end
— 更改玩家護甲
function Change_armor(onoff, armor)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end
    
    player.armor = math.floor(armor)
end
— 更改玩家護甲
function Add_armor(onoff, armor)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end
    
    player.armor = player.armor + math.floor(armor)
end

— 殺死玩家
function Kill(onoff)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end

    player:Kill()
end

— 移除武器
function Remove_weapon(onoff)
    if onoff == false then
        return
    end

    if Game.GetTriggerEntity() ~= nil then
        player = Game.GetTriggerEntity():ToPlayer()
    else
        return
    end

    player:RemoveWeapon()
end

— 所有玩家復活
function Allplayer_spawn(onoff)
    if onoff == false then
        return
    end
    Game.Rule:Respawn()
end

而指令有那些呢?我寫了一些自製指令列在下方。
Reset    
重置一個設備方塊(參數為位置,詳細在下方說明)。
Convey        
將玩家發送(參數為位置,詳細在下方說明)。
Add_coin
增加玩家金幣(參數為金幣數量(整數))。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。
Change_coin
更改玩家金幣(參數為金幣數量(整數))。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。
Add_maxhealth
增加玩家最大血量(參數為血量(整數))。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。
Change_maxhealth
更改玩家最大血量(參數為血量(整數))。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。
Add_health         
增加玩家血量(參數為血量(整數))。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。
Change_health
更改玩家血量(參數為血量(整數))。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。
Add_maxarmor
增加玩家最大護甲(參數為護甲量(整數))。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。

Change_maxarmor
更改玩家最大護甲(參數為護甲量(整數))。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。

Add_armor
增加玩家護甲(參數為護甲量(整數))。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。

Change_armor
更改玩家護甲(參數為護甲量(整數))。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。

Kill   
殺死玩家(不須填入參數)。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。

Remove_weapon 
移除玩家武器(不須填入參數)。
注意:若使用該指令,設備方塊與藍lua之間不得有任何邏輯方塊,例如and, or等。

Allplayer_spawn 
讓所有玩家復活(不須填入參數)。

*位置參數
如果位置為(x = 0, y = 0, z = 0),參數就填0,0,0
同樣的,如果位置為(x = -80, y = 100, z = 0),參數就填-80,100,0
下方圖片為舉例(重置一個位置為(x = -80, y = 100, z = 0)的設備方塊):
*不允許中間接上邏輯方塊的指令
有些指令不允許中間有邏輯方塊,下方說明正確的連接方式。
正確(中間無連接邏輯方塊)
錯誤(中間連接了邏輯方塊)
也就是說,設備方塊下一個連接點必須是藍lua,另外標靶,怪物目標方塊等設備也無法使用於這類指令,因為這些設備方塊並未由玩家直接操作。

目前想到了這些指令,如果有新的想法會增加上去,另外如果有問題或是想法也可以提出來,謝謝大家觀看,祝大家聖誕節快樂!

本文來自網路,不代表3樓貓立場,轉載請註明出處:https://www.3loumao.org/8061.html?variant=zh-tw
返回頂部