TraderX_Tools/docs/importing.md
2026-09-06 22:47:27 +03:00

3.8 KiB
Raw Permalink Blame History

Importing

All importers produce (or append to) a source file; they never write into the TraderX profile directly. Review the result, then build.

Common options:

Option Meaning
-o FILE Write a new source file (default source.yaml, or source.json without pyyaml)
--into FILE Append the imported categories into an existing source (creates it if missing). Name clashes get (imported) appended.
--category NAME Override the category name
--trader T Assign the category to trader T (givenName or npcId). Repeatable.

import-traderx – reverse-import an existing config

python3 traderx_build.py import-traderx ~/serverprofile/TraderX -o traderx.yaml

Reads TraderXConfig/Products, Categories, TraderXPresets and TraderXGeneralSettings.json:

  • every product keeps its id: so stock files in TraderXDatabase/Stock/ keep matching;
  • bitfields are decoded to words (buy: static 22, restart: reset);
  • attachments/variants/presets are written as class names;
  • products in no category go under top-level items:;
  • license ids become license names; trader assignments become traders:.

Files the mod would skip (bad names, invalid JSON, non-object files) are skipped here too and printed. Run traderx_check.py first if you want them fixed.

After the import the file is verbose – every product spells out its options. Most of it collapses once you move shared attachment lists into groups: and delete options that equal the defaults.


import-traderplus – TraderPlus v1 TraderPlusPriceConfig.json

python3 traderx_build.py import-traderplus SnafuTraderPlus.json --trader Boris --into traderx.yaml

Accepts the full file (TraderCategories: [...]), a single category object, or a bare list of category objects. Each CategoryName becomes a category. Product lines class,coefficient,maxStock,tradeQuantity,buyPrice,sellPrice map 1:1; whitespace around class names is trimmed, malformed lines are reported and skipped.

Options equal to the defaults (coefficient 1, maxStock -1, buy full / sell full) are omitted to keep the output short.


import-expansion – Expansion Market .json (file or folder)

python3 traderx_build.py import-expansion ExpansionMod/Market/ --trader Eve --into traderx.yaml

A folder imports every *.json inside as one category each. Mapping per item:

Expansion Source
DisplayName category name (#Terje_Tools → Terje Tools)
ClassName item
MaxPriceThreshold price
SellPricePercent (≥0) sell = price × percent
SellPricePercent (-1) omitted → sell_percent default applies
MaxStockThreshold > 1 and Min ≠ Max price stock = max, coefficient ≈ (min/max)^(1/(stock−1))
otherwise unlimited, flat price
QuantityPercent 0 / 100 / n buy: empty / full / coef n%
SpawnAttachments attachments
Variants variants

Expansion's MaxStockThreshold: 1, MinStockThreshold: 1 with equal prices is its idiom for "always available at a fixed price", which is what unlimited flat stock means in TraderX.


import-plain – class list

python3 traderx_build.py import-plain cans.txt --category Cans --price 100 --trader Eve --into traderx.yaml

One class per line. Lines may carry ,buyPrice[,sellPrice]; lines without a price get the category price from --price. # comments and blank lines are ignored. Separators can be ,, ; or tab.


Merging strategy

A typical layout is one source file per server with imported categories appended over time. If you prefer one file per mod, keep them in JSON/YAML and concatenate the categories lists yourself, or use --into with a scratch file and copy blocks across. The builder doesn't care where a category came from.