Goods and prices (server)
script\CashShop.dat; script\CashShop_str.dat
Total 21 Known 18 Derived 0 Unused 3Items and economy
Cash shop goods and national prices
The cash shop sells goods for the in-game cash currency. A product is one row with one number in four files: the server Script\CashShop.dat (product, showcase, discount) and CashShop_str.dat (prices for 9 countries, 11 in GU), the client DataTable\ItemCash.edf (the same record with packed codes) and <language>\NDItemCash.edf (the price for the client language). Rental goods are additionally described in TimerItem.dat.
CashShop_str.dat — the country from WorldInfo.ini (NationCode); the client takes the price from NDItemCash.edf of its language folder. The client sends the price in the purchase request, and the server rejects the purchase when the prices differ: the server country's price must equal the price in every language folder distributed to players.m_nCsPrice in CashShop.dat and Price in ItemCash.edf do not affect purchases.m_bIsCash = 1 on the server and IsCash ≠ 0 in the client Item.edf; without the client flag the product does not appear in the window.m_strCode is the link key CashShop.dat ↔ CashShop_str.dat: on a duplicate the first row found supplies the price. Hidden goods (m_bView = 0) pass the same loading checks; a placeholder without a price breaks loading of the whole shop.cash_discount*.ini, condistional_event.ini) are server ini files, not yet part of the editor; on Sirin the price must be ≥ 1 and the sum of percentage discounts < 100.ItemCash.edf equals the row count of NDItemCash.edf in every language folder.| File | Side | Format | Level | Corpora | Record | Digest | Note |
|---|---|---|---|---|---|---|---|
script\CashShop.dat | server | dat | ready for full | AoP ✓, GU ✓, Sirin ✓ | AoP 240, GU 240, Sirin 240 | cashshop.md | cashshop.md §2 |
script\CashShop_str.dat | server | dat | ready for full | AoP ✓, GU ✓, Sirin ✓ | AoP 104, GU 112, Sirin 104 | cashshop.md | not names but national prices; cashshop.md §3 |
DataTable\<language>\NDItemCash.edf | client | edf | derived | AoP ✓ (en-ph, ru-ru), GU ✓ (en-gb, ru-ru), Sirin ✓ (en-gb, ru-ru) | AoP 4, GU 4, Sirin 4 | cashshop.md | Derived from: CashShop_str.dat (m_nrus_Price). |
DataTable\itemcash.edf | client | edf | derived | AoP ✓, GU ✓, Sirin ✓ | AoP 64, GU 64, Sirin 64 | cashshop.md | Derived from: CashShop.dat. cashshop.md §5.1; the GU client also has ItemCash.edf next to it |
“ready for full” — the format is understood and the fields are described; “derived” — the file is assembled from another; “opaque” — the format is not fully known; “postponed” and “out of scope” — the studio does not edit the file.
The files of the category are split into groups; every group and subgroup has its own page with the fields of its files only.
script\CashShop.dat; script\CashShop_str.dat
Total 21 Known 18 Derived 0 Unused 3DataTable\<language>\NDItemCash.edf; DataTable\itemcash.edf
Total 11 Known 9 Derived 2 Unused 0Fields that neither the server nor the client reads. For each: why it was decided so and where that was established. The editor keeps their bytes as they are.
script\CashShop.dat server file| Offset | Field | Why unused | Data |
|---|---|---|---|
+0x08C | m_strItemPart | not read in loading or purchase cashshop.md §2: digest — “+0x8C | m_strItemPart (cstr64) | showcase tags ne/be/hi/gm/li | not read in loading or purchase”; does not go to the client file (itemcash.edf is mapped, cashshop.md §5) | 10 values; most often ne/0/0/0/0 (52%) |
script\CashShop_str.dat server file| Offset | Field | Why unused | Data |
|---|---|---|---|
+0x068 | m_nspa_Price | national price (GU column); the field is absent in AoP; the studio writes 0 cashshop.md §4: the server takes one column by NationCode; the project server starts only with RU → m_nrus_Price; the extra GU columns are unused [user decision, 29.10.2026] | 97 values; most often 0 (16%) |
+0x06C | m_ntha_Price | national price (GU column); the field is absent in AoP; the studio writes 0 cashshop.md §4: the server takes one column by NationCode; the project server starts only with RU → m_nrus_Price; the extra GU columns are unused [user decision, 29.10.2026] | 97 values; most often 0 (16%) |