Hunting Rifle

Тема в разделе "Оружие", создана пользователем F4TAL1ST, 29 янв 2011.

  1. alex271988

    alex271988 Соучастник

    в смысле русифицированые? - да :yes: или ServerPerksV5? -нет :no: - ServerPerksV4

    может нужно какойто порядок установления мутаторов? у меня щас стоят KFCustomShopMutV2,ServerPerksV4,BDHuntingRifleFinal,ijcwp-beta6new.
    ijcwp-beta6new и BDHuntingRifleFinal я просто закинул файлы по папкам в сервер и добавил в список KFCustomShopMutV2.ini, ServerPerksV4- прописал в бат файле ?Mutator=ServerPerksV4.ServerPerksMut, и тоже кинул файлы в папку system,KFCustomShopMutV2 - просто раскидал файлы в папку system сервера
    Блин ну что же не так я вчера на сегодня до пол пятого утра мозки парил :pinch: кипят уже! :blink: хто может помогите :facepalm:
     
  2. 3xzet

    3xzet Мододел "Ы"

    KFCustomShopMutV2 не нужен вообще
    добавляй пушку в ServerPerksV4.ini
     
  3. alex271988

    alex271988 Соучастник

    а как именно нужно вписывать ?
    [ServerPerksV4.ServerPerksMut]
    MinPerksLevel=20
    MaxPerksLevel=20
    RemotePort=5000
    MidGameSaveWaves=0
    bForceGivePerk=False
    bNoSavingProgress=False
    bUseRemoteDatabase=False
    bUsePlayerNameAsID=False
    bMessageAnyPlayerLevelUp=False
    bUseLowestRequirements=False
    bBWZEDTime=False
    bUseEnhancedScoreboard=True
    RequirementScaling=1.000000
    RemoteDatabaseURL=192.168.1.33
    RemotePassword=Pass
    Perks=IJCWeaponPackPerkActivation14.SRVetSupportSpecIJC
    Perks=ServerPerksV4.SRVetBerserker
    Perks=IJCWeaponPackPerkActivation14.SRVetCommandoIJC
    Perks=IJCWeaponPackPerkActivation14.SRVetFieldMedicIJC
    Perks=ServerPerksV4.SRVetFirebug
    Perks=IJCWeaponPackPerkActivation14.SRVetSharpshooterIJC
    Perks=ServerPerksV4.SRVetDemolitions
    TraderInventory=4:KFMod.MP7MPickup
    TraderInventory=2:KFMod.ShotgunPickup
    TraderInventory=2:KFMod.BoomStickPickup
    TraderInventory=5:KFMod.LAWPickup
    TraderInventory=2:KFMod.AA12Pickup
    TraderInventory=1:KFMod.SinglePickup
    TraderInventory=1:KFMod.DualiesPickup
    TraderInventory=1:KFMod.DeaglePickup
    TraderInventory=1:KFMod.DualDeaglePickup
    TraderInventory=3:KFMod.WinchesterPickup
    TraderInventory=3:KFMod.CrossbowPickup
    TraderInventory=3:KFMod.M14EBRPickup
    TraderInventory=4:KFMod.BullpupPickup
    TraderInventory=4:KFMod.AK47Pickup
    TraderInventory=4:KFMod.SCARMK17Pickup
    TraderInventory=0:KFMod.KnifePickup
    TraderInventory=0:KFMod.MachetePickup
    TraderInventory=0:KFMod.AxePickup
    TraderInventory=0:KFMod.ChainsawPickup
    TraderInventory=0:KFMod.KatanaPickup
    TraderInventory=6:KFMod.FlameThrowerPickup
    TraderInventory=5:KFMod.PipeBombPickup
    TraderInventory=5:KFMod.M79Pickup
    TraderInventory=5:KFMod.M32Pickup
    TraderInventory=1:IJCWeaponPackPerkActivation14.MK23PickupP
    TraderInventory=1:IJCWeaponPackPerkActivation14.DualMK23PickupP
    TraderInventory=4:IJCWeaponPackPerkActivation14.M7A3MPickupP
    TraderInventory=4:IJCWeaponPackPerkActivation14.M7A3CPickupP
    TraderInventory=4:IJCWeaponPackPerkActivation14.FnFalPickupP
    TraderInventory=4:IJCWeaponPackPerkActivation14.FnFalAPickupP
    TraderInventory=2:IJCWeaponPackPerkActivation14.KSGPickupP
    TraderInventory=3:IJCWeaponPackPerkActivation14.M99PickupP
    TraderInventory=3:IJCWeaponPackPerkActivation14WhiskyColt.WColtPickup
    TraderInventory=2:IJCWeaponPackPerkActivation14WhiskyMediShot.WMediShotPickup
    TraderInventory=3:IJCWeaponPackPerkActivation14BDHuntingRifleFinal.Hunting_RiflePickup

    WeaponCategories=Холодное
    WeaponCategories=Пистолеты
    WeaponCategories=Дробовики
    WeaponCategories=Снайперское
    WeaponCategories=Автоматичесское
    WeaponCategories=Взрывчатое
    WeaponCategories=Зажигательное
    или как ?
     
  4. 3xzet

    3xzet Мододел "Ы"

    TraderInventory=1:WhiskyColt.WColtPickup
    TraderInventory=2:WhiskyMediShot.WMediShotPickup
    TraderInventory=3:BDHuntingRifleFinal.Hunting_RiflePickup
     
  5. alex271988

    alex271988 Соучастник

    спасибо большое помогло! :thumbsup: пистолет и дробаш для меда появился а вот
    BDHuntingRifleFinal никак.Там в теме написано :

    Обратите внимание! Для того, что бы установить этот мутатор вам понадобится вот ЭТОТ мутатор(KFCustomShopMutV2).
    Пропишите в KFCustomShopMutV2.ini такую строчку:

    BDHuntingRifleFinal.Hunting_RiflePickup

    Можно ли как то обойти это ограничение и поставить мутатор Hunting_RiflePickup не ставя KFCustomShopMutV2? :huh:
     
  6. 3xzet

    3xzet Мододел "Ы"

    я тебе написал как надо
    если не появляется значит не хватает каких-то файлов(либо закинул не в те папки)
     
  7. alex271988

    alex271988 Соучастник

    Все получилось :thumbsup: перезалил файлы и все зараболало! :lol: , СПАСИБО БОЛЬШОЕ :thumbsup:, вот можно еще вопрос, там пистолет WhiskyColt.WColtPickup он лежит в путкте торговца "пистолеты" там все для снайпера, а пистоле вроде как для подрывника...или так должно быть? :confused:
     
  8. 3xzet

    3xzet Мододел "Ы"

    цифра в строке TraderInventory=1:WhiskyColt.WColtPickup означает группу оружия
    группы оружия нумеруются сверху вниз начиная с нуля
    т.о.
    цифра "0" WeaponCategories=Холодное
    цифра "1" WeaponCategories=Пистолеты
    цифра "2" WeaponCategories=Дробовики
    цифра "3" WeaponCategories=Снайперское
    цифра "4" WeaponCategories=Автоматичесское
    цифра "5" WeaponCategories=Взрывчатое
    цифра "6" WeaponCategories=Зажигательное
     
  9. alex271988

    alex271988 Соучастник

    тоесть пистолет WhiskyColt.WColtPickup для подрывника, и я если хочу то могу поставить цифру 5 - TraderInventory=5:WhiskyColt.WColtPickup и он будет в пункте для подрывника? :)
     
  10. Nenormalniy

    Nenormalniy Соучастник

    Ребятушки, подскажите, как мне сделать из этой снапки такую снапку, чтобы она стреляла без этой анимации перезарядки после каждого выстрела?
    Просто чтобы была небольшая задержка между выстрелами (0.2 секунды, не более того), а стрелять можно было, не убирая прицел. Обойму 15 надо, но это я уже знаю как делать.
    В общем, хочу снапку как в л4д!
    Выкладываю коды (перечни параметров в конца каждого из кодов, в конструкторе defaultproperties). В принципе, зная английский язык, можно интуитивно что-то понять, но я что-то никак и не разберусь. Если у вас есть какие-то мнения или подозрения относительно параметров, на которые стоит обратить внимание - подсказывайте!


    hunting_rifle.uc :
    Код:
    class HUNTING_RIFLE extends KFWeapon;
    
    //=============================================================================
    // Execs
    //=============================================================================
    #exec OBJ LOAD FILE="..\textures\HuntingRifleT.utx"
    #exec OBJ LOAD FILE=..\textures\ScopeShaders.utx
    //#exec OBJ LOAD FILE="..\Animations\KF_Freaks_Trip.ukx"
    
    
    var color ChargeColor;
    
    var float Range;
    var float LastRangingTime;
    
    var() Material ZoomMat;
    var() Sound ZoomSound;
    var bool bArrowRemoved;
    
    //=============================================================================
    // Variables
    //=============================================================================
    
    var()		int			lenseMaterialID;		// used since material id's seem to change alot
    
    var()		float		scopePortalFOVHigh;		// The FOV to zoom the scope portal by.
    var()		float		scopePortalFOV;			// The FOV to zoom the scope portal by.
    var()       vector      XoffsetScoped;
    var()       vector      XoffsetHighDetail;
    
    // Not sure if these pitch vars are still needed now that we use Scripted Textures. We'll keep for now in case they are. - Ramm 08/14/04
    var()		int			scopePitch;				// Tweaks the pitch of the scope firing angle
    var()		int			scopeYaw;				// Tweaks the yaw of the scope firing angle
    var()		int			scopePitchHigh;			// Tweaks the pitch of the scope firing angle high detail scope
    var()		int			scopeYawHigh;			// Tweaks the yaw of the scope firing angle high detail scope
    
    // 3d Scope vars
    var   ScriptedTexture   ScopeScriptedTexture;   // Scripted texture for 3d scopes
    var	  Shader		    ScopeScriptedShader;   	// The shader that combines the scripted texture with the sight overlay
    var   Material          ScriptedTextureFallback;// The texture to render if the users system doesn't support shaders
    
    // new scope vars
    var     Combiner            ScriptedScopeCombiner;
    
    var     texture             TexturedScopeTexture;
    
    var	    bool				bInitializedScope;		// Set to true when the scope has been initialized
    var(Zooming)    float       ZoomedDisplayFOVHigh;       // What is the DisplayFOV when zoomed in
    var     float               ForceZoomOutTime;
    
    //=============================================================================
    // Functions
    //=============================================================================
    
    //===========================================
    // Used for debugging the weapons and scopes- Ramm
    //===========================================
    
    // Commented out for the release build
    
    exec function pfov(int thisFOV)
    {
    	if( !class'ROEngine.ROLevelInfo'.static.RODebugMode() )
    		return;
    
    	scopePortalFOV = thisFOV;
    }
    
    exec function pPitch(int num)
    {
    	if( !class'ROEngine.ROLevelInfo'.static.RODebugMode() )
    		return;
    
    	scopePitch = num;
    	scopePitchHigh = num;
    }
    
    exec function pYaw(int num)
    {
    	if( !class'ROEngine.ROLevelInfo'.static.RODebugMode() )
    		return;
    
    	scopeYaw = num;
    	scopeYawHigh = num;
    }
    
    simulated exec function TexSize(int i, int j)
    {
    	if( !class'ROEngine.ROLevelInfo'.static.RODebugMode() )
    		return;
    
    	ScopeScriptedTexture.SetSize(i, j);
    }
    
    // Helper function for the scope system. The scope system checks here to see when it should draw the portal.
    // if you want to limit any times the portal should/shouldn't be drawn, add them here.
    // Ramm 10/27/03
    simulated function bool ShouldDrawPortal()
    {
    //	local 	name	thisAnim;
    //	local	float 	animframe;
    //	local	float 	animrate;
    //
    //	GetAnimParams(0, thisAnim,animframe,animrate);
    
    //	if(bUsingSights && (IsInState('Idle') || IsInState('PostFiring')) && thisAnim != 'scope_shoot_last')
        if( bAimingRifle )
    		return true;
    	else
    		return false;
    }
    
    simulated function PostBeginPlay()
    {
    	super.PostBeginPlay();
    
    
    
        // Get new scope detail value from KFWeapon
        KFScopeDetail = class'KFMod.KFWeapon'.default.KFScopeDetail;
    
    	UpdateScopeMode();
    }
    
    // Handles initializing and swithing between different scope modes
    simulated function UpdateScopeMode()
    {
    	if (Level.NetMode != NM_DedicatedServer && Instigator != none && Instigator.IsLocallyControlled() &&
    		Instigator.IsHumanControlled() )
        {
    	    if( KFScopeDetail == KF_ModelScope )
    		{
    			scopePortalFOV = default.scopePortalFOV;
    			ZoomedDisplayFOV = default.ZoomedDisplayFOV;
    			//bPlayerFOVZooms = false;
    			if (bUsingSights)
    			{
    				PlayerViewOffset = XoffsetScoped;
    			}
    
    			if( ScopeScriptedTexture == none )
    			{
    	        	ScopeScriptedTexture = ScriptedTexture(Level.ObjectPool.AllocateObject(class'ScriptedTexture'));
    			}
    
    	        ScopeScriptedTexture.FallBackMaterial = ScriptedTextureFallback;
    	        ScopeScriptedTexture.SetSize(512,512);
    	        ScopeScriptedTexture.Client = Self;
    
    			if( ScriptedScopeCombiner == none )
    			{
    				// Construct the Combiner
    				ScriptedScopeCombiner = Combiner(Level.ObjectPool.AllocateObject(class'Combiner'));
    	            ScriptedScopeCombiner.Material1 = Texture'HuntingRifleT.Scope.HRCross';
    	            ScriptedScopeCombiner.FallbackMaterial = Shader'ScopeShaders.Zoomblur.LensShader';
    	            ScriptedScopeCombiner.CombineOperation = CO_Multiply;
    	            ScriptedScopeCombiner.AlphaOperation = AO_Use_Mask;
    	            ScriptedScopeCombiner.Material2 = ScopeScriptedTexture;
    	        }
    
    			if( ScopeScriptedShader == none )
    			{
    	            // Construct the scope shader
    				ScopeScriptedShader = Shader(Level.ObjectPool.AllocateObject(class'Shader'));
    				ScopeScriptedShader.Diffuse = ScriptedScopeCombiner;
    				ScopeScriptedShader.SelfIllumination = ScriptedScopeCombiner;
    				ScopeScriptedShader.FallbackMaterial = Shader'ScopeShaders.Zoomblur.LensShader';
    			}
    
    	        bInitializedScope = true;
    		}
    		else if( KFScopeDetail == KF_ModelScopeHigh )
    		{
    			scopePortalFOV = scopePortalFOVHigh;
    			ZoomedDisplayFOV = default.ZoomedDisplayFOVHigh;
    			//bPlayerFOVZooms = false;
    			if (bUsingSights)
    			{
    				PlayerViewOffset = XoffsetHighDetail;
    			}
    
    			if( ScopeScriptedTexture == none )
    			{
    	        	ScopeScriptedTexture = ScriptedTexture(Level.ObjectPool.AllocateObject(class'ScriptedTexture'));
    	        }
    			ScopeScriptedTexture.FallBackMaterial = ScriptedTextureFallback;
    	        ScopeScriptedTexture.SetSize(1024,1024);
    	        ScopeScriptedTexture.Client = Self;
    
    			if( ScriptedScopeCombiner == none )
    			{
    				// Construct the Combiner
    				ScriptedScopeCombiner = Combiner(Level.ObjectPool.AllocateObject(class'Combiner'));
    	            ScriptedScopeCombiner.Material1 = Texture'HuntingRifleT.Scope.HRCross';
    	            ScriptedScopeCombiner.FallbackMaterial = Shader'ScopeShaders.Zoomblur.LensShader';
    	            ScriptedScopeCombiner.CombineOperation = CO_Multiply;
    	            ScriptedScopeCombiner.AlphaOperation = AO_Use_Mask;
    	            ScriptedScopeCombiner.Material2 = ScopeScriptedTexture;
    	        }
    
    			if( ScopeScriptedShader == none )
    			{
    	            // Construct the scope shader
    				ScopeScriptedShader = Shader(Level.ObjectPool.AllocateObject(class'Shader'));
    				ScopeScriptedShader.Diffuse = ScriptedScopeCombiner;
    				ScopeScriptedShader.SelfIllumination = ScriptedScopeCombiner;
    				ScopeScriptedShader.FallbackMaterial = Shader'ScopeShaders.Zoomblur.LensShader';
    			}
    
                bInitializedScope = true;
    		}
    		else if (KFScopeDetail == KF_TextureScope)
    		{
    			ZoomedDisplayFOV = default.ZoomedDisplayFOV;
    			PlayerViewOffset.X = default.PlayerViewOffset.X;
    			//bPlayerFOVZooms = true;
    
    			bInitializedScope = true;
    		}
    	}
    }
    
    simulated event RenderTexture(ScriptedTexture Tex)
    {
        local rotator RollMod;
    
        RollMod = Instigator.GetViewRotation();
        //RollMod.Roll -= 16384;
    
    //	Rpawn = ROPawn(Instigator);
    //	// Subtract roll from view while leaning - Ramm
    //	if (Rpawn != none && rpawn.LeanAmount != 0)
    //	{
    //		RollMod.Roll += rpawn.LeanAmount;
    //	}
    
        if(Owner != none && Instigator != none && Tex != none && Tex.Client != none)
            Tex.DrawPortal(0,0,Tex.USize,Tex.VSize,Owner,(Instigator.Location + Instigator.EyePosition()), RollMod,  scopePortalFOV );
    }
    
    
    function float GetAIRating()
    {
    	local AIController B;
    
    	B = AIController(Instigator.Controller);
    	if ( (B == None) || (B.Enemy == None) )
    		return AIRating;
    
    	return (AIRating + 0.0003 * FClamp(1500 - VSize(B.Enemy.Location - Instigator.Location),0,1000));
    }
    
    function byte BestMode()
    {
    	return 0;
    }
    
    function bool RecommendRangedAttack()
    {
    	return true;
    }
    
    //TODO: LONG ranged?
    function bool RecommendLongRangedAttack()
    {
    	return true;
    }
    
    function float SuggestAttackStyle()
    {
    	return -1.0;
    }
    
    
    simulated function SetZoomBlendColor(Canvas c)
    {
    	local Byte    val;
    	local Color   clr;
    	local Color   fog;
    
    	clr.R = 255;
    	clr.G = 255;
    	clr.B = 255;
    	clr.A = 255;
    
    	if( Instigator.Region.Zone.bDistanceFog )
    	{
    		fog = Instigator.Region.Zone.DistanceFogColor;
    		val = 0;
    		val = Max( val, fog.R);
    		val = Max( val, fog.G);
    		val = Max( val, fog.B);
    		if( val > 128 )
    		{
    			val -= 128;
    			clr.R -= val;
    			clr.G -= val;
    			clr.B -= val;
    		}
    	}
    	c.DrawColor = clr;
    }
    
    
    /**
     * Handles all the functionality for zooming in including
     * setting the parameters for the weapon, pawn, and playercontroller
     *
     * @param bAnimateTransition whether or not to animate this zoom transition
     */
    simulated function ZoomIn(bool bAnimateTransition)
    {
        super(BaseKFWeapon).ZoomIn(bAnimateTransition);
    
    	bAimingRifle = True;
    
    	if( KFHumanPawn(Instigator)!=None )
    		KFHumanPawn(Instigator).SetAiming(True);
    
    	if( Level.NetMode != NM_DedicatedServer && KFPlayerController(Instigator.Controller) != none )
    	{
    		if( AimInSound != none )
    		{
                PlayOwnedSound(AimInSound, SLOT_Interact,,,,, false);
            }
    	}
    }
    
    /**
     * Handles all the functionality for zooming out including
     * setting the parameters for the weapon, pawn, and playercontroller
     *
     * @param bAnimateTransition whether or not to animate this zoom transition
     */
    simulated function ZoomOut(bool bAnimateTransition)
    {
        super.ZoomOut(bAnimateTransition);
    
    	bAimingRifle = False;
    
    	if( KFHumanPawn(Instigator)!=None )
    		KFHumanPawn(Instigator).SetAiming(False);
    
    	if( Level.NetMode != NM_DedicatedServer && KFPlayerController(Instigator.Controller) != none )
    	{
    		if( AimOutSound != none )
    		{
                PlayOwnedSound(AimOutSound, SLOT_Interact,,,,, false);
            }
            KFPlayerController(Instigator.Controller).TransitionFOV(KFPlayerController(Instigator.Controller).DefaultFOV,0.0);
    	}
    }
    
    simulated function WeaponTick(float dt)
    {
        super.WeaponTick(dt);
    
        if( bAimingRifle && ForceZoomOutTime > 0 && Level.TimeSeconds - ForceZoomOutTime > 0 )
        {
    	    ForceZoomOutTime = 0;
    
        	ZoomOut(false);
    
        	if( Role < ROLE_Authority)
    			ServerZoomOut(false);
    	}
    }
    
    // Force the weapon out of iron sights shortly after firing so the textured
    // scope gets the same disadvantage as the 3d scope
    simulated function bool StartFire(int Mode)
    {
        if( super.StartFire(Mode) )
        {
            ForceZoomOutTime = Level.TimeSeconds + 0.4;
            return true;
        }
    
        return false;
    }
    
    /**
     * Called by the native code when the interpolation of the first person weapon to the zoomed position finishes
     */
    simulated event OnZoomInFinished()
    {
        local name anim;
        local float frame, rate;
    
        GetAnimParams(0, anim, frame, rate);
    
        if (ClientState == WS_ReadyToFire)
        {
            // Play the iron idle anim when we're finished zooming in
            if (anim == IdleAnim)
            {
               PlayIdle();
            }
        }
    
    	if( Level.NetMode != NM_DedicatedServer && KFPlayerController(Instigator.Controller) != none &&
            KFScopeDetail == KF_TextureScope )
    	{
    		KFPlayerController(Instigator.Controller).TransitionFOV(PlayerIronSightFOV,0.0);
    	}
    }
    
    simulated function bool CanZoomNow()
    {
    	Return (!FireMode[0].bIsFiring && Instigator!=None && Instigator.Physics!=PHYS_Falling);
    }
    
    simulated event RenderOverlays(Canvas Canvas)
    {
        local int m;
    	local PlayerController PC;
    
        if (Instigator == None)
            return;
    
        // Lets avoid having to do multiple casts every tick - Ramm
    	PC = PlayerController(Instigator.Controller);
    
    	if(PC == None)
    		return;
    
        if(!bInitializedScope && PC != none )
    	{
        	  UpdateScopeMode();
        }
    
        // draw muzzleflashes/smoke for all fire modes so idle state won't
        // cause emitters to just disappear
        Canvas.DrawActor(None, false, true); // amb: Clear the z-buffer here
    
        for (m = 0; m < NUM_FIRE_MODES; m++)
    	{
            if (FireMode[m] != None)
            {
                FireMode[m].DrawMuzzleFlash(Canvas);
            }
        }
    
    
        SetLocation( Instigator.Location + Instigator.CalcDrawOffset(self) );
        SetRotation( Instigator.GetViewRotation() + ZoomRotInterp);
    
    	PreDrawFPWeapon();	// Laurent -- Hook to override things before render (like rotation if using a staticmesh)
    
     	if(bAimingRifle && PC != none && (KFScopeDetail == KF_ModelScope || KFScopeDetail == KF_ModelScopeHigh))
     	{
     		if (ShouldDrawPortal())
     		{
    			if ( ScopeScriptedTexture != none )
    			{
    				Skins[LenseMaterialID] = ScopeScriptedShader;
    				ScopeScriptedTexture.Client = Self;   // Need this because this can get corrupted - Ramm
    				ScopeScriptedTexture.Revision = (ScopeScriptedTexture.Revision +1);
    			}
     		}
    
    		bDrawingFirstPerson = true;
     	    Canvas.DrawBoundActor(self, false, false,DisplayFOV,PC.Rotation,rot(0,0,0),Instigator.CalcZoomedDrawOffset(self));
          	bDrawingFirstPerson = false;
    	}
        // Added "bInIronViewCheck here. Hopefully it prevents us getting the scope overlay when not zoomed.
        // Its a bit of a band-aid solution, but it will work til we get to the root of the problem - Ramm 08/12/04
    	else if( KFScopeDetail == KF_TextureScope && PC.DesiredFOV == PlayerIronSightFOV && bAimingRifle)
    	{
    		Skins[LenseMaterialID] = ScriptedTextureFallback;
    
    		SetZoomBlendColor(Canvas);
    
    		//Black-out either side of the main zoom circle.
    		Canvas.Style = ERenderStyle.STY_Normal;
    		Canvas.SetPos(0, 0);
    		Canvas.DrawTile(ZoomMat, (Canvas.SizeX - Canvas.SizeY) / 2, Canvas.SizeY, 0.0, 0.0, 8, 8);
    		Canvas.SetPos(Canvas.SizeX, 0);
    		Canvas.DrawTile(ZoomMat, -(Canvas.SizeX - Canvas.SizeY) / 2, Canvas.SizeY, 0.0, 0.0, 8, 8);
    
    		//The view through the scope itself.
    		Canvas.Style = 255;
    		Canvas.SetPos((Canvas.SizeX - Canvas.SizeY) / 2,0);
    		Canvas.DrawTile(ZoomMat, Canvas.SizeY, Canvas.SizeY, 0.0, 0.0, 1024, 1024);
    
    		//Draw some useful text.
    		Canvas.Font = Canvas.MedFont;
    		Canvas.SetDrawColor(200,150,0);
    
    		Canvas.SetPos(Canvas.SizeX * 0.16, Canvas.SizeY * 0.43);
    		Canvas.DrawText("Zoom: 2.50");
    
    		Canvas.SetPos(Canvas.SizeX * 0.16, Canvas.SizeY * 0.47);
    	}
     	else
     	{
    		Skins[LenseMaterialID] = ScriptedTextureFallback;
    		bDrawingFirstPerson = true;
    		Canvas.DrawActor(self, false, false, DisplayFOV);
    		bDrawingFirstPerson = false;
     	}
    }
    
    //=============================================================================
    // Scopes
    //=============================================================================
    
    //------------------------------------------------------------------------------
    // SetScopeDetail(RO) - Allow the players to change scope detail while ingame.
    //	Changes are saved to the ini file.
    //------------------------------------------------------------------------------
    //simulated exec function SetScopeDetail()
    //{
    //	if( !bHasScope )
    //		return;
    //
    //	if (KFScopeDetail == KF_ModelScope)
    //		KFScopeDetail = KF_TextureScope;
    //	else if ( KFScopeDetail == KF_TextureScope)
    //		KFScopeDetail = KF_ModelScopeHigh;
    //	else if ( KFScopeDetail == KF_ModelScopeHigh)
    //		KFScopeDetail = KF_ModelScope;
    //
    //	AdjustIngameScope();
    //	class'KFMod.KFWeapon'.default.KFScopeDetail = KFScopeDetail;
    //	class'KFMod.KFWeapon'.static.StaticSaveConfig();		// saves the new scope detail value to the ini
    //}
    
    //------------------------------------------------------------------------------
    // AdjustIngameScope(RO) - Takes the changes to the ScopeDetail variable and
    //	sets the scope to the new detail mode. Called when the player switches the
    //	scope setting ingame, or when the scope setting is changed from the menu
    //------------------------------------------------------------------------------
    simulated function AdjustIngameScope()
    {
    	local PlayerController PC;
    
        // Lets avoid having to do multiple casts every tick - Ramm
    	PC = PlayerController(Instigator.Controller);
    
    	if( !bHasScope )
    		return;
    
    	switch (KFScopeDetail)
    	{
    		case KF_ModelScope:
    			if( bAimingRifle )
    				DisplayFOV = default.ZoomedDisplayFOV;
    			if ( PC.DesiredFOV == PlayerIronSightFOV && bAimingRifle )
    			{
                	if( Level.NetMode != NM_DedicatedServer && KFPlayerController(Instigator.Controller) != none )
                	{
                        KFPlayerController(Instigator.Controller).TransitionFOV(KFPlayerController(Instigator.Controller).DefaultFOV,0.0);
    }
    			}
    			break;
    
    		case KF_TextureScope:
    			if( bAimingRifle )
    				DisplayFOV = default.ZoomedDisplayFOV;
    			if ( bAimingRifle && PC.DesiredFOV != PlayerIronSightFOV )
    			{
                	if( Level.NetMode != NM_DedicatedServer && KFPlayerController(Instigator.Controller) != none )
                	{
                		KFPlayerController(Instigator.Controller).TransitionFOV(PlayerIronSightFOV,0.0);
                	}
    			}
    			break;
    
    		case KF_ModelScopeHigh:
    			if( bAimingRifle )
    			{
    				if( ZoomedDisplayFOVHigh > 0 )
    					DisplayFOV = default.ZoomedDisplayFOVHigh;
    				else
    					DisplayFOV = default.ZoomedDisplayFOV;
    			}
    			if ( bAimingRifle && PC.DesiredFOV == PlayerIronSightFOV )
    			{
                	if( Level.NetMode != NM_DedicatedServer && KFPlayerController(Instigator.Controller) != none )
                	{
                        KFPlayerController(Instigator.Controller).TransitionFOV(KFPlayerController(Instigator.Controller).DefaultFOV,0.0);
                	}
    			}
    			break;
    	}
    
    	// Make any chagned to the scope setup
    	UpdateScopeMode();
    }
    
    simulated event Destroyed()
    {
        if (ScopeScriptedTexture != None)
        {
            ScopeScriptedTexture.Client = None;
            Level.ObjectPool.FreeObject(ScopeScriptedTexture);
            ScopeScriptedTexture=None;
        }
    
        if (ScriptedScopeCombiner != None)
        {
    		ScriptedScopeCombiner.Material2 = none;
    		Level.ObjectPool.FreeObject(ScriptedScopeCombiner);
    		ScriptedScopeCombiner = none;
        }
    
        if (ScopeScriptedShader != None)
        {
    		ScopeScriptedShader.Diffuse = none;
    		ScopeScriptedShader.SelfIllumination = none;
    		Level.ObjectPool.FreeObject(ScopeScriptedShader);
    		ScopeScriptedShader = none;
        }
    
        Super.Destroyed();
    }
    
    simulated function PreTravelCleanUp()
    {
        if (ScopeScriptedTexture != None)
        {
            ScopeScriptedTexture.Client = None;
            Level.ObjectPool.FreeObject(ScopeScriptedTexture);
            ScopeScriptedTexture=None;
        }
    
        if (ScriptedScopeCombiner != None)
        {
    		ScriptedScopeCombiner.Material2 = none;
    		Level.ObjectPool.FreeObject(ScriptedScopeCombiner);
    		ScriptedScopeCombiner = none;
        }
    
        if (ScopeScriptedShader != None)
        {
    		ScopeScriptedShader.Diffuse = none;
    		ScopeScriptedShader.SelfIllumination = none;
    		Level.ObjectPool.FreeObject(ScopeScriptedShader);
    		ScopeScriptedShader = none;
        }
    }
    
    defaultproperties
    {
         ZoomMat=FinalBlend'HuntingRifleT.Scope.RifleCrossFinal'
         lenseMaterialID=2
         scopePortalFOVHigh=22.000000
         scopePortalFOV=12.000000
         ScriptedTextureFallback=Combiner'KF_Weapons_Trip_T.Rifles.CBLens_cmb'
         ZoomedDisplayFOVHigh=45.000000
         bHasScope=True
         MagCapacity=10
         ReloadRate=4.000000
         ReloadAnim="Reload"
         ReloadAnimRate=1.120000
         WeaponReloadAnim="Reload_M14"
         HudImage=Texture'HuntingRifleT.HUD.HR_Unselected'
         SelectedHudImage=Texture'HuntingRifleT.HUD.HR_selected'
         Weight=5.000000
         bHasAimingMode=True
         IdleAimAnim="Idle_Iron"
         StandardDisplayFOV=65.000000
         bModeZeroCanDryFire=True
         TraderInfoTexture=Texture'HuntingRifleT.HUD.huntingrifle_Trader'
         PlayerIronSightFOV=32.000000
         ZoomedDisplayFOV=60.000000
         FireModeClass(0)=Class'Wmod.Hunting_RifleFire'
         FireModeClass(1)=Class'KFMod.NoFire'
         PutDownAnim="PutDown"
         SelectSound=Sound'KF_PumpSGSnd.SG_Select'
         SelectForce="SwitchToAssaultRifle"
         AIRating=0.650000
         CurrentRating=0.650000
         Description="A recreational hunting weapon, featuring a firing trigger and a powerful integrated scope. "
         DisplayFOV=65.000000
         Priority=10
         CustomCrosshair=11
         CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
         InventoryGroup=3
         GroupOffset=3
         PickupClass=Class'Wmod.Hunting_RiflePickup'
         PlayerViewOffset=(X=15.000000,Y=16.000000,Z=-4.000000)
         BobDamping=6.000000
         AttachmentClass=Class'Wmod.Hunting_RifleAttachment'
         IconCoords=(X1=253,Y1=146,X2=333,Y2=181)
         ItemName="Hunting Rifle"
         Mesh=SkeletalMesh'HuntingRifleA.hunt_rifle'
         Skins(0)=Combiner'HuntingRifleT.HR_Final'
    }
    

    haunting_riflefire.uc :
    Код:
    //=============================================================================
    // Hunting_RifleFire
    //=============================================================================
    class Hunting_RifleFire extends KFFire;
    
    //adds limited shot penetration
    function DoTrace(Vector Start, Rotator Dir)
    {
    	local Vector X,Y,Z, End, HitLocation, HitNormal, ArcEnd;
    	local Actor Other;
    	local byte HitCount,HCounter;
    	local float HitDamage;
    	local array<int>	HitPoints;
    	local KFPawn HitPawn;
    	local array<Actor>	IgnoreActors;
    	local Actor DamageActor;
    	local int i;
    
    	MaxRange();
    
    	Weapon.GetViewAxes(X, Y, Z);
    	if ( Weapon.WeaponCentered() )
    	{
    		ArcEnd = (Instigator.Location + Weapon.EffectOffset.X * X + 1.5 * Weapon.EffectOffset.Z * Z);
    	}
    	else
        {
            ArcEnd = (Instigator.Location + Instigator.CalcDrawOffset(Weapon) + Weapon.EffectOffset.X * X +
    		 Weapon.Hand * Weapon.EffectOffset.Y * Y + Weapon.EffectOffset.Z * Z);
        }
    
    	X = Vector(Dir);
    	End = Start + TraceRange * X;
    	HitDamage = DamageMax;
    	While( (HitCount++)<10 )
    	{
            DamageActor = none;
    
    		Other = Instigator.HitPointTrace(HitLocation, HitNormal, End, HitPoints, Start,, 1);
    		if( Other==None )
    		{
    			Break;
    		}
    		else if( Other==Instigator || Other.Base == Instigator )
    		{
    			IgnoreActors[IgnoreActors.Length] = Other;
    			Other.SetCollision(false);
    			Start = HitLocation;
    			Continue;
    		}
    
    		if( ExtendedZCollision(Other)!=None && Other.Owner!=None )
    		{
                IgnoreActors[IgnoreActors.Length] = Other;
                IgnoreActors[IgnoreActors.Length] = Other.Owner;
    			Other.SetCollision(false);
    			Other.Owner.SetCollision(false);
    			DamageActor = Pawn(Other.Owner);
    		}
    
    		if ( !Other.bWorldGeometry && Other!=Level )
    		{
    			HitPawn = KFPawn(Other);
    
    	    	if ( HitPawn != none )
    	    	{
                     // Hit detection debugging
    				 /*log("PreLaunchTrace hit "$HitPawn.PlayerReplicationInfo.PlayerName);
    				 HitPawn.HitStart = Start;
    				 HitPawn.HitEnd = End;*/
                     if(!HitPawn.bDeleteMe)
    				 	HitPawn.ProcessLocationalDamage(int(HitDamage), Instigator, HitLocation, Momentum*X,DamageType,HitPoints);
    
                     // Hit detection debugging
    				 /*if( Level.NetMode == NM_Standalone)
    				 	  HitPawn.DrawBoneLocation();*/
    
                    IgnoreActors[IgnoreActors.Length] = Other;
                    IgnoreActors[IgnoreActors.Length] = HitPawn.AuxCollisionCylinder;
        			Other.SetCollision(false);
        			HitPawn.AuxCollisionCylinder.SetCollision(false);
        			DamageActor = Other;
    			}
                else
                {
        			if( KFMonster(Other)!=None )
        			{
                        IgnoreActors[IgnoreActors.Length] = Other;
            			Other.SetCollision(false);
            			DamageActor = Other;
        			}
        			else if( DamageActor == none )
        			{
                        DamageActor = Other;
        			}
        			Other.TakeDamage(int(HitDamage), Instigator, HitLocation, Momentum*X, DamageType);
    			}
    			if( (HCounter++)>=4 || Pawn(DamageActor)==None )
    			{
    				Break;
    			}
    			HitDamage/=2;
    			Start = HitLocation;
    		}
    		else if ( HitScanBlockingVolume(Other)==None )
    		{
    			if( KFWeaponAttachment(Weapon.ThirdPersonActor)!=None )
    		      KFWeaponAttachment(Weapon.ThirdPersonActor).UpdateHit(Other,HitLocation,HitNormal);
    			Break;
    		}
    	}
    
        // Turn the collision back on for any actors we turned it off
    	if ( IgnoreActors.Length > 0 )
    	{
    		for (i=0; i<IgnoreActors.Length; i++)
    		{
                IgnoreActors[i].SetCollision(true);
    		}
    	}
    }
    
    defaultproperties
    {
         FireAimedAnim="Fire_Iron"
         RecoilRate=0.020000
         maxVerticalRecoilAngle=800
         maxHorizontalRecoilAngle=250
         StereoFireSound=Sound'HuntingRifle_Snd.awp1_stereo'
         DamageType=Class'Wmod.DamTypeHuntingRifle'
         DamageMin=250
         DamageMax=350
         Momentum=18000.000000
         bWaitForRelease=True
         bModeExclusive=False
         bAttachSmokeEmitter=True
         TransientSoundVolume=1.800000
         FireLoopAnim=
         FireEndAnim=
         FireSound=Sound'HuntingRifle_Snd.awp1_mono'
         NoAmmoSound=Sound'KF_RifleSnd.Rifle_DryFire'
         FireForce="ShockRifleFire"
         FireRate=1.000000
         AmmoClass=Class'Wmod.Hunting_RifleAmmo'
         AmmoPerFire=1
         ShakeRotMag=(X=100.000000,Y=100.000000,Z=500.000000)
         ShakeRotRate=(X=10000.000000,Y=10000.000000,Z=10000.000000)
         ShakeRotTime=2.000000
         ShakeOffsetMag=(X=10.000000,Y=3.000000,Z=12.000000)
         ShakeOffsetRate=(X=1000.000000,Y=1000.000000,Z=1000.000000)
         ShakeOffsetTime=2.000000
         BotRefireRate=0.650000
         FlashEmitterClass=Class'ROEffects.MuzzleFlash1stKar'
         aimerror=0.000000
         Spread=0.007000
    }
    
     
  11. LLIePLLIeHb

    LLIePLLIeHb Guest

    Думаю не получится убрать передергивание после выстрела , это анимацию нужно кроить, можно увеличить FireRate тогда быстрее дергать будет.
     
  12. Atlan

    Atlan Капо

    Можно в перке снайпера добавить эту валыну:

    Код:
    
    static function float GetReloadSpeedModifier(KFPlayerReplicationInfo KFPRI, KFWeapon Other)
    {
    	if ( Crossbow(Other) != none ||  HUNTING_RIFLE(Other) != none )
    	{
    		if ( KFPRI.ClientVeteranSkillLevel == 0 )
    			return 1.0;
    	        else if ( KFPRI.ClientVeteranSkillLevel == 1 )
    			return 1.18;
    		else if ( KFPRI.ClientVeteranSkillLevel == 2 )
    			return 1.25;
                    else if ( KFPRI.ClientVeteranSkillLevel == 3 )
    			return 1.35;
                    else if ( KFPRI.ClientVeteranSkillLevel == 4)
    			return 1.40;
    		else if ( KFPRI.ClientVeteranSkillLevel == 5 )
    			return 1.50;
                    else if ( KFPRI.ClientVeteranSkillLevel == 6 )
    			return 1.60;
                    else if ( KFPRI.ClientVeteranSkillLevel == 7 )
    			return 1.70;
    		else if ( KFPRI.ClientVeteranSkillLevel == 8)
    			return 1.85;
                    else if ( KFPRI.ClientVeteranSkillLevel == 9 )
    			return 1.95;
                    else if ( KFPRI.ClientVeteranSkillLevel == 10 )
    			return 2.25;
    		else if ( KFPRI.ClientVeteranSkillLevel == 11 )
    			return 2.55;
                    else if ( KFPRI.ClientVeteranSkillLevel == 12 )
    			return 2.85;
    	        else if ( KFPRI.ClientVeteranSkillLevel == 13 )
    			return 3.10;
                    else if ( KFPRI.ClientVeteranSkillLevel >= 14 )
    			return 3.85;
             return 1.0 + (0.10 * float(KFPRI.ClientVeteranSkillLevel)); // Up to 60% faster reload with Crossbow/Winchester/Handcannon
    	}
    	return 1.0;
    }
    
    
    Так у меня,но ты можешь увеличить цифры по левелам и перезарядка будет еще быстрее.
     
    Винни нравится это.
  13. LLIePLLIeHb

    LLIePLLIeHb Guest

    Это и увеличивает FireRate оружия , я как понял нужно сделать чтоб прицел не убирался после выстрела и не дергал затвор .

    Покурю на досуге коды (гребаные праздники :verymad: ) , может получится и кодом убрать , это должно в fire или основном классе оружия быть если вообще есть.
     
  14. Nenormalniy

    Nenormalniy Соучастник

    Оба класса я выложил, под спойлеры. По идее, где-то прописано, чтобы после выстрела крутилась анимация. А за пример можно взять код М14 - там тоже стрельба без анимации между выстрелами.
     
  15. BAHO

    BAHO Fresh Meat

    Мне показалось или одновременно с IJC WeaponPack этот мутатор не робит?

    Сегодня играл на сервере где был IJC и эта самая винтовка. Может подскажет кто как это сделать на дедике? Я как только не крутил и ничего не получилось у меня...

    Ответ уже не особо волнует т.к. IJC я убрал, но все же интересно было бы узнать что я не так делал
     
  16. Папка01

    Папка01 ۞ Всевидящее око форума ۞

    Это что простите меня за нахер такой? :verymad: Как лечить?
    [​IMG]

    [​IMG]
     
  17. Фрэгл

    Фрэгл Administrator

    Текстурный Худ-хамелеон :biggrin: .
     
  18. Папка01

    Папка01 ۞ Всевидящее око форума ۞

    Я понимаю, что каким-то косым хреном текстура с руки залезла в прицел, но как поправить-то? А то, знаете ли, целиться слегка не айс с такими вот слетами.
    А ствол работает нормуль. Только в текстуре косяк.
     
  19. Lexass

    Lexass Капо

    Я знаю в чем фигня.Папка у тебя текстуры не от этой винтовки. просто я тоже сливал в едино ну кажется Хайтинг райф а на самом деле разное. коды в разных фаилых стоят по разному и получается вот такая фигня
     
  20. LLIePLLIeHb

    LLIePLLIeHb Guest

    В главном классе оружия , тот что ссылается на weapon нужно правильно указать порядок текстур и правильный SleeveNum. <_<