Custom Profiles - Another look (Guide)

Please consider the previous posts i made about custom profiles invalid/outdated. I also wanted to put everything related to CPs into one post.
Yes the other ones should be locked now.

squadType , sClass or sKind - soldier category

assault
sniper
rifle
tanker
engineer
pilot_fighter
radioman
pilot_assaulter
anti_tank
mgun
mortarman
flametrooper
medic
biker
paratrooper

and all of them should have _2 _3 _4 …variants. For example: mgun_3 - Machine Gunner 3

Perks

hp_boost
hp_regeneration
heal_effectivity
pilot_keen_vision
brakingTauMult
gearChangeTimeMult
drivingSpeedThresholdMult
pilot_awareness
stamina_boost
pilot_stamina_boost_base
pilot_stamina_boost
pilot_willpower
pilot_head_stabilisation
pilot_positive_g_tolerance
pilot_negative_g_tolerance
pilot_stamina_regeneration
stamina_regeneration
weight_run
less_stopping_power
more_stability_when_hit
less_recoil
more_predictable_recoil
faster_aiming_point_return_after_fire
less_aim_moving
less_maximum_shot_spread_after_turn
faster_decreasing_of_maximum_shot_spread
longer_hold_breath
less_hold_breath_cd
faster_bolt_action
faster_reload
accurate_guidance
reload_reaction
faster_change_weapon
sprint_speed
run_speed
crawl_speed
jump_height
climb_speed
less_fall_dmg
change_pose_speed
weapon_turning_speed
crawl_crouch_speed
faster_change_pose_speed
extinguish_time
repair_speed
repair_quality
repairkit_economy_usage
seat_change_speed
less_base_kill_chance
more_downed_time
less_camera_shake_on_explosions
longer_hold_breath_cd
more_building_materials
melee_damage
longer_grenade_throw
faster_building_speed
faster_aim_speed
heal_speed
faster_melee
fire_damage_mult
fire_damage_tick_resistance
more_flamethrower_fuel
faster_self_fire_putout
less_concussion_shake
less_concussion_time
heal_speed_target
heal_effectivity_target
medic_more_medbox_packs
medic_more_medpacks

SquadIDs

factionname_campaign_squadType_number

For example: ussr_moscow_assault_1 USSR Moscow Assaulter Squad I

For more info look into common.csv in the language file (enlisted-lang.vromfs.bin\lang\common) It contains all squads and their codenames.

Guide

2023.10.01: * Note that Custom profiles will not work in the editor. You will have to export the vromfs.bin file, upload it to the sandbox portal and test it in the client by launching a custom battle. This is presumably due to the editor’s own squad profile.

This is the old guide i made before. It is still valid with the extra points i added below.

As a start i will load the squad profile that was used for the Sea Predator event. Later i will edit this to my liking.

First create your scene then hit save. Then open the folder of your mission:

image

I have created a seperate folder for the profiles. It is not neccessary, you can just place it next to the scene.blk file.

image

In the editor, add the two profile entities to the scene:
image

The difference between the two is pretty much self explanatory.

It only has 1 property, the file path:
image

In my case for both profiles it is %ugm/profiles/sea_predator_profile.json

Here it is in notepad:
image

After creating the profiles for both players and bots we can save and restart.

We will be greeted by this error message:
image

It’s fine. Ignore it. export mod as vromfs.bin and launch it online.

As you can see it works as we would expect in-game:

Now let’s get to the good part. Let’s customise this.

You will have to edit this in a text editor. Not in the actual game editor.

You can imagine this profile file as a rather deep tree structure, where the top nodes are the factions themselves:

Each of these contain a lot of interesting but irrelevant definitions like how much xp is needed for the next campaign level: (I have edited the normandy_allies part of the profile)

image

Or how much xp do you need to earn to get an order:

image

What we are truly interested in are here:

image

SQUADS.

Note: It is easy to accidentally delete a bracket. And due to the complexity of this file it also easy to get lost. I suggest you collapse everything but the squads section.

At the top the squad’s properties are defined.

image

artilleryCooldown for example (i think) has smaller value for artillery squads
engineerUnlocks should define whether the engineer of this squad can build enginner squad exclusive buidlings like Flak AA or MG nest.
isRented sounds interesting…

In the game we have soldier named “Rolando Wilson”
image

We can search this in our JSON file:

Every solder code starts with it’s equipment: (“id” : x, is the first line)

image

There is a lot of options here. Let’s start by renaming our guy to…Custon Name.
Now let’s increase the perk number:
image
to
image
And add actual perks:
image
In the game perks have a pre-set value. Like +40% jump height or -40% verical recoil.

These can all be custom. Just change the statValue to your liking.
image
hp_boost is Max Vitality. In this case it is +220% max hp.
The others are self explanatory.

