我試圖爲特定的遊戲製作模組時遇到了一些問題。你可能聽說過它,它被稱爲不要餓死在一起。訪問或更改一個局部變量,它在一個函數內部,在它之外?
在遊戲的數據內部,有一個名爲tuning.lua的文件,它處理很多初始變量。它內部只是一個函數,其中有一些局部變量和一個名爲TUNING的表/數組/列表,其中包含一堆全局變量。函數I下面的局部變量不能訪問,因爲它們是局部變量,但我不能在那裏更改任何變量,因爲它們是局部變量。
所以,相反,我正在從一個完全不同的文件中進行工作,這個文件在我的mod中稱爲modmain.lua。所以,我的問題是,我如何從tuning.lua腳本中的函數獲取一個局部變量,並在modmain.lua中更改/使用它?下面是tuning.lua代碼片段:
TUNING = {} -- the table is created
function Tune(overrides)
if overrides == nil then
overrides = {}
end
--the following are the local variables used in the game
local seg_time = 30
local total_day_time = seg_time*16
local day_segs = 10
local dusk_segs = 4
local night_segs = 2
--default day composition. changes in winter, etc
local day_time = seg_time * day_segs
local dusk_time = seg_time * dusk_segs
local night_time = seg_time * night_segs
local multiplayer_attack_modifier = 1
local multiplayer_goldentool_modifier = 1
local multiplayer_armor_durability_modifier = 0.7
local multiplayer_armor_absorption_modifier = 1
local multiplayer_wildlife_respawn_modifier = 1
local wilson_attack = 34 * multiplayer_attack_modifier
local wilson_health = 150
local calories_per_day = 75
local wilson_attack_period = .1
-----------------------
local perish_warp = 1--/200
TUNING =
{
--global variables go here
}
end
因此,可以說,我想total_day_time採取和modmain.lua內將其更改爲24。我需要寫什麼代碼才能這樣做?或者這是不可能的?基本上,我試圖增加遊戲中的細分數量(以及延長細分時間),這似乎是它從中訪問的唯一地方。在那裏有一個mod可以增加分段時間,但是沒有增加分段數量的mod。 Here's segments that I'm talking about, in case you have no idea.
這是,我不能編輯tuning.lua。就像在這裏,它是代碼,這是原始遊戲的一部分,我不能編輯或取出任何東西。我所能做的就是創建新文件,它們覆蓋它們或覆蓋它們的特定部分,無論是函數還是變量。如果我編輯其中的任何內容,那麼對於任何不編輯特定原始遊戲文件的人來說,該模式將不起作用,並且當遊戲更新時,一切都會被覆蓋,這將非常不方便。 – XirmiX