В этом туториале я расскажу вам как создать новое оружие, а точнее weapon_sniperrifle. Итак начнем, добавив в server_hl2 файл weapon_sniperrifle.cpp нажав правой кнопкой на server_hl2 и там ищем вкладку Add>Add New Item.
Name: weapon_sniperrifle
Location: src\dlls\hl2_dll
Все с добавлением в проект закончили. Теперь открылся новый чистый файл и туда вписываете код из этого
файла ( туториал сперва получился очень большой, поэтому пришлось выложить его в этом файле ). Ну что продолжим доделование нашей пушки, откройте файл: src\cl_dll\hl2_hud\c_weapon__stubs_hl2.cpp и в нем где то после этой строчки:
STUB_WEAPON_CLASS( weapon_crossbow, WeaponCrossbow, C_BaseHLCombatWeapon );
Вставте эту строку:
STUB_WEAPON_CLASS( weapon_sniperrifle, WeaponSniperrifle, C_BaseHLCombatWeapon );
С клиетовской частью закончили. Теперь если так подумать то нехватает такой фигни как impulse 101. Давайте же это исправим. Идите в файл: src\dlls\player.cpp и в ней с помощью поиска найдите строку сase 101 и там чуть ниже вы увидите список патронов и где нибудь после строки:
GiveAmmo( 16, "XBowBolt" );
Вставте:
GiveAmmo( 32, "SniperRound" );
И если вы еще чуть спуститесь вниз по файлу по увидите списки оружия и там тоже надо прописать нашу снайперку, так что после:
GiveNamedItem( "weapon_crossbow" );
Вставте:
GiveNamedItem( "weapon_sniperrifle" );
Всё, теперь наша пушка забита на команду impulse 101.
Все, компилируем проект. Теперь перейдем в папку “scripts” и там создадим файл weapon_sniperrifle.txt и туда впишем следующие:
//
// Sniper rifle
//
WeaponData
{
// Weapon data is loaded by both the Game and Client DLLs.
"printname" "Sniperrifle"
"viewmodel" "models/weapons/v_sniper.mdl"
"playermodel" "models/weapons/w_sniper.mdl"
"anim_prefix" "sniper"
"bucket" "3"
"bucket_position" "2"
"clip_size" "1"
"primary_ammo" "SniperRound"
"secondary_ammo" "None"
"default_clip" "5"
"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
{
"special1" "Weapon_SniperRifle.Special1"
"special2" "Weapon_SniperRifle.Special2"
"reload" "Weapon_SniperRifle.Reload"
"reload_npc" "Weapon_SniperRifle.NPC_Reload"
"single_shot" "Weapon_SniperRifle.Single"
"single_shot_npc" "Weapon_SniperRifle.NPC_Single"
}
// Weapon Sprite data is loaded by the Client DLL.
TextureData
{
"weapon"
{
"file" "sprites/w_icons2b"
"x" "0" //128
"y" "193" //0
"width" "128"
"height" "64"
}
"weapon_s"
{
"file" "sprites/w_icons2b"
"x" "0"
"y" "193"
"width" "128"
"height" "64"
}
"ammo"
{
"file" "sprites/a_icons1"
"x" "55"
"y" "30"
"width" "73"
"height" "15"
}
"crosshair"
{
"font" "Crosshairs"
"character" "Q"
}
"autoaim"
{
"font" "Crosshairs"
"character" "Q"
}
"zoom"
{
"font" "Crosshairs"
"character" "Q"
}
"zoom_autoaim"
{
"font" "Crosshairs"
"character" "Q"
}
}
}
Все, теперь идем сода и качаем
модели для туториала и здесь
звуки для него. Надеюсь вам понравился туториал.