Next section is appearance:

Thanks to @ErikaKalkbrenner you can edit the appearance of each soldier.

Next is
human_weap__weapInfo

image

You can see that the ammo for the m2_carbine is defined here. Our soldier gets 5 clips + one is already loaded.
Bayonet is also added here.

image
image

This is also where you add scopes to weapons which had them.
I have no idea what happens if you try to add a scope or bayonet to a wepaon which otherwise can’t equip one. You are free to try.

The last section defines the weapons.

image

The first few lines don’t need explanation. I also found this somehwhere:
image

Weapons are defined below.
image

Which appear correctly in the game:

image

grenade_thrower is not a weapon. It is literraly a slot for soldiers to throw grenades.

Let’s replace this with the M2 Hyde gun.

You can check the weapon codes in the editor:

image
Let’s also give him a nice pistol:

image

Remember to change the ammo for the guns above.
You can find the right ammo for the gun in the editor:
image

This is how my weapInfo looks like:
image

Let’s test it.

Aaand it works!

We have the equipment we defined:
image

Clothing IDs In case you want to play Sims in Enlisted (Thanks to @ErikaKalkbrenner)

Modified profile.JSON:

  • Use sample provided below

https://sandbox.enlisted.net/post/g0LjnAfmGk1gcfPu/

Debugging and what to look out for

kép

  • Brackets must always have their correct “pair”, or the game will return a “Connection refused” error when launched online, or “Corrupted profile” error when launching in local mode

kép

  • JSON Syntax requires you to NOT place commas at the closing bracket of the last element of an array. applies to all arrays of course.

kép
kép

  • Soldiers and squads MUST have custom guids or the profile will be broken. If two squads have the same guid then, in-game, the second squad will appear as a duplicate of the first squad.

You can use https://jsonlint.com/ for debugging.

Sample JSON

Playable Mission with the custom squads:

https://sandbox.enlisted.net/post/fKUbhbKV3HWgsh4B/

Custom profile was made with motorized squad. Note that this requires entites.blk override or the vehicle squad will not be able to spawn.

Launch mission with Moscow as selected campaign


Thanks to @Devenddar and @tommyZZM

Sample mission with “source code”:
_Mechanized_1941.zip (13.3 KB)

I plan to expand this as i encounter more errors.

FAQ

!WIP!

Q: Whats the difference between bots profile and players profile?

A: Probably bots profile doesn’t have vehicle squads as the AI cannot operate tanks, plane etc.

Q: Where do i find weapon names? And the ammo that belongs to them?

A: Use the editor. Place the chosen weapon on the map then search “ammoHolder”. It will tell you which ammo it will accept.
Usually ammo is gunname_magazine. But not always.

Q: My soldier has no ammo! Or weapons!

A: You have probably made a typo in the JSON file. Recheck and try again.

Q: Can i edit the weapon’s properties? Fire rate, reload time, recoil, etc?

A: Yes. There are two possible ways to do this. If you want to apply a stat to every weapon in the mission you can override it in the entites.blk file. Otherwise edit weapInitialComponents:

kép

First element of initialComponents is the primary weapon. Second is secondary weapon. Third is pistol etc.

**Q:How do i edit the soldier itself? (Run speed, max health?)

A: You need to edit the perks section of each soldier with the perks i listed above.

kép

Q: Can i change the textures of guns?

A: Yes by adding the following to entites.blk:

colt_walker_gun{
  _override:b=yes

  "animchar__objTexReplace:object"{
    "western_weapon_handgun_a_tex_d*":t="ger_camo_winter_grey*"
    "western_weapon_handgun_a_tex_n*":t="western_weapon_handgun_a_tex_n*"
  }
}

colt_walker_gun_item{
  _override:b=yes

  "animchar__objTexReplace:object"{
    "western_weapon_handgun_a_tex_d*":t="ger_camo_winter_grey*"
    "western_weapon_handgun_a_tex_n*":t="western_weapon_handgun_a_tex_n*"
  }
}

Thanks to @Devenddar

Q: I get “connection refused” error. What do i do?

A: JSON has either a syntax or scemantic error.

15 Likes

it does work :slight_smile:


even if you use custom entities ( from the entities. )

you’ll need to remember and have the correct name and correct slot though.

7 Likes

There also probably biker and paratrooper.

sClass and sKind is anti_tank.

Probably some missing perks.

faster_melee
fire_damage_mult
fire_damage_tick_resistance
more_flamethrower_fuel
faster_self_fire_putout
less_concussion_shake
less_concussion_time
heal_speed_target
heal_effectivity_target
medic_more_medbox_packs
medic_more_medpacks

