Difference between revisions of "Map Editing/Body"

From Holdfast: Nations At War
Jump to navigation Jump to search
 
Line 6: Line 6:
 
[[File:Holdfast_CustomMap.jpg|right|600px|CustomMap]]
 
[[File:Holdfast_CustomMap.jpg|right|600px|CustomMap]]
  
<pre class="hf-code"><nowiki>!map_rotation start
+
<pre style="background:#111827;color:#e5e7eb;padding:.8em 1em;border-radius:.6em;overflow:auto;line-height:1.45;font-size:.9em;"><nowiki>!map_rotation start
 
map_name CustomMap
 
map_name CustomMap
 
game_mode ArmyBattlefield
 
game_mode ArmyBattlefield
Line 29: Line 29:
 
To refresh changes to your map without restarting your server, issue the following (substitute the correct rotation index):
 
To refresh changes to your map without restarting your server, issue the following (substitute the correct rotation index):
  
<pre class="hf-code"><nowiki>rc fileReloader serverConfigFile
+
<pre style="background:#111827;color:#e5e7eb;padding:.8em 1em;border-radius:.6em;overflow:auto;line-height:1.45;font-size:.9em;"><nowiki>rc fileReloader serverConfigFile
 
rc mapRotation 1</nowiki></pre>
 
rc mapRotation 1</nowiki></pre>
 +
 +
<div style="clear:both;"></div>
  
 
= Positioning =
 
= Positioning =
Line 39: Line 41:
 
This prints your position and rotation:
 
This prints your position and rotation:
  
<pre class="hf-code"><nowiki>playerPosition => (15.3, 16.8, 146.9)
+
<pre style="background:#111827;color:#e5e7eb;padding:.8em 1em;border-radius:.6em;overflow:auto;line-height:1.45;font-size:.9em;"><nowiki>playerPosition => (15.3, 16.8, 146.9)
 
playerRotation => (0.0, 218.0, 0.0)</nowiki></pre>
 
playerRotation => (0.0, 218.0, 0.0)</nowiki></pre>
  
