Итак приступим: Я думаю вы знаете, что если АликсГан попробовать подобрать, то он не возьмётся. Исправим это. Откройте weapon_alyxgun.h и найдите virtual void SetPickupTouch( void ) { // Alyx gun cannot be picked up SetTouch(NULL); } Закаменте это. Можно компилить, но чего-то не хватает. Чего? Правильно! Патронов и импульса 101. Итак откройте item_ammo.cpp и найдите LINK_ENTITY_TO_CLASS(item_ar2_grenade, CItem_AR2_Grenade); LINK_ENTITY_TO_CLASS(item_ammo_smg1_grenade, CItem_AR2_Grenade); После добавьте это: // ======================================================================== // >> AlyxGun Ammo // ======================================================================== #define SIZE_AMMO_ALYXGUN 30 class CItem_AlyxGun : public CItem { public: DECLARE_CLASS( CItem_AlyxGun, CItem ); void Spawn( void ) { Precache( ); SetModel( "models/items/boxsrounds.mdl"); BaseClass::Spawn( ); } void Precache( void ) { PrecacheModel ("models/items/boxsrounds.mdl"); } bool MyTouch( CBasePlayer *pPlayer ) { if (ITEM_GiveAmmo( pPlayer, SIZE_AMMO_ALYXGUN, "AlyxGun")) { if ( g_pGameRules->ItemShouldRespawn( this ) == GR_ITEM_RESPAWN_NO ) { UTIL_Remove(this); } return true; } return false; } }; LINK_ENTITY_TO_CLASS(item_box_AlyxGun, CItem_AlyxGun); LINK_ENTITY_TO_CLASS(item_ammo_alyxgun, CItem_AlyxGun); Теперь перейдём к импульсу. Откройте player.cpp и найдите строку case 101. Это и есть импульс 101. Можете поиграться со значениями, но мы добавим после GiveAmmo( 16, "XBowBolt" ); это: GiveAmmo( 150, "AlyxGun" ); А потом после GiveNamedItem( "weapon_crossbow" ); это: GiveNamedItem( "weapon_alyxgun" ); Всё. Можно компилить! Модельку возьмите из SMod'a. Теперь немного поправим скрипты: Откройте weapon_alyxgun.txt и впишите это: // Alyx Gun WeaponData { // Weapon data is loaded by both the Game and Client DLLs. "printname" "AlyxGun" //название, можно изменить "viewmodel" "models/weapons/v_AlyxGun.mdl" //Моделька в руках из СМода "playermodel" "models/weapons/W_Alyx_Gun.mdl" "anim_prefix" "alyxgun" "bucket" "1" "bucket_position" "2" "clip_size" "30" "clip2_size" "-1" "default_clip" "30" "default_clip2" "-1" "primary_ammo" "AlyxGun" "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" { "file" "sprites/a_icons1" "x" "55" "y" "60" "width" "73" "height" "15" } "crosshair" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } "autoaim" { "file" "sprites/crosshairs" "x" "0" "y" "48" "width" "24" "height" "24" } } } Всё. Туториал был написан мною. Короче йа рулю X)
|