時(shí)間:2016-01-30 09:07:57 來(lái)源:當(dāng)游網(wǎng) 作者:當(dāng)游網(wǎng) 編輯:rawsyww 字體大?。?
饑荒中,玩家可以通過(guò)看代碼來(lái)了解自己版本中的最新食譜,而不用等上幾天才能在網(wǎng)上找到最新的食譜。下面,小編就來(lái)分享一下饑荒食譜代碼解析,有興趣的玩家一起來(lái)看看吧。
劣勢(shì)大概有兩個(gè):第一代碼是英文的,看懂大概需要初中英語(yǔ)水平,有些菜的名字要與漢化版對(duì)應(yīng)起來(lái)可能有點(diǎn)難度;第二相比起方便的工具和網(wǎng)頁(yè),代碼并沒(méi)有友好的用戶(hù)界面,略有點(diǎn)枯燥。
找到代碼文件。以SW為例:進(jìn)入游戲安裝文件夾,依次進(jìn)入:data -> DLC0002 -> scripts
食譜相關(guān)代碼文件主要有三個(gè)。首先在其中找到cooking.lua,用記事本打開(kāi)。這里面記錄的是基本食物的度數(shù)屬性。在記事本中搜索“AddIngredientValues”,找到它第一次出現(xiàn)的地方。目前版本大家應(yīng)該都是:
local fruits = {"pomegranate", "dragonfruit", "cave_banana}
AddIngredientValues(fruits, {fruit=1}, true)
從以上這兩行開(kāi)始,直到最后一行AddIngredientValues出現(xiàn)的位置,之間的內(nèi)容都是我們關(guān)心的食物屬性。這兩行的意思是:
定義fruits為石榴(pomegranate)、火龍果(dragonfruit)、香蕉(cave_banana),所有fruits里面的食物都有1的果度(即fruit=1)
例如
AddIngredientValues({"durian}, {fruit=1, monster=1}, true)
這一行是說(shuō),榴蓮(durian)擁有1果度(fruit=1)以及1怪獸度(monster=1)。
以“--”開(kāi)頭的一行代碼是注釋?zhuān)鼈儾挥绊懹螒?,比如?/p>
-- AddIngredientValues({"seeds}, {seed=1}, true)
這一行加了注釋?zhuān)愿螒驘o(wú)關(guān)。從這一行可以看出,制作方本來(lái)想讓種子也能進(jìn)鍋,但是后來(lái)由于某些原因放棄了。
至此就解釋了怎么看cooking.lua文件。這些度數(shù)起何作用,就要看下一個(gè)文件:preparedfoods.lua。
在同樣的位置,我們找到preparedfoods.lua文件,同樣用記事本打開(kāi)。這個(gè)文件就比較明了了,在local foods之后的大括號(hào)里面的,就是我們要的所有菜譜。除了SW的所有新增菜品,還包括原版就有的肉丸等等。
以這道菜為例:butterflymuffin,中文翻譯大概是蝴蝶蛋糕、蝴蝶瑪芬之類(lèi),反正就是有個(gè)蝴蝶的那道菜,這是原版菜之一。
butterflymuffin =
{
test = function(cooker, names, tags) return names.butterflywings and not tags.meat and tags.veggie end,
priority = 1,
weight = 1,
foodtype = "VEGGIE",
health = TUNING.HEALING_MED,
hunger = TUNING.CALORIES_LARGE,
perishtime = TUNING.PERISH_SLOW,
sanity = TUNING.SANITY_TINY,
cooktime = 2,
}
test這行,return后面,end之前的內(nèi)容(names.butterflywings and not tags.meat and tags.veggie)就是就是合成公式。這個(gè)公式是說(shuō):需要蝴蝶翅膀(names.butterflywings)、不能有肉類(lèi)(not tags.meat)、需要有菜類(lèi)(tags.veggie)。每個(gè)and隔開(kāi)兩個(gè)要求,not是說(shuō)不能有,注意not的運(yùn)算優(yōu)先級(jí)要高于and。
后面每一行的解釋:
priority優(yōu)先度,如果食材適用于烹飪兩個(gè)及以上的菜,則選擇優(yōu)先度高的。如果優(yōu)先級(jí)相同,則結(jié)果隨機(jī),每種結(jié)果是等可能的。
weight重量?我并沒(méi)有搞懂,但是只有butterflymuffin有這個(gè)屬性,總之也不是關(guān)注的重點(diǎn)。
foodtype決定烹飪結(jié)果的種類(lèi),應(yīng)該是用來(lái)判斷維京女能不能吃該食物的。
跳過(guò)四行,cooktime決定烹飪時(shí)間。
回到前面,health決定回復(fù)的血量,hunger決定飽食度,perishtime決定腐爛時(shí)間,sanity決定回復(fù)SAN量。然而它們都沒(méi)有明確寫(xiě)出來(lái),這就需要我們找第三個(gè)文件:tuning.lua。
也是在該文件夾,打開(kāi)tuning.lua。
比如我們之前看到health = TUNING.HEALING_MED,這一行,要想知道TUNING.HEALING_MED是多少,這時(shí)候我們就在tuning.lua里面搜索“HEALING_MED”。于是我們搜到這一行:
HEALING_MED = 20,
很明顯butterflymuffin具有補(bǔ)血20點(diǎn)的屬性。下面的SAN值回復(fù)也是類(lèi)似。
而飽食度的表示方法稍微復(fù)雜一些:
搜索CALORIES_LARGE,找到了
CALORIES_LARGE = calories_per_day/2, -- cooked meat
意味著它的飽食度回復(fù)量是calories_per_day的二分之一(記得“--”之后的是注釋?zhuān)挥霉芩?/p>
calories_per_day又是多少?再搜索一下,就找到:
local calories_per_day = 75
這就簡(jiǎn)單了,75/2=37.5,就是飽食度回復(fù)量。
腐爛時(shí)間:
PERISH_SLOW = 15*total_day_time*perish_warp,
也就是15天腐爛,其他的也類(lèi)似。
現(xiàn)在回到preparedfoods.lua,接下來(lái)選取部分菜譜,繼續(xù)解釋公式計(jì)算方法和一些稀有的菜品屬性。蛙腿三明治:
frogglebunwich =
{
test = function(cooker, names, tags) return (names.froglegs or names.froglegs_cooked) and tags.veggie end,
priority = 1,
foodtype = "MEAT",
health = TUNING.HEALING_MED,
hunger = TUNING.CALORIES_LARGE,
perishtime = TUNING.PERISH_SLOW,
sanity = TUNING.SANITY_TINY,
cooktime = 2,
},
這個(gè)的公式里面出現(xiàn)了"or",意味著至少要取生蛙腿(froglegs)或熟蛙腿(froglegs_cooked)中的一個(gè)。整個(gè)公式是說(shuō):有蛙腿(生或熟)且有蔬菜(tags.veggie)。運(yùn)算優(yōu)先級(jí):not > and > or,這里為了先算or,就把or兩邊的東西用括號(hào)括起來(lái)了。
太妃糖:
taffy =
{
test = function(cooker, names, tags) return tags.sweetener and tags.sweetener >= 3 and not tags.meat end,
priority = 10,
foodtype = "VEGGIE",
health = -TUNING.HEALING_SMALL,
hunger = TUNING.CALORIES_SMALL*2,
perishtime = TUNING.PERISH_SLOW,
sanity = TUNING.SANITY_MED,
cooktime = 2,
tags = {"honeyed}
},
這個(gè)公式里面有tags.sweetener >= 3,意味著甜度大于等于3。整個(gè)公式是說(shuō):甜度大于等于3,且不能有肉(not tags.meat)。那么這里就要用到之前cooking.lua里面的數(shù)據(jù)了。在cooking.lua里面搜索sweetener,找到唯一一行:
AddIngredientValues({"honey", "honeycomb}, {sweetener=1}, true)
意味著蜂蜜和蜂房都可以提供1甜度。那么我們就知道,至少需要三個(gè)蜂蜜或蜂房。當(dāng)然,拿蜂房做菜非常的奢侈。
另外要注意太妃糖里面health = -TUNING.HEALING_SMALL,這一行。注意等號(hào)后面的那個(gè)負(fù)號(hào),意味著吃太妃糖要損血,減少的血量是HEALING_SMALL,具體值可以在tuning.lua里面查詢(xún)。
茄子飯/茄子煲/茄子雜燴之類(lèi)的名字:
stuffedeggplant =
{
test = function(cooker, names, tags) return (names.eggplant or names.eggplant_cooked) and tags.veggie and tags.veggie > 1 end,
priority = 1,
foodtype = "VEGGIE",
health = TUNING.HEALING_SMALL,
hunger = TUNING.CALORIES_LARGE,
perishtime = TUNING.PERISH_SLOW,
sanity = TUNING.SANITY_TINY,
temperature = TUNING.HOT_FOOD_BONUS_TEMP,
temperatureduration = TUNING.FOOD_TEMP_BRIEF,
cooktime = 2,
},
這里面出現(xiàn)了稀有的溫度屬性:
temperature = TUNING.HOT_FOOD_BONUS_TEMP,
temperatureduration = TUNING.FOOD_TEMP_BRIEF,
temperature是溫度影響,HOT_FOOD_BONUS_TEMP,可以在tuning.lua里面搜到是40,顯然吃這個(gè)會(huì)讓角色體溫升高。相對(duì)的還有COLD_FOOD_BONUS_TEMP=-40,意思也不用我說(shuō)了吧。
temperatureduration是溫度持續(xù)時(shí)間,可以在tuning.lua里面搜到FOOD_TEMP_BRIEF = 5。當(dāng)然數(shù)值越長(zhǎng),持續(xù)越久。由于沒(méi)有裝顯示體溫的mod,也無(wú)力測(cè)試具體數(shù)值,有興趣的話大家可以自己試試。
魚(yú)排:
fishsticks =
{
test = function(cooker, names, tags) return tags.fish and names.twigs and (tags.inedible and tags.inedible <= 1) end,
priority = 10,
foodtype = "MEAT",
health = TUNING.HEALING_LARGE,
hunger = TUNING.CALORIES_LARGE,
perishtime = TUNING.PERISH_MED,
sanity = TUNING.SANITY_TINY,
cooktime = 2,
tags = {"catfood}
},
公式里面出現(xiàn)了tags.inedible,inedible在這里可以解釋為“不可食度”,唯一具有該度的就是樹(shù)枝(twigs)。tags.inedible and tags.inedible <= 1就是說(shuō)有不可食度大于0,不大于1。整個(gè)公式是說(shuō):有魚(yú)(tags.fish),有樹(shù)枝(names.twigs),且不可食度大于0,不大于1。再簡(jiǎn)單點(diǎn)講就是有魚(yú),有且僅有一個(gè)樹(shù)枝。
下面一條tags = {"catfood},應(yīng)該與RoG DLC中的貓相關(guān)。
SW里面的咖啡:
coffee =
{
test = function(cooker, names, tags) return names.coffeebeans_cooked and (names.coffeebeans_cooked == 4 or (names.coffeebeans_cooked == 3 and (tags.dairy or tags.sweetener))) end,
priority = 30,
foodtype = "VEGGIE",
health = TUNING.HEALING_SMALL,
hunger = TUNING.CALORIES_TINY,
perishtime = TUNING.PERISH_MED,
sanity = -TUNING.SANITY_TINY,
caffeinedelta = TUNING.CAFFEINE_FOOD_BONUS_SPEED,
caffeineduration = TUNING.FOOD_SPEED_LONG,
cooktime = 0.5,
},
相信看到這里的人應(yīng)該能看懂公式了:4個(gè)烤咖啡豆或者3烤咖啡豆加一奶制品或蜂蜜。
下面比較特殊的兩行:
caffeinedelta = TUNING.CAFFEINE_FOOD_BONUS_SPEED,
caffeineduration = TUNING.FOOD_SPEED_LONG,
咖啡的效果在于加速,caffeinedelta為增加的速度量
tuning.lua中有:
CAFFEINE_FOOD_BONUS_SPEED = 5, -- player base speed plus this, 6 is normal walk speed
好心的程序員用注釋告訴我們,普通行走速度為6,喝了咖啡再加5,將近翻倍。
然后持續(xù)時(shí)間caffeineduration = FOOD_SPEED_LONG = total_day_time / 2,喝咖啡加速效果持續(xù)半天。
以上就是饑荒游戲中食譜代碼的解析了,希望對(duì)玩家們有所幫助。
類(lèi)型:動(dòng)作冒險(xiǎn)大?。?span id="9s44ri0" class='colora1'>1.36GB語(yǔ)言:簡(jiǎn)體中文更新:2019-12-08
0