Line 47: Line 49:
  
 
As of [[Game_Version_0.3X#0.35|0.35]], <code>get details</code> also copies position & rotation to your clipboard for easy pasting.
 
As of [[Game_Version_0.3X#0.35|0.35]], <code>get details</code> also copies position & rotation to your clipboard for easy pasting.
 +
 +
<div style="clear:both;"></div>
  
 
= Placing Props =
 
= Placing Props =
Line 54: Line 58:
 
See {{ll|Spawnable_Props|Spawnable Props}} for the full list. Place a decorative prop with:
 
See {{ll|Spawnable_Props|Spawnable Props}} for the full list. Place a decorative prop with:
  
<pre class="hf-code"><nowiki>objects_override <prop> <pX> <pY> <pZ> <rX> <rY> <rZ></nowiki></pre>
+
<pre style="background:#111827;color:#e5e7eb;padding:.8em 1em;border-radius:.6em;overflow:auto;line-height:1.45;font-size:.9em;"><nowiki>objects_override <prop> <pX> <pY> <pZ> <rX> <rY> <rZ></nowiki></pre>
  
 
: '''&lt;prop&gt;''' — Enum from {{ll|Spawnable_Props|Spawnable Props}}   
 
: '''&lt;prop&gt;''' — Enum from {{ll|Spawnable_Props|Spawnable Props}}   
Line 64: Line 68:
 
Example—add a Target Dummy at the example coordinates:
 
Example—add a Target Dummy at the example coordinates:
  
<pre class="hf-code"><nowiki>!map_rotation start
+
<pre style="background:#111827;color:#e5e7eb;padding:.8em 1em;border-radius:.6em;overflow:auto;line-height:1.45;font-size:.9em;"><nowiki>!map_rotation start
 
map_name CustomMap
 
map_name CustomMap
 
game_mode ArmyBattlefield
 
game_mode ArmyBattlefield
Line 93: Line 97:
 
Players can hold <kbd>E</kbd> to take weapons from a rack (limited supply).
 
Players can hold <kbd>E</kbd> to take weapons from a rack (limited supply).
  
<pre class="hf-code"><nowiki>objects_override WeaponRack <Object Position> <Object Rotation> <Weapon> <Number Of Weapons In Rack></nowiki></pre>
+
<pre style="background:#111827;color:#e5e7eb;padding:.8em 1em;border-radius:.6em;overflow:auto;line-height:1.45;font-size:.9em;"><nowiki>objects_override WeaponRack <Object Position> <Object Rotation> <Weapon> <Number Of Weapons In Rack></nowiki></pre>
  
 
: '''&lt;Object Position&gt;''' — <code>x y z</code> (use <code>get playerPosition</code>)   
 
: '''&lt;Object Position&gt;''' — <code>x y z</code> (use <code>get playerPosition</code>)   
Line 101: Line 105:
  
 
'''Example'''
 
'''Example'''
<pre class="hf-code"><nowiki># Override Commands (This is a comment and will be ignored by the game)
+
<pre style="background:#111827;color:#e5e7eb;padding:.8em 1em;border-radius:.6em;overflow:auto;line-height:1.45;font-size:.9em;"><nowiki># Override Commands (This is a comment and will be ignored by the game)
 
objects_override WeaponRack 1 2 3 7 8 9 Rifle_Pattern1800Infantry 4</nowiki></pre>
 
objects_override WeaponRack 1 2 3 7 8 9 Rifle_Pattern1800Infantry 4</nowiki></pre>
 
Place this between <code>!map_rotation start</code> and <code>!map_rotation end</code>.
 
Place this between <code>!map_rotation start</code> and <code>!map_rotation end</code>.
Line 108: Line 112:
 
Customisable ammo boxes for RP/events. Players replenish ammo on use.
 
Customisable ammo boxes for RP/events. Players replenish ammo on use.
  
<pre class="hf-code"><nowiki>objects_override firearmammobox <Object Position> <Object Rotation> <Firearm> <Maximum Interactions Until Depletion> <Ammo Given> <Maximum Interactions Allowed Per Player></nowiki></pre>
+
<pre style="background:#111827;color:#e5e7eb;padding:.8em 1em;border-radius:.6em;overflow:auto;line-height:1.45;font-size:.9em;"><nowiki>objects_override firearmammobox <Object Position> <Object Rotation> <Firearm> <Maximum Interactions Until Depletion> <Ammo Given> <Maximum Interactions Allowed Per Player></nowiki></pre>
  
 
: '''&lt;Object Position&gt;''' — <code>x y z</code>   
 
: '''&lt;Object Position&gt;''' — <code>x y z</code>   
Line 118: Line 122:
  
 
'''Example'''
 
'''Example'''
<pre class="hf-code"><nowiki># Override Commands (This is a comment and will be ignored by the game)
+
<pre style="background:#111827;color:#e5e7eb;padding:.8em 1em;border-radius:.6em;overflow:auto;line-height:1.45;font-size:.9em;"><nowiki># Override Commands (This is a comment and will be ignored by the game)
 
objects_override firearmammobox 1 2 3 7 8 9 Rifle_Pattern1800Infantry 20 2 1</nowiki></pre>
 
objects_override firearmammobox 1 2 3 7 8 9 Rifle_Pattern1800Infantry 20 2 1</nowiki></pre>
 
Place this between <code>!map_rotation start</code> and <code>!map_rotation end</code>.
 
Place this between <code>!map_rotation start</code> and <code>!map_rotation end</code>.
 +
 +
<div style="clear:both;"></div>
  
 
= Polishing Up =
 
= Polishing Up =
 
Once your map is laid out, adjust class limits, spawns, and other settings as usual via the {{ll|Server_Configuration|Server Configuration}} guide.
 
Once your map is laid out, adjust class limits, spawns, and other settings as usual via the {{ll|Server_Configuration|Server Configuration}} guide.
 +
 +
<div style="clear:both;"></div>
  
 
= Community Maps =
 
= Community Maps =

Latest revision as of 17:18, 23 September 2025

Holdfast allows server owners to customise existing maps to create a whole new experience. You can add props, change spawns, weapon setup, class limits, and more until you’ve created something entirely new. Map customisation is defined using Template:Ll in the configuration file.

Starting Maps

As well as building upon the normal Template:Ll, there are two flat and empty maps that are perfect to let your imagination run wild: CustomMap and CustomMapNaval. As you’ll likely spend plenty of time setting up your new map, create a new Template:Ll with an unlimited timer and open spawns, e.g.:

CustomMap
!map_rotation start
map_name CustomMap
game_mode ArmyBattlefield
round_time_minutes -1
reinforcements_per_faction 9000
wave_spawn_time_seconds 1
max_player_respawns -1
faction_balancing false
allow_midround_spawning true
allow_faction_switching true
allow_spectating true
minimum_players -1
maximum_players 150
time_hour 8
time_dynamic false
friendly_fire true
weather_preset calm
weather_dynamic false
game_type hardcore
!map_rotation end

To refresh changes to your map without restarting your server, issue the following (substitute the correct rotation index):

rc fileReloader serverConfigFile
rc mapRotation 1

Positioning

Before placing a prop, decide where it goes and which way it faces. Stand where you want it in-game, open the console with F1 and type get.

The output of get

This prints your position and rotation:

playerPosition => (15.3, 16.8, 146.9)
playerRotation => (0.0, 218.0, 0.0)
  • Position is (X, Y, Z). Positive X is North, positive Y is up, positive Z is West.
  • Rotation is degrees around (X, Y, Z). You’ll use Y most to turn objects; X and Z tilt.
  • To face the opposite direction of the example above, use (0.0, 38.0, 0.0) (218 − 180).

As of 0.35, get details also copies position & rotation to your clipboard for easy pasting.

Placing Props

Props range from simple decor (just position/rotation) to interactables (with extra parameters).

Decorative Props

See Template:Ll for the full list. Place a decorative prop with:

objects_override <prop> <pX> <pY> <pZ> <rX> <rY> <rZ>
<prop> — Enum from Template:Ll
<pX> <pY> <pZ> — Position (use get playerPosition)
<rX> <rY> <rZ> — Rotation (use get playerRotation)
CustomMap

Example—add a Target Dummy at the example coordinates:

!map_rotation start
map_name CustomMap
game_mode ArmyBattlefield
round_time_minutes -1
reinforcements_per_faction 9000
wave_spawn_time_seconds 1
max_player_respawns -1
faction_balancing false
allow_midround_spawning true
allow_faction_switching true
allow_spectating true
minimum_players -1
maximum_players 150
time_hour 8
time_dynamic false
friendly_fire true
weather_preset calm
weather_dynamic false
game_type hardcore

objects_override TargetDummy 15.3 16.8 146.9 0.0 218.0 0.0
!map_rotation end

Interactable Props

These require extra arguments.

Weapon Racks

Players can hold E to take weapons from a rack (limited supply).

objects_override WeaponRack <Object Position> <Object Rotation> <Weapon> <Number Of Weapons In Rack>
<Object Position>x y z (use get playerPosition)
<Object Rotation>x y z (use get playerRotation)
<Weapon> — Enum from Template:Ll
<Number Of Weapons In Rack>0–255

Example

# Override Commands (This is a comment and will be ignored by the game)
objects_override WeaponRack 1 2 3 7 8 9 Rifle_Pattern1800Infantry 4

Place this between !map_rotation start and !map_rotation end.

Firearm Ammoboxes

Customisable ammo boxes for RP/events. Players replenish ammo on use.

objects_override firearmammobox <Object Position> <Object Rotation> <Firearm> <Maximum Interactions Until Depletion> <Ammo Given> <Maximum Interactions Allowed Per Player>
<Object Position>x y z
<Object Rotation>x y z
<Firearm> — Enum from Template:Ll
<Maximum Interactions Until Depletion>0–255 total uses
<Ammo Given>0–255 rounds per use
<Maximum Interactions Allowed Per Player>0–255 per-player cap

Example

# Override Commands (This is a comment and will be ignored by the game)
objects_override firearmammobox 1 2 3 7 8 9 Rifle_Pattern1800Infantry 20 2 1

Place this between !map_rotation start and !map_rotation end.

Polishing Up

Once your map is laid out, adjust class limits, spawns, and other settings as usual via the Template:Ll guide.

Community Maps

The Holdfast modding community shares custom map configs and assists new modders. Join via the official Discord:

Holdfast Official Discord

Once joined, go to #getting-started and react to the pinned message to unlock the Modding Bench channels.