Not sure about them:
base_hp_mult
more_hp_threshold
hp_regen_speed

perk_point_run_speed
perk_point_stamina_boost
perk_point_less_recoil

2 Likes

As i can see, you edited the colour of the german vap? or is it ingame and just not used? I only recognize it from the stg45 squad right?

I tried to customize the soldiers, but there was a problem. In my squad there is a soldier called Danilov:
i customized his appearance but it did not work ingame.

When i copied and pasted the same edited appearance part of danilov to another soldier from the squad called “voroncov” it worked…

I cannot get it to work i dont know what to do.

Now i customized the soldier Danilov only and suddently voroncov is wearing the edited uniform ingame?

You can replace some equipment and weapon textures to another. In editites you will need to override entity and add animchar__objTexReplace.
Entities.blk code example:

colt_walker_gun{
  _override:b=yes

  "animchar__objTexReplace:object"{
    "western_weapon_handgun_a_tex_d*":t="ger_camo_winter_grey*"
    "western_weapon_handgun_a_tex_n*":t="western_weapon_handgun_a_tex_n*"
  }
}

colt_walker_gun_item{
  _override:b=yes

  "animchar__objTexReplace:object"{
    "western_weapon_handgun_a_tex_d*":t="ger_camo_winter_grey*"
    "western_weapon_handgun_a_tex_n*":t="western_weapon_handgun_a_tex_n*"
  }
}

By same way you can edit texutes for clothes.
Need to write real animchar texture name (in example western_weapon_handgun_a_tex_d*) and then replace it.

Maybe you forgot somewhere to add ,?
It will be not very easy to code even for me. Because easy to do mistakes.

Sounds like some problems with updating your mod. Currently time there one problem with updating mods. Try to remove it and then redownload updated version or two times update your mod.

1 Like

The replacing texture seems interesting too… Is there maybe a list with available options? does it work with clothes too?

Yes. Works too. Same way. I think about textures better to ask ErikaKalkbrenner @ErikaKalkbrenner.

1 Like

Maybe it is to much to ask for a total guide, but may i ask for a single piece for you to tell me?
I would like to turn this german hooded jacket white like the jacket on the left… Could you give me the code for that?

Well… In editor you selected attachable_wear_ger_hooded_smock_covered_item+item_in_world. In enitites you will need to write only entity name and without postfixs. So first entity code will be like it:

attachable_wear_ger_hooded_smock_covered_item

Then you need to open and close entity code body. For that add { and }.

attachable_wear_ger_hooded_smock_covered_item{
}

After that you need to override original item. To able update code. For that you need to add _override:b=yes.

attachable_wear_ger_hooded_smock_covered_item{
  _override:b=yes
}

And then write new properties or change old ones. To change textures you will need to edit animchar__objTexReplace. Add it. It can be only as array. So it will be like it:

attachable_wear_ger_hooded_smock_covered_item{
  _override:b=yes
  "animchar__objTexReplace:object"{
    "EntityTextureName*":t="NewTextureName*"
  }
}

About real textures names… Sorry. I can’t tell right now.

If you want to create new equipment then just imagine unique name, write it instead attachable_wear_ger_hooded_smock_covered_item. But instead _override:b=yes you will need info from another objects. So… For example… You will need to add this line: _extends:t=“attachable_wear_ger_hooded_smock_covered_item”. It add info from another entity.

A bit more about entities.blk here.

1 Like

well,

the basic example for changing textures like @Devenddar colt, is through entities.

and, most will look like:

( for easy replacement )

it will look something like:

i suppose i came too late.

anyway, for soldiers,

you might have made the code wrong.

but it generally start with appearance seed, and ends with the soldier’s perks:

