我正在為 Fivem 編輯一個腳本,并嘗試將多個值存盤到一個變數中,然后使用 if 陳述句查看玩家的庫存中是否有其中一個值。到目前為止我有這個
Config.ItemVapeLiquid = 'liquid', 'liquidice', 'liquidberry'
我遇到的問題是它只在玩家身上有“液體”時運行,當他們沒有時,即使他們有“liquidice”或“liquidberry”,它也會回傳一個 nil 值。我想做的是:
Config.ItemVapeLiquid = 'liquid', 'liquidice', 'liquidberry'
if the player has a value from ItemVapeLiquid then
allow player to add liquid
我希望它在回傳 nil 之前檢查變數中的所有值,因為它似乎正在檢查 1 個值,如果它不在庫存中則回傳 nil
我很感激任何幫助!
uj5u.com熱心網友回復:
在第一行編譯時,它將忽略任何未分配的值 ( 'liquidice', 'liquidberry')。
它需要三個變數:
local a, b, c = 'liquid', 'liquidice', 'liquidberry'
由于這不切實際,您需要一個陣列,以及一個在該陣列中搜索的函式:
Config.ItemVapeLiquid = {'liquid', 'liquidice', 'liquidberry'}
function check(array, value)
for _,v in ipairs(array) do
if v == value then
return true
end
end
return false
end
print(check(Config.ItemVapeLiquid, 'liquid'))
print(check(Config.ItemVapeLiquid, 'liquidice'))
print(check(Config.ItemVapeLiquid, 'liquidberry'))
print(check(Config.ItemVapeLiquid, 'something'))
true
true
true
false
如果您計劃更頻繁地呼叫檢查,請考慮將陣列轉換為集合,因為這樣會快得多:
-- feel free to make an array-to-set function for this
Config.ItemVapeLiquid = {
['liquid'] = true,
['liquidice'] = true,
['liquidberry'] = true
}
print(Config.ItemVapeLiquid['liquid'])
print(Config.ItemVapeLiquid['liquidice'])
print(Config.ItemVapeLiquid['liquidberry'])
print(Config.ItemVapeLiquid['something'])
true
true
true
nil
請注意,缺少的元素現在為 nil,其計算結果為 false,因此通常沒問題。如果您確實需要一個錯誤值,請附加:
Config.ItemVapeLiquid["something"] or false
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494953.html
