Изменение звёзд рядом со значком перка на цифры

Тема в разделе "Игровое редактирование", создана пользователем eXes1ze`, 7 апр 2014.

  1. key

    key Солдат

    В стареньком серверперкс510 после

    DrawPerkWithDigits(KFPRI,Canvas,VetXPos,YL,PlayerBoxSizeY,VeterancyBox);

    не хватает строчек по сравнению с новым сервперкс7

    if( bDrawLevelDigits )
    {
    Canvas.SetPos(BoxXPos,YL);
    Canvas.Font = LvlFont;
    Canvas.DrawColor = HUDClass.default.GoldColor;
    S = "Lv"$string(KFPRI.ClientVeteranSkillLevel);
    Canvas.TextSize(S,XL,YL);
    Canvas.CurX-=(XL*1.025);
    Canvas.CurY+=(PlayerBoxSizeY-YL)*0.5;
    Canvas.DrawTextClipped(S);
    Canvas.Font = OrgFont;
    }

    Так понимаю это собственно и есть отрисовка?
     
  2. Flame

    Flame -Заслуженый кодер форума-

    В новом SP уровень игрока показывается в табличке. Слева от значка перка. Поэтому нет. Не в этом проблема

    Кидай SRHUDKillingFloor и SRScoreBoard
    Гляну
     
  3. key

    key Солдат

    Вот

    SRHUDKillingFloor

    Код:
    class SRHUDKillingFloor extends HUDKillingFloor;
    
    #exec obj load file="KFMapEndTextures.utx"
    
    var ClientPerkRepLink ClientRep;
    var transient float OldDilation,CurrentBW,DesiredBW;
    var bool bUseBloom,bUseMotionBlur;
    var transient bool bFadeBW;
    
    simulated function PostBeginPlay()
    {
    local Font MyFont;
    
    Super(HudBase).PostBeginPlay();
    SetHUDAlpha();
    
    foreach DynamicActors(class'KFSPLevelInfo', KFLevelRule)
    Break;
    
    Hint_45_Time = 9999999;
    
    MyFont = LoadWaitingFont(0);
    MyFont = LoadWaitingFont(1);
    
    bUseBloom = bool(ConsoleCommand("get ini:Engine.Engine.ViewportManager Bloom"));
    bUseMotionBlur = Class'KFHumanPawn'.Default.bUseBlurEffect;
    }
    
    function DrawCustomBeacon(Canvas C, Pawn P, float ScreenLocX, float ScreenLocY);
    
    simulated function DrawSpectatingHud(Canvas C)
    {
    local rotator CamRot;
    local vector CamPos, ViewDir, ScreenPos;
    local KFPawn KFBuddy;
    
    DrawModOverlay(C);
    
    if( bHideHud )
    return;
    
    PlayerOwner.PostFX_SetActive(0, false);
    
    // Grab our View Direction
    C.GetCameraLocation(CamPos, CamRot);
    ViewDir = vector(CamRot);
    
    // Draw the Name, Health, Armor, and Veterancy above other players (using this way to fix portal's beacon errors).
    foreach VisibleCollidingActors(Class'KFPawn',KFBuddy,1000.f,CamPos)
    {
    KFBuddy.bNoTeamBeacon = true;
    if ( KFBuddy.PlayerReplicationInfo!=None && KFBuddy.Health>0 && ((KFBuddy.Location - CamPos) Dot ViewDir)>0.8 )
    {
    ScreenPos = C.WorldToScreen(KFBuddy.Location+vect(0,0,1)*KFBuddy.CollisionHeight);
    if( ScreenPos.X>=0 && ScreenPos.Y>=0 && ScreenPos.X<=C.ClipX && ScreenPos.Y<=C.ClipY )
    DrawPlayerInfo(C, KFBuddy, ScreenPos.X, ScreenPos.Y);
    }
    }
    
    DrawFadeEffect(C);
    
    if ( KFPlayerController(PlayerOwner) != None && KFPlayerController(PlayerOwner).ActiveNote != None )
    KFPlayerController(PlayerOwner).ActiveNote = None;
    
    if( KFGameReplicationInfo(Level.GRI) != none && KFGameReplicationInfo(Level.GRI).EndGameType > 0 )
    {
    if( KFGameReplicationInfo(Level.GRI).EndGameType == 2 )
    {
    DrawEndGameHUD(C, True);
    Return;
    }
    else DrawEndGameHUD(C, False);
    }
    
    DrawKFHUDTextElements(C);
    DisplayLocalMessages(C);
    
    if ( bShowScoreBoard && ScoreBoard != None )
    ScoreBoard.DrawScoreboard(C);
    
    // portrait
    if ( bShowPortrait && Portrait != None )
    DrawPortrait(C);
    
    // Draw hints
    if ( bDrawHint )
    DrawHint(C);
    }
    
    simulated function DrawHud(Canvas C)
    {
    local KFGameReplicationInfo CurrentGame;
    local rotator CamRot;
    local vector CamPos, ViewDir, ScreenPos;
    local KFPawn KFBuddy;
    
    CurrentGame = KFGameReplicationInfo(Level.GRI);
    
    if ( FontsPrecached < 2 )
    PrecacheFonts(C);
    
    UpdateHud();
    
    PassStyle = STY_Modulated;
    DrawModOverlay(C);
    
    if ( bUseBloom )
    PlayerOwner.PostFX_SetActive(0, true);
    
    if ( bHideHud )
    {
    // Draw fade effects even if the hud is hidden so poeple can't just turn off thier hud
    C.Style = ERenderStyle.STY_Alpha;
    DrawFadeEffect(C);
    return;
    }
    
    if ( !KFPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo).bViewingMatineeCinematic )
    {
    if ( bShowTargeting )
    DrawTargeting(C);
    
    // Grab our View Direction
    C.GetCameraLocation(CamPos,CamRot);
    ViewDir = vector(CamRot);
    
    // Draw the Name, Health, Armor, and Veterancy above other players (using this way to fix portal's beacon errors).
    foreach VisibleCollidingActors(Class'KFPawn',KFBuddy,1000.f,CamPos)
    {
    KFBuddy.bNoTeamBeacon = true;
    if ( KFBuddy!=PawnOwner && KFBuddy.PlayerReplicationInfo!=None && KFBuddy.Health>0 && ((KFBuddy.Location - CamPos) Dot ViewDir)>0.8 )
    {
    ScreenPos = C.WorldToScreen(KFBuddy.Location+vect(0,0,1)*KFBuddy.CollisionHeight);
    if( ScreenPos.X>=0 && ScreenPos.Y>=0 && ScreenPos.X<=C.ClipX && ScreenPos.Y<=C.ClipY )
    DrawPlayerInfo(C, KFBuddy, ScreenPos.X, ScreenPos.Y);
    }
    }
    
    PassStyle = STY_Alpha;
    DrawDamageIndicators(C);
    DrawHudPassA(C);
    DrawHudPassC(C);
    
    if ( KFPlayerController(PlayerOwner)!= None && KFPlayerController(PlayerOwner).ActiveNote!=None )
    {
    if( PlayerOwner.Pawn == none )
    KFPlayerController(PlayerOwner).ActiveNote = None;
    else KFPlayerController(PlayerOwner).ActiveNote.RenderNote(C);
    }
    
    PassStyle = STY_None;
    DisplayLocalMessages(C);
    DrawWeaponName(C);
    DrawVehicleName(C);
    
    PassStyle = STY_Alpha;
    
    if ( CurrentGame!=None && CurrentGame.EndGameType > 0 )
    {
    DrawEndGameHUD(C, (CurrentGame.EndGameType==2));
    return;
    }
    
    RenderFlash(C);
    C.Style = PassStyle;
    DrawKFHUDTextElements(C);
    }
    if ( KFPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo).bViewingMatineeCinematic )
    {
    PassStyle = STY_Alpha;
    DrawCinematicHUD(C);
    }
    if ( bShowNotification )
    DrawPopupNotification(C);
    }
    function DrawPlayerInfo(Canvas C, Pawn P, float ScreenLocX, float ScreenLocY)
    {
    local float XL, YL, TempX, TempY, TempSize;
    local string PlayerName;
    local float Dist, OffsetX;
    local byte BeaconAlpha,Counter;
    local float OldZ;
    local Material TempMaterial, TempStarMaterial;
    local byte i, TempLevel;
    ////////////////////// цифры вместо звезд
    local int cLevel;
    local byte R,G,B,A;
    ////////////////////////
    
    if ( KFPlayerReplicationInfo(P.PlayerReplicationInfo) == none || KFPRI == none || KFPRI.bViewingMatineeCinematic )
    {
    return;
    }
    
    Dist = vsize(P.Location - PlayerOwner.CalcViewLocation);
    Dist -= HealthBarFullVisDist;
    Dist = FClamp(Dist, 0, HealthBarCutoffDist-HealthBarFullVisDist);
    Dist = Dist / (HealthBarCutoffDist - HealthBarFullVisDist);
    BeaconAlpha = byte((1.f - Dist) * 255.f);
    
    if ( BeaconAlpha == 0 )
    {
    return;
    }
    
    OldZ = C.Z;
    C.Z = 1.0;
    C.Style = ERenderStyle.STY_Alpha;
    C.SetDrawColor(255, 255, 255, BeaconAlpha);
    C.Font = GetConsoleFont(C);
    PlayerName = Left(P.PlayerReplicationInfo.PlayerName, 16);
    C.StrLen(PlayerName, XL, YL);
    C.SetPos(ScreenLocX - (XL * 0.5), ScreenLocY - (YL * 0.75));
    C.DrawTextClipped(PlayerName);
    
    
    
    
    
    OffsetX = (36.f * VeterancyMatScaleFactor * 0.6) - (HealthIconSize + 2.0);
    
    if ( Class(KFPlayerReplicationInfo(P.PlayerReplicationInfo).ClientVeteranSkill)!=none &&
    KFPlayerReplicationInfo(P.PlayerReplicationInfo).ClientVeteranSkill.default.OnHUDIcon!=none )
    {
    TempLevel = Class(KFPlayerReplicationInfo(P.PlayerReplicationInfo).ClientVeteranSkill).Static.PreDrawPerk(C,
    KFPlayerReplicationInfo(P.PlayerReplicationInfo).ClientVeteranSkillLevel,
    TempMaterial,TempStarMaterial);
    
    TempSize = 36.f * VeterancyMatScaleFactor;
    TempX = ScreenLocX + ((BarLength + HealthIconSize) * 0.5) - (TempSize * 0.25) - OffsetX;
    TempY = ScreenLocY - YL - (TempSize * 0.75);
    
    C.SetPos(TempX, TempY);
    C.DrawTile(TempMaterial, TempSize, TempSize, 0, 0, TempMaterial.MaterialUSize(), TempMaterial.MaterialVSize());
    
    ////////////////////// цифры вместо звезд
    C.Style = ERenderStyle.STY_Alpha;
    C.Font = GetNewConsoleFont(C,3);
    cLevel = KFPlayerReplicationInfo(P.PlayerReplicationInfo).ClientVeteranSkillLevel;
    SetLevelColor(cLevel,R,G,B,A);
    C.SetDrawColor(R,G,B,BeaconAlpha);
    C.SetPos(TempX + TempSize * 0.7, TempY + TempSize * 0.7);
    C.DrawTextClipped(cLevel);
    ////////////////////// цифры вместо звезд
    
    ////////////////////// цифры вместо звезд
    /*
    TempX += (TempSize - (VetStarSize * 0.75));
    TempY += (TempSize - (VetStarSize * 1.5));
    
    for ( i = 0; i < TempLevel; i++ )
    {
    C.SetPos(TempX, TempY-(Counter*VetStarSize*0.7f));
    C.DrawTile(TempStarMaterial, VetStarSize * 0.7, VetStarSize * 0.7, 0, 0, TempStarMaterial.MaterialUSize(), TempStarMaterial.MaterialVSize());
    
    if( ++Counter==5 )
    {
    Counter = 0;
    TempX+=VetStarSize;
    }
    }
    */
    ////////////////////// цифры вместо звезд
    }
    
    // Health
    if ( P.Health > 0 )
    DrawKFBar(C, ScreenLocX - OffsetX, (ScreenLocY - YL) - 0.4 * BarHeight, FClamp(P.Health / P.HealthMax, 0, 1), BeaconAlpha);
    
    // Armor
    if ( P.ShieldStrength > 0 )
    DrawKFBar(C, ScreenLocX - OffsetX, (ScreenLocY - YL) - 1.5 * BarHeight, FClamp(P.ShieldStrength / 100.f, 0, 1), BeaconAlpha, true);
    
    C.Z = OldZ;
    }
    
    ////////////////////// цифры вместо звезд
    static function SetLevelColor(int cLevel, out byte R, out byte G, out byte B, out byte A)
    {
    if(cLevel>15)
    {
    R=64;
    G=64;
    B=255;
    A=255;
    }
    else if(cLevel>10)
    {
    R=0;
    G=255;
    B=0;
    A=255;
    }
    else if(cLevel>5)
    {
    R=255;
    G=215;
    B=0;
    A=255;
    }
    else
    {
    R=255;
    G=0;
    B=0;
    A=255;
    }
    }
    //
    //Flame 2014_07_09
    static function font GetNewConsoleFont(Canvas C,int shift)
    {
    local int FontSize;
    
    if( default.OverrideConsoleFontName != "" )
    {
    if( default.OverrideConsoleFont != None )
    return default.OverrideConsoleFont;
    default.OverrideConsoleFont = Font(DynamicLoadObject(default.OverrideConsoleFontName, class'Font'));
    if( default.OverrideConsoleFont != None )
    return default.OverrideConsoleFont;
    Log("Warning: HUD couldn't dynamically load font "$default.OverrideConsoleFontName);
    default.OverrideConsoleFontName = "";
    }
    
    FontSize = Default.ConsoleFontSize;
    if ( C.ClipX < 640 )
    FontSize++;
    if ( C.ClipX < 800 )
    FontSize++;
    if ( C.ClipX < 1024 )
    FontSize++;
    if ( C.ClipX < 1280 )
    FontSize++;
    if ( C.ClipX < 1600 )
    FontSize++;
    return LoadFontStatic(Min(8,FontSize+shift));
    }
    
    
    ////////////////////// цифры вместо звезд
    
    simulated function DrawModOverlay( Canvas C )
    {
    local float MaxRBrighten, MaxGBrighten, MaxBBrighten;
    
    // We want the overlay to start black, and fade in, almost like the player opened their eyes
    // BrightFactor = 1.5; // Not too bright. Not too dark. Livens things up just abit
    // Hook for Optional Vision overlay. - Alex
    
    if( PawnOwner==None )
    {
    if( CurrentZone!=None || CurrentVolume!=None ) // Reset everything.
    {
    LastR = 0;
    LastG = 0;
    LastB = 0;
    CurrentZone = None;
    LastZone = None;
    CurrentVolume = None;
    LastVolume = None;
    bZoneChanged = false;
    SetTimer(0.f, false);
    }
    VisionOverlay = default.VisionOverlay;
    
    // Dead Players see Red
    if( !PlayerOwner.IsSpectating() )
    {
    C.SetDrawColor(255, 255, 255, GrainAlpha);
    C.DrawTile(SpectatorOverlay, C.SizeX, C.SizeY, 0, 0, 1024, 1024);
    }
    return;
    }
    
    C.SetPos(0, 0);
    
    // if critical, pulsate. otherwise, dont.
    if ( (PlayerOwner.Pawn==PawnOwner || !PlayerOwner.bBehindView) && Vehicle(PawnOwner)==None && PawnOwner.Health>0 && PawnOwner.Health<(PawnOwner.HealthMax*0.25) )
    VisionOverlay = NearDeathOverlay;
    else VisionOverlay = default.VisionOverlay;
    
    // Players can choose to turn this feature off completely.
    // conversely, setting bDistanceFog = false in a Zone
    //will cause the code to ignore that zone for a shift in RGB tint
    if ( KFLevelRule != none && !KFLevelRule.bUseVisionOverlay )
    return;
    
    // here we determine the maximum "brighten" amounts for each value. CANNOT exceed 255
    MaxRBrighten = Round(LastR* (1.0 - (LastR / 255)) - 2) ;
    MaxGBrighten = Round(LastG* (1.0 - (LastG / 255)) - 2) ;
    MaxBBrighten = Round(LastB* (1.0 - (LastB / 255)) - 2) ;
    
    C.SetDrawColor(LastR + MaxRBrighten, LastG + MaxGBrighten, LastB + MaxBBrighten, GrainAlpha);
    C.DrawTileScaled(VisionOverlay, C.SizeX, C.SizeY); //,0,0,1024,1024);
    
    // Here we change over the Zone.
    // What happens of importance is
    // A. Set Old Zone to current
    // B. Set New Zone
    // C. Set Color info up for use by Tick()
    
    // if we're in a new zone or volume without distance fog...just , dont touch anything.
    // the physicsvolume check is abit screwy because the player is always in a volume called "DefaultPhyicsVolume"
    // so we've gotta make sure that the return checks take this into consideration.
    
    // This block of code here just makes sure that if we've already got a tint, and we step into a zone/volume without
    // bDistanceFog, our current tint is not affected.
    // a. If I'm in a zone and its not bDistanceFog. AND IM NOT IN A PHYSICSVOLUME. Just a zone.
    // b. If I'm in a Volume
    if ( !PawnOwner.Region.Zone.bDistanceFog &&
    DefaultPhysicsVolume(PawnOwner.PhysicsVolume)==None && !PawnOwner.PhysicsVolume.bDistanceFog )
    return;
    
    if ( !bZoneChanged )
    {
    // Grab the most recent zone info from our PRI
    // Only update if it's different
    // EDIT: AND HAS bDISTANCEFOG true
    if ( CurrentZone!=PawnOwner.Region.Zone || (DefaultPhysicsVolume(PawnOwner.PhysicsVolume) == None &&
    CurrentVolume != PawnOwner.PhysicsVolume) )
    {
    if ( CurrentZone != none )
    LastZone = CurrentZone;
    else if ( CurrentVolume != none )
    LastVolume = CurrentVolume;
    
    // This is for all occasions where we're either in a Levelinfo handled zone
    // Or a zoneinfo.
    // If we're in a LevelInfo / ZoneInfo and NOT touching a Volume. Set current Zone
    if ( PawnOwner.Region.Zone.bDistanceFog && DefaultPhysicsVolume(PawnOwner.PhysicsVolume)!= none && !PawnOwner.Region.Zone.bNoKFColorCorrection )
    {
    CurrentVolume = none;
    CurrentZone = PawnOwner.Region.Zone;
    }
    else if ( DefaultPhysicsVolume(PawnOwner.PhysicsVolume) == None && PawnOwner.PhysicsVolume.bDistanceFog && !PawnOwner.PhysicsVolume.bNoKFColorCorrection)
    {
    CurrentZone = none;
    CurrentVolume = PawnOwner.PhysicsVolume;
    }
    
    if ( CurrentVolume != none )
    LastZone = none;
    else if ( CurrentZone != none )
    LastVolume = none;
    
    if ( LastZone != none )
    {
    if( LastZone.bNewKFColorCorrection )
    {
    LastR = LastZone.KFOverlayColor.R;
    LastG = LastZone.KFOverlayColor.G;
    LastB = LastZone.KFOverlayColor.B;
    }
    else
    {
    LastR = LastZone.DistanceFogColor.R;
    LastG = LastZone.DistanceFogColor.G;
    LastB = LastZone.DistanceFogColor.B;
    }
    }
    else if ( LastVolume != none )
    {
    if( LastVolume.bNewKFColorCorrection )
    {
    LastR = LastVolume.KFOverlayColor.R;
    LastG = LastVolume.KFOverlayColor.G;
    LastB = LastVolume.KFOverlayColor.B;
    }
    else
    {
    LastR = LastVolume.DistanceFogColor.R;
    LastG = LastVolume.DistanceFogColor.G;
    LastB = LastVolume.DistanceFogColor.B;
    }
    }
    else if ( LastZone != none && LastVolume != none )
    return;
    
    if ( LastZone != CurrentZone || LastVolume != CurrentVolume )
    {
    bZoneChanged = true;
    SetTimer(OverlayFadeSpeed, false);
    }
    }
    }
    if ( !bTicksTurn && bZoneChanged )
    {
    // Pass it off to the tick now
    // valueCheckout signifies that none of the three values have been
    // altered by Tick() yet.
    
    // BOUNCE IT BACK! :D
    ValueCheckOut = 0;
    bTicksTurn = true;
    SetTimer(OverlayFadeSpeed, false);
    }
    }
    
    simulated function DrawEndGameHUD(Canvas C, bool bVictory)
    {
    local float Scalar;
    local Shader M;
    
    C.DrawColor.A = 255;
    C.DrawColor.R = 255;
    C.DrawColor.G = 255;
    C.DrawColor.B = 255;
    Scalar = FClamp(C.ClipY, 320, 1024);
    C.CurX = C.ClipX / 2 - Scalar / 2;
    C.CurY = C.ClipY / 2 - Scalar / 2;
    C.Style = ERenderStyle.STY_Alpha;
    
    if ( bVictory )
    M = Shader'KFMapEndTextures.VictoryShader';
    else M = Shader'KFMapEndTextures.DefeatShader';
    
    C.DrawTile(M, Scalar, Scalar, 0, 0, 1024, 1024);
    
    if ( bShowScoreBoard && ScoreBoard != None )
    ScoreBoard.DrawScoreboard(C);
    }
    
    simulated function DrawHudPassA (Canvas C)
    {
    local KFHumanPawn KFHPawn;
    local Material TempMaterial, TempStarMaterial;
    local int i, TempLevel;
    local float TempX, TempY, TempSize;
    local byte Counter;
    local class SV;
    
    ////////////// цифры вместо звезд
    local int cLevel;
    local byte R,G,B,A;
    ////////////// цифры вместо звезд
    KFHPawn = KFHumanPawn(PawnOwner);
    
    DrawDoorHealthBars(C);
    
    if ( !bLightHud )
    {
    DrawSpriteWidget(C, HealthBG);
    }
    
    DrawSpriteWidget(C, HealthIcon);
    DrawNumericWidget(C, HealthDigits, DigitsSmall);
    
    if ( !bLightHud )
    {
    DrawSpriteWidget(C, ArmorBG);
    }
    
    DrawSpriteWidget(C, ArmorIcon);
    DrawNumericWidget(C, ArmorDigits, DigitsSmall);
    
    if ( KFHPawn != none )
    {
    C.SetPos(C.ClipX * WeightBG.PosX, C.ClipY * WeightBG.PosY);
    
    if ( !bLightHud )
    {
    C.DrawTile(WeightBG.WidgetTexture, WeightBG.WidgetTexture.MaterialUSize() * WeightBG.TextureScale * 1.5 * HudCanvasScale * ResScaleX * HudScale, WeightBG.WidgetTexture.MaterialVSize() * WeightBG.TextureScale * HudCanvasScale * ResScaleY * HudScale, 0, 0, WeightBG.WidgetTexture.MaterialUSize(), WeightBG.WidgetTexture.MaterialVSize());
    }
    
    DrawSpriteWidget(C, WeightIcon);
    
    C.Font = LoadSmallFontStatic(5);
    C.FontScaleX = C.ClipX / 1024.0;
    C.FontScaleY = C.FontScaleX;
    C.SetPos(C.ClipX * WeightDigits.PosX, C.ClipY * WeightDigits.PosY);
    C.DrawColor = WeightDigits.Tints[0];
    C.DrawText(int(KFHPawn.CurrentWeight)$"/"$int(KFHPawn.MaxCarryWeight));
    C.FontScaleX = 1;
    C.FontScaleY = 1;
    
    
    
    
    }
    
    if ( !bLightHud )
    {
    DrawSpriteWidget(C, GrenadeBG);
    }
    
    DrawSpriteWidget(C, GrenadeIcon);
    DrawNumericWidget(C, GrenadeDigits, DigitsSmall);
    
    if ( PawnOwner != none && PawnOwner.Weapon != none )
    {
    if ( Syringe(PawnOwner.Weapon) != none )
    {
    if ( !bLightHud )
    {
    DrawSpriteWidget(C, SyringeBG);
    }
    
    DrawSpriteWidget(C, SyringeIcon);
    DrawNumericWidget(C, SyringeDigits, DigitsSmall);
    }
    else
    {
    if ( bDisplayQuickSyringe )
    {
    TempSize = Level.TimeSeconds - QuickSyringeStartTime;
    if ( TempSize < QuickSyringeDisplayTime )
    {
    if ( TempSize < QuickSyringeFadeInTime )
    {
    QuickSyringeBG.Tints[0].A = int((TempSize / QuickSyringeFadeInTime) * 255.0);
    QuickSyringeBG.Tints[1].A = QuickSyringeBG.Tints[0].A;
    QuickSyringeIcon.Tints[0].A = QuickSyringeBG.Tints[0].A;
    QuickSyringeIcon.Tints[1].A = QuickSyringeBG.Tints[0].A;
    QuickSyringeDigits.Tints[0].A = QuickSyringeBG.Tints[0].A;
    QuickSyringeDigits.Tints[1].A = QuickSyringeBG.Tints[0].A;
    }
    else if ( TempSize > QuickSyringeDisplayTime - QuickSyringeFadeOutTime )
    {
    QuickSyringeBG.Tints[0].A = int((1.0 - ((TempSize - (QuickSyringeDisplayTime - QuickSyringeFadeOutTime)) / QuickSyringeFadeOutTime)) * 255.0);
    QuickSyringeBG.Tints[1].A = QuickSyringeBG.Tints[0].A;
    QuickSyringeIcon.Tints[0].A = QuickSyringeBG.Tints[0].A;
    QuickSyringeIcon.Tints[1].A = QuickSyringeBG.Tints[0].A;
    QuickSyringeDigits.Tints[0].A = QuickSyringeBG.Tints[0].A;
    QuickSyringeDigits.Tints[1].A = QuickSyringeBG.Tints[0].A;
    }
    else
    {
    QuickSyringeBG.Tints[0].A = 255;
    QuickSyringeBG.Tints[1].A = 255;
    QuickSyringeIcon.Tints[0].A = 255;
    QuickSyringeIcon.Tints[1].A = 255;
    QuickSyringeDigits.Tints[0].A = 255;
    QuickSyringeDigits.Tints[1].A = 255;
    }
    
    if ( !bLightHud )
    {
    DrawSpriteWidget(C, QuickSyringeBG);
    }
    
    DrawSpriteWidget(C, QuickSyringeIcon);
    DrawNumericWidget(C, QuickSyringeDigits, DigitsSmall);
    }
    else
    {
    bDisplayQuickSyringe = false;
    }
    }
    
    if ( MP7MMedicGun(PawnOwner.Weapon) != none )
    {
    
    MedicGunDigits.Value = MP7MMedicGun(PawnOwner.Weapon).ChargeBar() * 100;
    
    if ( MedicGunDigits.Value < 50 )
    {
    MedicGunDigits.Tints[0].R = 128;
    MedicGunDigits.Tints[0].G = 128;
    MedicGunDigits.Tints[0].B = 128;
    
    MedicGunDigits.Tints[1] = SyringeDigits.Tints[0];
    }
    else if ( MedicGunDigits.Value < 100 )
    {
    MedicGunDigits.Tints[0].R = 192;
    MedicGunDigits.Tints[0].G = 96;
    MedicGunDigits.Tints[0].B = 96;
    
    MedicGunDigits.Tints[1] = SyringeDigits.Tints[0];
    }
    else
    {
    MedicGunDigits.Tints[0].R = 255;
    MedicGunDigits.Tints[0].G = 64;
    MedicGunDigits.Tints[0].B = 64;
    
    MedicGunDigits.Tints[1] = MedicGunDigits.Tints[0];
    }
    
    if ( !bLightHud )
    {
    DrawSpriteWidget(C, MedicGunBG);
    }
    
    DrawSpriteWidget(C, MedicGunIcon);
    DrawNumericWidget(C, MedicGunDigits, DigitsSmall);
    }
    
    if ( Welder(PawnOwner.Weapon) != none )
    {
    if ( !bLightHud )
    {
    DrawSpriteWidget(C, WelderBG);
    }
    
    DrawSpriteWidget(C, WelderIcon);
    DrawNumericWidget(C, WelderDigits, DigitsSmall);
    }
    else if ( PawnOwner.Weapon.GetAmmoClass(0) != none )
    {
    if ( !bLightHud )
    {
    DrawSpriteWidget(C, ClipsBG);
    }
    
    DrawNumericWidget(C, ClipsDigits, DigitsSmall);
    
    if ( LAW(PawnOwner.Weapon) != none )
    {
    DrawSpriteWidget(C, LawRocketIcon);
    }
    else if ( Crossbow(PawnOwner.Weapon) != none )
    {
    DrawSpriteWidget(C, ArrowheadIcon);
    }
    else if ( PipeBombExplosive(PawnOwner.Weapon) != none )
    {
    DrawSpriteWidget(C, PipeBombIcon);
    }
    else if ( M79GrenadeLauncher(PawnOwner.Weapon) != none )
    {
    DrawSpriteWidget(C, M79Icon);
    }
    
    else if ( HuskGun(PawnOwner.Weapon) != none ) //////////////////////////////
    {
    DrawSpriteWidget(C, HuskAmmoIcon);
    }
    
    else
    {
    if ( !bLightHud )
    {
    DrawSpriteWidget(C, BulletsInClipBG);
    }
    
    DrawNumericWidget(C, BulletsInClipDigits, DigitsSmall);
    
    if ( Flamethrower(PawnOwner.Weapon) != none )
    {
    DrawSpriteWidget(C, FlameIcon);
    DrawSpriteWidget(C, FlameTankIcon);
    }
    else if ( Shotgun(PawnOwner.Weapon) != none || BoomStick(PawnOwner.Weapon) != none || Winchester(PawnOwner.Weapon) != none )
    {
    DrawSpriteWidget(C, SingleBulletIcon);
    DrawSpriteWidget(C, BulletsInClipIcon);
    }
    else
    {
    DrawSpriteWidget(C, ClipsIcon);
    DrawSpriteWidget(C, BulletsInClipIcon);
    }
    }
    
    if ( KFWeapon(PawnOwner.Weapon) != none && KFWeapon(PawnOwner.Weapon).bTorchEnabled )
    {
    if ( !bLightHud )
    {
    DrawSpriteWidget(C, FlashlightBG);
    }
    
    DrawNumericWidget(C, FlashlightDigits, DigitsSmall);
    
    if ( KFWeapon(PawnOwner.Weapon).FlashLight != none && KFWeapon(PawnOwner.Weapon).FlashLight.bHasLight )
    {
    DrawSpriteWidget(C, FlashlightIcon);
    }
    else
    {
    DrawSpriteWidget(C, FlashlightOffIcon);
    }
    }
    }
    
    // Secondary ammo ЭТО НУЖНО ДОБАВИТЬ (выделил двойным слэшом)
    if ( KFWeapon(PawnOwner.Weapon) != none && KFWeapon(PawnOwner.Weapon).bHasSecondaryAmmo ) //
    { //
    if ( !bLightHud ) //
    { //
    DrawSpriteWidget(C, SecondaryClipsBG); //
    } //
    //
    DrawNumericWidget(C, SecondaryClipsDigits, DigitsSmall); //
    DrawSpriteWidget(C, SecondaryClipsIcon); //
    } //
    
    
    }
    }
    
    if( KFPlayerReplicationInfo(PawnOwnerPRI)!=None )
    SV = Class(KFPlayerReplicationInfo(PawnOwnerPRI).ClientVeteranSkill);
    
    if ( SV!=none )
    SV.Static.SpecialHUDInfo(KFPlayerReplicationInfo(PawnOwnerPRI), C);
    
    if ( KFSGameReplicationInfo(PlayerOwner.GameReplicationInfo) == none || KFSGameReplicationInfo(PlayerOwner.GameReplicationInfo).bHUDShowCash )
    {
    DrawSpriteWidget(C, CashIcon);
    DrawNumericWidget(C, CashDigits, DigitsBig);
    }
    
    if ( SV!=None )
    {
    C.DrawColor.A = 192;
    TempLevel = SV.Static.PreDrawPerk(C,KFPlayerReplicationInfo(PawnOwnerPRI).ClientVeteranSkillLevel,TempMaterial,TempStarMaterial);
    
    TempSize = 36 * VeterancyMatScaleFactor * 1.4;
    TempX = C.ClipX * 0.007;
    TempY = C.ClipY * 0.93 - TempSize;
    
    C.SetPos(TempX, TempY);
    C.DrawTile(TempMaterial, TempSize, TempSize, 0, 0, TempMaterial.MaterialUSize(), TempMaterial.MaterialVSize());
    
    ////////////// цифры вместо звезд
    C.Style = ERenderStyle.STY_Alpha;
    C.Font = GetNewConsoleFont(C,3);
    cLevel = KFPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo).ClientVeteranSkillLevel;
    SetLevelColor(cLevel,R,G,B,A);
    C.SetDrawColor(R,G,B,C.DrawColor.A);
    C.SetPos(TempX + TempSize * 0.7, TempY + TempSize * 0.7);
    C.DrawTextClipped(cLevel);
    ////////////// цифры вместо звезд
    
    
    /////////////////цифры вместо звезд
    /*
    TempX += (TempSize - VetStarSize);
    TempY += (TempSize - (2.0 * VetStarSize));
    
    for ( i = 0; i < TempLevel; i++ )
    {
    C.SetPos(TempX, TempY-(Counter*VetStarSize*0.8f));
    C.DrawTile(TempStarMaterial, VetStarSize, VetStarSize, 0, 0, TempStarMaterial.MaterialUSize(), TempStarMaterial.MaterialVSize());
    
    if( ++Counter==5 )
    {
    Counter = 0;
    TempX+=VetStarSize;
    }
    }
    */
    /////////////////цифры вместо звезд
    
    
    }
    
    if ( Level.TimeSeconds - LastVoiceGainTime < 0.333 )
    {
    if ( !bUsingVOIP && PlayerOwner != None && PlayerOwner.ActiveRoom != None &&
    PlayerOwner.ActiveRoom.GetTitle() == "Team" )
    {
    bUsingVOIP = true;
    PlayerOwner.NotifySpeakingInTeamChannel();
    }
    
    DisplayVoiceGain(C);
    }
    else
    {
    bUsingVOIP = false;
    }
    
    if ( bDisplayInventory || bInventoryFadingOut )
    {
    DrawInventory(C);
    }
    }
    
    simulated final function RenderFlash( canvas Canvas )
    {
    if( PlayerOwner==None || PlayerOwner.FlashScale.X==0 || PlayerOwner.FlashFog==vect(0,0,0) )
    Return;
    Canvas.DrawColor.R = Min(Abs(PlayerOwner.FlashFog.X*PlayerOwner.FlashScale.X)*255,255);
    Canvas.DrawColor.G = Min(Abs(PlayerOwner.FlashFog.Y*PlayerOwner.FlashScale.X)*255,255);
    Canvas.DrawColor.B = Min(Abs(PlayerOwner.FlashFog.Z*PlayerOwner.FlashScale.X)*255,255);
    Canvas.DrawColor.A = 255;
    Canvas.Style = ERenderStyle.STY_Translucent;
    Canvas.SetPos(0,0);
    Canvas.DrawTile(Texture'engine.WhiteSquareTexture', Canvas.ClipX, Canvas.ClipY, 0, 0, 1, 1);
    Canvas.DrawColor = Canvas.Default.DrawColor;
    }
    
    // Draw Health Bars for damage opened doors.
    function DrawDoorHealthBars(Canvas C)
    {
    local KFDoorMover DamageDoor;
    local vector CameraLocation, CamDir, TargetLocation, HBScreenPos;
    local rotator CameraRotation;
    local name DoorTag;
    local int i;
    
    if( PawnOwner==None )
    return;
    
    if ( (Level.TimeSeconds>LastDoorBarHealthUpdate) || (Welder(PawnOwner.Weapon)!=none && PlayerOwner.bFire==1) )
    {
    DoorCache.Length = 0;
    
    foreach CollidingActors(class'KFDoorMover', DamageDoor, 300.00, PlayerOwner.CalcViewLocation)
    {
    if ( DamageDoor.WeldStrength<=0 )
    continue;
    
    DoorCache[DoorCache.Length] = DamageDoor;
    
    C.GetCameraLocation(CameraLocation, CameraRotation);
    TargetLocation = DamageDoor.WeldIconLocation /*+ vect(0, 0, 1) * Height*/;
    TargetLocation.Z = CameraLocation.Z;
    CamDir = vector(CameraRotation);
    
    if ( Normal(TargetLocation - CameraLocation) dot Normal(CamDir) >= 0.1 && DamageDoor.Tag != DoorTag && FastTrace(DamageDoor.WeldIconLocation - ((DoorCache[i].WeldIconLocation - CameraLocation) * 0.25), CameraLocation) )
    {
    HBScreenPos = C.WorldToScreen(TargetLocation);
    DrawDoorBar(C, HBScreenPos.X, HBScreenPos.Y, DamageDoor.WeldStrength / DamageDoor.MaxWeld, 255);
    DoorTag = DamageDoor.Tag;
    }
    }
    LastDoorBarHealthUpdate = Level.TimeSeconds+0.2;
    }
    else
    {
    for ( i = 0; i < DoorCache.Length; i++ )
    {
    if ( DoorCache[i].WeldStrength<=0 )
    continue;
    C.GetCameraLocation(CameraLocation, CameraRotation);
    TargetLocation = DoorCache[i].WeldIconLocation /*+ vect(0, 0, 1) * Height*/;
    TargetLocation.Z = CameraLocation.Z;
    CamDir = vector(CameraRotation);
    
    if ( Normal(TargetLocation - CameraLocation) dot Normal(CamDir) >= 0.1 && DoorCache[i].Tag != DoorTag && FastTrace(DoorCache[i].WeldIconLocation - ((DoorCache[i].WeldIconLocation - CameraLocation) * 0.25), CameraLocation) )
    {
    HBScreenPos = C.WorldToScreen(TargetLocation);
    DrawDoorBar(C, HBScreenPos.X, HBScreenPos.Y, DoorCache[i].WeldStrength / DoorCache[i].MaxWeld, 255);
    DoorTag = DoorCache[i].Tag;
    }
    }
    }
    }
    
    simulated function Tick( float Delta )
    {
    if( ClientRep==None )
    ClientRep = Class'ClientPerkRepLink'.Static.FindStats(PlayerOwner);
    if( ClientRep!=None && ClientRep.bBWZEDTime && OldDilation!=Level.TimeDilation )
    {
    OldDilation = Level.TimeDilation;
    if( OldDilation<0.5f )
    {
    DesiredBW = 1.f;
    bFadeBW = (bUseBloom || bUseMotionBlur);
    }
    else
    {
    DesiredBW = 0.f;
    bFadeBW = (bUseBloom || bUseMotionBlur);
    }
    }
    if( bFadeBW )
    {
    if( CurrentBW>DesiredBW )
    CurrentBW = FMax(CurrentBW-Delta*2.f,DesiredBW);
    else if( CurrentBW CurrentBW = FMin(CurrentBW+Delta*2.f,DesiredBW);
    
    if( CurrentBW>0 )
    {
    KFPlayerController(PlayerOwner).postfxon(2);
    KFPlayerController(PlayerOwner).postfxbw(CurrentBW);
    }
    else KFPlayerController(PlayerOwner).postfxoff(2);
    if( CurrentBW==DesiredBW )
    bFadeBW = false;
    }
    Super.Tick(Delta);
    }
    
    defaultproperties
    {
    }
    


    SRScoreBoard
    Код:
    
    class SRScoreBoard extends KFScoreBoard;
    
    var localized string NotShownInfo,PlayerCountText,SpectatorCountText,AliveCountText,BotText;
    
    
    simulated event UpdateScoreBoard(Canvas Canvas)
    {
    	local PlayerReplicationInfo PRI, OwnerPRI;
    	local int i, FontReduction, NetXPos, PlayerCount, HeaderOffsetY, HeadFoot, MessageFoot, PlayerBoxSizeY, BoxSpaceY, NameXPos, BoxTextOffsetY, OwnerOffset, HealthXPos, BoxXPos,KillsXPos, TitleYPos, BoxWidth, VetXPos, NotShownCount;
    	local float XL,YL;
    	local float deathsXL, KillsXL, NetXL, HealthXL, MaxNamePos, KillWidthX, CashXPos, TimeXPos;
    	local Material VeterancyBox,StarBox;
    	local string S;
    	local byte Stars;
    
    	OwnerPRI = KFPlayerController(Owner).PlayerReplicationInfo;
    	OwnerOffset = -1;
    
    	for ( i = 0; i < GRI.PRIArray.Length; i++)
    	{
    		PRI = GRI.PRIArray[i];
    		if ( !PRI.bOnlySpectator )
    		{
    			if( !PRI.bOutOfLives && KFPlayerReplicationInfo(PRI).PlayerHealth>0 )
    				++HeadFoot;
    			if ( PRI == OwnerPRI )
    				OwnerOffset = i;
    			PlayerCount++;
    		}
    		else ++NetXPos;
    	}
    
    	// First, draw title.
    	S = SkillLevel[Clamp(InvasionGameReplicationInfo(GRI).BaseDifficulty, 0, 7)] @ "|" @ WaveString @ (InvasionGameReplicationInfo(GRI).WaveNumber + 1) @ "|" @ Level.Title @ "|" @ FormatTime(GRI.ElapsedTime);
    
    	Canvas.Font = class'ROHud'.static.GetSmallMenuFont(Canvas);
    	Canvas.TextSize(S, XL,YL);
    	Canvas.DrawColor = HUDClass.default.RedColor;
    	Canvas.Style = ERenderStyle.STY_Normal;
    
    	HeaderOffsetY = Canvas.ClipY * 0.11;
    	Canvas.SetPos(0.5 * (Canvas.ClipX - XL), HeaderOffsetY);
    	Canvas.DrawTextClipped(S);
    
    	// Second title line
    	S = PlayerCountText@PlayerCount@SpectatorCountText@NetXPos@AliveCountText@HeadFoot;
    	Canvas.TextSize(S, XL,YL);
    	HeaderOffsetY+=YL;
    	Canvas.SetPos(0.5 * (Canvas.ClipX - XL), HeaderOffsetY);
    	Canvas.DrawTextClipped(S);
    	HeaderOffsetY+=(YL*3.f);
    
    	// Select best font size and box size to fit as many players as possible on screen
    	if ( Canvas.ClipX < 600 )
    		i = 4;
    	else if ( Canvas.ClipX < 800 )
    		i = 3;
    	else if ( Canvas.ClipX < 1000 )
    		i = 2;
    	else if ( Canvas.ClipX < 1200 )
    		i = 1;
    	else i = 0;
    
    	Canvas.Font = class'ROHud'.static.LoadMenuFontStatic(i);
    	Canvas.TextSize("Test", XL, YL);
    	PlayerBoxSizeY = 1.2 * YL;
    	BoxSpaceY = 0.25 * YL;
    
    	while( ((PlayerBoxSizeY+BoxSpaceY)*PlayerCount)>(Canvas.ClipY-HeaderOffsetY) )
    	{
    		if( ++i>=5 || ++FontReduction>=3 ) // Shrink font, if too small then break loop.
    		{
    			// We need to remove some player names here to make it fit.
    			NotShownCount = PlayerCount-int((Canvas.ClipY-HeaderOffsetY)/(PlayerBoxSizeY+BoxSpaceY))+1;
    			PlayerCount-=NotShownCount;
    			break;
    		}
    		Canvas.Font = class'ROHud'.static.LoadMenuFontStatic(i);
    		Canvas.TextSize("Test", XL, YL);
    		PlayerBoxSizeY = 1.2 * YL;
    		BoxSpaceY = 0.25 * YL;
    	}
    
    	HeadFoot = 7 * YL;
    	MessageFoot = 1.5 * HeadFoot;
    
    	BoxWidth = 0.9 * Canvas.ClipX;
    	BoxXPos = 0.5 * (Canvas.ClipX - BoxWidth);
    	BoxWidth = Canvas.ClipX - 2 * BoxXPos;
    	VetXPos = BoxXPos + 0.0001 * BoxWidth;
    	NameXPos = VetXPos + PlayerBoxSizeY*1.75f;
    	KillsXPos = BoxXPos + 0.55 * BoxWidth;
    	CashXPos = BoxXPos + 0.65 * BoxWidth;
    	HealthXpos = BoxXPos + 0.75 * BoxWidth;
    	TimeXPos = BoxXPos + 0.87 * BoxWidth;
    	NetXPos = BoxXPos + 0.996 * BoxWidth;
    
    	// draw background boxes
    	Canvas.Style = ERenderStyle.STY_Alpha;
    	Canvas.DrawColor = HUDClass.default.WhiteColor;
    	Canvas.DrawColor.A = 128;
    
    	for ( i = 0; i < PlayerCount; i++ )
    	{
    		Canvas.SetPos(BoxXPos, HeaderOffsetY + (PlayerBoxSizeY + BoxSpaceY) * i);
    		Canvas.DrawTileStretched( BoxMaterial, BoxWidth, PlayerBoxSizeY);
    	}
    	if( NotShownCount>0 ) // Add box for not shown players.
    	{
    		Canvas.DrawColor = HUDClass.default.RedColor;
    		Canvas.SetPos(BoxXPos, HeaderOffsetY + (PlayerBoxSizeY + BoxSpaceY) * PlayerCount);
    		Canvas.DrawTileStretched( BoxMaterial, BoxWidth, PlayerBoxSizeY);
    		Canvas.DrawColor = HUDClass.default.WhiteColor;
    	}
    
    	// Draw headers
    	TitleYPos = HeaderOffsetY - 1.1 * YL;
    	Canvas.TextSize(HealthText, HealthXL, YL);
    	Canvas.TextSize(DeathsText, DeathsXL, YL);
    	Canvas.TextSize(KillsText, KillsXL, YL);
    	Canvas.TextSize(NetText, NetXL, YL);
    
    	Canvas.DrawColor = HUDClass.default.WhiteColor;
    	Canvas.SetPos(NameXPos, TitleYPos);
    	Canvas.DrawTextClipped(PlayerText);
    
    	Canvas.SetPos(KillsXPos - 0.5 * KillsXL, TitleYPos);
    	Canvas.DrawTextClipped(KillsText);
    
    	Canvas.TextSize(PointsText, XL, YL);
    	Canvas.SetPos(CashXPos - 0.5 * XL, TitleYPos);
    	Canvas.DrawTextClipped(PointsText);
    
    	Canvas.TextSize(TimeText, XL, YL);
    	Canvas.SetPos(TimeXPos - 0.5 * XL, TitleYPos);
    	Canvas.DrawTextClipped(TimeText);
    
    	Canvas.SetPos(HealthXPos - 0.5 * HealthXL, TitleYPos);
    	Canvas.DrawTextClipped(HealthText);
    
    	Canvas.Style = ERenderStyle.STY_Normal;
    	Canvas.DrawColor = HUDClass.default.WhiteColor;
    	Canvas.SetPos(0.5 * Canvas.ClipX, HeaderOffsetY + 4);
    
    	Canvas.DrawColor = HUDClass.default.WhiteColor;
    	Canvas.SetPos(NetXPos - NetXL, TitleYPos);
    	Canvas.DrawTextClipped(NetText);
    
    	BoxTextOffsetY = HeaderOffsetY + 0.5 * (PlayerBoxSizeY - YL);
    
    	Canvas.DrawColor = HUDClass.default.WhiteColor;
    	MaxNamePos = Canvas.ClipX;
    	Canvas.ClipX = KillsXPos - 4.f;
    
    	for ( i = 0; i < PlayerCount; i++ )
    	{
    		Canvas.SetPos(NameXPos, (PlayerBoxSizeY + BoxSpaceY)*i + BoxTextOffsetY);
    		if( i == OwnerOffset )
    		{
    			Canvas.DrawColor.G = 0;
    			Canvas.DrawColor.B = 0;
    		}
    		else
    		{
    			Canvas.DrawColor.G = 255;
    			Canvas.DrawColor.B = 255;
    		}
    		Canvas.DrawTextClipped(GRI.PRIArray[i].PlayerName);
    	}
    	if( NotShownCount>0 ) // Draw not shown info
    	{
    		Canvas.DrawColor.G = 255;
    		Canvas.DrawColor.B = 0;
    		Canvas.SetPos(NameXPos, (PlayerBoxSizeY + BoxSpaceY)*PlayerCount + BoxTextOffsetY);
    		Canvas.DrawText(NotShownCount@NotShownInfo,true);
    	}
    
    	Canvas.ClipX = MaxNamePos;
    	Canvas.DrawColor = HUDClass.default.WhiteColor;
    
    	Canvas.Style = ERenderStyle.STY_Normal;
    
    	// Draw the player informations.
    	for ( i = 0; i < PlayerCount; i++ )
    	{
    		PRI = GRI.PRIArray[i];
    		Canvas.DrawColor = HUDClass.default.WhiteColor;
    
    		// Display perks.
    		if ( KFPlayerReplicationInfo(PRI)!=None && Class<SRVeterancyTypes>(KFPlayerReplicationInfo(PRI).ClientVeteranSkill)!=none )
    		{
    			Stars = Class<SRVeterancyTypes>(KFPlayerReplicationInfo(PRI).ClientVeteranSkill).Static.PreDrawPerk(Canvas
    				,KFPlayerReplicationInfo(PRI).ClientVeteranSkillLevel,VeterancyBox,StarBox);
    
    			if ( VeterancyBox != None )
    		// цифры вместо звезд		DrawPerkWithStars(Canvas,VetXPos,HeaderOffsetY+(PlayerBoxSizeY+BoxSpaceY)*i,PlayerBoxSizeY,Stars,VeterancyBox,StarBox);
    		//DrawPerkWithDigits(KFPRI,Canvas,VetXPos,YL,PlayerBoxSizeY,VeterancyBox);
    		//DrawPerkWithDigits(KFPlayerReplicationInfo(PRI),,Canvas,VetXPos,YL,PlayerBoxSizeY,VeterancyBox);
    		DrawPerkWithDigits(KFPlayerReplicationInfo(PRI),Canvas,VetXPos,YL,PlayerBoxSizeY,VeterancyBox);
    		
    		
    			Canvas.DrawColor = HUDClass.default.WhiteColor;
    		}
    
    		// draw kills
    		Canvas.TextSize(KFPlayerReplicationInfo(PRI).Kills, KillWidthX, YL);
    		Canvas.SetPos(KillsXPos - 0.5 * KillWidthX, (PlayerBoxSizeY + BoxSpaceY) * i + BoxTextOffsetY);
    		Canvas.DrawTextClipped(KFPlayerReplicationInfo(PRI).Kills);
    
    		// draw cash
    		S = string(int(PRI.Score));
    		Canvas.TextSize(S, XL, YL);
    		Canvas.SetPos(CashXPos-XL*0.5f, (PlayerBoxSizeY + BoxSpaceY)*i + BoxTextOffsetY);
    		Canvas.DrawText(S,true);
    
    		// draw time
    		if( GRI.ElapsedTime<PRI.StartTime ) // Login timer error, fix it.
    			GRI.ElapsedTime = PRI.StartTime;
    		S = FormatTime(GRI.ElapsedTime-PRI.StartTime);
    		Canvas.TextSize(S, XL, YL);
    		Canvas.SetPos(TimeXPos-XL*0.5f, (PlayerBoxSizeY + BoxSpaceY)*i + BoxTextOffsetY);
    		Canvas.DrawText(S,true);
    
    		// Draw ping
    		if( PRI.bAdmin )
    		{
    			Canvas.DrawColor = HUDClass.default.RedColor;
    			S = AdminText;
    		}
    		else if ( !GRI.bMatchHasBegun )
    		{
    			if ( PRI.bReadyToPlay )
    				S = ReadyText;
    			else S = NotReadyText;
    		}
    		else if( !PRI.bBot )
    			S = string(PRI.Ping*4);
    		else S = BotText;
    		Canvas.TextSize(S, XL, YL);
    		Canvas.SetPos(NetXPos-XL, (PlayerBoxSizeY + BoxSpaceY) * i + BoxTextOffsetY);
    		Canvas.DrawTextClipped(S);
    
    		// draw healths
    		if ( PRI.bOutOfLives || KFPlayerReplicationInfo(PRI).PlayerHealth<=0 )
    		{
    			Canvas.DrawColor = HUDClass.default.RedColor;
    			S = OutText;
    		}
    		else
    		{
    			if( KFPlayerReplicationInfo(PRI).PlayerHealth>=90 )
    				Canvas.DrawColor = HUDClass.default.GreenColor;
    			else if( KFPlayerReplicationInfo(PRI).PlayerHealth>=50 )
    				Canvas.DrawColor = HUDClass.default.GoldColor;
    			else Canvas.DrawColor = HUDClass.default.RedColor;
    			S = KFPlayerReplicationInfo(PRI).PlayerHealth@HealthyString;
    		}
    		Canvas.TextSize(S, XL, YL);
    		Canvas.SetPos(HealthXpos - 0.5 * XL, (PlayerBoxSizeY + BoxSpaceY) * i + BoxTextOffsetY);
    		Canvas.DrawTextClipped(S);
    	}
    }
    
    ////////////цифры вместо звезд
    simulated final function DrawPerkWithDigits(KFPlayerReplicationInfo KFPRI, Canvas C, float X, float Y, float Scale, Material PerkIcon)
    {
    	local byte i;
    	local byte R,G,B,A;
    	local Font LvlFont,OrigFont;
    	local string S;
    	
    
    	C.SetPos(X,Y);
    	C.DrawTile(PerkIcon, Scale, Scale, 0, 0, PerkIcon.MaterialUSize(), PerkIcon.MaterialVSize());
    
    	Y+=Scale*0.6f;
    	X+=Scale*0.8f;
    
    	OrigFont=C.Font;
    	LvlFont = Font(DynamicLoadObject("ROFontsTwo.ROArial7DS", class'Font'));
    	//class'ROHud'.static.LoadMenuFontStatic(7);
    	C.SetPos(X, Y);
    	C.Font = LvlFont;
    	SetLevelColor(KFPRI.ClientVeteranSkillLevel,R,G,B,A);
    	C.DrawColor.R=R;
    	C.DrawColor.G=G;
    	C.DrawColor.B=B;
    	C.DrawColor.A=A;
    	S = string(KFPRI.ClientVeteranSkillLevel);
    	C.DrawTextClipped(S);
    	C.Font = OrigFont;
    	
    
    }
    //
    //Flame 2014_07_09
    static function SetLevelColor(int cLevel, out byte R, out byte G, out byte B, out byte A)
    {
    	if(cLevel>15)
    	{
    		R=64;
    		G=64;
    		B=255;
    		A=255;
    	}
    	else if(cLevel>10)
    	{
    		R=0;
    		G=255;
    		B=0;
    		A=255;
    	}
    	else if(cLevel>5)
    	{
    		R=255;
    		G=215;
    		B=0;
    		A=255;
    	}
    	else
    	{
    		R=255;
    		G=0;
    		B=0;
    		A=255;
    	}
    }
    
    ////////////цифры вместо звезд
    
    
    
    simulated final function DrawPerkWithStars( Canvas C, float X, float Y, float Scale, int Stars, Material PerkIcon, Material StarIcon )
    {
    	local byte i;
    
    	C.SetPos(X,Y);
    	C.DrawTile(PerkIcon, Scale, Scale, 0, 0, PerkIcon.MaterialUSize(), PerkIcon.MaterialVSize());
    	Y+=Scale*0.9f;
    	X+=Scale*0.8f;
    	Scale*=0.2f;
    	while( Stars>0 )
    	{
    		for( i=1; i<=Min(5,Stars); ++i )
    		{
    			C.SetPos(X,Y-(i*Scale*0.8f));
    			C.DrawTile(StarIcon, Scale, Scale, 0, 0, StarIcon.MaterialUSize(), StarIcon.MaterialVSize());
    		}
    		X+=Scale;
    		Stars-=5;
    	}
    }
    
    defaultproperties
    {
         NotShownInfo="player names not shown"
         PlayerCountText="Игроки:"
         SpectatorCountText="| Наблюдателей:"
         AliveCountText="| Живых:"
         BotText="Бот"
         HealthyString="HP"
    }
    
    
    
     
  4. Flame

    Flame -Заслуженый кодер форума-

    Либо присылай в виде файлов, либо нажми рычажок, чтобы выйти из режима BB кодов и в секцию code вставь код классов
    И не копируй больше код в режиме BB кода

    Вот SRScoreBoard же нормальный
    Или у тебя SRHUDKillingFloor такой? )
     
  5. Swer

    Swer Солдат

    у меня 7ой sp :p не самый новый, но и не старый :)
     
  6. key

    key Солдат

  7. douradu

    douradu Соучастник

    пожалуйста
    кто может мне помочь?

    У меня есть новые текстуры для изменения ServerPerks иконки

    Я хочу, чтобы изменить иконки, например:
    это:
    Sem títu.png

    для этого:
    Sem títuo.png
     
  8. RaideN-

    RaideN- Игровая Администрация

    Они прописываются в перках в "defaultproperties"
    И там четко указан путь к иконке:

    OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Berserker'
    OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Berserker_Gold'

    Замени на свой
     
  9. douradu

    douradu Соучастник

    простите мое невежество
    Но могли бы привести пример того, как заменить
    это происходит следующим образом:
    C:\serverkf\System>ucc make
    Setting breakpad minidump AppID = 1250
    Steam_SetMinidumpSteamID: Caching Steam ID: 76561198167031430 [API loaded no]
    ----------------------------Core - Release----------------------------
    ---------------------------Engine - Release---------------------------
    ----------------------------Fire - Release----------------------------
    ---------------------------Editor - Release---------------------------
    --------------------------UnrealEd - Release--------------------------
    ---------------------------IpDrv - Release----------------------------
    ----------------------------UWeb - Release----------------------------
    --------------------------GamePlay - Release--------------------------
    -------------------------UnrealGame - Release-------------------------
    ---------------------------XGame - Release----------------------------
    -------------------------XInterface - Release-------------------------
    ---------------------------XAdmin - Release---------------------------
    -------------------------XWebAdmin - Release--------------------------
    ---------------------------GUI2K4 - Release---------------------------
    --------------------------xVoting - Release---------------------------
    --------------------------UTV2004c - Release--------------------------
    --------------------------UTV2004s - Release--------------------------
    -------------------------ROEffects - Release--------------------------
    --------------------------ROEngine - Release--------------------------
    ------------------------ROInterface - Release-------------------------
    ---------------------------Old2k4 - Release---------------------------
    ---------------------------KFMod - Release----------------------------
    ---------------------------KFChar - Release---------------------------
    ---------------------------KFGui - Release----------------------------
    -------------------------GoodKarma - Release--------------------------
    -------------------------KFMutators - Release-------------------------
    -----------------------ServerPerksV5 - Release------------------------
    -----------------------ServerPerksMut - Release-----------------------
    ------------------------ServerPerksP - Release------------------------
    Analyzing...
    Parsing SRVetBerserker
    Parsing SRVetCommando
    Parsing SRVetDemolitions
    Parsing SRVetFieldMedic
    Parsing SRVetFirebug
    Parsing SRVetSharpshooter
    Parsing SRVetSupportSpec
    Compiling SRVetBerserker
    Compiling SRVetCommando
    Compiling SRVetDemolitions
    Compiling SRVetFieldMedic
    Compiling SRVetFirebug
    Compiling SRVetSharpshooter
    Compiling SRVetSupportSpec
    Importing Defaults for SRVetBerserker
    ObjectProperty KFMod.KFVeterancyTypes.OnHUDIcon: unresolved reference to 'Textur
    e'Serverdedicatedd2besker_T''
    Importing Defaults for SRVetCommando
    Importing Defaults for SRVetDemolitions
    Importing Defaults for SRVetFieldMedic
    Importing Defaults for SRVetFirebug
    Importing Defaults for SRVetSharpshooter
    Importing Defaults for SRVetSupportSpec
    Compile aborted due to errors.
    Failure - 1 error(s), 0 warning(s)

    C:\serverkf\System>pause
    Pressione qualquer tecla para continuar. . .
     
  10. Essence

    Essence Moderator Команда форума

    Вот пример:
    Код:
    class SRVetStormtrooper extends SRVeterancyTypes
        abstract;
    
    #exec OBJ LOAD FILE=lhTextures.utx // Это важно
    
    static function int GetPerkProgressInt( ClientPerkRepLink StatOther, out int FinalInt, byte CurLevel, byte ReqNum )
    ...
    Код:
    defaultproperties
    {
    ...
        OnHUDIcon=Texture'lhTextures.Icon.PerkStormtrooper'
    ...
    Путь к текстуре можно посмотреть в редакторе:
    [​IMG]
     
  11. douradu

    douradu Соучастник

    Я использовал этот код в ServerPerksP:
    class SRVetBerserkerd2 extends SRVeterancyTypes
    abstract;

    #exec OBJ LOAD FILE=serverd2Perkss_T.utx // é importante

    static function int GetPerkProgressInt( ClientPerkRepLink StatOther, out int FinalInt, byte CurLevel, byte ReqNum )
    ...

    defaultproperties
    {
    ...
    OnHUDIcon=Texture'serverd2Perkss_T.Icon.PerkBerserkerd2'
    ...

    Я использовал этот путь
    título.png

    и он пришел:
    C:\serverkf\System>ucc make
    Setting breakpad minidump AppID = 1250
    Steam_SetMinidumpSteamID: Caching Steam ID: 76561198167031430 [API loaded no]
    ----------------------------Core - Release----------------------------
    ---------------------------Engine - Release---------------------------
    ----------------------------Fire - Release----------------------------
    ---------------------------Editor - Release---------------------------
    --------------------------UnrealEd - Release--------------------------
    ---------------------------IpDrv - Release----------------------------
    ----------------------------UWeb - Release----------------------------
    --------------------------GamePlay - Release--------------------------
    -------------------------UnrealGame - Release-------------------------
    ---------------------------XGame - Release----------------------------
    -------------------------XInterface - Release-------------------------
    ---------------------------XAdmin - Release---------------------------
    -------------------------XWebAdmin - Release--------------------------
    ---------------------------GUI2K4 - Release---------------------------
    --------------------------xVoting - Release---------------------------
    --------------------------UTV2004c - Release--------------------------
    --------------------------UTV2004s - Release--------------------------
    -------------------------ROEffects - Release--------------------------
    --------------------------ROEngine - Release--------------------------
    ------------------------ROInterface - Release-------------------------
    ---------------------------Old2k4 - Release---------------------------
    ---------------------------KFMod - Release----------------------------
    ---------------------------KFChar - Release---------------------------
    ---------------------------KFGui - Release----------------------------
    -------------------------GoodKarma - Release--------------------------
    -------------------------KFMutators - Release-------------------------
    ------------------------ServerPerks - Release-------------------------
    -----------------------ServerPerksMut - Release-----------------------
    ------------------------ServerPerksP - Release------------------------
    Analyzing...
    Parsing SRVetBerserker
    Parsing SRVetBerserkerd2
    C:\serverkf\ServerPerksP\Classes\SRVetBerserkerd2.uc(1) : Warning, Class names s
    houldn't end in a digit
    C:\serverkf\ServerPerksP\Classes\SRVetBerserkerd2.uc(7) : Error, Missing '{' in
    function
    Compile aborted due to errors.
    Failure - 1 error(s), 1 warning(s)

    C:\serverkf\System>pause
    Pressione qualquer tecla para continuar. . .
     
  12. douradu

    douradu Соучастник

    жаль, что я узнал (что делает попытки), которые должны были завершить код следующим образом:
    class SRVetBerserkerd2 extends SRVeterancyTypes
    abstract;

    #exec OBJ LOAD FILE=serverd2Perkss_T.utx // é importante

    static function int GetPerkProgressInt( ClientPerkRepLink StatOther, out int FinalInt, byte CurLevel, byte ReqNum )
    {
    switch( CurLevel )
    {
    case 0:
    FinalInt = 5000;
    break;
    case 1:
    FinalInt = 25000;
    break;
    case 2:
    FinalInt = 100000;
    break;
    case 3:
    FinalInt = 500000;
    break;
    case 4:
    FinalInt = 1500000;
    break;
    case 5:
    FinalInt = 3500000;
    break;
    case 6:
    FinalInt = 5500000;
    break;
    default:
    FinalInt = 5500000+GetDoubleScaling(CurLevel,500000);
    }
    return Min(StatOther.RMeleeDamageStat,FinalInt);
    }

    static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class<DamageType> DmgType)
    {
    if( class<KFWeaponDamageType>(DmgType) != none && class<KFWeaponDamageType>(DmgType).default.bIsMeleeDamage )
    {
    if ( KFPRI.ClientVeteranSkillLevel == 0 )
    return float(InDamage) * 1.10;
    if( KFPRI.ClientVeteranSkillLevel>6 )
    return float(InDamage) * (1.7 + (0.05 * KFPRI.ClientVeteranSkillLevel));

    // Up to 100% increase in Melee Damage
    return float(InDamage) * (1.0 + (0.20 * float(Min(KFPRI.ClientVeteranSkillLevel, 5))));
    }
    return InDamage;
    }

    static function float GetFireSpeedMod(KFPlayerReplicationInfo KFPRI, Weapon Other)
    {
    if ( KFMeleeGun(Other) != none || Crossbuzzsaw(Other) != none )
    {
    switch ( KFPRI.ClientVeteranSkillLevel )
    {
    case 1:
    return 1.05;
    case 2:
    case 3:
    return 1.10;
    case 4:
    return 1.15;
    case 5:
    return 1.20;
    case 6:
    return 1.25; // 25% increase in wielding Melee Weapon
    default:
    return 0.95+0.05*float(KFPRI.ClientVeteranSkillLevel);
    }
    }

    return 1.0;
    }

    static function float GetMeleeMovementSpeedModifier(KFPlayerReplicationInfo KFPRI)
    {
    switch( KFPRI.ClientVeteranSkillLevel )
    {
    case 0:
    return 0.05; // Was 0.10 in Balance Round 1
    case 1:
    return 0.10; // Was 0.15 in Balance Round 1
    case 2:
    return 0.15; // Was 0.20 in Balance Round 1
    case 3:
    case 4:
    case 5:
    return 0.20; // Was 0.25 in Balance Round 1
    default:
    return 0.30; // Was 0.35 in Balance Round 1
    }
    }

    static function int ReduceDamage(KFPlayerReplicationInfo KFPRI, KFPawn Injured, Pawn Instigator, int InDamage, class<DamageType> DmgType)
    {
    if ( DmgType == class'DamTypeVomit' )
    {
    switch ( KFPRI.ClientVeteranSkillLevel )
    {
    case 0:
    return float(InDamage) * 0.90;
    case 1:
    return float(InDamage) * 0.75;
    case 2:
    return float(InDamage) * 0.65;
    case 3:
    return float(InDamage) * 0.50;
    case 4:
    return float(InDamage) * 0.35;
    case 5:
    return float(InDamage) * 0.25;
    default:
    return float(InDamage) * 0.20; // 80% reduced Bloat Bile damage
    }
    }

    switch ( KFPRI.ClientVeteranSkillLevel )
    {
    // This did exist in Balance Round 1, but was removed for Balance Round 2
    case 0:
    return InDamage;
    case 1:
    return float(InDamage) * 0.95; // was 0.90 in Balance Round 1
    case 2:
    return float(InDamage) * 0.90; // was 0.85 in Balance Round 1
    case 3:
    return float(InDamage) * 0.85; // was 0.80 in Balance Round 1
    case 4:
    return float(InDamage) * 0.80; // was 0.70 in Balance Round 1
    case 5:
    return float(InDamage) * 0.70; // was 0.60 in Balance Round 1
    case 6:
    return float(InDamage) * 0.60; // 40% reduced Damage(was 50% in Balance Round 1)
    }

    return float(InDamage) * 1.f - FMin(float(KFPRI.ClientVeteranSkillLevel)*0.05f,0.65f);
    }

    // Added in Balance Round 1(returned false then, by accident, fixed in Balance Round 2)
    static function bool CanMeleeStun()
    {
    return true;
    }

    static function bool CanBeGrabbed(KFPlayerReplicationInfo KFPRI, KFMonster Other)
    {
    return !Other.IsA('ZombieClot');
    }

    // Set number times Zed Time can be extended
    static function int ZedTimeExtensions(KFPlayerReplicationInfo KFPRI)
    {
    return Min(KFPRI.ClientVeteranSkillLevel, 4);
    }

    // Change the cost of particular items
    static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item)
    {
    if ( Item == class'ChainsawPickup' || Item == class'KatanaPickup' || Item == class'ClaymoreSwordPickup'
    || Item == class'CrossbuzzsawPickup' || Item == class'ScythePickup' || Item == class'GoldenKatanaPickup'
    || Item == class'MachetePickup' || Item == class'AxePickup' || Item == class'DwarfAxePickup'
    || Item == class'GoldenChainsawPickup' )
    return FMax(0.9 - (0.10 * float(KFPRI.ClientVeteranSkillLevel)),0.1); // Up to 70% discount on Melee Weapons
    return 1.0;
    }

    // Give Extra Items as default
    static function AddDefaultInventory(KFPlayerReplicationInfo KFPRI, Pawn P)
    {
    // If Level 5, give them Machete
    if ( KFPRI.ClientVeteranSkillLevel == 5 )
    KFHumanPawn(P).CreateInventoryVeterancy(string(class'Machete'), default.StartingWeaponSellPriceLevel5);

    // If Level 6, give them an Axe
    else if ( KFPRI.ClientVeteranSkillLevel >= 6 )
    KFHumanPawn(P).CreateInventoryVeterancy(string(class'Axe'), default.StartingWeaponSellPriceLevel6);

    // If Level 6, give them Body Armor(Removed from Suicidal and HoE in Balance Round 7)
    if ( KFPRI.Level.Game.GameDifficulty < 5.0 && KFPRI.ClientVeteranSkillLevel == 6 )
    P.ShieldStrength = 100;
    }

    static function string GetCustomLevelInfo( byte Level )
    {
    local string S;

    S = Default.CustomLevelInfo;
    S = Repl(S,"%s",GetPercentStr(0.05 * float(Level)-0.05));
    S = Repl(S,"%d",GetPercentStr(0.1+FMin(0.1 * float(Level),0.8f)));
    S = Repl(S,"%r",GetPercentStr(0.7 + 0.05*float(Level)));
    S = Repl(S,"%l",GetPercentStr(FMin(0.05*float(Level),0.65f)));
    return S;
    }

    defaultproperties
    {
    PerkIndex=9

    OnHUDIcon=Texture'serverd2Perkss_T.Icon.PerkBerserkerd2'
    ...

    она работала
    большое спасибо:
    C:\serverkf\System>ucc make
    Setting breakpad minidump AppID = 1250
    Steam_SetMinidumpSteamID: Caching Steam ID: 76561198167031430 [API loaded no]
    ----------------------------Core - Release----------------------------
    ---------------------------Engine - Release---------------------------
    ----------------------------Fire - Release----------------------------
    ---------------------------Editor - Release---------------------------
    --------------------------UnrealEd - Release--------------------------
    ---------------------------IpDrv - Release----------------------------
    ----------------------------UWeb - Release----------------------------
    --------------------------GamePlay - Release--------------------------
    -------------------------UnrealGame - Release-------------------------
    ---------------------------XGame - Release----------------------------
    -------------------------XInterface - Release-------------------------
    ---------------------------XAdmin - Release---------------------------
    -------------------------XWebAdmin - Release--------------------------
    ---------------------------GUI2K4 - Release---------------------------
    --------------------------xVoting - Release---------------------------
    --------------------------UTV2004c - Release--------------------------
    --------------------------UTV2004s - Release--------------------------
    -------------------------ROEffects - Release--------------------------
    --------------------------ROEngine - Release--------------------------
    ------------------------ROInterface - Release-------------------------
    ---------------------------Old2k4 - Release---------------------------
    ---------------------------KFMod - Release----------------------------
    ---------------------------KFChar - Release---------------------------
    ---------------------------KFGui - Release----------------------------
    -------------------------GoodKarma - Release--------------------------
    -------------------------KFMutators - Release-------------------------
    ------------------------ServerPerks - Release-------------------------
    -----------------------ServerPerksMut - Release-----------------------
    ------------------------ServerPerksP - Release------------------------
    Analyzing...
    Parsing SRVetBerserker
    Parsing SRVetBerserkerd2
    C:\serverkf\ServerPerksP\Classes\SRVetBerserkerd2.uc(1) : Warning, Class names s
    houldn't end in a digit
    Parsing SRVetCommando
    Parsing SRVetDemolitions
    Parsing SRVetFieldMedic
    Parsing SRVetFirebug
    Parsing SRVetSharpshooter
    Parsing SRVetSupportSpec
    Compiling SRVetBerserker
    Compiling SRVetBerserkerd2
    Compiling SRVetCommando
    Compiling SRVetDemolitions
    Compiling SRVetFieldMedic
    Compiling SRVetFirebug
    Compiling SRVetSharpshooter
    Compiling SRVetSupportSpec
    Importing Defaults for SRVetBerserker
    Importing Defaults for SRVetBerserkerd2
    Importing Defaults for SRVetCommando
    Importing Defaults for SRVetDemolitions
    Importing Defaults for SRVetFieldMedic
    Importing Defaults for SRVetFirebug
    Importing Defaults for SRVetSharpshooter
    Importing Defaults for SRVetSupportSpec
    ------------------------KFStoryGame - Release-------------------------
    -------------------------KFStoryUI - Release--------------------------
    -----------------------SideShowScript - Release-----------------------
    Loading ServerPerksP...
    C:\serverkf\System>pause
    Pressione qualquer tecla para continuar. . .

    но что мне делать с этим кусок кода:
    defaultproperties
    {
    PerkIndex=9

    OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Berserker'

    (Я НЕ ИСПОЛЬЗОВАТЬ ЭТОТ КУСОК ИЗ ЗДЕСЬ ВНИЗ)

    OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Berserker_Gold'
    VeterancyName="Berserker"
    Requirements(0)="Deal %x damage with melee weapons"

    SRLevelEffects(0)="10% extra melee damage|5% faster melee movement|10% less damage from Bloat Bile|10% discount on melee weapons|Can't be grabbed by Clots"
    SRLevelEffects(1)="20% extra melee damage|5% faster melee attacks|10% faster melee movement|25% less damage from Bloat Bile|5% resistance to all damage|20% discount on melee weapons|Can't be grabbed by Clots"
    SRLevelEffects(2)="40% extra melee damage|10% faster melee attacks|15% faster melee movement|35% less damage from Bloat Bile|10% resistance to all damage|30% discount on melee weapons|Can't be grabbed by Clots|Zed-Time can be extended by killing an enemy while in slow motion"
    SRLevelEffects(3)="60% extra melee damage|10% faster melee attacks|20% faster melee movement|50% less damage from Bloat Bile|15% resistance to all damage|40% discount on melee weapons|Can't be grabbed by Clots|Up to 2 Zed-Time Extensions"
    SRLevelEffects(4)="80% extra melee damage|15% faster melee attacks|20% faster melee movement|65% less damage from Bloat Bile|20% resistance to all damage|50% discount on melee weapons|Can't be grabbed by Clots|Up to 3 Zed-Time Extensions"
    SRLevelEffects(5)="100% extra melee damage|20% faster melee attacks|20% faster melee movement|75% less damage from Bloat Bile|30% resistance to all damage|60% discount on melee weapons|Spawn with a Machete|Can't be grabbed by Clots|Up to 4 Zed-Time Extensions"
    SRLevelEffects(6)="100% extra melee damage|25% faster melee attacks|30% faster melee movement|80% less damage from Bloat Bile|40% resistance to all damage|70% discount on melee weapons|Spawn with an Axe and Body Armor|Can't be grabbed by Clots|Up to 4 Zed-Time Extensions"
    CustomLevelInfo="%r extra melee damage|%s faster melee attacks|30% faster melee movement|80% less damage from Bloat Bile|%l resistance to all damage|%d discount on melee weapons|Spawn with a Axe and Body Armor|Can't be grabbed by Clots|Up to 4 Zed-Time Extensions"
    }
     
  13. Essence

    Essence Moderator Команда форума

    Зачем создавать SRVetBerserkerd2?
    Ведь ты просто хотел поменять одну иконку перка на другую.
    Так измени SRVetBerserker соответствующим образом.
    Добавь в SRVetBerserker это:
    Код:
    #exec OBJ LOAD FILE=serverd2Perkss_T.utx
    И измени defaultproperties:
    Это поменяй
    Код:
        OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Berserker'
        OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Berserker_Gold'
    На это
    Код:
        OnHUDIcon=Texture'serverd2Perkss_T.Icon.PerkBerserkerd2'
        OnHUDGoldIcon=Texture'serverd2Perkss_T.Icon.PerkBerserkerd2'

    И будет лучше, если ты не будешь использовать переводчик. Для тех, кто попытается тебе помочь, легче будет перевести твоё сообщение самим. Так будет понятнее.
     
  14. douradu

    douradu Соучастник

    muito obrigado

    deu Certo
    C: \ serverkf \ System> UCC make
    Definir breakpad minidump AppID = 1250
    ID Cache de vapor :: Steam_SetMinidumpSteamID 76561198167031430 [Carregado API no]
    ---------------------------- Núcleo - Release ------------------- ---------
    --------------------------- Engine - Lançamento -------------------- -------
    ---------------------------- Fire - Lançamento ------------------- ---------
    --------------------------- Editor - Lançamento -------------------- -------
    -------------------------- UnrealEd - Release --------------------- -----
    --------------------------- IpDrv - Release -------------------- --------
    ---------------------------- UWeb - Release ------------------- ---------
    -------------------------- Gameplay - Lançamento --------------------- -----
    ------------------------- UnrealGame - Release ---------------------- ---
    --------------------------- XGame - Release -------------------- --------
    ------------------------- XInterface - Release ---------------------- ---
    --------------------------- XAdmin - Release -------------------- -------
    ------------------------- XWebAdmin - Release ---------------------- ----
    --------------------------- GUI2K4 - Release -------------------- -------
    -------------------------- XVoting - Release --------------------- ------
    -------------------------- UTV2004c - Release --------------------- -----
    -------------------------- UTV2004s - Release --------------------- -----
    ------------------------- ROEffects - Release ---------------------- ----
    -------------------------- ROEngine - Release --------------------- -----
    ------------------------ ROInterface - Release ----------------------- -
    --------------------------- Old2k4 - Release -------------------- -------
    --------------------------- KFMod - Release -------------------- --------
    --------------------------- KFChar - Release -------------------- -------
    --------------------------- KFGui - Release -------------------- --------
    ------------------------- Goodkarma - Release ---------------------- ----
    ------------------------- KFMutators - Release ---------------------- ---
    ------------------------ ServerPerks - Release ----------------------- -
    ----------------------- ServerPerksMut - Release -----------------------
    ------------------------ ServerPerksP - Release ----------------------- -
    Analisando ...
    SRVetBerserker parsing
    parsing SRVetBerserkerd2
    C: \ serverkf \ ServerPerksP \ Classes \ SRVetBerserkerd2.uc (1): aviso, nomos de classe s
    houldn't em jornal dígito jornal jornal jornal Última hum
    SRVetCommando parsing
    parsing SRVetCommandod2
    C: \ serverkf \ ServerPerksP \ Classes \ SRVetCommandod2.uc (1): aviso, nomos de classe sh
    ouldn't em Jornal jornal dígito jornal jornal Última hum
    Analisando SRVetDemolitions
    parsing SRVetDemolitionsd2
    C: \ serverkf \ ServerPerksP \ Classes \ SRVetDemolitionsd2.uc (1): advertencia, nomos de classe
    NÃO DEVE Terminar dígito em hum
    analisar SRVetFieldMedic
    parsing SRVetFieldMedicd2
    C: \ serverkf \ ServerPerksP \ Classes \ SRVetFieldMedicd2.uc (1): advertencia, nomos de classe
    NÃO DEVE Terminar dígito em hum
    SRVetFirebug parsing
    parsing SRVetFirebugd2
    C: \ serverkf \ ServerPerksP \ Classes \ SRVetFirebugd2.uc (1): Aviso, nomos de classe sho
    uldn't em jornal jornal dígito jornal jornal Última hum
    Analisando SRVetSharpshooter
    parsing SRVetSharpshooterd2
    C: \ serverkf \ ServerPerksP \ Classes \ SRVetSharpshooterd2.uc (1): Aviso, nome da classe
    s NÃO DEVE Terminar dígito em hum
    parsing SRVetSupportSpec
    parsing SRVetSupportSpecd2
    C: \ serverkf \ ServerPerksP \ Classes \ SRVetSupportSpecd2.uc (1): advertencia, nomos de classe
    NÃO DEVE Terminar dígito em hum
    Compilando SRVetBerserker
    Compilando SRVetBerserkerd2
    Compilando SRVetCommando
    Compilando SRVetCommandod2
    Compilando SRVetDemolitions
    Compilando SRVetDemolitionsd2
    Compilando SRVetFieldMedic
    Compilando SRVetFieldMedicd2
    Compilando SRVetFirebug
    Compilando SRVetFirebugd2
    Compilando SRVetSharpshooter
    Compilando SRVetSharpshooterd2
    Compilando SRVetSupportSpec
    Compilando SRVetSupportSpecd2
    Importação de Padrões Paragrafo SRVetBerserker
    Importação de Padrões Paragrafo SRVetBerserkerd2
    Importação de Padrões Paragrafo SRVetCommando
    Importação de Padrões Paragrafo SRVetCommandod2
    Importação de Padrões de Pará SRVetDemolitions
    Importação de Padrões Paragrafo SRVetDemolitionsd2
    Importação de Padrões Paragrafo SRVetFieldMedic
    Importação de Padrões Paragrafo SRVetFieldMedicd2
    Importação de Padrões Paragrafo SRVetFirebug
    Importação de Padrões Paragrafo SRVetFirebugd2
    Importação de Padrões Paragrafo SRVetSharpshooter
    Importação de Padrões Paragrafo SRVetSharpshooterd2
    Importação de Padrões Paragrafo SRVetSupportSpec
    Importação de Padrões Paragrafo SRVetSupportSpecd2
    ------------------------ KFStoryGame - Release ----------------------- -
    ------------------------- KFStoryUI - Release ---------------------- ----
    ----------------------- SideShowScript - Release -----------------------
    Carregando ServerPerksP ...
    C: \ serverkf \ System> pausa
    PRESSIONE QUALQUÉR Tecla Para Continuar '. . .
    [/ SPOILER]
     
    Последнее редактирование: 6 фев 2017
  15. douradu

    douradu Соучастник

    desculpe-me o mal-entendido
    é por que eu estou aprendendo e fazendo tentativas
    Я сожалею недоразумение
    Поэтому я учусь и делать попытки

    agora eu não estou usando SRVetBerserkerd2
    Теперь я не использую SRVetBerserkerd2

    mas como eu faço para adicionar as cores azul, verde
    pois quando eu coloco OnHUDBlueIcon= em SRVetDemolitions.uc,
    dá um um erro
    но как я могу добавить цвета синий, зеленый
    потому что, когда я поставил OnHUDBlueIcon = в SRVetDemolitions.uc,
    выдает ошибку
    C:\serverkf\System>ucc make
    Setting breakpad minidump AppID = 1250
    Steam_SetMinidumpSteamID: Caching Steam ID: 76561198167031430 [API loaded no]
    ----------------------------Core - Release----------------------------
    ---------------------------Engine - Release---------------------------
    ----------------------------Fire - Release----------------------------
    ---------------------------Editor - Release---------------------------
    --------------------------UnrealEd - Release--------------------------
    ---------------------------IpDrv - Release----------------------------
    ----------------------------UWeb - Release----------------------------
    --------------------------GamePlay - Release--------------------------
    -------------------------UnrealGame - Release-------------------------
    ---------------------------XGame - Release----------------------------
    -------------------------XInterface - Release-------------------------
    ---------------------------XAdmin - Release---------------------------
    -------------------------XWebAdmin - Release--------------------------
    ---------------------------GUI2K4 - Release---------------------------
    --------------------------xVoting - Release---------------------------
    --------------------------UTV2004c - Release--------------------------
    --------------------------UTV2004s - Release--------------------------
    -------------------------ROEffects - Release--------------------------
    --------------------------ROEngine - Release--------------------------
    ------------------------ROInterface - Release-------------------------
    ---------------------------Old2k4 - Release---------------------------
    ---------------------------KFMod - Release----------------------------
    ---------------------------KFChar - Release---------------------------
    ---------------------------KFGui - Release----------------------------
    -------------------------GoodKarma - Release--------------------------
    -------------------------KFMutators - Release-------------------------
    ------------------------ServerPerks - Release-------------------------
    -----------------------ServerPerksMut - Release-----------------------
    ------------------------ServerPerksP - Release------------------------
    Analyzing...
    Parsing SRVetCommando
    Parsing SRVetDemolitions
    Parsing SRVetFieldMedic
    Parsing SRVetFirebug
    Parsing SRVetSharpshooter
    Parsing SRVetSupportSpec
    Parsing PP19Ammo
    Parsing PB
    Parsing PBPickup
    Parsing PP19Pickup
    Compiling SRVetCommando
    Compiling SRVetDemolitions
    Compiling SRVetFieldMedic
    Compiling SRVetFirebug
    Compiling SRVetSharpshooter
    Compiling SRVetSupportSpec
    Compiling PP19Ammo
    Compiling PB
    Compiling PBPickup
    Compiling PP19Pickup
    Importing Defaults for SRVetCommando
    Importing Defaults for SRVetDemolitions
    ServerPerksP.SRVetDemolitions: Unknown property in defaults: OnHUDBlueIc
    on=Texture'myHUD.PerkReset.demolitiond2azul'
    Importing Defaults for SRVetFieldMedic
    Importing Defaults for SRVetFirebug
    Importing Defaults for SRVetSharpshooter
    Importing Defaults for SRVetSupportSpec
    Importing Defaults for PP19Ammo
    Importing Defaults for PB
    Importing Defaults for PBPickup
    Importing Defaults for PP19Pickup
    Compile aborted due to errors.
    Failure - 1 error(s), 0 warning(s)

    C:\serverkf\System>pause
    Pressione qualquer tecla para continuar. . .

    eu ja tenho todas as texturas personalizadas em myHUD
    У меня уже есть все текстуры в обычай myHUD

    e também já coloquei estes parametros em SRVeterancyTypes.uc
    и я уже поставил эти параметры в SRVeterancyTypes.uc
    static function byte PreDrawPerk( Canvas C, byte Level, out Material PerkIcon, out Material StarIcon )
    {
    if ( Level>32 ) //teste
    {
    PerkIcon = Default.OnHUDWhiteIcon;
    StarIcon = Class'HUDKillingFloor'.Default.VetStarGoldMaterial; //teste
    Level-=33;
    C.SetDrawColor(255, 255, 255, C.DrawColor.A);
    else if ( Level>27 )
    {
    PerkIcon = Default.OnHUDBlackIcon;
    StarIcon = Class'HUDKillingFloor'.Default.VetStarGoldMaterial;
    Level-=28;
    C.SetDrawColor(0, 0, 0, C.DrawColor.A);
    }
    else if ( Level>22 )
    {
    PerkIcon = Default.OnHUDGreenIcon;
    StarIcon = Class'HUDKillingFloor'.Default.VetStarGoldMaterial;
    Level-=23;
    C.SetDrawColor(0, 255, 0, C.DrawColor.A);
    }
    else if ( Level>17 )
    {
    PerkIcon = Default.OnHUDBlueIcon;
    StarIcon = Class'HUDKillingFloor'.Default.VetStarGoldMaterial;
    Level-=18;
    C.SetDrawColor(0, 0, 255, C.DrawColor.A);
    }
    else if ( Level>8 )
    {
    PerkIcon = Default.OnHUDGoldIcon;
    StarIcon = Class'HUDKillingFloor'.Default.VetStarGoldMaterial;
    Level-=8;
    C.SetDrawColor(255, 255, 0, C.DrawColor.A);
    }
    else if ( Level>1 )
    {
    PerkIcon = Default.OnHUDGoldIcon;
    StarIcon = Class'HUDKillingFloor'.Default.VetStarGoldMaterial;
    Level-=1;
    C.SetDrawColor(255, 0, 0, C.DrawColor.A);
    }
    else
    {
    PerkIcon = Default.OnHUDWhiteIcon;
    StarIcon = Class'HUDKillingFloor'.Default.VetStarGoldMaterial;
    C.SetDrawColor(255, 255, 255, C.DrawColor.A);
    }
    return Min(Level,33);
    }
     
    Последнее редактирование: 6 фев 2017
  16. w.a.l

    w.a.l Консильери

    Всё это рисуется в худкиллингфлур, задавай там любые цвета на любой уровень
     
  17. douradu

    douradu Соучастник

    Я мог бы дать намек на то, чтобы использовать или изменить код?
    poderia dar uma dica de qual código usar ou mudar?