模板:Infobox/doc
更多語言
更多操作
簡介
此模板({{Infobox}})是用於展示遊戲中各類物品核心信息的標準化信息框。其主要目的在於統一所有物品頁面的視覺風格,並作為一個信息中心,集中展示物品最關鍵的數據。
此模板不僅用於信息展示,更集成了多種高級功能,是本維基數據化管理體系的基石。
- 自動化數據計算與展示:模板能夠根據輸入的物品基礎售價,自動計算並展示不同職業技能加成下的價格,以及加工成工匠物品後的複雜價格體系。
- 語義化數據存儲:模板在頁面加載時,會使用
{{#set}}解析器函數將各個參數信息儲存為語義屬性。這使得物品數據可以在整個維基中被查詢和調用,為自動生成列表、數據分析等高級應用提供了支持。 - 上下文感知顯示:模板的顯示內容會根據物品類型動態調整。例如,對於農作物、動物製品或可覓食的礦物,其售價部分會展示完全不同的結構,以適應遊戲內複雜的經濟系統。
由於此模板是維基上物品數據的「唯一真實來源」(Single Source of Truth),因此,準確填寫模板參數至關重要。您在單個頁面上輸入的數據,將直接影響到其他依賴這些數據的自動生成頁面(例如,按季節分類的農作物列表、按來源分類的物品列表等)的準確性。
用法
將以下代碼複製到物品頁面的最上方,並填寫相應參數。
{{Infobox
|name =
|eng =
|description =
|source =
|sellprice =
|edibility =
|quality =
|season =
|growth =
|ingredients =
|recipe =
}}
參數詳解
以下是本模板所有可用參數的詳細列表。
| 參數 | 說明 | 示例 | 備註 |
|---|---|---|---|
name
|
物品的中文名稱。 | name=咖啡豆 | 可選。如果留空,將自動使用當前頁面的標題({{PAGENAME}})。當物品名稱與頁面標題不同時(例如頁面為「垃圾(物品)」而物品名為「垃圾」)應使用此參數。
|
eng
|
物品的圖片名稱。 | eng=Coffee Bean | 核心參數。圖標會使用 eng 參數,例如左側的例子會使得 Infobox 直接引用 Coffee Bean.png。此參數是模板內部邏輯判斷的關鍵,用於觸發不同的售價計算模式。請務必準確填寫。 |
English
|
物品的實際英文名稱。 | English=Coffee Bean | 當物品英文名稱與使用的圖片不同時,才需要使用此參數進行覆蓋。 |
id
|
物品在遊戲數據中的數字ID。 | id=433 | 一般情況下會自動獲取,無法自動獲取時需要采手動填寫。用於高級數據連結和查詢。該 ID 會被儲存在一個臨時變量中,並顯示在信息框底部的「高級」區域內。 |
description
|
物品在遊戲中的描述文本。 | description=在春季和夏季種植。在小桶里放五顆咖啡豆可以製作咖啡。 | 可選。如果留空,模板會嘗試通過 {{Description}} 模板獲取描述。為了更好地集中管理數據,建議優先更新 Description 模塊下的數據,而不是直接在此填寫。
|
image2image3image4image5
|
用於展示額外的物品圖片,例如物品的不同狀態。 | image2=Tea Stage 2 | 只需填寫文件名(不含File:和擴展名)。默認圖片格式為.png。
|
image2spacing
|
控制第一張和第二張圖片之間的間距。 | image2spacing=true | 設為true時,會在兩張圖片間增加額外空格。
|
ext
|
主圖片的文件擴展名。 | ext=gif | 僅在主圖片不是.png格式時使用。 |
source
|
物品的獲取來源。 | source=[[旅行货车]] • [[灰尘精灵]]掉落 | 建議使用連結指向具體頁面。 |
location
|
物品所在的地點。 | location=[[矿井]] | |
seed
|
對應的種子信息。 | seed=[[上古种子]] | |
growth
|
農作物的生長所需時間。 | growth=28 天 | |
buff
|
食用後獲得的增益效果。 | buff={{Name|Farming|link=耕种|+4}} | 可以配合 {{Name}} 模板使用。
|
buffduration
|
增益效果的持續時間。 | buffduration=335 | 模板會自動調用 {{duration}} 模板來格式化時間顯示。
|
season
|
物品出現的季節。 | season=春季 • 夏季 | 模板會嘗試使用 {{Season}} 模板來添加圖標(只有單個季節時生效)。
|
weather
|
物品出現所需的天氣。 | weather=晴天 | 模板會嘗試使用 {{Weather inline}} 模板來添加圖標(只有單個天氣時生效)。
|
xp
|
獲取該物品時獲得的經驗值。 | xp=7 | |
edibility
|
可食用性,用於計算並顯示物品的能量和生命值恢復量。 | edibility=30 | 填寫一個數值,模板將通過 {{EdibilityGrid}} 模板展示不同品質下的恢復量。對於不可食用的物品,請填寫 -300 或 不可食用。此數據可在遊戲文件 Data\ObjectInformation.xnb 中找到。或在遊戲中通過无品质食物的能量回复值/2.5經過四捨五入得到。
|
quality
|
控制售價和恢復量是否顯示品質等級。 | quality=normal | 默認為顯示所有品質(普通、銀星、金星、銥星)。設為 normal 或 false 時,將只顯示普通品質的價格或恢復量。對於某些工匠物品,此參數還會影響其售價的顯示方式。
|
sellprice
|
物品的基礎售價。 | sellprice=550 | 核心參數。此參數的值不僅用於顯示,更是觸發複雜售價計算的開關。對於不可出售的物品,可填寫不可出售或N/A。此數據可在遊戲文件 Data\ObjectInformation.xnb 中找到。
|
color
|
用於某些特定工匠物品(如果醬、醃菜、果酒、果乾等)的顏色變種。 | color=Yellow | 顏色名稱必須對應一個有效的圖標文件,例如小麥加工的醃菜是黃色的,此參數會影響製成品圖標的顯示。 |
ingredients
|
打造該物品所需的材料。 | ingredients={{name|木材|50}}{{name|硬木|5}} | 填寫此參數會自動生成「打造」或「工匠物品」部分。 |
recipe
|
配方的來源。 | recipe=[[罗宾]]的商店 ({{price|2000}}) | |
craftingstation
|
製作該物品所需的處理設備。 | craftingstation=[[熔炉]] | |
crafttime
|
製作該物品所需的處理時間。 | crafttime=120 | 以分鐘為單位。模板會自動調用 {{duration}} 模板來格式化時間顯示。
|
tingredients
|
擁有「捕獵者」專業時,打造所需的不同材料。 | tingredients={{name|铜锭|1}}{{name|树液|25}} | 這是一個非常特殊的參數,僅用於顯示「捕獵者」技能對蟹籠配方的改變。 |
produces
|
打造或加工的產物。 | produces={{name|蜂房|1}} |
使用實例
以下通過三個不同類型的物品,展示模板的強大功能和靈活性。
實例一:簡單的採集品(山洞胡蘿蔔)
此示例展示了模板的基礎功能,用於信息相對簡單的物品。
代碼:
{{Infobox
|name = 山洞胡萝卜
|eng = Cave Carrot
|description = 一种生长在山洞里的淀粉植物。能让矿工们继续探索。
|source = [[山洞]] • [[垃圾桶]]
|sellprice = 25
|edibility = 30
}}
效果分析:
- 基本信息:正確顯示了名稱、描述、來源等。
- 恢復量:由於填寫了
edibility,模板自動調用{{EdibilityGrid}}生成了包含所有品質的能量/生命值恢復表格。 - 售出價格:由於
eng = Cave Carrot在模板的{{#switch}}邏輯中屬於一個特定分支,它會顯示一個基礎售價,並在下方自動生成一個「製成品售出價格」的表格,列出其加工為果汁和醃菜的價格,並同時顯示有無「工匠」職業加成(+40%)的對比。這體現了模板的智能性,即便是簡單的覓食,也會提示其在工匠體系中的潛力。
實例二:具有複雜加工鏈的農作物(上古水果)
此示例展示了模板在處理高價值農作物及其工匠產品時的自動計算能力。
代碼:
{{Infobox
|name = 上古水果
|eng = Ancient Fruit
|description = 沉睡了亿万年后,它又重见天日了。
|source = [[上古种子]]
|sellprice = 550
|edibility = 0
|growth = 28天
}}
效果分析:
- 售出價格:
eng = Ancient Fruit是{{#switch}}邏輯中的一個關鍵分支。模板會生成一個複雜的售價結構:- 第一層表格:顯示上古水果本身的售出價格。此表格包含兩列:「基礎售價」和擁有「農耕人」職業(+10%)的售價,並展示所有品質等級的價格。
- 第二層表格:在下方生成一個「製成品售出價格」的內嵌表格。此表格展示了將上古水果加工為果酒(Wine)、果醬(Jelly)和風乾的上古水果(Dried Fruit)後的價格。
- 製成品價格細節:製成品表格同樣包含兩列:「基礎售價」和擁有「工匠」職業(+40%)的售價,清晰地對比了加工前後的巨大經濟收益以及職業加成的影響。
這個例子完美地展示了模板如何將遊戲內複雜的經濟學計算自動化,為玩家提供直觀的決策依據。
實例三:具有多重職業加成的動物製品(大瓶牛奶)
此示例展示了模板處理最複雜邏輯的能力,即當一個物品及其加工品受到不同職業技能影響時的情景。
代碼:
{{Infobox
|name = 大瓶牛奶
|eng = Large Milk
|description = 一大瓶新鲜的牛奶。
|source = [[牛]]
|sellprice = 190
|edibility = 19
}}
效果分析:
- 售出價格:
eng = Large Milk觸發了模板中一段專門編寫的、高度定製化的代碼。- 大瓶牛奶本身:首先,模板會生成一個表格,顯示大瓶牛奶的售價。此表格包含「基礎售價」和受「畜牧人」職業(+20%)加成的售價。
- 製成品(奶酪):接下來,模板會生成一個「製成品售出價格」表格,用於展示由大瓶牛奶製成的奶酪(Cheese)的價格。
- 三重價格對比:這個奶酪價格表格是模板邏輯的巔峰體現。它包含三列:基礎售價、受「畜牧人」職業(+20%)加成的售價、以及受「工匠」職業(+40%)加成的售價。
- 內置的遊戲理解:模板能夠做到這一點,是因為其內部邏輯被硬編碼寫入了遊戲的一條特殊規則:由動物製品加工而來的工匠物品(如奶酪),其售價同時受到「畜牧人」和「工匠」兩個職業的影響,但這兩個加成並不疊加,玩家需二選一。模板通過並排展示三列價格,將這一複雜且關鍵的遊戲機制直觀地呈現給用戶,而無需編輯者手動計算或添加任何說明。
技術性細節
本部分為高級用戶和模板開發者提供,旨在深入解析 {{Infobox}} 模板的內部工作原理。
5.1. 執行流程與數據處理
模板的執行遵循一個清晰的、從數據捕獲到最終渲染的流程。
- 語義屬性賦值 (
{{#set}}):模板代碼的第一部分是一個{{#set:... }}解析器函數。當模板被加載時,它會立即讀取所有傳入的參數(如|Name=...,|Sellprice=...等),並將它們設置為頁面的語義屬性。這一步是維基結構化數據的核心,它將每個物品頁面變成了一個資料庫條目,使得數據可以被{{#ask}}等查詢函數在全站範圍內調用,極大地增強了維基的自動化能力。 - 變量定義 (
{{#vardefine}}):緊接著,模板使用{{#vardefine:item_id|...}}將物品的ID(通過id參數或{{ID}}模板獲得)存儲在一個名為item_id的變量中。這個變量的作用域是當前頁面,它會在稍後被調用,以在信息框的「高級」部分顯示物品ID,避免了重複傳遞參數的需要。 - HTML & CSS 結構:模板的主體是一個使用wikitable語法構建的HTML表格。表格的各個部分被賦予了特定的CSS ID,如
infoboxborder,infoboxtable,infoboxheader,infoboxsection,infoboxdetail。這些ID確保了全維基所有信息框的樣式統一,便於通過通用的CSS進行維護和美化。
5.2. 核心邏輯解析:#switch 條件分支
模板的「大腦」是一個龐大的 {{#switch:... }} 結構,它完全控制著「售出價格」這一行的顯示方式。
- 控制變量:
switch的判斷依據是{{lc:{{{eng|}}}}}}。選擇使用物品的小寫英文名作為判斷鍵(key)是一個非常穩健的設計決策。它不受頁面語言(中文名)的影響,並且通過lc:(lowercase)函數排除了大小寫錯誤,確保了邏輯判斷的穩定性和可維護性。 - 邏輯分組:
switch內的眾多case語句可以按其處理邏輯分為以下幾類:- A組:基礎職業加成:
- 例子:
copper bar,maple syrup,duck feather。 - 邏輯:這些分支會生成一個簡單的兩列表格,分別展示物品的「基礎售價」和對應專業(如鐵匠、萃取者、畜牧人)的加成售價。
- 例子:
- B組:農作物/覓食與工匠產品鏈:
- 例子:
ancient fruit,dandelion,hops。 - 邏輯:這些分支會生成兩個嵌套的表格。第一個表格展示物品本身的售價(通常受「農耕人」影響),第二個表格展示其加工為工匠物品(如果酒、果醬、醃菜、啤酒等)後的售價,並與「工匠」職業的加成價格進行對比。
- 例子:
- C組:動物製品與複雜工匠鏈:
- 例子:
large milk,wool,egg。 - 邏輯:這是最複雜的分支。如「實例三」所述,它會為製成品(如奶酪)生成一個包含三列(基礎、畜牧人加成、工匠加成)的價格表,以處理遊戲內獨特的、重疊的職業加成規則。
- 例子:
- D組:特殊物品與獨特乘數:
- 例子:
blackberry,spring onion,dinosaur egg。 - 邏輯:這些分支處理遊戲中的特殊增益效果。例如,對於黑莓,它會顯示一個與「熊的知識」(售價×3)對比的表格;對於春蔥,則是與「青蔥技術」(售價×5)的對比。這些乘數被直接硬編碼在模板中。
- 例子:
- E組:工匠物品本身:
- 例子:
cheese,wine,pale ale。 - 邏輯:當被描述的物品本身就是工匠物品時,模板會生成一個簡化的表格,只顯示其「基礎售價」和受「工匠」職業加成的售價。
- 例子:
#default默認分支:- 邏輯:任何英文名沒有在
case中被明確列出的物品,都會進入#default分支。這個分支提供了一個通用的價格顯示方案,通常是調用{{Qualityprice}}模板來展示所有品質的價格。這使得模板能夠優雅地處理任何新添加的或簡單的物品,而不會產生錯誤,保證了其向後兼容性和通用性。
- 邏輯:任何英文名沒有在
- A組:基礎職業加成:
5.3. 默認值與回退機制
為了提升易用性和容錯性,模板內建了複雜的回退(fallback)機制。
- 簡單回退(
name):參數name的代碼是{{{name|{{PAGENAME}}}}}。其邏輯是:「檢查是否提供了|name=參數。如果提供了,則使用其值;如果沒有提供,則自動使用當前頁面的標題{{PAGENAME}}作為值。」 - 複雜回退鏈(
eng):核心參數eng的獲取邏輯更為複雜和穩健:{{{English|{{{eng|{{English|{{{name|{{PAGENAME}}}}}}}}}}}}}。其執行優先級如下:
- 首先,檢查是否存在
|English=參數。 - 如果不存在,則檢查是否存在其別名
|eng=參數。 - 如果兩者都不存在,它會嘗試調用一個名為
{{English}}的輔助模板,並將當前物品的中文名(通過name參數或頁面標題獲得)傳遞給它,期望這個輔助模板能返回對應的英文名。
- 首先,檢查是否存在
這個多層回退鏈確保了作為核心邏輯鑰匙的英文名能夠被儘可能地獲取到,大大降低了因編輯者遺漏或錯誤填寫參數而導致模板顯示不正確或功能失效的風險。
5.4. 數據校驗與錯誤處理
模板巧妙地運用了解析器函數來處理不同類型的輸入,避免了因數據類型不匹配而產生的錯誤信息。
- 核心構造:
{{#iferror:{{#expr:... }}}}:在處理sellprice和edibility這兩個預期為數字的參數時,模板使用了{{#iferror}}和{{#expr}}的組合來進行數據校驗。這是一個非顯而易見但極為重要的設計,它使得同一個參數可以同時接受數字和文本。 - 工作原理拆解:以
sellprice為例,其內部通過兩個隱藏參數Sellprice和Sellprice2來處理該邏輯。簡化後的邏輯是{{#iferror: {{#expr:{{{sellprice|}}}}} | {{{sellprice|}}} | ''执行数字计算'' }}。
{{#expr:... }}是MediaWiki的數學計算函數。如果給它的輸入是數字(如100),它會成功返回這個數字。但如果輸入是文本(如不可出售),它會計算失敗並返回一個錯誤。{{#iferror:... }}的作用就是捕獲這個錯誤。它的語法是{{#iferror: <要检查的表达式> | <如果出错则显示此内容> | <如果未出错则显示此内容>}}。- 場景A(輸入為數字):當編輯者輸入
|sellprice=550時,{{#expr:550}}成功執行。因此,#iferror會執行它的第三部分,即調用{{Qualityprice}}等模板進行複雜的價格計算。 - 場景B(輸入為文本):當編輯者輸入
|sellprice=不可出售時,{{#expr:不可出售}}執行失敗並拋出錯誤。#iferror捕獲到這個錯誤,轉而執行它的第二部分,即直接輸出{{{sellprice|}}}的原始值,也就是將文本「不可出售」原樣顯示在頁面上。
通過這個優雅的機制,模板實現了對參數的智能判斷,使得編輯者可以直觀地輸入「不可出售」而不用擔心破壞頁面布局,同時也保證了當輸入為有效數字時,所有複雜的自動化計算都能順利進行。