Adding weapons: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
 
No edit summary
 
(70 intermediate revisions by 17 users not shown)
Line 1: Line 1:
===Multiplayer===
{{disambig}}
 
'''Adding weapons''' may refer to:  
***This guide assumes that you started out with HL2MP and VC++ Express Edition (It's FREE)***
* [[Weapons]] - Adding weapons to maps
 
* [[Adding a new weapon to your mod]] - Creating custom weapons
 
 
The models
Weapons consist of 2 models, each with their own prefix. A model named v_???.mdl is a view model this is the model that is seen from the players perspective, this normally consists of not only the weapon model but also the player hands.
Next is the w_???.mdl; this is known as the world model, these models are used for weapons laying on the ground and also for weapons that you can see in other characters/players hands.
 
 
You can make your own or use the CSS one's.
 
 
 
Once you have made the relevant models, they go into the folder:
/nameofmodfolder/models/weapons/
 
The Textures
The textures/skins for the weapons also need to be placed in the correct folder so once the textures are done, they need to be placed in:
/nameofmodfolder/materials/models/weapons/
 
weapon_???.txt
Each weapon has its own script file which can be edited in any .txt program, the weapon script file has many different purposes, which include:- model file names, bucket info, clip size, ammo type, weight, sounds, icons, crosshairs. For pistols start with pistol.txt, and for SMGs MGs, and assault rifle use smg1.txt as a template.
This is an example of the weapon_pistol.txt file:
 
Code:
// Pistol
 
WeaponData
{
  // Weapon data is loaded by both the Game and Client DLLs.
  "printname"  "#HL2_Pistol"
  "viewmodel"        "models/weapons/v_pistol.mdl"
  "playermodel"      "models/weapons/w_pistol.mdl"
  "anim_prefix"      "pistol"
  "bucket"        "1"
  "bucket_position"  "0"
 
  "clip_size"        "18"
  "primary_ammo"      "Pistol"
  "secondary_ammo"  "None"
 
  "weight"        "2"
  "item_flags"      "0"
 
  // Sounds for the weapon. There is a max of 16 sounds per category (i.e. max 16 "single_shot" sounds)
  SoundData
  {
 
      "reload"      "Weapon_Pistol.Reload"
      "reload_npc"  "Weapon_Pistol.NPC_Reload"
      "empty"        "Weapon_Pistol.Empty"
      "single_shot"  "Weapon_Pistol.Single"
      "single_shot_npc"  "Weapon_Pistol.NPC_Single"
      "special1"      "Weapon_Pistol.Special1"
      "special2"      "Weapon_Pistol.Special2"
      "burst"        "Weapon_Pistol.Burst"
  }
 
  // Weapon Sprite data is loaded by the Client DLL.
  TextureData
  {
      "weapon"
      {
            "font"      "WeaponIcons"
            "character"  "d"
      }
      "weapon_s"
      { 
            "font"      "WeaponIconsSelected"
            "character"  "d"
      }
      "ammo"
      {
            "font"      "WeaponIcons"
            "character"  "p"
      }
      "crosshair"
      {
            "font"      "Crosshairs"
            "character"  "Q"
      }
      "autoaim"
      {
            "file"      "sprites/crosshairs"
            "x"        "0"
            "y"        "48"
            "width"      "24"
            "height"  "24"
      }
  }
}
 
 
so create your weapon_nameofweapon.txt file in the same format as shown and save it in the following folder:
 
/nameofmodfolder/scripts/
 
 
"printname" "#HL2_Pistol" --Make this whatever you want
 
 
 
 
 
 
 
Making your weapon show in Hammer -- Not Tested sorry
To get your weapon to show in hammer you need to add the entry to your .fgd file, which should be saved in sourcesdk/bin/
 
Open it up in notepad or similar, and find where the other (HL2) weapons are referenced. Add yours with them, here is an example:
@PointClass base(Weapon) studio("models/weapons/w_tazer.mdl") = weapon_tazer : "Tazer" []
 
 
===Make the code for your weapons===
 
 
Open:==
 
C:\yourmod\src\cl_dll\hl2_hud\c_weapon__stubs_hl2.cpp
 
add your gun under #ifndef HL2MP (line 27)
 
just copy and paste one of the lines renaming the relevant information
 
Example:
 
STUB_WEAPON_CLASS( weapon_ar2, WeaponAR2, C_HLMachineGun );
 
changed to
 
STUB_WEAPON_CLASS( weapon_m249, WeaponM4A1, C_HLMachineGun );
 
===Open:===
C:\yourmod\src\game_shared\hl2mp\hl2mp_gamerules.cpp
 
Find CAmmoDef *GetAmmoDef()  (Line 910)
 
Copy and paste the line that is closest to your weapon type, I chose
 
def.AddAmmoType("MP5NAVY",DMG_BULLET,TRACER_LINE_AND_WHIZ,0,0,225,BULLET_IMPULSE(200,1225),0 );
 
Replace MP5NAVY with the ammo name in your script file (weapon_???.txt)
 
 
Make the code files where ever you want, I would recommend your C:/modname/src folder. When you complete the code expand under Server -> Sources Files -> HL2MP -> Weapons, right-click on Weapons then Add -> Existing Item and find your .cpp file
 
Do the same for Client -> Sources Files -> HL2MP -> Weapons
 
 
also, if you want your weapon to be given with the impulse 101 cheat, add it in this file:
/dlls/player.cpp
 
NOTE: some of the directory structures may be different, following SDK updates etc. this was written after the large August 2006 update
 
There you have it; you should now have an understanding of how to get a new weapon in-game. Be aware that there is a lot of work to be done that I have not mentioned in detail, such as the code or explaining the weapon_???,txt file fully. Most people should be able to figure out the rest.
 
Good luck and I hope to see some new weapons being made soon.
 
-Mr Greenfish
_________________
- Don't send PM's to this user -
 
 
 
 
 
 
 
 
 
I noticed that there were no decent up-to-date guides hence this wiki -Iliketofrolic666

Latest revision as of 09:25, 15 March 2025

Icon-disambig.png
This is a disambiguation page, a list of pages that otherwise might share the same title.
If an article link referred you to this title, you might want to go back and fix it to point directly to the intended page.

Adding weapons may refer to: