Welcome, Guest. Please login or register. Did you miss your activation email?

* TUTORIAL SECTION RULES

This section is for SMOD TUTORIALS & GUIDES ONLY.
You may create a new topic in the appropriate area to share your tutorial. If you post anything off-topic here you will be temp-banned. This is so we don't hassle the moderators too much, they are volunteers.

If you need help with a tutorial, post a reply in its thread . Do not start a new topic for help here!

Author Topic: Mapadd Documentation  (Read 6500 times)

0 Members and 1 Guest are viewing this topic.

Offline BIZ

  • 32-Bit Hobo
  • *
  • *
  • +0% chance to make useful post
  • BIZ hides in shadows.
    • BSNOOCH.COM
Mapadd Documentation
« on: October 12, 2009, 03:28:46 AM »
MAPADD

 

This lovely little piece came from Jen4, who translated the whole file for me. From Japanese to Italian to English. I cleaned it up and added some things. My only wish is that I could have seen this a long time ago and saved myself all the trial and error. There is quite a bit possible with this code.

Created - Sunday, June 14, 2009, 3:02:03 AM
Updated - 1/15/15

 

OVERVIEW

With a simple mapadd configuration file, it is possible to add enemies, weapons, and much more to any ready-made map without the need to decompile or modify the actual .bsp file. This can allow you to play any Deathmatch map as if it were single player. However, you may not be able to recreate some situations from the HL2 campaign... To understand this file, it is recommended that you know a bit about creating a map in Hammer.

FILE STRUCTURE
The mapadd configuration file is comprised of three basic groups and a number of user defined groups. However, it is not necessarily processed in the following order:

precache section
..The precache section loads models and entities into the games memory before the start of the map.

randomspawn section
..Places entities randomly around the map before map start.

entities section

..Spawns entities as soon as the map starts.

labeled entity groups

..Spawns entities when called upon by a trigger or some other event.

The precache, randomspawn, and entities sections are processed in order when the map first loads, as is natural whith the HL2 engine. Labeled entity groups are processed when called upon by a simple trigger.

HOW TO CREATE A MAPADD FILE

Mapadd files are written in Notepad. The file name is named "mapname.txt", and are placed in the mapadd folder in your smod directory. You need to make sure that "mapname" corresponds to the map you want the file to work with.

I recommend that you use Notepad++ to create mapadd files, since it has several great features such as colorizing braces. And if you do any serious mapadding you will have plenty of braces.


CHARACTER CODE

