【Barotrauma 代碼解說系列 # 1】XML標籤與屬性逐行講解 - 左輪手槍(revolver)

更新於 發佈於 閱讀時間約 23 分鐘
  • 檔案位置 Barotrauma\Content\Items\Weapons\weapons.xm
  • Ctrl + F 搜尋 revolver,跳到左輪手槍的代碼。
<Item
name=""
identifier="revolver"
category="Weapon"
cargocontaineridentifier="metalcrate"
tags="smallitem,weapon,gun,pistolitem,provocativetohumanai,gunsmith,mountableweapon"
Scale="0.5"
impactsoundtag="impact_metal_light"> 

<Item>標籤的屬性有name、identifier、category、cargocontaineridentifier、tags、Scale、impactsoundtag,說明如下:

<Item>

name,畫面顯示的名字,""留空用於多語言翻譯,<entityname.revolver></entityname.revolver>,描述用<entitydescription.revolver></entitydescription.revolver>。

raw-image

按下Alt顯示可互動物件名稱(name)。

identifier,遊戲識別的物品ID,唯一。

category,類別,影響商人、編輯器歸類,Weapon類別。

cargocontaineridentifier,購買後用甚麼箱子送到潛艇上,metalcrate是金屬箱子。

tags,標籤可自訂,provocativetohumanai會挑釁AI,mountableweapon可掛上武器架。

Scale,Sprite圖片縮放。

impactsoundtag,掉落或撞擊聲。

<PreferredContainer
secondary="outpostsecarmcab"
amount="1"
spawnprobability="0.5" />

<PreferredContainer
secondary="wrecksecarmcab,abandonedsecarmcab,piratesecarmcab"
amount="1"
spawnprobability="0.25" />

<PreferredContainer
primary="secarmcab"
secondary="armcab,weaponholder" />

<PreferredContainer>標籤的屬性有secondary、amount、spawnprobability、primary,說明如下:

<PreferredContainer>

secondary,次要生成、自動放置位置。

  • outpostsecarmcab前哨站保全室的保險鋼櫃。
  • wrecksecarmcab沈船保全室的保險鋼櫃。
  • abandonedsecarmcab廢棄站點保全室的保險鋼櫃。
  • piratesecarmcab海盜保全室的保險鋼櫃。
  • armcab自己船上保全室的鋼櫃。
  • weaponholder自己船上的武器架。

amount,生成數量,預設是1。

spawnprobability,生成機率,每個櫃子分開算,預設是1。

primary,主要生成、自動放置位置。

  • secarmcab自己船上保全室的保險鋼櫃。
<Price baseprice="150">
<Price storeidentifier="merchantoutpost" sold="false"
multiplier="1.5" />
<Price storeidentifier="merchantcity" multiplier="1.25"
sold="false" minavailable="1" />
<Price storeidentifier="merchantresearch" sold="false"
multiplier="1.25" />
<Price storeidentifier="merchantmilitary" multiplier="0.9"
minavailable="3" />
<Price storeidentifier="merchantmine" sold="false"
multiplier="1.25" />
<Price storeidentifier="merchantarmory" multiplier="0.9"
minavailable="3" />
</Price>

<Price>標籤的屬性有baseprice,子標籤<Price>的屬性有storeidentifier、sold、minavailable,說明如下:

<Price>

baseprice,基礎價格。

<Price>

storeidentifier,商人ID。

merchantoutpost,一般的前哨站的商人。

merchantcity,城市群落的商人。

merchantresearch,研究所的商人。

merchantmilitary,軍事衛所的商人。

merchantmine,礦業的前哨站的商人。

merchantarmory,軍械庫的商人。

sold,有沒有賣。

minavailable,最低庫存,0是無庫存不能買。

<Deconstruct time="10">
<Item identifier="steel" />
<Item identifier="plastic" />
</Deconstruct>

<Deconstruct>標籤的屬性有baseprice,子標籤<Item>的屬性有identifier,說明如下:

<Deconstruct>

time,分解所需的時間(秒)。

