CSM.Dev

[HL2] Создание снайперской винтовки

В этом туториале я расскажу вам как создать новое оружие, а точнее 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"

}

}

}

Все, теперь идем сода и качаем модели для туториала и здесь звуки для него. Надеюсь вам понравился туториал. :)