{
                  "appearance__rndSeed" : 1302,
                  "availPerks" : 0,
                  "bodyScale" : {
                     "height" : 0.9872878193855286,
                     "width" : 1.029397845268250
                  },
                  "callname" : "",
                  "equipment" : {
                     "belt_1" : {
                        "gametemplate" : "attachable_wear_us_m23_cartridge_belt_jacket_m41_item",
                        "slot" : "belt_1"
                     },
                     "face" : {
                        "gametemplate" : "attachable_wear_head_male_21_us_item",
                        "slot" : "face"
                     },
                     "gloves" : {
                        "gametemplate" : "attachable_wear_m43_leather_palm_gloves_m44_jacket_item",
                        "slot" : "gloves"
                     },
                     "head" : {
                        "gametemplate" : "helmet_03_us_summer_item",
                        "slot" : "head"
                     },
                     "pants" : {
                        "gametemplate" : "attachable_wear_a9_flying_pants_item",
                        "slot" : "pants"
                     },
                     "backpack" : {
                        "gametemplate" : "attachable_wear_m28_backpack_m43_jacket_item",
                        "slot" : "backpack"
                     },
                     "tunic" : {
                        "gametemplate" : "attachable_wear_jacket_m35_ussr_01_olive_winter_item",
                        "slot" : "tunic"
                     }
                  },
                  "exp" : 0,
                  "gametemplate" : "usa_base_soldier",
                  "guid" : "usa_normandy_soldier_antitank_25283574665",
                  "heroTpl" : "",
                  "human_weap__weapInfo" : [
                     {
                        "gunSlots" : {},
                        "numReserveAmmo" : 8,
                        "reserveAmmoTemplate" : "m3_submachine_gun_magazine"
                     },
                     {
                        "gunSlots" : {},
                        "numReserveAmmo" : 10,
                        "reserveAmmoTemplate" : "m6a3_bazooka_item"
                     },
                     {
                        "gunSlots" : {},
                        "numReserveAmmo" : 0,
                        "reserveAmmoTemplate" : ""
                     },
                     {
                        "gunSlots" : {},
                        "numReserveAmmo" : 0,
                        "reserveAmmoTemplate" : ""
                     },
                     {
                        "gunSlots" : {},
                        "numReserveAmmo" : 0,
                        "reserveAmmoTemplate" : ""
                     }
                  ],
                  "human_weap__weapInitialComponents" : [
                     {
                        "gun__kineticDamageMult" : 20.0,
                        "gun__recoilAmount" : -15.0,
                        "gun__shotFreq" : 10.0,
                        "gun_spread__maxDeltaAngle" : -30.0
                     },
                     {},
                     {},
                     {},
                     {}
                  ],
                  "human_weap__weapTemplates" : {
                     "grenade" : "grenade_thrower",
                     "melee" : "usa_shovel_weapon",
                     "primary" : "m3_submachine_gun_gun",
                     "secondary" : "m9_bazooka_gun",
                     "tertiary" : ""
                  },
                  "id" : 2,
                  "inventory" : [
                     {
                        "gametemplate" : "medkit_item"
                     },
                     {
                        "gametemplate" : "explosion_pack_item"
                     }
                  ],
                  "isPremium" : false,
                  "level" : 1,
                  "maxLevel" : 4,
                  "name" : "Stanley",
                  "perkPoints" : {
                     "speed" : 9,
                     "vitality" : 8,
                     "weapon" : 8
                  },
                  "perks" : [
                     {
                        "name" : "starter_antitank",
                        "stats" : [
                           {
                              "statKey" : "faster_change_pose_speed",
                              "statValue" : 0.1749999970197678
                           }
                        ]
                     }
                  ],
                  "perksCount" : 1,
                  "sClass" : "anti_tank",
                  "sKind" : "anti_tank",
                  "surname" : "Bradley",
                  "tier" : 3,
                  "weaponPreset" : ""
               },

make sure that the id is correct ( which, starts from 0 and goes up to how many soldiers you have in your squad )

and, keep in mind:

just pay a bit more attention, and you should be fine.

1 Like

Also anyone who wants to start making Custom profiles; I wouldn’t as the merge may change the JSON file. (no more campaigns, united currency etc).

3 Likes

Looking to team entity… They let us use old campaigns armies. Maybe for some time or maybe for long time.

1 Like

also, the base code of the sumpftarn hoodie; it’s:
ger_hooded_smock_open_tex_d

you’ll find mostly of what you are looking for by searching keywords of the clothing inside main game directory through .dxp.bin files.


1 Like

I hope the devs or helpers will release a post similar to when effects were changed; To prepare.

About common_factionname: we shall see very soon…

3 Likes

they won’t.

they didn’t even warned about the various rendinsts and animations removal last time,

they won’t this time either.

already asked preemptively;

but too naive and optimistic about it.

which btw, have you saw any official answer? about how armies will work?
don’t think so.

1 Like

Only info that they will mix.
In editor you already can see some code:

Probably for some time we will have common_ger and at same time old campaigns.

I really appreciate your help my friend :slight_smile: but may i ask, if it is not bothering… could you maybe give me the texture name so i can make the hoodie from above white? I am sorry to ask but i really struggle with file stuff…

that’s the keyword my friend.

" probably ".

which it’s not a definitive answer.

( and would be about time to get any. because we could prentively have our mods ready to be up to date. instead of wasting weeks trying to figure out / find the answer )

dunno to be honest.

you’ll have to lookg through dpx.files and look see for your self what the texture is all about.

to save some time, apply the textures onto vehicles. you’ll see them much quicker than having to apply the costume, save, duplicate it, delete it, and check individually on each piece each time.

while, on a tank, as soon you insert the textures, it will automatically show up.

beside, all i know of white, is plastic_a_tex_d*

1 Like