<Item>

identifier,分解後得到的材料,steel鐵,plastic塑膠,數量預設是1。

<Fabricate
suitablefabricators="fabricator"
requiredtime="35"
requiresrecipe="true">
<RequiredSkill identifier="weapons" level="35" />
<RequiredItem identifier="steel" amount="2" />
<RequiredItem identifier="plastic" />
</Fabricate>

<Fabricate>標籤的屬性有baseprice,子標籤<RequiredSkill>的屬性有identifier、level,子標籤<RequiredItem>的屬性有identifier、amount,說明如下:

<Fabricate>

suitablefabricators,可以製作的設備,總共有四個:加工台、醫療加工台、解構儀、自動售貨機。

requiredtime,製作時間(秒)。

requiresrecipe,是否需要先學會配方,否則不會出現在製作列表中。

<RequiredSkill>

identifier,需要技能武器操作,其他技能駕駛水準、電器工程、機械工程、醫療水準。

level,需要武器操作技能等級35。

<RequiredItem>

amount,材料數量。

<InventoryIcon
texture="Content/Items/InventoryIconAtlas.png"
sourcerect="128,64,64,64"
origin="0.5,0.5" />
<Sprite
texture="Content/Items/Weapons/weapons_new.png"
sourcerect="0,418,76,41"
depth="0.55"
origin="0.5,0.5" />
<Body
width="72"
height="40"
density="25" />

<InventoryIcon>標籤的屬性有texture、sourcerect、origin,<Sprite>標籤的屬性有texture、sourcerect、depth、origin,<Body>標籤的屬性有width、height、density,說明如下:

<InventoryIcon>

texture,欄位圖示路徑。

sourcerect(x,y,w,h),擷取框,左上角為原點,右下方為第一象限。

origin(x,y),按圖片比例設置錨點(0~1)。

<Sprite>

texture,場景上顯示的圖示路徑。

sourcerect,擷取框。

depth,深度,0~1數字越大疊越下面。

origin,設置錨點。

<Body>

width,設置碰撞框的矩形寬。

height,設置碰撞框的矩形高。

density,密度,影響動量、漂浮等物理系統。

<Holdable
slots="Any,RightHand,LeftHand"
controlpose="true"
aimpos="70,5"
handle1="-25,-7"
msg="ItemMsgPickUpSelect" />

<Holdable>標籤的屬性有slots、controlpose、aimpos、handle1、msg,說明如下:

<Holdable>

slots,持有欄位,any為下方10格物品欄,只有any會無法裝備在手上,RightHand,LeftHand是左右手都可,雙持一個物品是RightHand+LeftHand。

controlpose,是否影響姿勢。

aimpos,瞄準時手掌的位置,相對於肩膀。

handle1,瞄準時手掌1的位置,handle2是手掌2的位置。

msg,物品在地上互動時顯示的文字,ItemMsgPickUpSelect是撿起。

raw-image


<RangedWeapon
barrelpos="29,11"
spread="0.1"
unskilledspread="6"
combatPriority="70"
drawhudwhenequipped="true"
crosshairscale="0.2"
reload="0.5"
DualWieldReloadTimePenaltyMultiplier="1.75"
DualWieldAccuracyPenalty="8">    

<RangedWeapon>標籤的屬性有barrelpos、spread、unskilledspread、combatPriority、drawhudwhenequipped、crosshairscale、reload、DualWieldReloadTimePenaltyMultiplier、DualWieldAccuracyPenalty,說明如下:

<RangedWeapon>

barrelpos,槍管位置,子彈射出原點。

spread,擃散度或準確度,0.1是準。

unskilledspread,技能未達需求的擃散度。

combatPriority,戰鬥優先度,AI拿取順序。

drawhudwhenequipped,是否裝備時顯示HUD。

crosshairscale,準心大小。

reload,重新裝填時間(秒)。

DualWieldReloadTimePenaltyMultiplier,雙持左輪重新裝填逞罰倍率。

DualWieldAccuracyPenalty,雙持左輪擃散度逞罰。

