當前位置:菜譜大全網 - 菜譜 - 饑荒食譜代碼分析

饑荒食譜代碼分析

饑荒期間,玩家可以通過閱讀代碼了解自己版本的最新食譜,而不是等幾天才能在網上找到最新的食譜。下面,我們來分享壹下深空饑荒食譜的代碼分析。有興趣的玩家來看看吧。

大概有兩個缺點:第壹個代碼是英文的,大概需要初中英語水平才能看懂,有些菜品對應中文版可能有點困難;與方便的工具和網頁相比,代碼沒有友好的用戶界面,有點枯燥。

找到代碼文件。以SW為例:進入遊戲安裝文件夾,然後輸入:data-DLC0002-scripts。

有三個與配方相關的主要代碼文件。先在裏面找到cooking.lua,用記事本打開。這裏記錄的是基礎食物的程度屬性。在記事本中搜索“AddIngredientValues”,找到它第壹次出現的地方。目前,每個人都應該:

土特產水果= {石榴,火龍果,山洞_香蕉}

AddIngredientValues(水果,{fruit=1},true)

從上面兩行到最後壹行AddIngredientValues出現的位置,這兩行之間的內容就是我們關心的食物屬性。這兩條線的意思是:

水果定義為石榴、火龍果、香蕉(cave_banana),水果中所有食物的果度為1(即水果=1)。

例如

AddIngredientValues({durian},{fruit=1,monster=1},true)

這壹行說榴蓮有1果度(水果=1)和1怪物度(怪物=1)。

以“-”開頭的壹行代碼是註釋,不影響遊戲,比如:

- AddIngredientValues({seeds},{seed=1},true)

這壹行是有註釋的,所以與遊戲無關。從這句臺詞可以看出,制作方原本是想讓種子入鍋的,後來因為壹些原因放棄了。

這解釋了如何讀取文件。這些學位做什麽取決於下壹個文檔:preparedfoods.lua。

在同壹個位置,我們找到了preparedfoods.lua文件,同樣用記事本打開。這個文件是比較明確的,本地食物後面的大括號裏是我們要的所有食譜。除了SW的所有新菜,還包括肉丸等等。

以這道菜為例:butterflymuffin,中文翻譯大概是蝴蝶蛋糕,蝴蝶松餅之類的,反正就是帶蝴蝶的那道菜,算是原菜之壹。

蝴蝶松餅=

{

test = function(cooker,names,tags)返回names . butterfly wings and not tags . meat and tags . vegie end,

優先級= 1,

重量= 1,

foodtype = VEGGIE,

健康=調諧。HEALING_MED,

饑餓=調諧。卡路裏_大,

perishtime =調整。滅亡_緩慢,

健全=調整。理智_微小,

烹飪時間= 2,

}

在測試行中,返回之後和結束之前的內容(名稱。蝴蝶翅膀而不是標簽。肉和標簽。veggie)是組成公式。這個公式的意思是:需要蝴蝶翅膀,不需要肉(不是tags.meat)和蔬菜(tags.veggie)。每個和都由兩個要求分隔。沒有並不意味著不可能有。請註意,Not的操作優先級高於and。

以下各行的解釋:

優先級優先級,如果食材適合做兩個以上的菜,選擇優先級高的那壹個。如果優先級相同,則結果是隨機的,每個結果都有相同的可能性。

體重體重?不懂,但只有butterflymuffin有這個屬性,總之不是關註的焦點。

食物類型決定了烹飪結果的種類,這應該用來判斷維京女人是否可以吃這種食物。

跳過四行,cooktime決定烹飪時間。

回到前面,健康決定恢復血量,饑餓決定飽腹,死亡決定衰變時間,理智決定恢復SAN量。但是沒有寫清楚,這就需要我們找到第三個文件:tuning.lua。

同樣在這個文件夾中,打開tuning.lua。

例如,我們看到了health = TUNING行。HEALING_MED之前。如果我們想知道。HEALING_MED是,我們此時會在tuning.lua中搜索“HEALING_MED”。所以我們找到了這條線:

HEALING_MED = 20,

很明顯butterflymuffin有補血20分的特性。以下SAN值回復類似。

飽腹感的表現稍微復雜壹些:

搜卡路裏_大,我找到了。

卡路裏_大=卡路裏_每天/2,-熟肉

說明它的飽腹感恢復是卡路裏_per_day的壹半(記住“-”後面是評論,不用管它)。

每天的卡路裏是多少?再次搜索,妳會發現:

當地每日卡路裏= 75

這個很簡單,75/2=37.5,就是飽腹感恢復。

衰變時間:

滅亡_緩慢= 15 *總_日_時*滅亡_經,

那就是15天的衰變,其他的也差不多。

現在回到preparedfoods.lua,然後選取壹些菜譜繼續講解公式計算方法和壹些稀有菜品屬性。

青蛙腿三明治:

frogglebunwich =

{

test = function(cooker,names,tags) return (names.froglegs或names.froglegs_cooked)和tags.veggie end,

優先級= 1,

食物類型=肉,

健康=調諧。HEALING_MED,

饑餓=調諧。卡路裏_大,

perishtime =調整。滅亡_緩慢,

健全=調整。理智_微小,

烹飪時間= 2,

},

這個公式中有壹個或,表示至少要吃生蛙腿或熟蛙腿中的壹種。整個配方就是有青蛙腿(生的或者熟的)和蔬菜(tags.veggie)。運算優先級:notandor,這裏為了先算or,or兩邊的東西都用括號括起來了。