Basic, ASCII, CR + LF. Using the Japanese, UTF-8 must be converted to code. In this file, (#HL_xxx localized messages for each language) are not available.


EXCEPTION HANDLING
Due to the nature of the mapadd script, without conversion to intermediate code in the game, there is very little exception handling. If you have an error in your mapadd script, you may find that the game engine will stop, and not output error.


THINGS THAT CAN'T BE ACHIEVED AT THE MOMENT
* NPC's as templates
* Cargo container from Dropship NPC can not be put down
* Specific trigger input and output
- A simple trigger has been provided instead.
* Getting the state and the use of variables
- the_author: This is so troublesome. How can I quickly make my map and go with things like this?

KNOWN ISSUES, BUGS, AND LIMITATIONS
* The "player" entity does not work in the "Entities" section
- You can get around this by processing the entity through a timer or simple trigger.
* Simple treatment of the trigger interval
- Triggers with with no timer or radius will not be processed through the mapadd.
* Some entities may not work correctly
- Due to order processing issues

 


DETAILED DESCRIPTION OF THE MAPADD FILE

This will describe each section of the Mapadd configuration file. Lots of examples in here. Just remember that it would be impossible to cover every value in the Source engine that can be used in mapadds. Each entity will have its own unique set of KeyValues. These are mostly commands that the_author added in to SMOD for his own use and do not exist outside of SMOD.

For a full list of KeyValues for every entity, visit the Valve Developer Wiki.

"PRECACHE" SECTION
Half Life 2 will only load an entity as it emerges in game. Use precache to preload entities on the map to eliminate ingame delay caused by loading.

Example: Here is an example of precaching some entities

   
Code: [Select]
"precache" {
    "entity" "npc_citizen"
    "entity" "npc_combine_s"
    "model" "models/custom/custom.mdl"
    }

Description of values:

"Entity"
Precache an entity along with its model information and associated cache. Designated by the name.
Example: precache the Citizens
"entity" "npc_citizen"

"Model"
Precache a specific model. Specified by model name
Example: precache combine elite model
"model" "models / combine_super_soldier.mdl"

"Sound"
Precache a sound by specifying the name of the cache for the specified sound.


"RANDOMSPAWN" SECTION

This section will allow you to spawn an entity at a random node on the map. Some information from the player is used and some nodes may be ignored unconditionally.

Example: This is how the section looks, entities are placed within its braces:

   
Code: [Select]
"randomspawn" {
    }

"<Entity Name>"
Will randomly generate an entity of choice on the map. This is mostly used for NPC's. Although other entities may be spawned, the author makes no mention of it here. It requires an opening and closing brace so you can define specific values for the entity.

Example: Here is an example of a randomly spawned NPC.

   
Code: [Select]
"npc_citizen" {
    "count" "5"
    "weapon" "weapon_pistol"
    "model" "models/gman.mdl"
    "values" "citizentype 3 targetname cit1"
    }

Description of values:

"Count"
The number of randomly generated entities.
Example: This will spawn 5 of our selected entity
"count" "5"

"Weapon"
Equip the entity with a specific weapon. Note that this value is only used for the "randomspawn" section. In all other cases use the Keyvalue "additionalequipment".
Example: our NPC's will have a pistol
"weapon" "weapon_pistol"

"Model"
Specify the model of the entity.
Example: The NPC will appear as Gman
"model" "models/gman.mdl"

"Values"
Give the Entity other information. This is similar to the KeyValues section in Hammer. Space here is unlimited.
Example: Selects the type of citizen, and names it
"values" "citizentype 3 targetname cit1"

"Grenade"
The number of grenades an NPC will carry.
Example: the NPC has 2 grenades in possesion
"grenade" "2"

"Patrol"
The NPC will begin to patrol around nearby nodes.
Confirmed working on combine.

"Patrolrandom"
Similar to the "patrol" feature but is not determined by Masu Mari?

"Targetname"
This can also be defined outside of the "values" entry.
Example: our entities will be nammed combine01
"targetname" "combine01"

"Stabilize"
Help turrets and other unstable objects gain stability. Specified number is the angle of the stability limit
Example: 45 degrees to remain stable
"stabilize" "45"


"Removenodes"
This item can be placed under the randomspawn section and will remove nodes from the map. Useful for preventing NPC's from randomly spawning in non-convienient locations, such as underwater.

Example: Here is an example of how to remove nodes.

   
Code: [Select]
"removenodes" {
    "origin" "134 -7354 -128"
    "radius" "500"
    }

Description of values:

"Origin"
Remove nodes based on the location specified here.
Example:
"origin" "134 -7354 -128"

"Radius"
Delete nodes in the specified radius from the origin point.
Example: delete nodes in a 500 unit radius.
"radius" "500"


"Removeairnodes"

This should be placed under the randomspawn section. You may have strange occurrences where an enemy may be randomly spawned or have an AI relationship with an airnode. This can be used to remove the air node. Write option is not in, parentheses are required???

Example:

   
Code: [Select]
"removeairnodes" {
    }

 

"ENTITIES" SECTION
Entities placed in this section will be spawned/activated when the map first loads. You can use this section to add, remove, or branch entities.

Example: This is how the section looks, entities are placed within its braces:

   
Code: [Select]
"entities" {
    }

"<Entity_Name>"
This defines the type of entity to spawn and it requires an opening and closing brace so you can define specific values for the entity.

Example: Arrange to spawn a combine soldier with a machine gun and grenades.

   
Code: [Select]
"npc_combine_s" {
    "origin" "809 2630 -58"
    "angle" "0 90 0"
    "longrange"
    "keyvalues" {
    "additionalequipment" "weapon_smg1"
    "grenades" "2"
    "grenadeclass" "custom_explosive"
    "grenadeexplotype" "nailgrenade"
    }
    }

Description of values:


"Origin"
Specify the location at which this entity should spawn.
Example: "X Y Z"
"origin" "300 -500 20"

"Angle"
Specify the direction of the entity should be facing when spawned.
Example: "X Y Z" angles
"angle" "0 20 0"

"Velocity"
Specify if you want to throw things. You can also throw ragdoll.
Example:
"velocity" "0 0 100"

"Longrange"
Enable long range visibility/attacks for this entity. For use with NPC's
Example:
"longrange"

"Freeze"
Fix the position of this entity to prevent it from moving on touch, force, rotor wash, etc. For use with physics props.
Example:
"freeze"

"Alwaysthink"
Always force the AI to think. Still not sure what this does. For use with NPC's
Example:
"alwaysthink"

"Patrol"
The NPC will begin to patrol around nearby nodes.
Confirmed working on combine.

"Relation"
Use this command to set this entity's relationship with another. Please refer to the chart near the bottom. For use with NPC's.
Example: I love aliens
"relation" "ll1"

"Stabilize"
Help turrets and other unstable objects gain stability. Specified number is the angle of the stability limit
Example: 45 degrees to endure
"stabilize" "45"

"Keyvalues"
This actually defines a new section where we can further customize the properties of an entity. Similar to the Hammer editor. It requires an opening and closing brace.
Example:
Code: [Select]
"keyvalues" {
}

Every entity may have many different and unique keyvalues (as seen in the above example), you will have to experiment and find them out yourself.


"Relation"
This event can be placed under the entities section and can force a constant relationship to NPC's already spawned in the map

Example: Cops hate gordon

   
Code: [Select]
"relation" {
    "classname" "npc_metropolice"
    "relation" "gh4"
    }

Description of values:


"Origin"
Specifies a position from which to apply the relationship changes.

"Radius"
To use this you must set an origin. Specify the radius in which to apply the relationship changes. If not specified, the entire scope of the map is used.

"Targetname"
Specify the name of the NPC(s) to apply this relationship to. Wildcards can be specified.
Example: Apply relationship to combine-0 and combine-1
"targetname" "combine-*"

"Classname"
Specify the name of entity to apply the relationship to.
Example: Headcrabs!
"classname" "npc_headcrab"

"Relation"
This is where you define the paramaters of the relationship you want to force. Please refer to the section at the bottom.
Example: Hates player.
"relation" "gh4"


"Player"
An interesting little entity that does things to the player. Due to certain limitations, it cannot be processed under the entities section. Try running through a trigger instead.

Example: play some music.

   
Code: [Select]
"player" {
    "music" "apc_chase"
    }

Description of values:

"Origin"
Use this to specify the location at which the player (Gordon) starts on the map.
Example:
"origin" "259 11358 -64"

"Angle"
Number string used to specify the direction of the player. Used in conjunction with origin. Even though you can specify them all, only the Y-axis (second) is applied.
Example: X Y Z
"angle" "0 90 0"

"Fadein"
The screen will start black and then fade in. Have not tested much.
Example: 5 seconds fadein
"fadein" "5"

"Fadeout"
The screen fades to black. The current design for a fade-out can not maintain the state, making it not as effective.
Example: fade out over 7 seconds
"fadeout" "7"

"Message" message
Displays a message at the center of the screen. Display time is about 5 seconds.
Example: Rise and shine..
"message" "Good morning Dr.Freeman."

"Kill"
Forced suicide. This command kills the player. Can be used instead of game over here.
Example: kill
"kill"

"Music"
Use this to play music. Unfortunately, we can not tell the current state of music playback. To specify the name of a song use the scripts/level_sounds_music.txt file.
Example: play song 14
"music" "song14"


"Removeentity"
You can use this event to remove an entity from the map. Make note however, that objects related to map structure and brushes can not be removed. This entity DOES NOT function properly in the entity initialize section, please use inside a labeled group.

Example: remove a physics prop

   
Code: [Select]
"removeentity" {
    "origin" "2011 -989 -444"
    "radius" "50"
    "classname" "prop_physics"
    }

Description of values:

"Origin"
Specifies the point at which to remove entities.

"Radius"
Specify the range from the origin in which to delete entities. If no radius is set the entire scope of the map is used. To be used in conjunction with "origin".

"Targetname"
Specify the name of the entity to remove. Wildcards can be specified.
Example: remove entity named apc
"targetname" "apc"

"Classname"
Specifies the entity name to be removed. Wildcards can be used.
Example: delete all items
"classname" "item_ *"


"Event"
Events function a bit like triggers in Hammer. They are pretty much used to send an input to an entity.

Example: make combine start patrolling

   
Code: [Select]
"event" {
    "targetname" "combine"
    "action" "StartPatrolling"
    }

Description of values:

"Targetname"
The name of the entity you want to send an input to. Wildcards can be specified.
Example: helper01 and helper02
"targetname" "helper*"

"Action"
This is the actual input to send to the entity. Details can be found in the Developer Console under the ent_fire command.
Example: Go to path
"action" "gotopathcorner"

"Value"
The arguments of the imput passed on to the entity.
Example: APC set to a speed of 300
"action" "setdriversmaxspeed"
"value" "300"

"Delaytime"
Specify the delay time until an event occurs. Useful for layering events.
Example: set the fire in 2 seconds
"action" "ignite"
"delaytime" "2.0"


"Sound"
Yes, here it is. You can play a sound in game! By specifying a target, it is a conversation with a close caption. So far, the volume is set by SMOD.

Example: Play a sound.

 
Code: [Select]
  "sound" {
    "targetname" "guard1"
    "soundname" "guard.deny"
    }

Description of values:


"Targetname"
Specify the character you want to play the sounds. If there are multiple characters of the same name, searches for the first Entity.
Example: Eli plays sound
"targetname" "eli"

"Origin"
Decide where you want the sound to come from. If targetname was specified, it will have priority.
Example:
"origin" "65 4012 204"

"Soundname"
Name of the sound to play. You need to define this in the scripts/game_sounds.txt file. Do not just put a path to the sound, the game will not understand it. All sounds need a valid Sound ID.


"Lua"
Some LUA language can be used in your map. You will need to make a file called mapname.lua that matches the name of the map and the mapadd file.

Example:

 
Code: [Select]
  lua {
    "callfunc" "Init"
    }

Description of values:

"Callfunc"
Specify the function name to run.


"Instant_trig"

This is a simple trigger that was created for the map configuration file. By using this, you can call and process labeled entity groups. This means that we can place entities in our map under a labeled group, but not make them appear/activate until called upon by the trigger. For a simple trigger to work, information other than position must be specified. The trigger will destroy itself when the label is called. unless otherwise specified.

Example: Trigger that processes the label "begin"

   
Code: [Select]
"instant_trig" {
    "origin" "1291 -3159 -680"
    "keyvalues" {
    "label" "begin"
    "radius" "50"
    }
    }

Description of values:

"Origin"
Specify the location of the trigger. This is the center of the triggers radius.

"Radius"
Radius of the trigger (the size). When an entity enters inside, the labels are processed. Designation of origin may be required.

"Label"
When the triggers conditions are met, it will process the specified label.
Example: process label named begin
"label" "begin"

the_author also included this, but I am not sure what it means...
Also, The label ":" The matter can be separated by multiple, Randa labels Select program and process.
Example: go1 handle go2?
"label" "go1: go2"

"Timer"
A timer that tells the trigger when to fire. Begins counting down as soon as the trigger is spawned. With this designation, radius/origin can not be used simultaneously. The timer is in seconds and milliseconds as represented with a decimal.
Example: process 1.5 seconds after being spawned
"timer" "1.5"

"Touchname"
Name of the entity that can activate this trigger by walking into its radius. This value is handy for making NPC's activate the trigger.
Example: NPC named combine activates this trigger
"touchname" "combine"

"Islived"
Verify that the entity with the specified name is still alive. When this entity dies, activate this trigger.
Example: is there a watermelon?
"islived" "watermelon"

"Group"
Use this to manage multiple triggers with a group number. The group number is related to the removal of triggers. If not specified, the default is 0.
Example: This trigger is part of group 2.
"group" "2"

"Removegroup"
When this trigger is processed, remove all other triggers in the specified group.
Example:
"removegroup" "2"

"Noclear"
When this is set to 1, the trigger will not be removed once processed and can be used multiple times. If you want to remove this trigger, specify that it belongs to a group, and then use the "removegroup" arguement from another trigger.
Example: Use this trigger again?
"noclear" "1"

"OnHitTrigger"
When the trigger is executed, you can process a specified event. (See here).

 

LABELED "ENTITIES" SECTION ....
Labeled entity groups are not spawned when the map starts, but instead are processed through triggers. In this way you have maximum control over the maps gameplay.

Consider this - You can have 100 NPC's in your map, but if you spawn them all at the start of your map you may suffer a serious drop in performance. What is the point of spawning an NPC at the end of your map when the player is still at the beginning and can neither see nor interact with it (yet it uses up system resources)? This makes labeled entity groups very powerful for dictating the gameplay and optimization of a mapadd.

Labeled entity groups should be like this, where label_name matches the "label" keyvalue of a trigger. They may contain an unlimted amount of entities and even triggers calling other labels.

   
Code: [Select]
"entities:label_name" {
    }

Example: a simple trigger to handle the label "combine", which spawns a combine soldier.

   
Code: [Select]
"entities" {
    "instant_trig" {
    "origin" "-3021 4617 170"
    "keyvalues" {
    "radius" "200"
    "label" "combine"
    }
    }
    }

    "entities:combine" {
    "npc_combine_s" {
    "origin" "809 2630 -58"
    "angle" "0 90 0"
    }
    }

In this example, when the player steps inside the radius of our trigger, it processes the labeled entity group "combine". This means that the combine soldier will ONLY be spawned when the player activates that trigger.

One more Example: A trigger that kills the player once a vital ally has died.

   
Code: [Select]
"entities" {
    "instant_trig" {
    "keyvalues" {
    "islived" "alyx"
    "label" "gameover"
    }
    }
    }

    "entities:gameover" {
    "player" {
    "kill"
    "message" "Vital Ally Died..."
    }
    }

In this example, the trigger controls the label "gameover". Since no origin was set for the trigger, it assumes the whole scope and area of the map. As soon as the entity named "alyx" dies, the trigger will fire and process the labeled entity group named "gameover", which kills the player and displays a message.

 

MAPADD TIPS & TRICKS
[/size][/b]

Useful stuff for creating mapadd files. Tips from the_author and useful stuff I have found to assist with mapadding.

 

CVAR's!

Developer 1
Toggles developer mode. Input this command into the console. It will often display useful notifications like, "[mapadd] Hit Trigger: trig1" when you activate a simple trigger. Use the command Developer 2 for a more robust mode.

Show_activenodes 1
Used to display the node position for randomspawn.

cl_showpos 1
Input this command into the console. Used to show the players current position and direction. This is helpful for placing triggers or other entities. The co-ordinates are in (X Y Z) format. When using this method to place triggers, I find it is optimal to get the "Z" (height) coordinate while ducking, otherwise the trigger seems to be "above" the player.

It may be worth noting that the_author mentioned something about Impulse 90 here. I have never used it to get positions in game so I cannot comment.

ai_nodes and ai_show_connect
You can check the position of the node.

 

Mapadd Tools of the Trade!

The Physics Launcher
- The Physics Launcher weapon is extremely useful for mapadding. You can suck up (copy) an entity by using the secondary fire and then duplicate it by using the primary fire. When you suck up an entity, information about it is sent to the console, including its classname, current origin and angle, and current model. This is good for precision placement of props or NPC's
To get the Physics Launcher gun, type into console: give weapon_physlauncher
If you do not want the physlauncher to dissolve an entity when you duplicate it, use this command: physlaunch_dissolveentity 0
If you find that the physlauncher shoots props to far away, try lowering this cvar: physlaunch_throwforce

The E3 Physics Gun - The physics gun can be very handy for positioning objects for use with the physlauncher.
To get the Physgun, type into console: give weapon_physgun
Holding down Primary fire will grab a prop or npc at which point you can move them around
The secondary fire will shoot magnetic goo. Place two of these and they will attract each other when they get close. This is useful for standing objects like barrels on their ends. (Use the magnetic goo at your own risk! Very often it will cause the physics to spaz out and crash your game).
Pressing +Reload will delete any magnetic goo you had deployed.
Pressing +Use will freeze a prop in place, meaning it cannot be moved until picked up by the Physgun again. Useful for stacking objects.

 

Setting Relationships!

Here is a chart for showing how to setup proper relationships for use in your mapadd file.
Each relationship is a set of two letters and one number. Use a space to seperate multiple relationships.

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
Letter 1 --- Group this relationship will be applied to
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

a = Antlions
g = Gordon (player)
v = Vortigaunts?
p = Citizens (not including Barney)
c = Combines
s = Stalkers
l = Aliens (zombies included)
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
Letter 2 --- Type of relationship
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

l = Love (friendly)
h = Hate
n = Neutral
f = Fear
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
Number --- This is the relationship's priority
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

1 - 99999 (Larger # is higher priority. 99999 may not be max)
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

Example: Barney is neutral to stalkers, loves the combine, afraid of vorts.

 
Code: [Select]
  "npc_barney" {
    "relation" "sn1 cl5 vf1"
    }

Example: citizen hates player.

 
Code: [Select]
  "npc_citizen" {
    "relation" "gh1"
    }

Last Example: combine neutral to player, hate antlions

 
Code: [Select]
  "npc_combine_s" {
    "relation" "ah1 gn5"
    }

 

Simple Triggers!

Here are some examples of simple triggers and labeled entities. There are many, many more uses for triggers. See what you can come up with.

Example 1: When player activates trigger, a combine rappels down from bridge and begins attacking!

   
Code: [Select]
"entities" {
    "instant_trig" {
    "origin" "0 0 20"
    "keyvalues" {
    "label" "rappel"
    "radius" "100"
    }
    }

    "npc_metropolice" {
    "origin" "100 103 78" "angle" "0 -145 0"
    "keyvalues" {
    "targetname" "combine1"
    "waitingtorappel" "1"
    "spawnflags" "33685508"
    }
    }
    }

    "entities:rappel" {
    "event" {
    "targetname" "combine1"
    "action" "BeginRappel"
    "value" "1"
    }
    }

Example 2: There are two doors side by side, the player can only enter one, and each door has a different trigger inside it. Once the player picks a door we want to remove the other trigger. Groups are used to control the removal of the triggers.

   
Code: [Select]
"instant_trig" {
    "origin" "300 100 -40"
    "keyvalues" {
    "label" "door_a"
    "radius" "50"
    "group" "3"
    "removegroup" "3"
    }
    }

    "instant_trig" {
    "origin" "300 250 -40"
    "keyvalues" {
    "label" "door_b"
    "radius" "50"
    "group" "3"
    "removegroup" "3"
    }
    }

Once label "door_a" is processed, "door_b" trigger is removed and vice versa. This is because both triggers are placed into Group 3 with both triggers having the arguement to delete all triggers placed into that group once activated.

 

Example 3: Removing a repeatable trigger. Label combine is fired every 5 seconds. After 20 seconds, the trigger processing combine is removed.

   
Code: [Select]
"instant_trig" {
    "keyvalues" {
    "label" "combine"
    "timer" "5"
    "noclear" "1"
    "group" "1"
    }
    }

    "instant_trig" {
    "keyvalues" {
    "timer" "20"
    "group" "1"
    "removegroup" "1"
    }
    }
« Last Edit: January 15, 2015, 06:56:43 PM by BIZ »

Offline BIZ

  • 32-Bit Hobo
  • *
  • *
  • +0% chance to make useful post
  • BIZ hides in shadows.
    • BSNOOCH.COM
Re: Mapadd Documentation
« Reply #1 on: May 22, 2014, 07:59:19 PM »
I have updated this tutorial with a .cfg script I use for making mapadds.

Download and place into your directory .../smod/cfg/

Use console command exec mapadd to enable.


Contents:
Enables Cheat mode.
Enables Infinite Suit Power
Enables Developer Mode + FPS Counter + Position Info
Gives crucial weapons: GravGun, WeldGun, & StuffLauncher
Disables StuffLauncher dissolving entities
sets npc_create_equipment, just in case/
Binds the following keys:

All are on the KeyPad
/ = NoClip
* = NoTarget
- = Ai Disable

7 = Spawn MetroCop
8 = Spawn CombineSoldier
9 = Spawn CombineAce
4 = Spawn Zombie
5 = Spawn Zombie2
6 = Spawn FastZombie
1 = Spawn Citizen
2 = Spawn CitizenMedic
3 = Spawn FriendlyCombine

Offline Counter-Life™

  • *
  • *
  • +17% chance to make useful post
  • Counter-Life™ is a rising star!Counter-Life™ is a rising star!Counter-Life™ is a rising star!Counter-Life™ is a rising star!Counter-Life™ is a rising star!Counter-Life™ is a rising star!
    • Youtube Channel
Re: Mapadd Documentation
« Reply #2 on: May 23, 2014, 05:50:11 AM »
I have updated this tutorial with a .cfg script I use for making mapadds.

Download and place into your directory .../smod/cfg/

Use console command exec mapadd to enable.


Contents:
Enables Cheat mode.
Enables Infinite Suit Power
Enables Developer Mode + FPS Counter + Position Info
Gives crucial weapons: GravGun, WeldGun, & StuffLauncher
Disables StuffLauncher dissolving entities
sets npc_create_equipment, just in case/
Binds the following keys:

All are on the KeyPad
/ = NoClip
* = NoTarget
- = Ai Disable

7 = Spawn MetroCop
8 = Spawn CombineSoldier
9 = Spawn CombineAce
4 = Spawn Zombie
5 = Spawn Zombie2
6 = Spawn FastZombie
1 = Spawn Citizen
2 = Spawn CitizenMedic
3 = Spawn FriendlyCombine

Why didn't I thought of that, I wasted so much time typing the NPC names into the console. Thx for this.

Offline BIZ

  • 32-Bit Hobo
  • *
  • *
  • +0% chance to make useful post
  • BIZ hides in shadows.
    • BSNOOCH.COM
Re: Mapadd Documentation
« Reply #3 on: May 23, 2014, 06:39:11 AM »
I have updated this tutorial with a .cfg script I use for making mapadds.

Download and place into your directory .../smod/cfg/

Use console command exec mapadd to enable.


Contents:
Enables Cheat mode.
Enables Infinite Suit Power
Enables Developer Mode + FPS Counter + Position Info
Gives crucial weapons: GravGun, WeldGun, & StuffLauncher
Disables StuffLauncher dissolving entities
sets npc_create_equipment, just in case/
Binds the following keys:

All are on the KeyPad
/ = NoClip
* = NoTarget
- = Ai Disable

7 = Spawn MetroCop
8 = Spawn CombineSoldier
9 = Spawn CombineAce
4 = Spawn Zombie
5 = Spawn Zombie2
6 = Spawn FastZombie
1 = Spawn Citizen
2 = Spawn CitizenMedic
3 = Spawn FriendlyCombine

Why didn't I thought of that, I wasted so much time typing the NPC names into the console. Thx for this.

no problem. After I finish the current project I will be streaming some smod mapadd tutorial stuff so look for more in this section.

Offline BIZ

  • 32-Bit Hobo
  • *
  • *
  • +0% chance to make useful post
  • BIZ hides in shadows.
    • BSNOOCH.COM
Re: Mapadd Documentation
« Reply #4 on: January 15, 2015, 06:57:28 PM »
updated