<Crosshair
texture="Content/Items/Weapons/Crosshairs.png"
sourcerect="0,256,256,256" />
<CrosshairPointer
texture="Content/Items/Weapons/Crosshairs.png"
sourcerect="256,256,256,256" />

<Crosshair>標籤的屬性有texture、sourcerect,<CrosshairPointer>標籤的屬性有texture、sourcerect,說明如下:

<Crosshair>

texture,準心圖示路徑。

sourcerect,擷取框。

<CrosshairPointer>

texture,游標圖示路徑。

sourcerect,擷取框。

raw-image



<Sound
file="Content/Items/Weapons/Revolver1.ogg"
type="OnUse"
range="3000"
selectionmode="Random" />
<Sound
file="Content/Items/Weapons/Revolver2.ogg"
type="OnUse"
range="3000" />
<Sound
file="Content/Items/Weapons/Revolver3.ogg"
type="OnUse"
range="3000" />      

<Sound>標籤的屬性有file、type、range、selectionmode,說明如下:

<Sound>

file,音效路徑。

type,觸發條件,OnUse開槍時。

range,聲音距離。

selectionmode,播放模式,Random隨機播放3選1。

<ParticleEmitter
particle="muzzleflash"
particleamount="1"
velocitymin="0"
velocitymax="0" />

<ParticleEmitter>標籤的屬性有particle、particleamount、velocitymin,velocitymax,說明如下:

<ParticleEmitter>

particle,粒子類型,muzzleflash槍口閃光。

particleamount,數量粒子。

velocitymin,粒子最低速度。

velocitymax,粒子最高速度。

raw-image


<StatusEffect type="OnUse" target="This">
  <Explosion
range="150.0"
force="1.5"
shockwave="false"
smoke="false"
flames="false"
sparks="false"
underwaterbubble="false"
camerashake="6.0" />
  <ParticleEmitter
particle="casingfirearm"
particleamount="1"
anglemin="90"
anglemax="150"
velocitymin="50"
velocitymax="250"
CopyEntityAngle="true" />
</StatusEffect>

<StatusEffect>標籤的屬性有type、target,<Explosion>標籤的屬性有range、force、shockwave、smoke、flames、sparks、underwaterbubble、camerashake,<ParticleEmitter>標籤的屬性有particle、particleamount、anglemin、anglemax、velocitymin、velocitymax、CopyEntityAngle,說明如下:

<StatusEffect>

type,觸發時機,OnUse開槍時。

target,作用目標對象,This左輪。

<Explosion>

range,範圍。

force,力道。

shockwave,是否衝擊波。

smoke,是否煙。

flames,是否火焰。

sparks,是否火花。

underwaterbubble,是否水中泡泡。

camerashake,鏡頭晃動。

<ParticleEmitter>

particle,類型,casingfirearm武器射線。

particleamount,數量。

anglemin,最小角度,0度方向未知。

anglemax,最大角度。

velocitymin,最低速度。

velocitymax,最大速度。

CopyEntityAngle,表示粒子發射的角度會參考目標物件左輪(entity)的旋轉角度,也就是說,發射方向會根據物件的方向來調整。

raw-image


<RequiredItems
items="revolverammo"
type="Contained"
msg="ItemMsgAmmoRequired" />
<RequiredSkill identifier="weapons" level="40" />

<RequiredItems>標籤的屬性有items、type、msg,<RequiredSkill>標籤的屬性有identifier、level,說明如下:

<RequiredItems>

items,需要revolverammo子彈。

type,狀態,Contained子彈要放在左輪裡。

msg,沒有放入需求物品的訊息。ItemMsgAmmoRequired彈藥耗盡。

raw-image
raw-image

<RequiredSkill>

identifier,需求技能。

level,需求技能等級。

<ItemContainer
capacity="1"
maxstacksize="6"
hideitems="true"
containedstateindicatorstyle="bullet">
<SlotIcon
slotindex="0"
texture="Content/UI/StatusMonitorUI.png"
sourcerect="256,448,64,64"
origin="0.5,0.5" />
<Containable items="revolverammo" />
</ItemContainer>

