Модификации:Оружие: различия между версиями

Материал из Stardew Valley Wiki
Перейти к навигации Перейти к поиску
(category + en link)
Строка 1: Строка 1:
 
← [[Модификации:Индекс|Индекс]]
 
← [[Модификации:Индекс|Индекс]]
{{Переведите}}
+
 
This page explains how the game stores and parses weapon data. This is an advanced guide for mod developers.
+
На этой странице объясняется, как игра хранит и анализирует данные об оружии. Это расширенное руководство для разработчиков модов.
  
 
==Источник==
 
==Источник==
Weapon sprites are in <tt>TileSheets\Weapons.xnb</tt>, and weapon data (parsed by the <tt>MeleeWeapon</tt> constructor) is in <tt>Data\Weapons.xnb</tt>. The files can be [[Modding:Editing XNB files#unpacking|unpacked for editing]]. Here's the raw data as of {{version|1.5.1}} for reference:
+
Спрайты оружия находятся в <tt>TileSheets\Weapons.xnb</tt>, могут быть [[Модификации:Редактирование_XNB_файлов#Редактирование распакованных данных|извлечены для редактирования]]. Вот исходные данные по состоянию на {{version|1.5.1}} для примера:
  
{{collapse|Data|content=<syntaxhighlight lang="json">
+
{{collapse|Данные|content=<syntaxhighlight lang="json">
 
{
 
{
 
   "0": "Rusty Sword/A rusty, dull old sword./2/5/1/0/0/0/3/-1/-1/0/.02/3",
 
   "0": "Rusty Sword/A rusty, dull old sword./2/5/1/0/0/0/3/-1/-1/0/.02/3",
Строка 76: Строка 76:
 
</syntaxhighlight>}}
 
</syntaxhighlight>}}
  
==Format==
+
==Формат==
===Melee weapons===
+
===Оружие ближнего боя===
The weapon data in <tt>Data\Weapons.xnb</tt> contains fifteen fields for melee weapons:
+
Данные об оружии в <tt>Data\Weapons.xnb</tt> содержит пятнадцать полей для оружия ближнего боя:
 
308/0/0/4/-1/-1/0/.02/3
 
308/0/0/4/-1/-1/0/.02/3
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! index
+
! Индекс
! example value
+
! Пример значения
! description
+
! Описание
 
|-
 
|-
 
| 0
 
| 0
 
| ''Bone Sword''
 
| ''Bone Sword''
| name
+
| Наименование
 
|-
 
|-
 
| 1
 
| 1
 
| ''A very light piece of sharpened bone.''
 
| ''A very light piece of sharpened bone.''
| description
+
| Описание
 
|-
 
|-
 
| 2
 
| 2
 
| ''20''
 
| ''20''
| minimum damage ouput
+
| Минимальный урон
 
|-
 
|-
 
| 3
 
| 3
 
| ''30''
 
| ''30''
| maximum damage output
+
| Максимальный урон
 
|-
 
|-
 
| 4
 
| 4
 
| ''.8''
 
| ''.8''
| knockback (weight) - determines how far the target will get pushed away when hit
+
| Отбрасывание ([[Вес]]) - определяет, как далеко цель будет отброшена при попадании
 
|-
 
|-
 
| 5
 
| 5
 
| ''8''
 
| ''8''
| speed - determines how fast the user can attack
+
| [[Скорость]] - определяет, как быстро персонаж может атаковать
 
|-
 
|-
 
| 6
 
| 6
 
| ''5''
 
| ''5''
| added precision - decreases the chance that a strike will cause no damage
+
| Точность - уменьшает вероятность того, что персонаж промахнётся
 
|-
 
|-
 
| 7
 
| 7
 
| ''0''
 
| ''0''
| added defense - affects how much damage the user takes
+
| [[Защита]] - влияет на то, сколько урона получает персонаж
 
|-
 
|-
 
| 8
 
| 8
 
| ''0''
 
| ''0''
| type ("0" for stabbing sword, "1" for dagger, "2" for club/hammer, "3" for slashing sword, "4" for slingshot)
+
| Тип ("0" - колющий меч, "1" - кинжал, "2" - дубина/молот, "3" - рубящий меч, "4" - рогатка)
 
|-
 
|-
 
| 9
 
| 9
 
| ''74''
 
| ''74''
| The base mine level which affects the probability of [[#Mine container drops|mine container drops]].
+
| Базовый уровень шахты, влияет на вероятность [[#Выпадение из шахтовых сундуков|выпадения из шахтовых сундуков]].
 
|-
 
|-
 
| 10
 
| 10
 
| ''50''
 
| ''50''
| The minimum mine level for [[#Mine container drops|mine container drops]].
+
| Минимальный уровень шахты, влияет на вероятность [[#Выпадение из шахтовых сундуков|выпадения из шахтовых сундуков]].
 
|-
 
|-
 
| 11
 
| 11
 
| ''0''
 
| ''0''
| added area of effect
+
| Область действия
 
|-
 
|-
 
| 12
 
| 12
 
| ''.02''
 
| ''.02''
| critical chance
+
| [[Шанс_крит._удара|Шанс критического удара]]
 
|-
 
|-
 
| 13
 
| 13
 
| ''3''
 
| ''3''
| critical multiplier
+
| [[Сила_крит._удара|Сила критического удара]]
 
|-
 
|-
 
| 14
 
| 14
 
|  
 
|  
| display name (non-English files only)
+
| Отображаемое имя (только для файлов не на английском языке)
 
|}
 
|}
  
Weapons have a hardcoded category of -98 (<tt>Object.weaponCategory</tt>).
+
Оружие имеет жестко закодированную категорию -98 (<tt>Object.weaponCategory</tt>).
  
===Slingshot===
+
===Рогатка===
The [[slingshot]] has initial ID 32 in the weapon data, which increases by one for each upgrade level (up to 34 in the weapon data, though only 32 and 33 are obtainable without mods). All [[#Melee weapons|weapon fields]] must be specified in the weapon data to avoid errors, but only these are actually used for slingshots:
+
[[Рогатка]] имеет начальный ID 32 в данных об оружии, который увеличивается на единицу для каждого уровня обновления (до 34 в данных об оружии, хотя только 32 и 33 доступны без модов). Все [[#Оружие ближнего боя|поля]] необходимо указать в данных об оружии, чтобы избежать ошибок, но только эти фактически используются для рогаток:
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! index
+
! Индекс
! example value
+
! Пример значения
! description
+
! Описание
 
|-
 
|-
 
| 0
 
| 0
 
| ''Master Slingshot''
 
| ''Master Slingshot''
| name
+
| Имя
 
|-
 
|-
 
| 1
 
| 1
 
| ''Requires stones for ammo.''
 
| ''Requires stones for ammo.''
| description
+
| Описание
 
|-
 
|-
 
| 9
 
| 9
 
| ''74''
 
| ''74''
| The base mine level which affects the probability of [[#Mine container drops|mine container drops]].
+
| Базовый уровень шахты, влияет на вероятность [[#Выпадение из шахтовых сундуков|выпадения из шахтовых сундуков]].
 
|-
 
|-
 
| 10
 
| 10
 
| ''50''
 
| ''50''
| The minimum mine level for [[#Mine container drops|mine container drops]].
+
| Минимальный уровень шахты, влияет на вероятность [[#Выпадение из шахтовых сундуков|выпадения из шахтовых сундуков]].
 
|-
 
|-
 
| 14
 
| 14
 
|  
 
|  
| display name (non-English files only)
+
| Отображаемое имя (только файлы не на английском языке)
 
|}
 
|}
  
Slingshot damage is [[Slingshot#Ammunition|calculated dynamically]] regardless of the weapon data.
+
Урон от рогатки [[Рогатка#Снаряды|рассчитывается динамически]] независимо от данных об оружии.
  
==Mine container drops==
+
==Выпадение из шахтовых сундуков==
When the player breaks a container in [[The Mines|the mines]], there's a chance it will drop a weapon. Here's how the weapon to drop is chosen<ref>See <tt>Utility.getUncommonItemForThisMineLevel</tt> in the game code.</ref>:
+
Когда игрок разбивает сундуки в [[Шахта|шахте]], есть шанс, что сундука выпадет оружие. Вот как выбирается оружие<ref>Смотри <tt>Utility.getUncommonItemForThisMineLevel</tt> в коде игры.</ref>:
  
 
<ol>
 
<ol>
<li>Match weapons whose minimum mine level ([[#Format|field 10]]) is less than the current mine level.</li>
+
<li>Сопоставьте оружие с минимальным уровнем шахты ([[#Формат|поле 10]]) меньше, чем текущий уровень шахты.</li>
<li>From that list, match weapons with a probability check based on the gap between the base mine level ([[#Format|field 9]]) and current mine level. The probability is a bell curve centered on the base mine level:
+
<li>Из этого списка сопоставьте оружие с проверкой вероятности, основанной на разрыве между базовым и текущим уровнями шахты ([[#Формат|поле 9]]). Вероятность представляет собой колоколообразную кривую с центром на базовом уровне шахты:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! level difference
+
! Разница в уровнях
! probability
+
! Вероятность
 
|-
 
|-
 
| 0
 
| 0
Строка 210: Строка 210:
 
| 4%
 
| 4%
 
|}
 
|}
The difference applies in both directions; for example, two weapons whose base levels are 5 below and 5 above the current level both have a 92% chance. (The probability is calculated with a [[wikipedia:Gaussian function|Gaussian function]] <code>e<sup>-(current mine level - base mine level)<sup>2</sup> / (2 * 12<sup>2</sup>)</sup></code>.)</li>
+
Разница применима в обоих направлениях; например, два оружия, базовые уровни которых на 5 ниже и на 5 выше текущего уровня, имеют вероятность 92%. (Вероятность рассчитывается с помощью [[https://ru.wikipedia.org/wiki/Гауссова_функция|Гауссовой функции]] <code>e<sup>-(current mine level - base mine level)<sup>2</sup> / (2 * 12<sup>2</sup>)</sup></code>.)</li>
<li>Find the weapon with the smallest gap between the current and base mine levels, and add it to the list. (If the item was also selected in step 2, it has two chances to drop.)</li>
+
<li>Найдите оружие с наименьшим разрывом между текущим и базовым уровнями шахты и добавьте его в список. (Если элемент также был выбран на шаге 2, у него есть двойной шанс на выпадение.)</li>
<li>From the remaining list of weapons, randomly choose one to drop.</li>
+
<li>Из оставшегося списка оружия случайным образом выберите одно, которое должно выпасть.</li>
 
</ol>
 
</ol>
  
==References==
+
==Ссылки==
 
<references />
 
<references />
  

Версия 11:31, 13 сентября 2021

Индекс

На этой странице объясняется, как игра хранит и анализирует данные об оружии. Это расширенное руководство для разработчиков модов.

Источник

Спрайты оружия находятся в TileSheets\Weapons.xnb, могут быть извлечены для редактирования. Вот исходные данные по состоянию на 1.5.1 для примера:

Данные 
{
  "0": "Rusty Sword/A rusty, dull old sword./2/5/1/0/0/0/3/-1/-1/0/.02/3",
  "1": "Silver Saber/Plated with silver to deter rust./8/15/1/0/1/1/0/50/45/0/.02/3",
  "2": "Dark Sword/It's glowing with vampire energy./30/45/1.5/-10/0/0/0/-1/-1/2/.04/3",
  "3": "Holy Blade/It feels hopeful to wield./18/24/1.2/0/5/0/3/-1/-1/0/.02/3",
  "4": "Galaxy Sword/It's unlike anything you've ever seen./60/80/1/8/0/0/0/-1/-1/0/.02/3",
  "5": "Bone Sword/A very light piece of sharpened bone./20/30/.8/8/5/0/0/74/50/0/.02/3",
  "6": "Iron Edge/A heavy broadsword./12/25/1.2/-4/0/1/3/44/-1/0/.02/3",
  "7": "Templar's Blade/It once belonged to an honorable knight./22/29/1/0/10/1/3/90/50/0/0/3",
  "8": "Obsidian Edge/It's incredibly sharp./30/45/1/-2/0/0/0/121/100/0/.02/3.2",
  "9": "Lava Katana/A powerful blade forged in a pool of churning lava./55/64/1.2/0/0/3/0/-1/-1/2/.015/3.5",
  "10": "Claymore/It's really heavy./20/32/1.3/-8/0/2/3/86/50/0/.02/3",
  "11": "Steel Smallsword/A standard metal blade./4/8/1/4/0/0/0/26/-1/0/.02/3",
  "12": "Wooden Blade/Not bad for a piece of carved wood./3/7/1/0/0/0/0/3/-1/0/.02/3",
  "13": "Insect Head/Not very pleasant to wield./10/20/1/4/9/0/0/-1/-1/0/.04/3",
  "14": "Neptune's Glaive/An heirloom from beyond the Gem Sea./18/35/1.4/-2/6/2/3/-1/-1/0/.02/3",
  "15": "Forest Sword/Made powerful by forest magic./8/18/1/4/5/1/0/-1/-1/0/.02/3",
  "16": "Carving Knife/A small, light blade./1/3/.5/0/0/0/1/18/-1/0/.04/3",
  "17": "Iron Dirk/A common dagger./2/4/.5/0/0/0/1/62/50/0/.03/3",
  "18": "Burglar's Shank/A weapon of choice for the swift and silent./7/12/.5/0/5/0/1/114/100/0/.04/3.5",
  "19": "Shadow Dagger/When you hold the blade to your ear you can hear 1,000 souls shrieking./10/20/.5/0/0/0/1/80/50/0/.04/3",
  "20": "Elf Blade/Only the nimble hands of an elf could craft this./3/5/.5/0/5/0/1/-1/-1/0/.04/3",
  "21": "Crystal Dagger/The blade is made of purified quartz./4/10/1/0/10/0/1/-1/-1/0/.03/4",
  "22": "Wind Spire/A swift little blade./1/5/1/0/0/0/1/-1/-1/0/.02/3.2",
  "23": "Galaxy Dagger/It's unlike anything you've seen./30/40/1/3/0/0/1/-1/-1/0/.02/3",
  "24": "Wood Club/A solid piece of wood, crudely chiseled into a club shape./9/16/1.5/-8/0/0/2/32/-1/0/.02/3",
  "25": "Alex's Bat/The sweet spot is dented from Alex's famous Grand Slam./1/3/1/-8/0/0/2/-1/-1/0/.02/3",
  "26": "Lead Rod/It's incredibly heavy./18/27/1.5/-16/0/0/2/56/50/1/.02/3",
  "27": "Wood Mallet/The solid head packs a punch. Relatively light for a club./15/24/1.3/-4/1/0/2/68/50/0/.02/3",
  "28": "The Slammer/An extremely heavy gavel that'll send foes flying./40/55/1.5/-12/0/0/2/128/100/2/.02/3",
  "29": "Galaxy Hammer/It's made from an ultra-light material you've never seen before./70/90/1/-4/0/0/2/-1/-1/0/.02/3",
  "30": "Sam's Old Guitar/It's seen better days./1/3/1/-6/0/0/2/-1/-1/0/.02/3",
  "31": "Femur/An old, heavy bone caked in centuries of grime./6/11/1.5/-4/0/0/2/10/-1/0/.02/3",
  "32": "Slingshot/Requires stones for ammo./1/3/1/308/0/0/4/-1/-1/0/.02/3",
  "33": "Master Slingshot/Requires stones for ammo./1/3/1/308/0/0/4/-1/-1/0/.02/3",
  "34": "Galaxy Slingshot/It looks really powerful./1/3/1/308/0/0/4/-1/-1/0/.02/3",
  "35": "Elliott's Pencil/Elliott used this to write his book. It's sharp!/1/3/1/308/0/0/1/-1/-1/0/.02/3",
  "36": "Maru's Wrench/A big, metal wrench. It smells like Maru./1/3/1/308/0/0/2/-1/-1/0/.02/3",
  "37": "Harvey's Mallet/It brings back memories of Harvey's clinic./1/3/1/308/0/0/2/-1/-1/0/.02/3",
  "38": "Penny's Fryer/Penny's favorite frying pan. There's some rubbery gunk stuck to the inside./1/3/1/308/0/0/2/-1/-1/0/.02/3",
  "39": "Leah's Whittler/Leah's favorite tool for shaping driftwood./1/3/1/308/0/0/1/-1/-1/0/.02/3",
  "40": "Abby's Planchette/It's made from fine marblewood./1/3/1/308/0/0/1/-1/-1/0/.02/3",
  "41": "Seb's Lost Mace/One of Sebastian's medieval replicas./1/3/1/308/0/0/2/-1/-1/0/.02/3",
  "42": "Haley's Iron/It's searing hot and smells like Haley's hair./1/3/1/308/0/0/0/-1/-1/0/.02/3",
  "43": "Pirate's Sword/It looks like a pirate owned this once./8/14/1/4/0/0/3/40/-1/0/.02/3",
  "44": "Cutlass/A finely crafted blade./9/17/1/4/0/0/0/-1/-1/0/.02/3",
  "45": "Wicked Kris/The blade is made of an iridium alloy./24/30/.5/0/8/0/1/-1/-1/2/.06/3",
  "46": "Kudgel/A brute's companion./27/40/1.6/-10/0/0/2/107/100/0/.02/3.1",
  "47": "Scythe/It can cut grass into hay, if you've built a silo./1/3/1/0/0/0/0/-1/-1/0/.02/3",
  "48": "Yeti Tooth/It's icy cold to the touch./26/42/1/0/0/4/0/-1/-1/0/.02/3.2",
  "49": "Rapier/An elegant blade./15/25/1/4/0/0/0/100/95/2/.02/3",
  "50": "Steel Falchion/Light and powerful./28/46/1/8/5/0/0/142/100/0/.02/3.4",
  "51": "Broken Trident/It came from the sea, but it's still sharp./15/26/.5/0/8/0/1/-1/-1/2/.02/3",
  "52": "Tempered Broadsword/It looks like it could withstand anything./29/44/1.2/-6/0/3/0/135/100/1/.02/3",
  "53": "Golden Scythe/It's more powerful than a normal scythe./13/13/1/0/0/0/0/-1/-1/2/.02/4",
  "54": "Dwarf Sword/It's ancient, but the blade never dulls./65/75/1/4/0/4/0/-1/-1/0/.02/3",
  "55": "Dwarf Hammer/It emits a very faint whirring sound./75/85/1/-8/0/2/2/-1/-1/0/.02/3",
  "56": "Dwarf Dagger/It's ancient, but the blade never dulls./32/38/1/3/0/6/1/-1/-1/0/.03/3",
  "57": "Dragontooth Cutlass/The blade was forged from a magical tooth./75/90/1/0/0/0/0/-1/-1/0/.02/4",
  "58": "Dragontooth Club/This club was crafted from a magical tooth./80/100/1.3/-8/0/0/2/-1/-1/0/.02/4",
  "59": "Dragontooth Shiv/The blade was forged from a magical tooth./40/50/1/0/0/0/1/-1/-1/0/.05/5",
  "60": "Ossified Blade/A large, sharp blade formed from bone./26/42/1.1/-4/0/1/0/142/100/0/.02/3",
  "61": "Iridium Needle/The point is unbelievably sharp, even down to the atomic level./20/35/.5/0/0/0/1/-1/-1/0/.1/7",
  "62": "Infinity Blade/The true form of the Galaxy Sword./80/100/1/8/0/2/0/-1/-1/0/.02/3",
  "63": "Infinity Gavel/The true form of the Galaxy Hammer./100/120/1/-4/0/1/2/-1/-1/0/.02/3",
  "64": "Infinity Dagger/The true form of the Galaxy Dagger./50/70/1/3/0/3/1/-1/-1/0/.06/3"
}

Формат

Оружие ближнего боя

Данные об оружии в Data\Weapons.xnb содержит пятнадцать полей для оружия ближнего боя: 308/0/0/4/-1/-1/0/.02/3

Индекс Пример значения Описание
0 Bone Sword Наименование
1 A very light piece of sharpened bone. Описание
2 20 Минимальный урон
3 30 Максимальный урон
4 .8 Отбрасывание (Вес) - определяет, как далеко цель будет отброшена при попадании
5 8 Скорость - определяет, как быстро персонаж может атаковать
6 5 Точность - уменьшает вероятность того, что персонаж промахнётся
7 0 Защита - влияет на то, сколько урона получает персонаж
8 0 Тип ("0" - колющий меч, "1" - кинжал, "2" - дубина/молот, "3" - рубящий меч, "4" - рогатка)
9 74 Базовый уровень шахты, влияет на вероятность выпадения из шахтовых сундуков.
10 50 Минимальный уровень шахты, влияет на вероятность выпадения из шахтовых сундуков.
11 0 Область действия
12 .02 Шанс критического удара
13 3 Сила критического удара
14 Отображаемое имя (только для файлов не на английском языке)

Оружие имеет жестко закодированную категорию -98 (Object.weaponCategory).

Рогатка

Рогатка имеет начальный ID 32 в данных об оружии, который увеличивается на единицу для каждого уровня обновления (до 34 в данных об оружии, хотя только 32 и 33 доступны без модов). Все поля необходимо указать в данных об оружии, чтобы избежать ошибок, но только эти фактически используются для рогаток:

Индекс Пример значения Описание
0 Master Slingshot Имя
1 Requires stones for ammo. Описание
9 74 Базовый уровень шахты, влияет на вероятность выпадения из шахтовых сундуков.
10 50 Минимальный уровень шахты, влияет на вероятность выпадения из шахтовых сундуков.
14 Отображаемое имя (только файлы не на английском языке)

Урон от рогатки рассчитывается динамически независимо от данных об оружии.

Выпадение из шахтовых сундуков

Когда игрок разбивает сундуки в шахте, есть шанс, что сундука выпадет оружие. Вот как выбирается оружие[1]:

  1. Сопоставьте оружие с минимальным уровнем шахты (поле 10) меньше, чем текущий уровень шахты.
  2. Из этого списка сопоставьте оружие с проверкой вероятности, основанной на разрыве между базовым и текущим уровнями шахты (поле 9). Вероятность представляет собой колоколообразную кривую с центром на базовом уровне шахты:
    Разница в уровнях Вероятность
    0 100%
    5 92%
    10 71%
    15 46%
    20 25%
    25 4%
    Разница применима в обоих направлениях; например, два оружия, базовые уровни которых на 5 ниже и на 5 выше текущего уровня, имеют вероятность 92%. (Вероятность рассчитывается с помощью [функции] e-(current mine level - base mine level)2 / (2 * 122).)
  3. Найдите оружие с наименьшим разрывом между текущим и базовым уровнями шахты и добавьте его в список. (Если элемент также был выбран на шаге 2, у него есть двойной шанс на выпадение.)
  4. Из оставшегося списка оружия случайным образом выберите одно, которое должно выпасть.

Ссылки

  1. Смотри Utility.getUncommonItemForThisMineLevel в коде игры.