Weapon item spawn: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
No edit summary
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{LanguageBar}}
{{CD|CMultiSpawner}}
{{this is a|point entity|name=weapon_item_spawn|game=Left 4 Dead 2}} It is a spawn point for any available item, except [[upgrade_spawn|weapon upgrades]]. Spawned item is automatically placed on the ground below.
{{this is a|point entity|name=weapon_item_spawn|game=Left 4 Dead 2}} It is a spawn point for any available item, except [[upgrade_spawn|weapon upgrades]]. Spawned item is automatically placed on the ground below.
{{note|Similarly to {{ent|info_null}} this entity is removed immediately as it spawns with the difference that in this case it first spawns a randomly chosen <code>weapon_*_spawn</code> entity based on how its keyvalues were setup.}}
__NOTOC__
== Keyvalues ==
{{KV Targetname}}
:{{important|If you want to use this item position only in specific gamemode for example coop then you must use [[point_template]] and fire ForceSpawn to it from [[info_gamemode]]'s OnCoop output. Attempting to do it the other way around like sending Kill input to this entity in OnVersus won't work because this entity is upon spawning immediately converted to one of the specific weapon_*_spawn entities that were picked and targetname isn't transferred}}
{{KV Angles|Angles of the spawned weapon/item}}
{{ColumnBox|count=2|
{{KV|Ammo pile|intn=item1|bool}}
{{KV|First aid kit|intn=item2|bool}}
{{KV|Molotov Cocktail|intn=item3|bool}}
{{KV|Pain Pills|bool|intn=item4}}
{{KV|Pipe Bomb|bool|intn=item5}}
{{KV|Oxygen Tank|bool|intn=item6}}
{{KV|Propane Tank|bool|intn=item7}}
{{KV|Gasoline Can|bool|intn=item8}}
{{KV|Adrenaline|bool|intn=item11}}
{{KV|Defibrillator|bool|intn=item12}}
{{KV|Boomer Bile|bool|intn=item13}}
{{KV|Chainsaw|bool|intn=item16}}
{{KV|Grenade Launcher|intn=item17|bool}}
{{KV|M60 Machinegun|bool|intn=item18}}
}}
:Random item from all booleans set to 1 is considered for spawn.
{{KV|Melee Weapon|string|intn=melee_weapon|If empty, the director won't consider to spawn a melee in this place. If you want the director to consider spawning one, use one or multiple names listed below, like in the <code>[[weapon_melee_spawn]]</code> entity }}
{{ColumnBox|count=2|
:* <code>golfclub</code>
:* <code>fireaxe</code>
:* <code>frying_pan</code>
:* <code>machete</code>
:* <code>baseball_bat</code>
:* <code>crowbar</code>
:* <code>cricket_bat</code>
:* <code>tonfa</code>
:* <code>katana</code>
:* <code>electric_guitar</code>
:* <code>shovel</code>
:* <code>pitchfork</code>}}
:* <code>Any</code> – director will place any available melee weapon
:You may also list multiple specific melee weapons separated by a comma, and the director will select from among that subset of weapons: <code>crowbar,fireaxe,machete</code>
== Flags ==
{{fl|1|Enable Physics on spawned item}}
{{fl|2|Spawned Item Must Exist}}
{{fl|8|Infinite Items}}


== Editing the [[FGD]] (Optional) ==
== Editing the [[FGD]] (Optional) ==
{{Expand|
===Helper Model===
===Helper Model===
Unfortunately, this entity lacks any sort of helper model to make it easier to position the item realistically, so here is a quick guide on how to add the option for a helper
Unfortunately, this entity lacks any sort of helper model to make it easier to position the item realistically, so here is a quick guide on how to add the option for a helper
Line 11: Line 63:
===Default Values===
===Default Values===
Some Keyvalues are automatically set to 1 on this entity, which can be tedious to set back to 0 if you don't want that item.
Some Keyvalues are automatically set to 1 on this entity, which can be tedious to set back to 0 if you don't want that item.
To change this, go to the same FGD as above, but this time, look for this line: <pre>
To change this, go to the same FGD as above, but this time, look for this line and change the desired default values to 0: <pre>
item1(integer) : "Ammo pile" : 1  
item1(integer) : "Ammo pile" : 1  
item2(integer) : "First aid kit" : 0  
item2(integer) : "First aid kit" : 0  
Line 30: Line 82:
item17(integer) : "Grenade Launcher" : 0
item17(integer) : "Grenade Launcher" : 0
item18(integer) : "M60 Machinegun" : 0</pre>
item18(integer) : "M60 Machinegun" : 0</pre>
All of those numbers at the end dictate the default value. Change those lines to this to set them all to 0: <pre>
}}
item1(integer) : "Ammo pile" : 0
item2(integer) : "First aid kit" : 0
item3(integer) : "Molotov Cocktail" : 0
item4(integer) : "Pain Pills" : 0
item5(integer) : "Pipe Bomb" : 0
item6(integer) : "Oxygen Tank" : 0
item7(integer) : "Propane Tank" : 0
item8(integer) : "Gasoline Can" : 0
//item9(integer) : "" : 0
//item10(integer) : "" : 0
item11(integer) : "Adrenaline" : 0
item12(integer) : "Defibrillator" : 0
item13(integer) : "Boomer Bile" : 0
//item14(integer) : "" : 0
//item15(integer) : "" : 0
item16(integer) : "Chainsaw" : 0
item17(integer) : "Grenade Launcher" : 0
item18(integer) : "M60 Machinegun" : 0</pre>
 
== Keyvalues ==
{{KV|Ammo pile|intn=item1|bool}}
{{KV|First aid kit|intn=item2|bool}}
{{KV|Molotov Cocktail|intn=item3|bool}}
{{KV|Pain Pills|bool|intn=item4}}
{{KV|Pipe Bomb|bool|intn=item5}}
{{KV|Oxygen Tank|bool|intn=item6}}
{{KV|Propane Tank|bool|intn=item7}}
{{KV|Gasoline Can|bool|intn=item8}}
{{KV|Adrenaline|bool|intn=item11}}
{{KV|Defibrillator|bool|intn=item12}}
{{KV|Boomer Bile|bool|intn=item13}}
{{KV|Chainsaw|bool|intn=item16}}
{{KV|Grenade Launcher|intn=item17|bool}}
{{KV|M60 Machinegun|bool|intn=item18|If set to 1, the director considers to spawn this, or any other item with the boolean set to 1}}
{{KV|Melee Weapon|string|intn=melee_weapon|If empty, the director won't consider to spawn a melee in this place. If you want the director to consider spawning one, use one or multiple names listed below, like in the <code>[[weapon_melee_spawn]]</code> entity }}
 
* <code>golfclub</code>
* <code>fireaxe</code>
* <code>frying_pan</code>
* <code>machete</code>
* <code>baseball_bat</code>
* <code>crowbar</code>
* <code>cricket_bat</code>
* <code>tonfa</code>
* <code>katana</code>
* <code>electric_guitar</code>
* <code>shovel</code>
* <code>pitchfork</code>
* <code>Any</code> – director will place any available melee weapon


You may also list multiple specific melee weapons separated by a comma, and the director will select from among that subset of weapons:
== See Also ==
 
* {{ent|weapon_ammo_spawn}}
crowbar,fireaxe,machete
* {{ent|weapon_first_aid_kit_spawn}}
{{KV Targetname}}
* {{ent|weapon_molotov_spawn}}
{{KV Angles}}
* {{ent|weapon_pain_pills_spawn}}
 
* {{ent|weapon_pipe_bomb_spawn}}
== Flags ==
* {{ent|weapon_oxygentank}}
* 1 : Enable Physics on spawned item
* {{ent|weapon_propanetank}}
* 2 : Spawned Item Must Exist
* {{ent|weapon_gascan_spawn}}
* 8 : Infinite Items
* {{ent|weapon_adrenaline_spawn}}
* {{ent|weapon_defibrillator_spawn}}
* {{ent|weapon_chainsaw_spawn}}
* {{ent|weapon_grenade_launcher_spawn}}
* {{ent|weapon_rifle_m60_spawn}}
* {{ent|weapon_melee_spawn}}

Latest revision as of 08:38, 21 May 2025

English (en)Slovenčina (sk)Translate (Translate)
C++ Class hierarchy
CMultiSpawner
CPointEntity
CBaseEntity

weapon_item_spawn is a point entity available in Left 4 Dead 2 Left 4 Dead 2. It is a spawn point for any available item, except weapon upgrades. Spawned item is automatically placed on the ground below.

Note.pngNote:Similarly to info_null this entity is removed immediately as it spawns with the difference that in this case it first spawns a randomly chosen weapon_*_spawn entity based on how its keyvalues were setup.

Keyvalues

Name (targetname) <string>[ Edit ]
The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g. parentname or target).
Also displayed in Hammer's 2D views and Entity Report.
See also:  Generic Keyvalues, Inputs and Outputs available to all entities

Icon-Important.pngImportant:If you want to use this item position only in specific gamemode for example coop then you must use point_template and fire ForceSpawn to it from info_gamemode's OnCoop output. Attempting to do it the other way around like sending Kill input to this entity in OnVersus won't work because this entity is upon spawning immediately converted to one of the specific weapon_*_spawn entities that were picked and targetname isn't transferred
Pitch Yaw Roll (Y Z X) (angles) <QAngle>
Angles of the spawned weapon/item



Ammo pile (item1) <boolean>
First aid kit (item2) <boolean>
Molotov Cocktail (item3) <boolean>
Pain Pills (item4) <boolean>
Pipe Bomb (item5) <boolean>
Oxygen Tank (item6) <boolean>
Propane Tank (item7) <boolean>
Gasoline Can (item8) <boolean>
Adrenaline (item11) <boolean>
Defibrillator (item12) <boolean>
Boomer Bile (item13) <boolean>
Chainsaw (item16) <boolean>
Grenade Launcher (item17) <boolean>
M60 Machinegun (item18) <boolean>
Random item from all booleans set to 1 is considered for spawn.


Melee Weapon (melee_weapon) <string>
If empty, the director won't consider to spawn a melee in this place. If you want the director to consider spawning one, use one or multiple names listed below, like in the weapon_melee_spawn entity
  • golfclub
  • fireaxe
  • frying_pan
  • machete
  • baseball_bat
  • crowbar
  • cricket_bat
  • tonfa
  • katana
  • electric_guitar
  • shovel
  • pitchfork
  • Any – director will place any available melee weapon
You may also list multiple specific melee weapons separated by a comma, and the director will select from among that subset of weapons: crowbar,fireaxe,machete

Flags

Enable Physics on spawned item : [1]
Spawned Item Must Exist : [2]
Infinite Items : [8]

Editing the FGD (Optional)

Helper Model

Unfortunately, this entity lacks any sort of helper model to make it easier to position the item realistically, so here is a quick guide on how to add the option for a helper model:

  • Open Left 4 Dead 2\bin\left4dead2.fgd
  • Using the find option, search for:
    @PointClass base(Targetname,Angles) = weapon_item_spawn
  • Replace that with:
    @PointClass base(Targetname,Angles,Studiomodel)studioprop() = weapon_item_spawn

Then, if you have Hammer already open while making these changes, save whatever you were doing, close Hammer, and once you launch it you will see this option

Default Values

Some Keyvalues are automatically set to 1 on this entity, which can be tedious to set back to 0 if you don't want that item.

To change this, go to the same FGD as above, but this time, look for this line and change the desired default values to 0:
item1(integer) : "Ammo pile" : 1 
item2(integer) : "First aid kit" : 0 
item3(integer) : "Molotov Cocktail" : 1 
item4(integer) : "Pain Pills" : 1 
item5(integer) : "Pipe Bomb" : 1 
item6(integer) : "Oxygen Tank" : 0
item7(integer) : "Propane Tank" : 0
item8(integer) : "Gasoline Can" : 0
//item9(integer) : "" : 0		
//item10(integer) : "" : 0
item11(integer) : "Adrenaline" : 1
item12(integer) : "Defibrillator" : 0
item13(integer) : "Boomer Bile" : 0
//item14(integer) : "" : 0
//item15(integer) : "" : 0
item16(integer) : "Chainsaw" : 0
item17(integer) : "Grenade Launcher" : 0	
item18(integer) : "M60 Machinegun" : 0

See Also