<ItemContainer>標籤的屬性有capacity、maxstacksize、hideitems、containedstateindicatorstyle,<SlotIcon>標籤的屬性有slotindex、texture、sourcerect、origin,<Containable>標籤的屬性有items,說明如下:

<ItemContainer>

capacity,欄位/格子數量。

maxstacksize,子彈最多堆疊數量。

hideitems,在場景中隱藏子彈圖示(Sprite)。

containedstateindicatorstyle,內容物標示,手槍底下子彈形狀的圖示,潛水服是氧氣罐圖示。

raw-image

<SlotIcon>

slotindex,第n格欄位。

texture,第n格欄位背景底圖圖示,bullet紅色子彈圖示,原圖是白色的圖示(開黑暗模式才看得到)。

raw-image
raw-image

sourcerect,圖示擷取框。

origin,設置圖示錨點。

<Containable>

items,只能放入某物品ID,revolverammo左輪子彈。

<aitarget sightrange="2000" soundrange="5000" fadeouttime="5" />

<aitarget>標籤的屬性有sightrange、soundrange、fadeouttime,說明如下:

<aitarget>

sightrange,左輪被AI警戒的視覺距離。

soundrange,左輪被AI警戒的聽覺距離。

fadeouttime,左輪被AI忘掉的時間,例如收槍後不會一直警戒。

<Quality>
    <QualityStat stattype="FirepowerMultiplier" value="0.1" />
</Quality>

<Quality>標籤的屬性有,<QualityStat>標籤的屬性有stattype、value,說明如下:

<Quality>

<QualityStat>

stattype,品質狀態類型,火力倍率。

value,倍率,0.1是提升10%。

<Upgrade gameversion="0.10.0.0" scale="0.5" />
<SkillRequirementHint identifier="weapons" level="40" />

<Upgrade>標籤的屬性有gameversion、scale,<SkillRequirementHint>標籤的屬性有identifier、level,說明如下:

<Upgrade>

gameversion,遊戲版本。

scale,每次升級提升數值,0.5是50%。(待確認)

<SkillRequirementHint>

identifier,技能需求提示。

level,技能需求等級。

raw-image

編輯器設定

raw-image


raw-image


raw-image






留言
avatar-img
留言分享你的想法!
avatar-img
映嶙的沙龍
0會員
5內容數
學習隨筆
映嶙的沙龍的其他內容
2025/06/08
在開發 Barotrauma 模組時,維持 Lua 腳本與 XML 配置整齊不易。特別是新手,很容易在複雜的縮排與標籤中迷失。這篇教學將教你如何設定 VS Code,在每次儲存檔案時自動整理 Lua / XML / JSON 結構,讓你專注邏輯,不再煩惱排版。
2025/06/08
在開發 Barotrauma 模組時,維持 Lua 腳本與 XML 配置整齊不易。特別是新手,很容易在複雜的縮排與標籤中迷失。這篇教學將教你如何設定 VS Code,在每次儲存檔案時自動整理 Lua / XML / JSON 結構,讓你專注邏輯,不再煩惱排版。
2025/06/01
2025/06/01
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
Thumbnail
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
註解 & Print & 變數型態
Thumbnail
註解 & Print & 變數型態
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
Thumbnail
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
Thumbnail
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
到存放虛擬機的磁碟處\點選想要註冊的機器\註冊機器(登錄虛擬機器)
Thumbnail
到存放虛擬機的磁碟處\點選想要註冊的機器\註冊機器(登錄虛擬機器)
Thumbnail
最近有專案需求要在 Web 上進行一個掃描條碼辨識的動作,做了一些功課,有 Open Source 方案跟商業解決方案,整理起來分享給大家。
Thumbnail
最近有專案需求要在 Web 上進行一個掃描條碼辨識的動作,做了一些功課,有 Open Source 方案跟商業解決方案,整理起來分享給大家。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News