← RodySoft
Русский

RAE · Perfect World

Custom elements.data configs

A custom config describes the exact lists, fields and storage types in your server’s elements.data. Select it explicitly for that data file. RAE then uses it in place of the server-provided schema.

Choose the schema

  1. Put your .cfg in Configs/PW/ inside the RAE application directory. Subdirectories are supported.
  2. Open File → Choose elements.data config… and select your data file.
  3. Choose Custom config, then select the cfg. RAE validates it and opens the data.
  4. Check Custom Config (Loaded) beside RAE AI. Hover over it to see the actual cfg path and hash.

The indicator describes the open document. Merely placing or selecting a cfg does not activate it. Clicking the indicator opens this guide.

The selection is remembered for the full data-file path. Two clients with the same elements version can use different configs. Moving the data file requires a new selection.

To return to the normal schema, repeat the command and choose Server config. Switching schemas requires reopening; save or discard pending data changes first.

Override individual lists

You can also select a fragment starting with a header such as 170 - TITLE_CONFIG, followed by the offset, field names and storage types. Include the complete declaration of each changed list. RAE replaces those lists in the packaged base for your data version and keeps the other lists intact.

The list name and number must match the packaged base exactly. Unknown lists and conversation-block overrides are rejected. To add whole lists or use a version with no unique packaged base, provide a complete cfg.

Packaged bases live in Configs/PW/configs/. Keep your own fragments separately, for example Configs/PW/MyServer/170.cfg. RAE leaves both files unchanged; the loaded indicator’s tooltip also identifies the base. If a base update makes saved field settings stale, loading stops with a diagnostic.

Storage comes from the cfg

DeclarationStorage
int / int32, uint / uint32Signed / unsigned 32-bit integer
int16, uint16, int64, uint64Signed / unsigned integer of the stated width
float, double32-bit / 64-bit floating point
string:N, wstring:N, byte:NExactly N bytes; wstring needs an even byte count
byte:AUTOVariable-size conversation block only

Each ordinary PW list must begin with a signed 32-bit ID. List order and field order must match the data; numeric list labels do not reorder anything. The first offset includes the timestamp, as in sELedit.

To add a field, add its name and type at the same position in the two cfg lines and supply a matching elements.data. Adding text to a cfg does not insert bytes into an existing data file.

The original sELedit v156 vocabulary is supported. RAE keeps your cfg unchanged and applies the recognized monster property split in memory. Unknown fields remain available through the generic editor.

Assign field editors

A semantic assignment selects an editor or reference; it does not change binary storage. Use the field context menu to assign a supported semantic type or reference list. Custom-config assignments are saved next to the cfg in MyServer.rae.json, without a special field-saving entitlement.

Built-in metadata is applied first, global user rules next, and this companion last. Use none for a plain value that suppresses an inherited assignment. Write errors are reported; check the error before closing.

For a named enum or mask, edit the companion while the document is closed, preserving existing assignments. This example adds a mask to an unsigned 32-bit field:

{
  "FormatVersion": 1,
  "Definitions": {
    "SERVER_FLAGS": {
      "IsMask": true,
      "Values": { "1": "Tradeable", "2": "Account storage" }
    }
  },
  "Assignments": [
    {
      "List": "MY_SERVER_CONFIG",
      "Field": "flags",
      "StorageType": "uint",
      "Semantic": "@SERVER_FLAGS"
    }
  ]
}

Set IsMask to false for an enum. Value keys are decimal integers and must fit the field’s storage. A list name in Semantic creates a list reference. Reopen the data to apply manual companion changes.

Assignments address source list and field names and record the expected storage type. If a field disappears or its storage changes, correct the companion before reopening. A new field at an old index never inherits an assignment solely because of its position.

Clients selecting the same cfg share its companion. Use separate cfg files when their field-editor settings should differ.

When loading fails

Read the diagnostic’s config path, line, list or field. Typical causes are unequal field/type counts, duplicate names, unsupported storage types, stale companion entries or missing packaged metadata.

RAE does not silently replace an invalid selected cfg with a server schema. Correct the cfg or explicitly choose Server config. File permissions must allow saving the companion and dataset binding.

Keep the editor’s packaged metadata files installed. Custom schema selection does not replace game access or editing checks. The color editor currently requires byte:4; assigning it to an integer does not convert that field’s storage.