Announcement

Collapse
1 of 2 < >

Privay Policy Update

We’ve updated the Tripwire Privacy Notice under our Policies to be clearer about our use of customer information to come in line with the EU General Data Protection Regulation (GDPR) rules that come into force today (25th May 2018). The following are highlights of our changes:


We’ve incorporated the relevant concepts from the GDPR including joining the EU and Swiss Privacy Shield framework. We’ve added explanations for why and how Tripwire processes customer data and the types of data that we process, as well as information about your data protection rights.



For more information about our privacy practices, please review the new Privacy Policy found here: http://tripwireinteractive.com/policies/privacy-notice
2 of 2 < >

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, "necro 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

[Tutorial] Mutator Essentials

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

  • [Tutorial] Mutator Essentials

    Prerequisites: Creating a basic mutator

    Mutator Essentials

    The mutator actor provides some functions that allow notification of certain events, such as when an actor spawns or a player logs in, allowing the mutator to alter behaviour and attributes of other actors at an appropriate time. Additionally, it inherits all the regular actor functions, some of which are highly useful to take advantage of when writing even the simplest mutator.

    Essential Functions

    PostBeginPlay

    A standard actor function, this is called after the mutator has been spawned. It's useful for (among other thing) initializing variables, spawning necessary actors, and setting an initial timer value. At this point there is no guarantee that a local player exists, so do not depend on being able to access it.

    Code:
    function PostBeginPlay()
    {
    	// Handle initialization here
    }
    Tick

    Another standard actor function, this is called every tick (game loop). At 60fps it'll get called 60 times per second, or once every ~16 milliseconds. It's used frequently by other actors since it allows the actor to constantly perform tasks each frame, allowing updating of variables and such. The argument delta indicates how many seconds the last tick took to execute (for example at 2fps the value should be roughly 0.5 since it takes half a second to render a frame).

    Code:
    function Tick(float delta)
    {
    	// Handle updating of mutator logic here
    }
    Timer

    Another important actor function, this is scheduled to be called by the script. A call to SetTimer() will schedule a call at the delay specified, and can optionally be made to repeat at set intervals.

    Code:
    function PostBeginPlay()
    {
    	SetTimer(0.5, false); // Call timer in half a second, do not repeat (=false)
    }
    
    function Timer()
    {
    	// Handle timer-related stuff here
    }

    Mutator-specific functions

    ModifyPlayer

    Called when a player enters the game, this function allows you to make modifications to the player before it spawns. In order to be compatible with other mutators you must call the superclass implementation of this function, which allows other mutators to handle this call.

    Code:
    function ModifyPlayer(Pawn Other)
    {
    	Other.GiveWeapon("KFMOD.SCARMK17AssaultRifle");
    	Super.ModifyPlayer(Other);
    }
    Mutate

    Useful for debugging and practical use, this function is called when a player enters "mutator <argument string>" in the console. In a multiplayer game it will be called regardless of whether the mutator runs on the client machine or not. As with the above, for compatibility with other mutators you must pass this call on to other mutators in the chain (calling the superclass implementation of this function handles this for you).

    Code:
    function Mutate(string MutateString, PlayerController Sender)
    {
    	if (Caps(MutateString) == "HYPER")
    		Sender.Pawn.Health = 999;
    	
    	Super.Mutate(MutateString, Sender);
    }
    CheckReplacement

    Called whenever an actor is spawned (only applies to those who have their bGameRelevant attribute set to false - this function isn't called for client-side actors such as local effects). Allows you to modify or replace an actor. Useful since you can make changes to an actor just as it is spawning, and not have to worry about it later. Unless you are an advanced user always return with a call to the superclass implementation of this function.

    Code:
    function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
    {
    	if (KFMonster(Other) != None)
    	{
    		KFMonster(Other).Health = 1;
    	}
    
    	return Super.CheckReplacement(Other, bSuperRelevant);
    }

    Adding mutator settings

    If you use the config specifier when declaring instance (non-local) variables, you can modify these variables from the mutator configuration window. A couple of functions are required to inform the game that these settings exist, as well as allowing a detailed description for each setting to be obtained.

    FillPlayInfo

    Called when the game wants to retrieve the list of available settings. You must call the superclass implementation of this function before you do anything else, since it allows us to add our settings to the game.

    Code:
    static function FillPlayInfo(PlayInfo PlayInfo)
    {
    	Super.FillPlayInfo(PlayInfo);
    	PlayInfo.AddSetting(default.RulesGroup, "variableName", "settingDescription", 0, 0, "settingType");
    }
    As you can see above to add a setting to the game you must call PlayInfo.AddSetting() and pass in arguments describing the setting. The variableName property must match the name of the instance variable. The settingDescription property allows you to provide a brief description which is displayed directly next to the input field. The settingType property describes what kind of setting it is, which can be either text (string or numeric data), check (boolean), or select (drop-down select box).

    When using the string type you can specify a string length and/or a value range in an additional argument after settingType. Some examples:

    Code:
    PlayInfo.AddSetting(default.RulesGroup, "bEnabled", "Enabled?", 0, 0, "check");
    PlayInfo.AddSetting(default.RulesGroup, "HealthMax", "Maximum Health", 0, 0, "text");
    PlayInfo.AddSetting(default.RulesGroup, "HealthMax", "Maximum Health", 0, 0, "text", "3;100:200"); // 3 characters maximum, value in the range of 100-200
    When using the select type you must provide an argument after the settingType property in the format of "Value1;Text1;Value2;Text2", for example:

    Code:
    PlayInfo.AddSetting(default.RulesGroup, "StartWep", "Starting weapon", 0, 0, "select", "0;Deagle;1;Bullpup;2;LAR"); // Gives us a list of weapons with values associated
    GetDescriptionText

    This function is called to retrieve a detailed description of a particular setting (when you hover the mouse over the setting). You must call the superclass implementation of this function in order to allow other settings to have their descriptions received.

    Code:
    static function string GetDescriptionText(string SettingName)
    {
    	switch (SettingName)
    	{
    		case "ExampleVar":
    			return "This is the 'long' description for the setting.";
    	}
    	
    	return Super.GetDescriptionText(SettingName);
    }

  • #2
    YAY
    thanks!
    [CENTER][COLOR=Indigo]Whitelist Mutators: [URL="http://forums.tripwireinteractive.com/showthread.php?t=43524"]KFImpossibleF[/URL] | [URL="http://forums.tripwireinteractive.com/showthread.php?p=615054#post615054"]KFNoDosh[/URL]
    Greylist Mutators: [URL="http://forums.tripwireinteractive.com/showthread.php?t=43532"]KFBleedOut[/URL][/COLOR]
    [/CENTER]

    Comment


    • #3
      nice.
      very helpful

      your two guides should be stickied!

      Comment


      • #4
        Noob question.... can I use the same function more than once at differant variables? For instance I'm working with your original posts mutator to regenerate health, I also want to add in that the specimens will regenerate at a different variable in time and I can't figure how to rewrite the if statement for specimen instead of player and if its possible to write it all in one function with separate time frames or do I have to split it into two separate functions and if that's even possible >.<.

        I have never coded in this way, all my coding experience was with Ragnarok Online and that was about 6 years ago before they switched to MySQL. Therefore I have no experience with the unreal engine code and I'm basically starting from scratch again. Any help would be appreciated as I did love writing npc's and the like.

        EDIT: Meant to post this in Basic Mutator thread but I have several tabs open and misposted
        Last edited by RuneHarle; 07-27-2011, 03:19 AM. Reason: wrong place
        [URL="http://steamprofile.com"][IMG]http://badges.steamprofile.com/profile/default/steam/76561198016255721.png[/IMG][/URL]
        Projects: || [URL="http://forums.tripwireinteractive.com/showthread.php?t=73071"]The Dual Wielder[/URL] ||

        Comment


        • #5
          ModifyPlayer executes after I spawn, is there a way to get it executed before clientrestart?

          I want to change something in the inventory, but it should happen before the player respawns. When I change any settings in ClientRestart function, it only changes server side, not client side. That's why I wanted to use modifyplayer, which works for client sides, but it executes too late.

          Or are there perhaps other functions within gametype or playercontroller similair to modifyplayer from mutator that change properties client side only?



          Code:
          ScriptLog: ---> This is State DEAD <---
          
          **** Here are executions inside clientrestart, which only work on server side ****
          
          ScriptLog: ---> This is ClientRestart <---
          
          **** And here is Modify Player, just before I'm dead again ****
          
          ScriptLog: ---> This is State DEAD <---
          Last edited by Dest; 08-02-2011, 08:10 AM.
          [URL="http://mini-url.nl/2GEHJ"][IMG]http://img689.imageshack.us/img689/1696/logotest2c.png[/IMG][/URL]
          [URL="http://mini-url.nl/2GEHJ"][COLOR=Orange][B]D[/B]efence[B]A[/B]lliance [B]2[/B][/COLOR][/URL] for Killing Floor - [URL="http://mini-url.nl/7SSSw"][COLOR="Wheat"]Official Steam Group[/COLOR][/URL] - [URL="http://mini-url.nl/hqZlE"]Download latest test version[/URL]

          Comment


          • #6
            Originally posted by Dest View Post
            ModifyPlayer executes after I spawn, is there a way to get it executed before clientrestart?

            I want to change something in the inventory, but it should happen before the player respawns. When I change any settings in ClientRestart function, it only changes server side, not client side. That's why I wanted to use modifyplayer, which works for client sides, but it executes too late.

            Or are there perhaps other functions within gametype or playercontroller similair to modifyplayer from mutator that change properties client side only?



            Code:
            ScriptLog: ---> This is State DEAD <---
             
            **** Here are executions inside clientrestart, which only work on server side ****
             
            ScriptLog: ---> This is ClientRestart <---
             
            **** And here is Modify Player, just before I'm dead again ****
             
            ScriptLog: ---> This is State DEAD <---
            Shouldn't you try to modifyplayer AS the player spawns instead of BEFORE the player spawns due to before they have no inventory technically?

            www.fluxiservice.com - Friendly, supportive game server host awaiting your arrival.
            >> My Custom Content Archive <<

            Comment


            • #7
              Originally posted by FluX View Post
              Shouldn't you try to modifyplayer AS the player spawns instead of BEFORE the player spawns due to before they have no inventory technically?
              There is a class list with specific inventory. I want to alter this inventory before they spawn. It works when I do it in function clientrestart, but then it'll only works for the host, not on clients.

              I got it working on clients with modifyplayer, but then it gets changed a spawn later, instead of the initial spawn.

              Some people say that modifyplayer works on the initial spawn, but in my case it doesn't..

              Edit: Got it working, replicated the chosen number.
              Last edited by Dest; 08-02-2011, 06:41 PM.
              [URL="http://mini-url.nl/2GEHJ"][IMG]http://img689.imageshack.us/img689/1696/logotest2c.png[/IMG][/URL]
              [URL="http://mini-url.nl/2GEHJ"][COLOR=Orange][B]D[/B]efence[B]A[/B]lliance [B]2[/B][/COLOR][/URL] for Killing Floor - [URL="http://mini-url.nl/7SSSw"][COLOR="Wheat"]Official Steam Group[/COLOR][/URL] - [URL="http://mini-url.nl/hqZlE"]Download latest test version[/URL]

              Comment


              • #8
                How do you access settings that you have added using PlayInfo.AddSetting()?

                Comment

                Working...
                X