Announcement

Collapse

Forum Rules

CHANGES
  • Items changed, or highlighted for future attention, on 20 July 2013 are highlighted in yellow.

Global Rules
  • Forum moderators may or may not be Tripwire Interactive staff members, but either way, please respect them, as they are the authority of the forums. Speaking to them with intentional spite will not be tolerated and may result in the loss of your forum privileges.
  • Any decisions made by any member of staff or moderator are final and not subject to discussion. Doing so may result in a ban from the site. The owners of Tripwire Interactive Forums reserve the right to remove, edit, move or close any thread for any reason, as well as to remove access to the forums for any individuals with or without warning for breaches of the rules.
  • If you have a complaint regarding another user, PM the appropriate moderators, or if you have an administrative issue, [RO]schneidzekk.

General Behaviour
  • Use the search function before posting. Chances are your question has already been answered.
  • Use a title that describes the content of your post. Don't use all caps or special characters to draw attention either in the title or the body of the post.
  • Up to 10 emoticons are allowed in a post
  • Political discussions are prohibited.
  • Flaming - We do not tolerate abusive, malicious, personal attacks. You will be banned if you persist in this behavior.
  • Trolls - Anyone deliberately antagonizing other forum users by posting 'flame bait' type messages is not welcome. You will be banned (possibly without warning depending on the severity of the issue) if you persist in this behavior.
  • Personal insults (directed at anyone) will result in a ban. If the behavior is not corrected, it will be made more permanent.
  • Constructive criticism is welcome. However keep in mind we (and other forums goers) may not agree with you. If you can't keep the conversation civil, you will be removed from the forums.
  • The use of hyperbole, one liners, and images as part of a forum debate is likely to get you infracted. You have many ways to participate and be a constructive part of this community, even when you disagree.
  • To make the highlighted bits above 100% clear to everyone, the following WILL NOT BE TOLERATED:
    1. Personal attacks, insults, antagonism of any forum-goers, moderators or Tripwire Interactive staff.
    2. Name Shaming and Public "Witch Hunts" are also not allowed.
    3. Breaches of confidentiality and privacy of any sort.
    4. Any form of racism, bigotry or attacks on race, creed or color.
    5. Linking to posts on other forums related to ANY of the above, whether you are the originator or not, without exception.

  • There has been too much in the way of abhorrent personal behaviors in the past. These will cease. It doesn't matter who started it or who reacted to it - it will all result in moderator action. If you have to indulge your hatreds, for whatever reason, go do it elsewhere - and do not try and drag our forum-goers over to enjoy your hatreds.
  • We understand that people have strong feelings about our games, what we do for a living and how we respond (or don't) to comments on the forums. We all aren't going to agree about everything. So, BE CIVIL in your disagreements!

DO NOTs
  • DO NOT Transmit any message, information, data, text, software or graphic files, or other materials ("Content") that is unlawful (including illegal drug usage), harmful, threatening, abusive, harassing, defamatory, vulgar, obscene, libelous, hateful or racially, ethnically, sexually or otherwise objectionable. This includes publicizing private information, such as individual's real names, IP addresses and anything else that might be used to identify them to the freakier members of the internet. This also means you may NOT publically share private communications (PM, email or anything else) without the original poster's permission.
  • DO NOT Post or transmit any Content that contains a virus, Trojan horse or other mischievous Content.
  • DO NOT Post or transmit any unsolicited advertising, promotional materials, "junk mail", "spam", "chain letters", "pyramid schemes" or any other form of solicitation.
  • DO NOT link to posts on any other forums, or any other form of media, that breaches our rules. It will be treated just the same as if you had posted it here.
  • DO NOT Double Post, cross Post or restart closed threads.
  • DO NOT Intentionally or unintentionally violate any applicable local, state, national or international law, rule or regulation.
  • DO NOT Upload or transmit any Content that infringes any patent, trademark, trade secret, copyright or other proprietary rights ("Rights") of any party.
  • DO NOT post cheats or exploits; THIS INCLUDES ALL/ANY REFERENCES TO HACKING, PIRATED SOFTWARE etc.
  • DO NOT complain about being banned from a server and DO NOT complain about other players on servers - that is between you and the admin, no need to get the community involved.

Username, Avatar and Signature Rules
  • Multiple registrations result in a ban.
  • No offensive user names
  • Avatars:
    Avatars are disabled.
  • All signatures should not exceed the following size limits, you can have both text and images
  • - For text signatures: 4 lines normal size, 8 lines small size and up to 100 chars per line. Font sizes above 2 are not allowed. (Blank lines count as lines.)
  • - For images in signatures: 1 image up to 400 pixels wide, 150 pixels tall and 100kb in size plus 2 lines normal size text and up to 100 chars per line
Netiquette: Written text has no inflection, and, as such, you should be careful how you write your messages as interpretation will vary from person to person. Please take advantage of the built-in emoticons to add such expression to your words. Please remember the golden rule: to treat other forum users the way you would like to be treated. Please use common courtesy, and enjoy using Red Orchestra's forums
Offensive material
The following is a list of some things that MAY be considered "offensive" by the moderators and the team. This is NOT an exclusive list and it does depend very much on context.

Crossing the line into "offensive" territory is likely to get you asked to change your name, sig or avatar or to withdraw/delete posts. This will be done politely by the moderators. If you refuse to comply further action WILL be taken once started, ultimately leading to banning from the forums.

A key point: please attempt to use your brains. What is mild humour to you may well be deeply offensive to others. While we have no intention of acting as politically-correct "thought police", we are on the lookout for those things that can cause offense and, in some cases, are actually still illegal in some jurisdictions.
  1. Names recalling notorious war criminals or personalities.
  2. Names recalling atrocities and war crimes in general, or units with particularly odious histories.
  3. Use of obscenities and expletives.
  4. Blatant racism, mysogynism or many other "ism"s.
  5. Use of symbolism and regalia recalling Nazism or Fascism; this does not include pics of soldiers who happen to have such symbols on their uniform, unless we feel this has been done to provoke. Please note that many Nazi symbols (including the Swastika) are still illegal in Germany and other countries and considered deeply offensive by many Europeans.
  6. Use of symbolism and regalia recalling Stalinism.
  7. On both the previous two, the moderators' views on the intention and impact of use of such symbols will be final - not yours. Please be understanding if you are advised to change something.
  8. In general, if a sig/avatar represents your allegiances in-game and is clearly "in part", it is likely to be fine; if the moderators feel you are trying to demonstrate unpalatable political allegiances, or to use it in an attempt to ridicule or provoke others you WILL be asked to change it. RO is NOT the place to make any extremist political statements of any kind.

Examples:
So people get the idea, some examples that would be considered offensive, numbered as above:
  1. "Hitler", "Beria"
  2. "NKVD Blocking Detachment", "Einsatzgruppen"
  3. This one should be pretty obvious...
  4. So should this - and it includes calling all Germans "Nazis" and all Soviets/Russians "Commies". It got boring 50 years ago, so stop it.
  5. Use of swastikas, fasces, SS-runes and so on for the Axis.
  6. There is actually very little overt symbolism from the Stalinist era; the hammer-and-sickle isn't offensive per se.

A simple rule-of-thumb: many Europeans find Nazi symbolism of any sort offensive; many Americans still find Soviet symbolism offensive. Engage your brain before using.




Final Note: this is NOT open to debate, so please do NOT start whining and moaning if a moderator asks you to change something. They will advise at first, giving reasons, then, if you take no notice, they will step up the pressure through to banning.
See more
See less

[Code] Base Music Replacement System

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Code] Base Music Replacement System

    A basic system for replacing and overriding music within KF2. I do not know if this is fully compilable because the workshop upload tool is now broken and I'm too lazy to setup everything to run via KFEditor Make but I did leave comments for most everything.

    BaseMusicGRI.uc
    Code:
    class BaseMusicGRI extends KFGameReplicationInfo;
    
    /************************************
    *  Music Manager
    ************************************/
    
    /** Class that is spawned, replace this from a mutator to update or change the music system. */
    var class<KFMusicManager> MusicManagerClass; 
    
    /** The spawned manager everything music related goes through this */
    var KFMusicManager MusicManager;
    
    /** Spawn and setup the manager class for music */
    simulated function ReceivedGameClass()
    {
        MusicManager = Spawn(MusicManagerClass, Self);
        MusicManager.GRIOwner = Self;
    
        Super.ReceivedGameClass();
    }
    
    /** Redirect the default music system through the music manager but else fallback to the default behavior */
    simulated function PlayNewMusicTrack( optional bool bGameStateChanged, optional bool bForceAmbient )
    {
        if( MusicManager != None )
        {
            MusicManager.SelectMusicTrack(bGameStateChanged, bForceAmbient);
        }
        else 
        {
            Super.PlayNewMusicTrack(bGameStateChanged, bForceAmbient);
        }
    }
    
    simulated function ForceNewMusicTrack( KFMusicTrackInfo ForcedTrackInfo )
    {
        if( MusicManager != None )
        {
            MusicManager.ForceMusicTrack(ForcedTrackInfo);
        }
        else 
        {
            Super.ForceNewMusicTrack(ForcedTrackInfo);
        }
    }
    
    defaultproperties
    {
        MusicManagerClass=class'KFMusicManager'
    }
    KFMusicManager.uc
    Code:
    //=============================================================================
    // KFMusicManager
    //=============================================================================
    // A class spawned by the GameReplicationInfo to handle playing music.
    //=============================================================================
    class KFMusicManager extends Info;
    
    /** The KFGameReplicationInfo that owns this class */
    var KFGameReplicationInfo GRIOwner;
    
    /** Current SoundCue component that is used when SoundCue music is playing */
    var AudioComponent MusicComp;
    
    simulated function SetupMusicTrack( KFMusicTrackInfo NextMusicTrackInfo, bool bPlayStandardTrack )
    {
        local KFMusicTrackInfo_Custom CustomInfo;
        local SoundCue CurrentTrack;
        local KFPlayerController KFPC;
    
        CustomInfo = KFMusicTrackInfo_Custom(NextMusicTrackInfo);
    
        /** If the selected track is not a custom track or is AkEvent music */
        if( CustomInfo == None || CustomInfo.StandardTrack != None )
        {
            GRIOwner.UpdateMusicTrack(NextMusicTrackInfo, bPlayStandardTrack);
            return;
        }
    
        /** The sound track was a SoundCue so lets select the correct version then play it */
        if( bPlayStandardTrack )
        {
            CurrentTrack = SoundCue(CustomInfo.StandardSong);
        }
        else 
        {
            CurrentTrack = SoundCue(CustomInfo.InstrumentalSong);
        }
    
        /** Set the music track info in the GRI */
        GRIOwner.CurrentMusicTrackInfo = CustomInfo;
    
        /** Force the SoundCue to the Music type so that the music volume slider changes the volume of the played Cue */
        CurrentTrack.SoundClass = 'Music';
    
        /** Stop the original system from spamming songs */
        GRIOwner.bPendingMusicTrackChange = false;
        GRIOwner.MusicComp = None;
    
        /** Play the SoundCue */
        PlayMusicSoundCue(CurrentTrack);
    
        /** Display the music ScaleForm GUI and assign the music name and artist */
        foreach WorldInfo.AllControllers(class'KFPlayerController', KFPC)
        {
            KFPC.TeamMessage(KFPC.PlayerReplicationInfo, CustomInfo.TrackName$" -- "$CustomInfo.ArtistName, 'Music');
        }
    }
    
    simulated function PlayMusicSoundCue(SoundCue MusicTrack)
    {
        local AudioComponent A;
    
        /** Fadeout any currently playing SoundCue music */
        if( MusicComp != None )
        {
            MusicComp.FadeOut(5.0f, 0.0);
            MusicComp = None;
        }
    
        /** Create a AudioComponent */
        A = WorldInfo.CreateAudioComponent(MusicTrack, false, false, false,, false);
        if( A != None )
        {
            /** Basic settings to tell the AudioComponent that this is music */
            A.bAutoDestroy = true;
            A.bShouldRemainActiveIfDropped = true;
            A.bIsMusic = true;
    
            /** Play the music by fading it in and then setting the MusicComp var to the AudioComponent */
            A.FadeIn(5.0f, 1.0f);
            MusicComp = A;
        }
    }
    
    /** A basic delegate function that you can replace to override what happens when a music track is selected and wants to be played */
    delegate OnMusicTrackSelected(KFMusicTrackInfo Track)
    {
        SetupMusicTrack( Track, KFGameEngine(Class'Engine'.static.GetEngine()).bMusicVocalsEnabled );
    }
    
    simulated function SelectMusicTrack( optional bool bGameStateChanged, optional bool bForceAmbient )
    {
        local KFMapInfo             KFMI;
        local class<KFGameInfo>     KFGameClass;
        local KFMusicTrackInfo      NextMusicTrackInfo;
        local bool                  bLoop;
        local bool                  bPlayActionTrack;
    
        if ( class'KFGameEngine'.static.CheckNoMusic() )
        {
            return;
        }
    
        KFGameClass = class<KFGameInfo>(GRIOwner.GameClass);
        if ( KFGameClass == None )
        {
            return;
        }
    
        // @todo: consider using music intensity (255?) for ambient music to simplify this logic
        bPlayActionTrack = (!bForceAmbient && KFGameClass.static.ShouldPlayActionMusicTrack(GRIOwner));
    
        // if we've just transitioned into the "action" phase of the game,
        // check if we need to delay the action music
        if( bGameStateChanged )
        {
            if( bPlayActionTrack )
            {
                if( KFGameClass.default.ActionMusicDelay > 0 )
                {
                    SetTimer( KFGameClass.default.ActionMusicDelay, false, nameof(SelectMusicTrack) );
                    return;
                }
            }
        }
        else if( GRIOwner.CurrentMusicTrackInfo != none )
        {
            bLoop = GRIOwner.CurrentMusicTrackInfo.bLoop;
        }
    
        // loop if we're designated to loop or this is the boss wave
        if( bLoop || GRIOwner.IsFinalWave() )
        {
            NextMusicTrackInfo = GRIOwner.CurrentMusicTrackInfo;
        }
        else
        {
            KFMI = KFMapInfo(WorldInfo.GetMapInfo());
            if ( KFMI != none )
            {
                NextMusicTrackInfo = KFMI.GetNextMusicTrackByGameIntensity(bPlayActionTrack, GRIOwner.MusicIntensity);
            }
            else
            {
                // Some maps might not be setup correctly, let's just grab a random default song
                NextMusicTrackInfo = class'KFMapInfo'.static.StaticGetRandomTrack(bPlayActionTrack);
            }
        }
    
        OnMusicTrackSelected(NextMusicTrackInfo);
    }
    
    simulated function SelectBossMusicTrack( KFMusicTrackInfo BossTrack )
    {
        OnMusicTrackSelected(BossTrack);
    }
    
    simulated function ForceMusicTrack( KFMusicTrackInfo ForcedTrackInfo )
    {
        local int Index;
        local class<KFGameInfo> KFGameClass;
    
        /** Check if the music being forced is boss music */
        KFGameClass = class<KFGameInfo>(GRIOwner.GameClass);
        if( KFGameClass != None )
        {
            /** Look for the track inside of ForcedMusicTracks inside the GameInfo and if it's not the main menu music then call SelectBossMusicTrack */
            Index = KFGameClass.default.ForcedMusicTracks.Find(ForcedTrackInfo);
            if( Index != INDEX_NONE && KFGameClass.default.ForcedMusicTracks[Index].Name != 'TrackInfo' )
            {
                SelectBossMusicTrack(ForcedTrackInfo);
                return;
            }
        }
    
        OnMusicTrackSelected(ForcedTrackInfo);
    }
    
    defaultproperties
    {
        bAlwaysRelevant=True
        RemoteRole=ROLE_SimulatedProxy
    }
    KFMusicTrackInfo_Custom.uc
    Code:
    class KFMusicTrackInfo_Custom extends KFMusicTrackInfo;
    
    var() AkBaseSoundObject StandardSong;
    var() AkBaseSoundObject InstrumentalSong;
    
    defaultproperties
    {
    }
    Last edited by forrestmark9; 11-09-2017, 06:06 PM.
Working...
X