Привет всем кто читает эту статью! Тут рассказуется про как создать бинокль для Half-Life 2. Итак поехали! Сначало созадайте в серверной части кода (src/dlls/hl2_dll/) файлик под названием weapon_binoculars.cpp и туда впишите всё из этого файла. После этого мы идём в клиентовскую часть. Идём сюда (src\cl_dll\hl2_hud\c_weapon__stubs_hl2.cpp) и вписываем где то после: STUB_WEAPON_CLASS( weapon_bugbait, WeaponBugBait, C_BaseHLCombatWeapon ); Вот это: STUB_WEAPON_CLASS( weapon_binoculars, WeaponBinoculars, C_BaseHLCombatWeapon ); Всё, в клиете всё сделано. Теперь нам надо сделать такую штуку что б при импульс 101 нам довалось всё оружие, включая наш бинокль Так что направляемся сюда (src\dlls\player.cpp) и ищем в этом файле строку case 101 и чуть ниже вы найдете строки куда вписывать оружие, не путаете с тем где вписывать патроны, так что где то после: GiveNamedItem( "weapon_crossbow" ); Вот эту строку: GiveNamedItem( "weapon_binoculars" Но это еще не всё, надо кое-что поправить в файлике baseentity (src\dlls\baseentity.h) в нем ищем такую строку: // Returns a CBaseAnimating if the entity is derived from CBaseAnimating. И перед ней сразу пишем: virtual bool IsSoundSource( void ) { return false; }; Всё, можно компилить! Но надо теперь сделать скрипт для этой пушки, так что неторопимся запускать игру Теперь лезем в вашу папку с модом, а оттуда в папку Scripts и там создадим файлик weapon_binoculars.txt куда впишем следующие: //Binoculars WeaponData { // Weapon data is loaded by both the Game and Client DLLs. "printname" "Binoculars" "viewmodel" "models/weapons/v_binoculars.mdl" "playermodel" "models/weapons/w_binoculars.mdl" "anim_prefix" "binoculars" "bucket" "3" "bucket_position" "3" "clip_size" "-1" "primary_ammo" "None" "secondary_ammo" "None" "weight" "0" "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_Binoculars.Special1" "special2" "Weapon_Binoculars.Special2" "reload" "Weapon_Binoculars.Reload" } // Weapon Sprite data is loaded by the Client DLL. TextureData { "weapon" { "file" "sprites/w_icons1b" "x" "1" "y" "129" "width" "126" "height" "62" } "weapon_s" { "file" "sprites/w_icons1b" "x" "1" "y" "129" "width" "126" "height" "62" } "ammo" { "file" "sprites/640hud7" "x" "0" "y" "72" "width" "24" "height" "24" } "ammo2" { "file" "sprites/640hud7" "x" "48" "y" "72" "width" "24" "height" "24" } "crosshair" { "font" "Crosshairs" "character" "Q" } "autoaim" { "file" "sprites/crosshairs" "x" "48" "y" "72" "width" "24" "height" "24" } "zoom" { "file" "sprites/reticle" "x" "0" "y" "0" "width" "128" "height" "128" } "zoom_autoaim" { "file" "sprites/reticle" "x" "0" "y" "0" "width" "128" "height" "128" } } } Сделали? Отлично! Вы уже думайте запускать игру? А нифига, надо сделать еще что б у нашей пушки были звуки, для этого лезем в scripts\game_sounds_weapons.txt и там где то после обозначений звуков арбалета впишем это: // weapon_binoculars.txt "Weapon_Binoculars.Special1" { "channel" "CHAN_WEAPON" "volume" "1.0" "soundlevel" "SNDLVL_NORM" "wave" "weapons/binoculars/binoculars_zoomin.wav" } "Weapon_Binoculars.Special2" { "channel" "CHAN_WEAPON" "volume" "1.0" "soundlevel" "SNDLVL_NORM" "wave" "weapons/binoculars/binoculars_zoomout.wav" } "Weapon_Binoculars.Reload" { "channel" "CHAN_ITEM" "volume" "1.0" "soundlevel" "SNDLVL_NORM" "wave" "weapons/binoculars/binoculars_zoommax.wav" } Вот теперь качаем модели и материалы к туториалу Cкачать их можно здесь или взять из Миссинг Инфо.
|