|
|
| (не показаны 342 промежуточные версии 4 участников) |
| Строка 1: |
Строка 1: |
| {{TOC}} | | {{docpage}}{{TOC hidden}} |
| {{verify|1}} | | {{OnLua|Сущность|module1=Сущность|module2=Сущность/поля|module3=GetField}} |
|
| |
|
| <h2 style="border-bottom:2px solid #{{ColorPalette|Security|Primary Bold}}>Мечи</h2>
| | Модульный набор {{tl|Модуль:Сущность}} + {{tl|Модуль:Сущность/поля}} + {{tl|Модуль:GetField}} предназначен для: |
| <div style="box-shadow: 0 0 .2em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px;">
| | * автоматической сборки карточек сущностей (компонентов и прототипов) по их ID; |
| <div style="padding: 1em; background: #4e">
| | * описания полей в шаблонах компонентов (какие поля идут в карточку, как подписаны); |
| <div class="mw-collapsible-content">
| | * удобного доступа к данным из JSON (как простыми значениями, так и готовыми вызовами шаблонов). |
| '''Общие характеристики:'''<br>
| |
| * <br>
| |
| </div></div></div>
| |
| {|ID="SEC" class="wikitable mobilefont sortable" style="width:100%;text-align:center;"
| |
| ! rowspan="2" class="unsortable" style="width:10%"|Предмет
| |
| ! colspan="3" class="unsortable" style="width:20%"|Характеристики
| |
| ! rowspan="2" class="unsortable" style="width:50%"|Примечания
| |
| ! rowspan="2" class="unsortable" style="width:20%"|Встречается
| |
| |-
| |
| !style="width:10%"|{{tooltip|Урон|Наносит повреждения}}
| |
| !style="width:5%"|{{tooltip|Скор.|Скорострельность}}
| |
| !style="width:5%"|{{tooltip|DPS|Урон в секунду}}
| |
| |-
| |
| !{{Anchor|Капитанская сабля}}{{#invoke:Entity Lookup|createimagetooltip|Файл:CaptainSabre.png|CaptainSabre|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|CaptainSabre}}
| |
| |data-sort-value=15|<span style="color:indianred">'''15'''</span> Порезы<br> | |
| |style="color:DodgerBlue"|'''1.5'''
| |
| |style="color:Yellow"|'''22.5'''
| |
| |
| |
| * Размер: '''средний'''
| |
| * Имеет вероятность отражения снаряда '''50%''', которая снижается до '''10%''' при быстром передвижении
| |
| |
| |
| * {{#invoke:Entity Lookup|getname|LockerCaptainFilledNoLaser}} {{#invoke:Entity Lookup|createimagetooltip|File:LockerCaptainFilledNoLaser.png|LockerCaptainFilledNoLaser|Мета=32x32px,link=}}
| |
| |-
| |
| !{{Anchor|Катана}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Katana.png|Katana|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Katana}}
| |
| |data-sort-value=15|<span style="color:indianred">'''15'''</span> Порезы<br>
| |
| |style="color:DodgerBlue"|'''1'''
| |
| |style="color:Yellow"|'''15'''
| |
| |
| |
| * Размер: '''средний''' | |
| |
| |
| * <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span> | |
| |-
| |
| !{{Anchor|Мачете}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Machete.png|Machete|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Machete}}
| |
| |data-sort-value=15|<span style="color:indianred">'''15'''</span> Порезы<br>
| |
| |style="color:DodgerBlue"|'''1'''
| |
| |style="color:Yellow"|'''15'''
| |
| |
| |
| * Размер: '''средний'''
| |
| |
| |
| * <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
| |
| |-
| |
| !{{Anchor|Клеймор}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Claymore.png|Claymore|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Claymore}}
| |
| |data-sort-value=20|<span style="color:indianred">'''20'''</span> Порезы<br>
| |
| |style="color:DodgerBlue"|'''0.75'''
| |
| |style="color:Yellow"|'''15'''
| |
| |
| |
| * Размер: '''средний'''
| |
| |
| |
| * Место:
| |
| :* [[Пираты|Шаттл пиратов]]
| |
| |-
| |
| !{{Anchor|Абордажная сабля}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Cutlass.png|Cutlass|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Cutlass}}
| |
| |data-sort-value=15|<span style="color:indianred">'''15'''</span> Порезы<br>
| |
| |style="color:DodgerBlue"|'''1'''
| |
| |style="color:Yellow"|'''15'''
| |
| |
| |
| * Размер: '''средний''' | |
| |
| |
| * Место:
| |
| :* [[Пираты|Шаттл пиратов]]
| |
| |-
| |
| !{{Anchor|Потусторонний клин}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EldritchBlade.png|EldritchBlade|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|EldritchBlade}}
| |
| |data-sort-value=16|<span style="color:indianred">'''16'''</span> Порезы<br>
| |
| |style="color:DodgerBlue"|'''0.75'''
| |
| |style="color:Yellow"|'''12'''
| |
| |
| |
| * Размер: '''средний'''
| |
| |
| |
| * <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
| |
| |-
| |
| |}
| |
|
| |
|
| <h2 style="border-bottom:2px solid #{{ColorPalette|Security|Primary Bold}}>Энергетические мечи</h2>
| | Ниже описан общий принцип работы и отдельные режимы. |
| <div style="box-shadow: 0 0 .2em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px;">
| |
| <div style="padding: 1em; background: #4e">
| |
| <div class="mw-collapsible-content">
| |
| '''Общие характеристики:'''<br>
| |
| * В не активном состоянии:<br>
| |
| :* Наносит: <span style="color:crimson">'''4.5'''</span> Ушибы<br>
| |
| :* Энергетическое оружия замаскированное, не [[Контрабанда|информированный персонал]] не отличит его от игрушечного
| |
| * В активном состоянии:<br>
| |
| :* Размер: '''огромный'''<br>
| |
| :* Излучает постоянный свет на '''~2''' тайл.<br>
| |
| </div></div></div>
| |
| {|ID="SEC" class="wikitable mobilefont sortable" style="width:100%;text-align:center;"
| |
| ! rowspan="2" class="unsortable" style="width:10%"|Предмет
| |
| ! colspan="3" class="unsortable" style="width:20%"|Характеристики
| |
| ! rowspan="2" class="unsortable" style="width:50%"|Примечания
| |
| ! rowspan="2" class="unsortable" style="width:20%"|Встречается
| |
| |-
| |
| !style="width:10%"|{{tooltip|Урон|Наносит повреждения}}
| |
| !style="width:5%"|{{tooltip|Скор.|Скорострельность}}
| |
| !style="width:5%"|{{tooltip|DPS|Урон в секунду}}
| |
| |-
| |
| !{{Anchor|Энергетический меч}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EnergySword.png|EnergySword|Мета=64x64px,link=}}<br>Энергетический меч
| |
| |data-sort-value=30|<span style="color:crimson">'''15'''</span> Порезы<br><span style="color:orange">'''15'''</span> Термические<br><span style="color:DarkGray">'''20'''</span> Структурные
| |
| |style="color:DodgerBlue"|'''1'''
| |
| |style="color:Yellow"|'''30'''
| |
| |
| |
| * Размер: '''маленький'''
| |
| * Имеет вероятность отражения снаряда '''50%''', которая снижается до '''25%''' при быстром передвижении
| |
| |
| |
| * [[Аплинк|Аплинк]] [[Файл:ReinforcementRadio.png]]
| |
| |-
| |
| !{{Anchor|Энергетический двухклинковый меч}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EnergySwordDouble.png|EnergySwordDouble|Мета=64x64px,link=}}<br>Энергетический двухклинковый меч
| |
| |data-sort-value=24|<span style="color:crimson">'''12'''</span> Порезы<br><span style="color:orange">'''12'''</span> Термические<br><span style="color:DarkGray">'''15'''</span> Структурные
| |
| |style="color:DodgerBlue"|'''1.5'''
| |
| |style="color:Yellow"|'''36'''
| |
| |
| |
| * Размер: '''маленький'''
| |
| * Занимает две руки во включенном состоянии
| |
| * Имеет вероятность отражения снаряда '''80 %''', которая снижается до '''65%''' при быстром передвижении
| |
| |
| |
| <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
| |
| |-
| |
| !{{Anchor|Энергокинжал}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EnergyDagger.png|EnergyDagger|Мета=64x64px,link=}}<br>Энергокинжал
| |
| |data-sort-value=20|<span style="color:crimson">'''10'''</span> Порезы<br><span style="color:orange">'''10'''</span> Термические<br>
| |
| |style="color:DodgerBlue"|'''1'''
| |
| |style="color:Yellow"|'''20'''
| |
| |
| |
| * Размер: '''крошечный'''
| |
| * Имеет вероятность отражения снаряда '''50%''', которая снижается до '''25%''' при быстром передвижении
| |
| |
| |
| * [[Аплинк|Аплинк]] [[Файл:ReinforcementRadio.png]]
| |
| |-
| |
| !{{Anchor|Энергетическая абордажная сабля}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EnergyCutlass.png|EnergyCutlass|Мета=64x64px,link=}}<br>Энергетическая абордажная сабля
| |
| |data-sort-value=22|<span style="color:crimson">'''10'''</span> Порезы<br><span style="color:orange">'''12'''</span> Термические<br>
| |
| |style="color:DodgerBlue"|'''1'''
| |
| |style="color:Yellow"|'''22'''
| |
| |
| |
| * Размер: '''маленький'''
| |
| * Имеет вероятность отражения снаряда '''50%''', которая снижается до '''25%''' при быстром передвижении
| |
| |
| |
| * Место:
| |
| :* [[Пираты|Шаттл пиратов]]
| |
| |-
| |
| !{{Anchor|Энергокатана}}{{#invoke:Entity Lookup|createimagetooltip|Файл:EnergyKatana.png|EnergyKatana|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|EnergyKatana}}
| |
| |data-sort-value=30|<span style="color:crimson">'''30'''</span> Порезы<br>
| |
| |style="color:DodgerBlue"|'''1.5'''
| |
| |style="color:Yellow"|'''45'''
| |
| |
| |
| * Размер: '''средний'''
| |
| * Имеет вероятность отражения снаряда '''30 %'''
| |
| * <span style="color: LemonChiffon">Исключения из общих характеристик</span>
| |
| |
| |
| * Начальное снаряжения:
| |
| :* [[Ниндзя|Космический ниндзя]]
| |
| |-
| |
| |}
| |
|
| |
|
| <h2 style="border-bottom:2px solid #{{ColorPalette|Security|Primary Bold}}>Ножи и кинжалы</h2>
| | == Общий принцип работы == |
| <div style="box-shadow: 0 0 .2em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px;">
| | * В шаблонах компонентов/прототипов (<code>Template:Component/...</code>, <code>Template:prototype/...</code>) через {{tl|Модуль:Сущность/поля}} описываются поля: |
| <div style="padding: 1em; background: #4e">
| | ** '''лейблы''' (<code>cardLabel_*</code>) и '''содержимое''' (<code>cardContent_*</code>), заголовки (<code>title_*</code>) и т. п.; |
| <div class="mw-collapsible-content">
| | ** '''мета‑информация''' о том, какие ключи доступны для <code>card</code> / <code>title</code> и в каком порядке. |
| '''Общие характеристики:'''<br>
| | * {{tl|Модуль:Сущность}} по ID сущности: |
| * <br> | | ** находит связанные с ней компоненты и прототипы по JSON‑данным; |
| </div></div></div>
| | ** для каждого компонента/прототипа читает шаблоны и метаданные; |
| {|ID="SEC" class="wikitable mobilefont sortable" style="width:100%;text-align:center;"
| | ** собирает все поля в единую структуру; |
| ! rowspan="2" class="unsortable" style="width:10%"|Предмет
| | ** формирует один вызов карточки <code><nowiki>{{карточка/сущность|...}}</nowiki></code> (и блоки заголовков). |
| ! colspan="3" class="unsortable" style="width:20%"|Характеристики
| | * Внутри полей можно писать вики‑параметры <code>{{{...}}}</code> и вызывать дополнительные модули. |
| ! rowspan="2" class="unsortable" style="width:50%"|Примечания
| | * {{tl|Модуль:GetField}} даёт доступ к JSON‑данным на низком уровне: |
| ! rowspan="2" class="unsortable" style="width:20%"|Встречается
| | ** как «расплющенный» набор параметров (<code>flattenField</code>); |
| |-
| | ** как отдельные значения (<code>get</code>); |
| !style="width:10%"|{{tooltip|Урон|Наносит повреждения}}
| | ** как готовые вызовы шаблонов с нужными параметрами (<code>getTpl</code>, <code>getTplProto</code>). |
| !style="width:5%"|{{tooltip|Скор.|Скорострельность}}
| |
| !style="width:5%"|{{tooltip|DPS|Урон в секунду}}
| |
| |-
| |
| !{{Anchor|Кирка}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Pickaxe.png|Pickaxe|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Pickaxe}}
| |
| |<span style="color:crimson">'''1.66'''</span> Ушибы<br><span style="color:indianred">'''1.67'''</span> Порезы<br><span style="color:darksalmon">'''1.67'''</span> Уколы<br>
| |
| |style="color:DodgerBlue"|'''0.7''' | |
| |style="color:Yellow"|'''3.5'''
| |
| |
| |
| * <span style="color: LemonChiffon">В двуручном хвате:</span> | |
| :* Урон увеличивается в '''3''' раз. Добавляется <span style="color: DarkGray">'''30'''</span> Структурные
| |
| |-
| |
| !{{Anchor|Шахтёрский бур}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Handdrill.png|MiningDrill|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|MiningDrill}}
| |
| |<span style="color:crimson">'''1'''</span> Ушибы<br><span style="color:indianred">'''1'''</span> Порезы<br><span style="color:darksalmon">'''1'''</span> Уколы<br><span style="color:DarkGray">'''12'''</span> Структурные
| |
| |style="color:DodgerBlue"|'''3.5'''
| |
| |style="color:Yellow"|'''10.5'''
| |
| |
| |
| * Автоматически атакует с зажатым {{key press|ПКМ}}
| |
| |-
| |
| |}
| |
|
| |
|
| <h2 style="border-bottom:2px solid #{{ColorPalette|Security|Primary Bold}}>Копья и топоры</h2> | | == Модуль: Сущность/поля == |
| <div style="box-shadow: 0 0 .2em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px;"> | | Шаблоны компонентов используют модуль <code>Сущность/поля</code> для объявления полей, которые будут собираться в карточку. |
| <div style="padding: 1em; background: #4e"> | | |
| <div class="mw-collapsible-content"> | | Пример шаблона компонента: |
| '''Общие характеристики:'''<br> | | |
| * <br> | | <pre> |
| </div></div></div> | | {{#invoke:Сущность/поля|main |
| {|ID="SEC" class="wikitable mobilefont sortable" style="width:100%;text-align:center;" | | |cardLabel_Стоимость = [[Стоимость]] |
| ! rowspan="2" class="unsortable" style="width:10%"|Предмет
| | |cardContent_Стоимость = '''{{{price}}}''' |
| ! colspan="3" class="unsortable" style="width:20%"|Характеристики
| | }} |
| ! rowspan="2" class="unsortable" style="width:50%"|Примечания | | </pre> |
| ! rowspan="2" class="unsortable" style="width:20%"|Встречается | | |
| |-
| | Другой компонент может добавлять тот же ключ: |
| !style="width:10%"|{{tooltip|Урон|Наносит повреждения}}
| | |
| !style="width:5%"|{{tooltip|Скор.|Скорострельность}}
| | <pre> |
| !style="width:5%"|{{tooltip|DPS|Урон в секунду}}
| | {{#invoke:Сущность/поля|main |
| |-
| | |cardContent_Стоимость = '''{{{superPrice}}}''' |
| !{{Anchor|Копьё}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Spear.png|Spear|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Spear}}
| | }} |
| |data-sort-value=12|<span style="color:darksalmon">'''12'''</span> Уколы<br> | | </pre> |
| |style="color:DodgerBlue"|'''1'''
| | |
| |style="color:Yellow"|'''12'''
| | Особенности: |
| |
| | * Пара <code>cardLabel_<Ключ></code> / <code>cardContent_<Ключ></code> описывает одну строку карточки (лейбл и содержимое). |
| * Размер: '''гигантский''' | | * Если несколько шаблонов дают один и тот же <code>cardContent_Ключ</code>, содержимое '''объединяется''', а лейбл берётся первый непустой. |
| * Можно метнуть, нанеся <span style="color:darksalmon">'''15'''</span> урона уколами
| | * То же относится к другим режимам, перечисленным в мета‑JSON шаблона (разделы <code>card</code>, <code>title</code> и т. п.), которые читает {{tl|Модуль:Сущность}}. |
| * <span style="color: LemonChiffon">В двуручном хвате:</span> | | |
| :* Наносит: <span style="color:darksalmon">'''16'''</span> Уколы<br>
| | == Модуль: Сущность == |
| |
| | |
| {{tooltip|Создаётся из следующих компонентов|Компоненты| | | === p.get: основная сборка карточки === |
| {{#invoke:Entity Lookup|createimagetooltip|Файл:DrinkGrapeCan.png|DrinkGrapeCan|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|GasPipeHalf}} [1]<br> | | Вызов: |
| | |
| | <pre> |
| | {{#invoke:Сущность|get |
| | | <ID или список ID> |
| | | blacklist=... |
| | | whitelist=... |
| | | ignoreComponents=... |
| | | ignorePrototypes=... |
| | }} |
| | </pre> |
| | |
| | * '''1‑й параметр''' — <code>id</code> или список <code>id</code> через запятую. |
| | * По этому ID модуль находит: |
| | ** '''компоненты''' из <code>component.json</code>; |
| | ** '''прототипы''' из <code>prototype.json</code>; |
| | и для каждого — соответствующие шаблоны <code>Template:component/...</code> / <code>Template:prototype/...</code>. |
| | * Шаблоны описывают свои поля через <code>Сущность/поля</code>. |
| | |
| | После сборки модуль: |
| | * формирует один вызов <code><nowiki>{{карточка/сущность|...}}</nowiki></code> со всеми разделами и полями; |
| | * дополняет выход при необходимости (блоки title и т. п.); |
| | * прогоняет результат через <code>frame:preprocess</code>, чтобы отрендерить разметку. |
| | |
| | Параметры фильтрации: |
| | * {{пм|blacklist}} — список <code>режим_Ключ</code> через запятую, чтобы исключить поле: |
| | ** пример: <code>blacklist=card_Наносит повреждения,title_Что‑то</code>; |
| | * {{пм|whitelist}} — наоборот, список разрешённых <code>режим_Ключ</code>, остальные игнорируются; |
| | * {{пм|ignoreComponents}} / {{пм|ignoreComponent}} — список имён компонентов через запятую, которые полностью игнорируются для этого вызова; |
| | * {{пм|ignorePrototypes}} / {{пм|ignorePrototype}} — аналогично для прототипов. |
| | |
| | Пример простой сборки (через шаблон‑обёртку): |
| | |
| | <pre> |
| | {{Сущность/карточка|MyEntityId}} |
| | </pre> |
| | |
| | где в шаблоне <code>Сущность/карточка</code> внутри: |
| | |
| | <pre> |
| | {{#invoke:Сущность|get|{{{1}}}}} |
| | </pre> |
| | |
| | === p.preview: предпросмотр полей конкретного шаблона === |
| | Используется для проверки, что компонент/прототип правильно описал свои поля. |
| | |
| | <pre> |
| | {{#invoke:Сущность|preview |
| | | Component/meleeWeapon |
| | }} |
| | </pre> |
| | |
| | * Показывает, какие <code>card</code> / <code>title</code>‑поля объявлены в <code>Template:Component/meleeWeapon</code>. |
| | * Удобно при разработке шаблонов компонентов. |
| | |
| | === p.jsonList: вывод JSON в виде списка === |
| | Режим похож на стандартный <code>arraymap</code>, но работает с JSON. |
| | |
| | <pre> |
| | {{#invoke:Сущность|jsonList |
| | | <json или {{{...}}}> |
| | | type = list / enum |
| | | prefix = * |
| | | sep = : |
| | | key_pattern = (.*) |
| | | key_replace = \1 |
| | | value_pattern = (.*) |
| | | value_replace = \1 |
| | }} |
| | </pre> |
| | |
| | Примеры JSON: |
| | |
| | <pre> <!-- <syntaxhighlight lang=json> --> |
| | { |
| | "Blunt": 10, |
| | "Slash": 5 |
| | } |
| | </pre> <!-- </syntaxhighlight> --> |
| | |
| | или |
| | |
| | <pre> <!-- <syntaxhighlight lang=json> --> |
| | ["Knife", "Sword", "Bat"] |
| | </pre> <!-- </syntaxhighlight> --> |
| | |
| | Основные опции: |
| | * {{пм|type}}: |
| | ** <code>list</code> — список строк (с префиксом, например <code>* </code>); |
| | ** <code>enum</code> — перечисление через запятую (<code>A, B, C</code> без префикса). |
| | * {{пм|prefix}} — префикс строки списка (по умолчанию <code>* </code>). |
| | * {{пм|sep}} — разделитель для <code>ключ: значение</code> (по умолчанию <code>: </code>). |
| | * {{пм|key_pattern}} / {{пм|key_replace}} — regex и замена для ключей. |
| | * {{пм|value_pattern}} / {{пм|value_replace}} — regex и замена для значений. |
| | |
| | Дополнительно: |
| | * в шаблоне замены поддерживаются: |
| | ** <code>\1</code> — собственное значение (ключ или значение); |
| | ** <code>\2</code> в <code>value_replace</code> — '''сырой ключ''' (после <code>key_pattern</code>, но до <code>key_replace</code>); |
| | ** <code>\2</code> в <code>key_replace</code> — итоговое отформатированное значение (после <code>value_replace</code>). |
| | |
| | Пример, где сначала форматируем тип урона, а затем подставляем его в описание: |
| | |
| | <pre> |
| | {{#invoke:Сущность|jsonList |
| | | {{{damage.types}}} |
| | | type = enum |
| | | key_replace = <nowiki>\1</nowiki> <!-- "Blunt" --> |
| | | value_replace = <nowiki>'''\1''' \2</nowiki> <!-- "'''10''' Blunt" --> |
| | }} |
| | </pre> |
| | |
| | === p.json: превращение JSON в вызовы шаблонов === |
| | Режим для случаев, когда в JSON лежит список эффектов/объектов, и нужно по каждому вызвать отдельный шаблон. |
| | |
| | <pre> |
| | {{#invoke:Сущность|json |
| | | <json или {{{...}}}> |
| | | <путь_к_шаблону> |
| | }} |
| | </pre> |
| | |
| | * '''1‑й параметр / <code>json=</code>''' — строка JSON. |
| | * '''2‑й параметр / <code>template=</code>''' — путь к шаблону, например <code>Component/adjustPlant</code>. |
| | |
| | Ожидаемый формат JSON‑массива: |
| | |
| | <pre> <!-- <syntaxhighlight lang=json> --> |
| | [ |
| | { |
| | "!type:PlantAdjustNutrition": { |
| | "amount": 0.1 |
| | } |
| | }, |
| | { |
| | "!type:PlantAdjustWeeds": { |
| | "amount": 2 |
| | } |
| | }, |
| | { |
| | "!type:PlantAdjustPests": { |
| | "amount": 2 |
| | } |
| | } |
| | ] |
| | </pre> <!-- </syntaxhighlight> --> |
| | |
| | Для каждого элемента создаётся вызов: |
| | |
| | <pre> |
| | {{Component/adjustPlant |
| | |id=!type:PlantAdjustNutrition |
| | |amount=0.1 |
| | }} |
| | {{Component/adjustPlant |
| | |id=!type:PlantAdjustWeeds |
| | |amount=2 |
| | }} |
| | {{Component/adjustPlant |
| | |id=!type:PlantAdjustPests |
| | |amount=2 |
| | }} |
| | </pre> |
| | |
| | Особенности: |
| | * Если JSON — объект вида <code>{ "id1": {...}, "id2": {...} }</code>, происходит аналогичный проход по парам <code>ключ → объект</code>. |
| | * Все вызовы склеиваются через перевод строки и прогоняются через <code>frame:preprocess</code>, поэтому внутри шаблона можно использовать любую вики‑разметку. |
| | |
| | == Модуль: GetField == |
| | Модуль <code>GetField</code> используется для доступа к тем же JSON‑данным <code>.../data</code>, но на более низком уровне. |
| | |
| | === p.flattenField: расплющивание записи в параметры === |
| | <pre> |
| | {{#invoke:GetField|flattenField |
| | | <id> |
| | | <путь_к_json_странице> |
| | }} |
| | </pre> |
| | |
| | Например: |
| | |
| | <pre> |
| | {{#invoke:GetField|flattenField |
| | | MyEntityId |
| | | component/item.json |
| | }} |
| | </pre> |
| | |
| | Возвращает строку вида: |
| | |
| | <pre> |
| | damage.types={"Blunt":10}|wieldSound=someSound|... |
| | </pre> |
| | |
| | Особенности: |
| | * Вложенные объекты кодируются в JSON и заворачиваются в <code><nowiki><nowiki></nowiki></code>, чтобы их можно было безопасно передавать как параметр. |
| | * Массивы кодируются в JSON без <code><nowiki><nowiki></nowiki></code>, чтобы удобно обрабатывать их модулями вроде <code>Сущность.jsonList</code>. |
| | |
| | Этот режим используется внутри <code>GetField.getTpl</code> и других обёрток. |
| | |
| | === p.get: получение значения по пути === |
| | <pre> |
| | {{#invoke:GetField|get |
| | | <id или пусто для "default"> |
| | | <путь_к_json_странице> |
| | | <ключ.с.точками> |
| }} | | }} |
| |-
| | </pre> |
| !{{Anchor|Усиленноё копьё}}{{#invoke:Entity Lookup|createimagetooltip|Файл:SpearReinforced.png|SpearReinforced|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|SpearReinforced}}
| | |
| |data-sort-value=15|<span style="color:darksalmon">'''15'''</span> Уколы<br>
| | Примеры: |
| |style="color:DodgerBlue"|'''1'''
| | |
| |style="color:Yellow"|'''15'''
| | <pre> |
| |
| | {{#invoke:GetField|get |
| * Размер: '''гигантский'''
| | | MyEntityId |
| * Можно метнуть, нанеся <span style="color:darksalmon">'''18'''</span> урона уколами
| | | component/item.json |
| * <span style="color: LemonChiffon">В двуручном хвате:</span>
| | | damage.types |
| :* Наносит: <span style="color:darksalmon">'''19'''</span> Уколы<br>
| |
| |
| |
| {{tooltip|Создаётся из следующих компонентов|Компоненты|
| |
| {{#invoke:Entity Lookup|createimagetooltip|Файл:DrinkGrapeCan.png|DrinkGrapeCan|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|GasPipeHalf}} [1]<br> | |
| }} | | }} |
| |-
| | </pre> |
| !{{Anchor|Плазменное копьё}}{{#invoke:Entity Lookup|createimagetooltip|Файл:SpearPlasma.png|SpearPlasma|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|SpearPlasma}} | | |
| |data-sort-value=18|<span style="color:darksalmon">'''18'''</span> Уколы<br>
| | Если в JSON: |
| |style="color:DodgerBlue"|'''1'''
| | |
| |style="color:Yellow"|'''18'''
| | <pre> <!-- <syntaxhighlight lang=json> --> |
| |
| | "damage": { |
| * Размер: '''гигантский'''
| | "types": { |
| * Можно метнуть, нанеся <span style="color:darksalmon">'''21'''</span> урона уколами | | "Blunt": 10 |
| * <span style="color: LemonChiffon">В двуручном хвате:</span> | | } |
| :* Наносит: <span style="color:darksalmon">'''22'''</span> Уколы<br>
| | } |
| |
| | </pre> <!-- </syntaxhighlight> --> |
| {{tooltip|Создаётся из следующих компонентов|Компоненты|
| | |
| {{#invoke:Entity Lookup|createimagetooltip|Файл:DrinkGrapeCan.png|DrinkGrapeCan|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|GasPipeHalf}} [1]<br> | | то результатом будет: |
| | |
| | <pre> |
| | {"Blunt":10} |
| | </pre> |
| | |
| | то есть: |
| | * для таблиц модуль пытается сделать <code>mw.text.jsonEncode(v)</code> и вернуть JSON‑строку; |
| | * для простых значений возвращается строка <code>tostring(v)</code>. |
| | |
| | Если <code>keyPath</code> пуст, возвращается весь объект (как JSON). |
| | |
| | === p.getTpl: вызов шаблона по данным JSON === |
| | <pre> |
| | {{#invoke:GetField|getTpl |
| | | <id> |
| | | <путь_к_json_странице> |
| | | <путь_к_шаблону> |
| }} | | }} |
| |-
| | </pre> |
| !{{Anchor|Урановое копьё}}{{#invoke:Entity Lookup|createimagetooltip|Файл:SpearUranium.png|SpearUranium|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|SpearUranium}}
| | |
| |data-sort-value=18|<span style="color:darksalmon">'''10'''</span> Уколы<br><span style="color:limegreen">'''8'''</span> Радиация<br>
| | Пример: |
| |style="color:DodgerBlue"|'''1'''
| | |
| |style="color:Yellow"|'''18'''
| | <pre> |
| |
| | {{#invoke:GetField|getTpl |
| * Размер: '''гигантский'''
| | | MyEntityId |
| * Можно метнуть, нанеся <span style="color:darksalmon">'''21'''</span> урона уколами, и <span style="color:limegreen">'''9'''</span> радиацией
| | | component/item.json |
| * <span style="color: LemonChiffon">В двуручном хвате:</span>
| | | Component/meleeWeapon |
| :* Наносит: <span style="color:darksalmon">'''14'''</span> Уколы, <span style="color:limegreen">'''8'''</span> Радиация
| |
| |
| |
| {{tooltip|Создаётся из следующих компонентов|Компоненты|
| |
| {{#invoke:Entity Lookup|createimagetooltip|Файл:DrinkGrapeCan.png|DrinkGrapeCan|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|GasPipeHalf}} [1]<br> | |
| }} | | }} |
| |-
| | </pre> |
| !{{Anchor|Костяное копьё}}{{#invoke:Entity Lookup|createimagetooltip|Файл:SpearBone.png|SpearBone|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|SpearBone}}
| | |
| |data-sort-value=12|<span style="color:darksalmon">'''12'''</span> Уколы<br>
| | Работа: |
| |style="color:DodgerBlue"|'''1'''
| | * внутри вызывает <code>flattenField</code>, получая строку <code>key=value|...</code>; |
| |style="color:Yellow"|'''12'''
| | * формирует строку вида: |
| |
| | |
| * Размер: '''гигантский'''
| | <pre> |
| * Можно метнуть, нанеся <span style="color:darksalmon">'''15'''</span> урона уколами | | {{Component/meleeWeapon |
| * <span style="color: LemonChiffon">В двуручном хвате:</span>
| | |id=MyEntityId |
| :* Наносит: <span style="color:darksalmon">'''16'''</span> Уколы<br>
| | |damage.types=... |
| |
| | |... |
| {{tooltip|Создаётся из следующих компонентов|Компоненты| | |
| {{#invoke:Entity Lookup|createimagetooltip|Файл:DrinkGrapeCan.png|DrinkGrapeCan|Мета=32x32px,link=}} {{#invoke:Entity Lookup|getname|GasPipeHalf}} [1]<br>
| |
| }} | | }} |
| |-
| | </pre> |
| !{{Anchor|Пожарный топор}}{{#invoke:Entity Lookup|createimagetooltip|Файл:FireAxe.png|FireAxe|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|FireAxe}}
| | |
| |data-sort-value=15|<span style="color:crimson">'''5'''</span> Ушибы<br><span style="color:indianred">'''10'''</span> Порезы<br><span style="color:DarkGray">'''10'''</span> Структурные<br>
| | * и прогоняет её через <code>frame:preprocess</code>, возвращая итоговый рендер. |
| |style="color:DodgerBlue"|'''0.75'''
| | |
| |style="color:Yellow"|'''11.25'''
| | Это удобный способ «подключить» шаблон компонента к данным из JSON без ручного перечисления параметров. |
| |
| | |
| * Размер: '''гигантский'''
| | === p.getTplProto: вызов шаблона по прототипам === |
| * Снимает напольные плитки
| | <pre> |
| * <span style="color: LemonChiffon">В двуручном хвате:</span>
| | {{#invoke:GetField|getTplProto |
| :* Наносит: <span style="color:crimson">'''5'''</span> Ушибы, <span style="color:indianred">'''20'''</span> Порезы, <span style="color:DarkGray">'''50'''</span> Структурные
| | | <searchId> |
| |
| | | <protoId> |
| * Место:
| | | <путь_к_шаблону> |
| :* [[Инженерный Отдел#Атмос|Атмос]]
| | }} |
| |-
| | </pre> |
| !{{Anchor|Пылающий пожарный топор}}{{#invoke:Entity Lookup|createimagetooltip|Файл:FireAxeFlaming.png|FireAxeFlaming|Мета=64x64px,link=}}<br>Пылающий пожарный топор
| | |
| |data-sort-value=15|<span style="color:crimson">'''5'''</span> Ушибы<br><span style="color:indianred">'''10'''</span> Порезы<br><span style="color:DarkGray">'''10'''</span> Структурные<br>
| | * Ищет в <code>prototype.json</code> все записи, где <code>protoId</code> встречается у <code>searchId</code>. |
| |style="color:DodgerBlue"|'''0.75'''
| | * Для каждого найденного ID вызывает <code>getTpl</code> и возвращает все вызовы, склеенные через перевод строки и отрендеренные. |
| |style="color:Yellow"|'''11.25'''
| | |
| |
| | Используется для случаев, когда сущность использует '''несколько''' прототипов одного типа, и нужно вывести по одному шаблону на каждый прототип. |
| * Размер: '''гигантский'''
| |
| * Удары поджигают
| |
| * Снимает напольные плитки
| |
| * <span style="color: LemonChiffon">В двуручном хвате:</span>
| |
| :* Наносит: <span style="color:crimson">'''5'''</span> Ушибы, <span style="color:indianred">'''20'''</span> Порезы, <span style="color:DarkGray">'''50'''</span> Структурные
| |
| |
| |
| <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span> | |
| |-
| |
| !{{Anchor|Нечестивая алебарда}}{{#invoke:Entity Lookup|createimagetooltip|Файл:UnholyHalberd.png|UnholyHalberd|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|UnholyHalberd}}
| |
| |data-sort-value=20|<span style="color:crimson">'''10'''</span> Ушибы<br><span style="color:indianred">'''10'''</span> Порезы<br><span style="color:DarkGray">'''5'''</span> Структурные<br>
| |
| |style="color:DodgerBlue"|'''0.75'''
| |
| |style="color:Yellow"|'''15'''
| |
| |
| |
| * Размер: '''гигантский'''
| |
| * <span style="color: LemonChiffon">В двуручном хвате:</span>
| |
| :* Наносит: <span style="color:crimson">'''15'''</span> Ушибы, <span style="color:indianred">'''15'''</span> Порезы, <span style="color:DarkGray">'''15'''</span> Структурные
| |
| |
| |
| <span style="color: LemonChiffon">Нет гарантированных мест спавна на картах</span>
| |
| |-
| |
| |}
| |
|
| |
|
| <h2 style="border-bottom:2px solid #{{ColorPalette|Security|Primary Bold}}>Прочее</h2>
| | == Типичный рабочий поток == |
| {|ID="SEC" class="wikitable mobilefont sortable" style="width:100%;text-align:center;"
| | # В JSON‑файлах (<code>component.json</code>, <code>prototype.json</code> и др.) описываются сущности и связи компонент/прототипов. |
| ! rowspan="2" class="unsortable" style="width:10%"|Предмет
| | # Для каждого компонента/прототипа создаются шаблоны <code>Template:Component/...</code>, <code>Template:prototype/...</code>, которые: |
| ! colspan="3" class="unsortable" style="width:20%"|Характеристики
| | #* вызывают <code><nowiki>{{#invoke:Сущность/поля|main ...}}</nowiki></code> для описания полей карточки; |
| ! rowspan="2" class="unsortable" style="width:50%"|Примечания
| | #* при необходимости используют <code>GetField</code> / <code>Сущность.jsonList</code> / <code>Сущность.json</code> для форматирования сложных JSON‑полей. |
| ! rowspan="2" class="unsortable" style="width:20%"|Встречается
| | # Для вывода карточки на странице сущности используется: |
| |-
| | #* либо прямой <code><nowiki>{{#invoke:Сущность|get|MyEntityId}}</nowiki></code>, |
| !style="width:10%"|{{tooltip|Урон|Наносит повреждения}}
| | #* либо шаблон‑обёртка <code><nowiki>{{Сущность/карточка|MyEntityId}}</nowiki></code>. |
| !style="width:5%"|{{tooltip|Скор.|Скорострельность}}
| | # Для специализированных списков/таблиц: |
| !style="width:5%"|{{tooltip|DPS|Урон в секунду}}
| | #* <code>Сущность.jsonList</code> — если нужно красиво показать массив/словарь из JSON; |
| |-
| | #* <code>Сущность.json</code> — если нужно превратить список эффектов в набор вызовов шаблона; |
| !{{Anchor|Кирка}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Pickaxe.png|Pickaxe|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|Pickaxe}}
| | #* <code>GetField.get</code> — если нужно точечно вытащить одно поле; |
| |<span style="color:crimson">'''1.66'''</span> Ушибы<br><span style="color:indianred">'''1.67'''</span> Порезы<br><span style="color:darksalmon">'''1.67'''</span> Уколы<br>
| | #* <code>GetField.getTpl</code> / <code>getTplProto</code> — если нужно строить шаблоны по данным JSON автоматически. |
| |style="color:DodgerBlue"|'''0.7'''
| |
| |style="color:Yellow"|'''3.5'''
| |
| |
| |
| * <span style="color: LemonChiffon">В двуручном хвате:</span>
| |
| :* Урон увеличивается в '''3''' раз. Добавляется <span style="color: DarkGray">'''30'''</span> Структурные | |
| |-
| |
| !{{Anchor|Шахтёрский бур}}{{#invoke:Entity Lookup|createimagetooltip|Файл:Handdrill.png|MiningDrill|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|MiningDrill}}
| |
| |<span style="color:crimson">'''1'''</span> Ушибы<br><span style="color:indianred">'''1'''</span> Порезы<br><span style="color:darksalmon">'''1'''</span> Уколы<br><span style="color:DarkGray">'''12'''</span> Структурные
| |
| |style="color:DodgerBlue"|'''3.5'''
| |
| |style="color:Yellow"|'''10.5'''
| |
| |
| |
| * Автоматически атакует с зажатым {{key press|ПКМ}}
| |
| |-
| |
| |}
| |