Kartik Scripts

Migration

This guide details how to migrate player skins, outfit presets, and server configurations from illenium-appearance, rcore_clothing, or qb-clothing to kartik-clothing.

⚡ Automated illenium-appearance Migration

kartik-clothing features a built-in automated migration script that reads the playerskins and player_outfits database tables and converts player skin snapshots and saved outfits into kc_player_skins and kc_player_outfits.

The same command also works for qb-clothing databases. Both scripts use tables with these names but store the data differently, and the migration detects this per table and per row:

  • illenium-appearance skins and outfits (components / props columns) are copied as they are.
  • qb-clothing skins ({ "pants": { "item": 24, "texture": 2 }, ... }) and qb-clothing outfits (a single skin column in player_outfits) are converted: clothing, props (hats, glasses, ears, watches, bracelets), hair, eyebrows, beard and other overlays, face shape and features, and eye colour.
  • Ped models saved as a number (for example 1885233650) are turned back into model names.

1. In-Game or Console Command

Run the following command from the server console or in-game as an administrator (group.admin):

/migrateillenium
/migrateillenium force

What the Migration Command Does:

  1. Verifies the existence of the playerskins table in your database.
  2. Reads all active player skins (WHERE active = 1) and converts each one.
  3. Keeps any look a player already made in kartik-clothing, so running the command again never overwrites new looks. Use /migrateillenium force to import the old look over it anyway.
  4. Reads saved outfits from player_outfits (if present) and copies them into kc_player_outfits. Outfits that were already imported (same character and outfit name) are skipped, so running it twice gives no duplicates.
  5. Rows that cannot be read are skipped, and a player_outfits table with an unknown layout is skipped with a notice. A database error stops the migration with a message instead of a script error.
  6. Outputs a summary log in the server console:
    [kartik-clothing Migration] Migrated 142 player skins and 89 saved outfits. Kept 3 existing kartik-clothing looks, skipped 0 outfits already imported, 1 rows could not be read.

Back up your database before migrating. The migration only reads playerskins and player_outfits, it never changes or deletes them.

2. Server Export Trigger

Alternatively, you can trigger the migration programmatically from any server script:

local ok, resultMsg = exports['kartik-clothing']:migrateIlleniumAppearance()
print("Migration Result:", resultMsg)

-- import over looks players already made in kartik-clothing
exports['kartik-clothing']:migrateIlleniumAppearance(true)

ok is true when the migration finished, false when the playerskins table is missing or a database error stopped it. resultMsg is the summary shown above.


🚫 Automated illenium-appearance Blacklist Import

The command above moves players. Their Config.Blacklist, the garments they had restricted, is a separate import, because it lands in kc_item_locks rather than in a player table.

Paste their block into /shopmanager → Blacklist Import, press Check it, then Import. Or from the console:

/migrateilleniumblacklist dry   -- print what it would do
/migrateilleniumblacklist       -- import it

A plain drawable list becomes a garment nobody may wear; an entry carrying jobs becomes a garment only those jobs may wear. Full walkthrough: Blacklist Import (illenium).


⚡ Automated rcore_clothing Migration

kartik-clothing includes built-in migration support for rcore_clothing. The migration script parses active player clothing snapshots from rcore_clothing_current and saved outfit presets from rcore_clothing_outfits (handling DLC strings, texture numbers, and component maps) and converts them into kc_player_skins and kc_player_outfits.

1. In-Game or Console Command

Run the following command from the server console or in-game as an administrator (group.admin):

/migratercore

What the Migration Command Does:

  1. Verifies the existence of rcore_clothing_current and rcore_clothing_outfits tables.
  2. Parses legacy clothing formats (dlcName--slot--drawable--texture and slot_drawable_texture).
  3. Extracts streamed DLC collection names (e.g. dlcName) so streamed clothing collections are preserved without index shifts.
  4. Inserts migrated active player skin records into kc_player_skins.
  5. Converts saved outfits into kc_player_outfits.
  6. Outputs a summary log in the server console:
    [kartik-clothing Migration] Successfully migrated 186 active player skins and 112 saved outfits from RCore clothing!

2. Server Export Trigger

local ok, resultMsg = exports['kartik-clothing']:migrateRcoreClothing()
print("RCore Migration Result:", resultMsg)

🛈 Migrating from qb-clothing

If you are migrating from qb-clothing:

  1. kartik-clothing automatically listens for legacy qb-clothing net events (such as qb-clothing:client:openMenu and qb-clothing:saveOutfit).
  2. Run /migrateillenium once. It reads qb-clothing's playerskins and player_outfits tables and converts the qb-clothing format (see the illenium-appearance section above).
  3. You can safely stop or remove qb-clothing from your server.cfg.

🛑 Post-Migration Steps

  1. Verify that player skins load properly on player spawn.
  2. Ensure legacy resource scripts (illenium-appearance, rcore_clothing, or qb-clothing) are stopped and removed from server.cfg.
  3. Retain database backups until you confirm all active player data has successfully migrated.

On this page