• Please make sure you are familiar with the forum rules. You can find them here: https://forums.tripwireinteractive.com/index.php?threads/forum-rules.2334636/

[Mutator] ServerPerksX - Updated ServerPerks for Story Mode + Dynamic Zed Replacement

Surly

Active member
Jun 13, 2009
36
0
Download ServerPerksX v1.33

Older Versions


ServerPerksX v1.3 Changelog
New Features
  • Major revamp of the ZedList replacement system. Now includes global Squad definitions, a custom Monster Collection creation system that can load from the .ini file, a VASTLY improved functionality for Invasion game mode which includes just about everything you could want. This new system automatically generates wave masks on the fly during map changes, and can support different wave sets by difficulty, game length, map, and more.
  • New Features Guide is updated with new information on the ZedList system and its use.
Fixes
  • Moved logging functions for debugging the ZedList system to SRZedList_Debug, so they won't clutter your logs unless you enable them.
  • Fixed a few bugs and optimized a couple of functions for speed in execution.
  • Delegate assignment now occurs client-side, fixing a bug with "no perks" and "can't hold weapons"
  • Fixed an error with the Monster Collection generator which would occur with more than 9 new Zeds (New maximum is unlimited)
  • Fixed the issue with text messages showing player's names twice in the HUD
Debugging/Testing
  • Please change your ZombieListClass variable in ServerPerksX.ini to "ServerPerksXMut.SRZombieList_Debug" if you encounter any bugs, and send me the log files afterwards. I'll fix things as soon as possible.
  • While I try to make these releases as bug-free as possible, I can only test so much on my own. Thanks in advance for any log files or bug reports!

ServerPerksX v1.1 Changelog
Spoiler!


Marco has given his permission for this mutator.

As the StoryGame mode is obviously new and heavily logged, so too is this mutator. I'll try to keep it updated as much as possible until StoryMode is relatively stable. Let me know if you encounter any bugs, and please send me your KillingFloor.log file if you do! This is especially helpful while StoryMode is still so heavily logged.

Thanks.

ServerPerksX
New Features
  • StoryGame (Objective) Mode Support
  • Dynamic Server-Side MonsterCollection selection AND creation
  • Support for custom game modes through dynamic PlayerController/HUD specification
  • Dynamic Server-Side Zed Replacement System for even more customized Story Maps
  • Dynamic Map/Global zed wave generator for specifying which zeds spawn on which wave on which map

Old Features
See this thread. This mutator merely enhances the functionality of Marco's original mutator.


Installation and Use
Installation
  • Simply extract the files into your KillingFloor/System directory
  • This mutator does not overwrite any of the original ServerPerks files, and may be installed simultaneously
Use
  • This mutator may be considered a replacement for ServerPerks, and retains all of the original functionality of ServerPerks while adding new features.
  • ServerPerksX is a completely self-contained mutator and does not extend the original ServerPerks files. If you wish to extend ServerPerksX in your own mod, simply subclass ServerPerksX instead of ServerPerks and recompile. Handily, all of the class definitions are the same. For instance, let us assume that you had previously subclassed KFPCServ in your own mod. With ServerPerksX, all you'll need to do for a successful compile is change EditPackages=ServerPerks to EditPackages=ServerPerksX in your KillingFloor.ini file, and recompile your mod.
  • ServerPerksX cannot be loaded as an active mod at the same time as ServerPerks, this will cause conflicts because ServerPerksX uses the same class definitions. However, you may have both mutators installed at the same time if you'd like to test their differences.
  • If it worked with ServerPerks, it will work with ServerPerksX.
  • If it didn't work with ServerPerks, it probably won't work with ServerPerksX, but I'm willing to fix any bugs from the original ServerPerks anyone brings to my attention.

New Features Guide
New Variables in ServerPerksX.ini
  • MonstersCollection - Somewhat self-explanatory. Leave this blank to let Killing Floor select its own MonsterCollection, otherwise define the classname thusly:
    MonstersCollectionType="KFMod.KFMonstersCollection"
    This definition will become the Default monstercollection, which can be overridden and modified dynamically with the ZedList system, explained further below.
  • ZombieListClass - This defines the subclass of SRZombieList which will be used to load customized spawn waves/replacements. You can freely subclass SRZombieList to any server-side package, whether sent to clients or not, if you wish to offload its functionality. If you define a ZombieList in your own mod, your package will be imported dynamically at runtime with no need of a mutator. ServerPerksXMut.SRZombieList is defined by default.
  • GameTypeAssociates - It's unlikely you'll want to dick with these unless you're making a new game mode, have your own mod which uses GameType-specific HUDs or PlayerControllers, or just want to swap out what HUD/PlayerController is used without compiling ****. In any case, feel free to modify these. In a defined Associate, GameType specifies the associated GameType for the replacement, ClassType specifies the type of class to be replaced (only "HUD" and "PlayerController" are currently supported), ClassName specifies the path to the class used to replace these default classes. Again, any classes defined here will have their packages automatically loaded at runtime without the need of a mutator.

Explaining the ZedList replacement system
Essentially, this sub-system allows server-admins to specify what zeds they want to spawn on which maps without compiling any code, and merely modifying values in the ServerPerksX.ini file. The StoryMode squad system is quite sophisticated compared to older KF code (That Alex Quick guy is pretty good!), so messing with any of it directly could potentially be a nightmare for modders. And because the new spawning system is offloaded to the level designers almost entirely, it compounds the issue of trying to fiddle with the code in order to get the results you want. My hope is that this mutator will stop the almost certain problem of incompatibility between mods which all try to stick their fingers into that pie. This sub-system is modular, and allows modders to make their own replacement systems subclassing ServerPerksXMut.SRZombieList (which is the default, included module)

As of the v1.3 release of ServerPerksX, the ZedList system has been widely expanded for Invasion mode, allowing dynamic, map/difficulty/gamelength based modifications of waves without the need to mess with wavemasks, which the ZedList now generates on the fly every time a map loads.

SRZombieList
A moderately simple module for modifying spawn waves in both game modes. This is the default mode, and intends to be as capable as possible for the majority of people's needs.

Custom Monster Collection
ServerPerksX can now dynamically create and load in a Monster Collection at runtime, which allows you, the modder, to specify new or replacement monsters by simply changing a line in the ServerPerksX.ini file. Monster Collections are the basic list of zombies used by both game modes to spawn waves of zeds in the game, and any modifications to this will be global. The ServerPerksX Monster Collection replacement module lets you selectively specify replacements, or completely override the default MonsterCollectionClass. Default values in ServerPerksX.ini represent the vanilla KFMod version of the Monster Collection, with all the classic zeds.
Spoiler!


Invasion Squads
The Invasion spawning mechanic in ServerPerksX is capable of handling almost any kind of customized spawning patters for Invasion Mode. You may define squads, squad sets, waves, and wave information for both global use and map-specific use. Waves may be targeted at specific game lengths, difficulty modes, or maps, and may define the total number of zeds that wave, the set of monsters which spawn at the beginning of the wave, and even the zeds who accompany the patriarch.

Spoiler!


Story Mode Squads
So as I mentioned, this spawning system is much more sophisticated. Thus, I won't go into terrible details on it in this thread. As the system is still very new and capable of being altered by Tripwire, it wouldn't make much sense to do so now anyway. Let's just get right into it, then.
Spoiler!


SRSimpleList
An extremely simple replacement system designed to outright replace all occurences of one zombie type with another. Still under development.






Feedback, comments, suggestions, ideas, remarks, etcetera are all very welcome!
 
Last edited:
Hey there Surly! This looks really interesting; going to have to play around with this. Also since its based off ServerPerks I assume it will not be compatible side by side with poosh's scrnbalance mod(Also based off serverperks)? If people wanted it, it would be interesting to see the features of these two combined or run parallel until everything is stabilized.
 
Upvote 0
It should be with very, very, very minor tweaks (if any). I'm not familiar with ScrNBalance's code, but the changes here are minimal. It's quite likely they'd be compatible just by changing the GameAssociates in the ServerPerksX.ini file.

It would, however, require a recompile of the code to extend the ServerPerksX classes.

This is actually just a modification to the source of ServerPerks, which is renamed to prevent version mismatch errors. I didn't want to just release a 7.0 version of ServerPerks because it'd be kind of in poor taste, but I could quite easily recompile this as ServerPerks 7, and it would be fully compatible with everything that uses ServerPerks.
 
Upvote 0
If people wanted it, it would be interesting to see the features of these two combined or run parallel until everything is stabilized.
Oh and to comment on this, yes, you could run them in tandem... though honestly, compatibility was one of my primary concerns. If you're using ServerPerks6.1, this can be a drop in replacement and will cause absolutely no bugs (well, theoretically) in Invasion mode. All of the additional changes are modular, and do not affect the native functionality of ServerPerks6.1. In fact, using the default GameAssociates defined in the ini file packed with it, all of the code for Invasion mode is identical. It just adds the ability to swap out new PlayerControllers and HUDs for the new GameMode on the fly (which you can also extend with no incompatibility).

The Controllers are fully branched for forward-compatibility with new gamemodes.

KFPC -> KFPlayerController -> KFPCServ
and
KFPC -> KFPlayerController -> KFPlayerController_Story -> KFPCServ_Story

Likewise for the HUDs.

Now, hypothetically, I could do a:
KFPC -> KFPlayerController -> KFPlayerController_Story -> KFPCServ_DualMode

Which would just work for either... but that class would be awfully ugly and hackish, overloading all of KFPlayerController_Story's functions and calling up to KFPlayerController on Super calls depending on the game mode.

When modding, I guess you have to do ugly things sometimes. I don't know though, that's pretty awful. On the plus side, though, any existing mod could just extend that KFPCServ_DualMode class and have full compatibility with both modes with no new work.

I guess I'll do that for the next version, maybe. If I can get over how god awful it is.
 
Upvote 0
Download ServerPerksX v1.0

Explaining the ZedList replacement system
Essentially, this sub-system allows server-admins to specify what zeds they want to spawn on which maps without compiling any code, and merely modifying values in the ServerPerksX.ini file. The StoryMode squad system is quite sophisticated compared to older KF code (That Alex Quick guy is pretty good!), so messing with any of it directly could potentially be a nightmare for modders. And because the new spawning system is offloaded to the level designers almost entirely, it compounds the issue of trying to fiddle with the code in order to get the results you want. My hope is that this mutator will stop the almost certain problem of incompatibility between mods which all try to stick their fingers into that pie. This sub-system is modular, and allows modders to make their own replacement systems subclassing ServerPerksXMut.SRZombieList (which is the default, included module)

This is amazing. I've been looking for a system like this to dynamically replace zeds for a looong time. I run a custom server and really don't want to use sandbox, so much of my modding has been put on hold until I could work out a way to do this. Even thought of building a KF version of the UT2004 Monster Manager myself, but having the functionality built right into ServerPerks is far more ideal.

I'll definitely be checking this out!
 
Upvote 0
Does this also could help replace the sandbox a bit ?
This makes Sandbox mode obsolete, there's really no reason to use Sandbox with this. You still CAN if you want, but the Zed Replacement system here just inserts your zeds directly into the normal game modes.

This is amazing. I've been looking for a system like this to dynamically replace zeds for a looong time. I run a custom server and really don't want to use sandbox, so much of my modding has been put on hold until I could work out a way to do this. Even thought of building a KF version of the UT2004 Monster Manager myself, but having the functionality built right into ServerPerks is far more ideal.

I'll definitely be checking this out!
Let me know if you have any trouble with it, I'm still very much actively developing it so new features/bug fixes should be relatively quick.
 
Upvote 0
Welcome to the forums!

Marco didn't said he won't update ServerPerks himself. He's just offline. And it is July after all - best month for vacation. Maybe he'll return soon and give us ServerPerks7.

You've done big and good job, but the way you did it is wrong. You've made 2 versions of each base class: one extending class from KFMod, another - from KFStoryGame. For example, you have Marco's KFPCServ extending KFPlayerController and KFPCServ_Story extending KFPlayerController_Story, which in turn extends KFPlayerController. Now imagine that I'll make ScrnBalance to use ServerPerksX. Then I'll be supposed to make 2 classes too: ScrnPlayerController and ScrnPlayerController_Story. But here the chain doesn't end. There are plenty of modded servers, who are extending ScrnBalance, e.g. Forrestmark's and Brutus servers. Each of them also will be supposed to duplicate their code in two classes.

So in the result we will have 2 versions of KFPCServ, 2 versions of ScrnPlayerController and 2 versions of modded ScrnPlayerController. Double amount of classes, which have copy-pasted bodies from each other and without being able to use benefits from object-oriented design. And this is only one class. There are also modified human pawn, HUD etc. Each of them will require the same job to be done.

But at this point the scary story I'm telling you doesn't ends :) Now imagine Tripwire will make some radical changes in KFMod or KFStoryGame packages. And they like to do that. Take, for example, ScoredHeadshot() from the last patch. All modders will be supposed to make changes in their mods and do it TWICE, because they'll have 2 copies of practically the same class.

Don't worry, Surly, it isn't your fault. Tripwire introduced bad, modder-non-friendly concept (again!), which you just continued. TWI shouldn't create story subclasses of player controller, human pawn, HUD etc. at all! All work should be done in KFMod's base classes, when we (modders) wouldn't have problems at all.


The solution is hard, requires extra work, but it is worth of it. You need to create one, unified subclass again, which will support both normal and objective modes.

This is an example, how to make function compatible with both normal and story modes:
Code:
class KFPCServ extends KFPlayerController_Story;

simulated function UpdateHintManagement(bool bUseHints)
{
    if ( KFStoryGameInfo(Level.Game) != none) {
        // objective mode
        super.UpdateHintManagement(bUseHints);
    }
    else {  
        // normal mode - bypass KFPlayerController_Story
        super(KFPlayerController).UpdateHintManagement(bUseHints);
    }
}
This template can be used for all functions that aren't extended in ServerPerks. Modifying extended functions will be harder.

It is a hard job, but if done right, it will bring advantages in the future.

But before doing that job I'm suggesting you to wait for Marco's response.

And one more thing: if ServerPerks will be properly updated to support both normal and objective mode, I'll promise that I'll make ScrnBalance objective-compatible too. I'm tired of stupid AI that can be tricked with simple moves like weld boxes, don't attack the zeds, and they'll won't attack you; or as zerker kite away zed horde far away from the mission objective.
 
Last edited:
Upvote 0
Hi Poosh, I already commented that this is a possibility, but is not forward compatible with future (or even current, like GunGame) game modes since KFPlayerController is the point at which the classes branch.

As I mentioned, in the next version I will include a playercontroller/pawn set which work with both Invasion and Story game modes so that you can Drop-In the replacement if you want. This, however, is a lazy solution to be used as a convenience.

The solution is hard, requires extra work, but it is worth of it. You need to create one, unified subclass again, which will support both normal and objective modes.

This is an example, how to make function compatible with both normal and story modes:
Code:
class KFPCServ extends KFPlayerController_Story;

simulated function UpdateHintManagement(bool bUseHints)
{
    if ( KFStoryGameInfo(Level.Game) != none) {
        // objective mode
        super.UpdateHintManagement(bUseHints);
    }
    else {  
        // normal mode - bypass KFPlayerController_Story
        super(KFPlayerController).UpdateHintManagement(bUseHints);
    }
}
This template can be used for all functions that aren't extended in ServerPerks. Modifying extended functions will be harder.

That is also not the proper way to do what you're suggesting, since it will force TypeCasting. The "proper" way to do this is with delegates, and I'm presently doing that (it's done, actually, but I'm still considering what to do with the HUD). But again, I have to mention that this is not an elegant, or correct way of doing things. The correct way is follow the class branching structure of the source material. While I agree that Killing Floor's source is poorly organized, complaining about the reality of the situation doesn't do you much good.

So at that, yes, the next version of this will include a Dual-Mode playercontroller and pawn which will work for both Invasion and Story modes, for the sake of convenience. However, the GameTypeAssociate system will remain intact to support more game modes. Just because Killing Floor's class hierarchy isn't planned well doesn't mean mine has to be the same way.
 
Upvote 0
GunGame isn't an extension of KFGameType, but Story mode is.
Using delegate functions could be the best, but IIRC UE2 doesn't support them. Purely virtual Object class could be used instead, but I'm not sure, if it would be right in this situation. I used such to make ScrnBalance compatible with SuperZombies mutator (when it used own human pawn class), but it was harder to maintain.

Using "if then else" constructions instead of class hierarchy count lame... in theory. But in practice it will be much easier to maintain, believe me. Theory is one thing, but in real live things happen differently. For example, if you'll design a SQL database, which passes all normalization levels, its performance will be near to zero.
 
Upvote 0
GunGame isn't an extension of KFGameType, but Story mode is.
Right, which is why there needs to be a way to define new playercontrollers as necessary. That's all I meant. Still, if KF gets another game mode in the future we can probably expect it to extend KFGameType again, and in that case... no matter how clever you are, you're screwed for compatibility unless you do something different.
Using delegate functions could be the best, but IIRC UE2 doesn't support them. Purely virtual Object class could be used instead, but I'm not sure, if it would be right in this situation. I used such to make ScrnBalance compatible with SuperZombies mutator (when it used own human pawn class), but it was harder to maintain.
Well, it's how I handled the issue. I'm far more familiar with UE3 than 2, but delegates were introduced in 2. It wasn't until UE3 that they were capable of being stored as variables, though. That would have been REALLY nice for this particular assignment, but it worked out. Oh, I just uploaded the new version. There is only a single KFPCServ and SRHumanPawn class in it now, which works for both modes, and can be extended exactly as they could be in ServerPerks6.1 with the added benefit of working for Story Mode.

As an added benefit, anyone extending these new classes will have the option of overloading GameMode-Specific functions, or the Global function (default) to apply to both. In other words, previously extended code is applied to both modes. All without bogging things down with State code or TypeCasting every single time a function is called. The delegates are set up via replication at the creation of pawns and controllers.

Using "if then else" constructions instead of class hierarchy count lame... in theory. But in practice it will be much easier to maintain, believe me. Theory is one thing, but in real live things happen differently. For example, if you'll design a SQL database, which passes all normalization levels, its performance will be near to zero.
Right, well, thanks for the suggestion and comments. It was most helpful to see that there is demand for a true drop-in replacement rather than something which merely provides a means of defining playercontrollers for various game modes. This new version is as efficient as such a thing can be in UE2 and only eats up about 10kb more memory. As far as performance, it's undetectable. So I guess it's a success.

Thanks again!
 
Last edited:
Upvote 0
Checked code a bit. This will cause compatibility issues:

Code:
simulated function PreBeginPlay()
{
	if( Role==ROLE_Authority && Level!=none && Level.Game!=none )
	{
		switch(Level.Game.Class)
		{
		case class'KFMod.KFGameType' :
			GameName='Invasion';
			break;
		case class'KFStoryGame.KFStoryGameInfo' :
			GameName='Story';
			break;
		//case for gungame
		default :
			GameName='';
		}
		SetupDelegates(GameName);
	}
	Super.PreBeginPlay();
}
If modder extended KFGameType just to alter some functions of normal KF game, it will be incompatible with SPX. I'm suggesting to write it like this:

Code:
simulated function PreBeginPlay()
{
	if( Role==ROLE_Authority && Level!=none && Level.Game!=none )
	{
		if ( ClassIsChildOf(Level.Game.Class, class'KFStoryGame.KFStoryGameInfo' ) ) 
			GameName='Story';
		else if ( ClassIsChildOf(Level.Game.Class, class'KFMod.KFGameType' ) )
			GameName='Invasion';
		else
			GameName='';

		SetupDelegates(GameName);
	}
	Super.PreBeginPlay();
}
 
Upvote 0
And please just copy-paste the following code into KFPCServ:

Spoiler!


It allows to use asset references (e.g. MeshRef) in custom weapons
 
Last edited:
Upvote 0
Checked code a bit. This will cause compatibility issues:
Spoiler!
If modder extended KFGameType just to alter some functions of normal KF game, it will be incompatible with SPX. I'm suggesting to write it like this:

Code:
simulated function PreBeginPlay()
{
	if( Role==ROLE_Authority && Level!=none && Level.Game!=none )
	{
		if ( ClassIsChildOf(Level.Game.Class, class'KFStoryGame.KFStoryGameInfo' ) ) 
			GameName='Story';
		else if ( ClassIsChildOf(Level.Game.Class, class'KFMod.KFGameType' ) )
			GameName='Invasion';
		else
			GameName='';

		SetupDelegates(GameName);
	}
	Super.PreBeginPlay();
}
Good idea, done.

And please just copy-paste the following code into KFPCServ:

Spoiler!


It allows to use asset references (e.g. MeshRef) in custom weapons

I did this, but altered it a little to make it a little easier to load projectile assets while we're at it (I had something similar in a mod I'm working on, so I just made SPX compatible with it). Here's the alterations, I don't think it should make any difference to custom weapons (I just split the projectile loading/unloading to a separate function):
Spoiler!

Both are reflected in the ServerPerksXv1.11 download, and the source now.
 
Last edited:
Upvote 0
can this mutator up the LV to254

can this mutator up the LV to254

can this mutator up the LV to254URL="https://dl.dropboxusercontent.com/u/175212805/ServerPerksX_v13.rar"]Download ServerPerksX v1.30[/URL][/SIZE]
Download ServerPerksX v1.30 Source

Older Versions


ServerPerksX v1.3 Changelog
New Features
  • Major revamp of the ZedList replacement system. Now includes global Squad definitions, a custom Monster Collection creation system that can load from the .ini file, a VASTLY improved functionality for Invasion game mode which includes just about everything you could want. This new system automatically generates wave masks on the fly during map changes, and can support different wave sets by difficulty, game length, map, and more.
  • New Features Guide is updated with new information on the ZedList system and its use.
Fixes
  • Moved logging for debugging the ZedList system to SRZedList_Debug, so they won't clutter your logs unless you enable them.
  • Fixed a few bugs and optimized a couple of functions for speed in execution.
Debugging/Testing
  • Please change your ZombieListClass variable in ServerPerksX.ini to "ServerPerksXMut.SRZombieList_Debug" if you encounter any bugs, and send me the log files afterwards. I'll fix things as soon as possible.
  • While I try to make these releases as bug-free as possible, I can only test so much on my own. Thanks in advance for any log files or bug reports!

ServerPerksX v1.1 Changelog
Spoiler!


I sent Marco a PM about updating ServerPerks a few days ago for the new game mode, and let him know that I would be happy to do so if he had no plans on it. Given his lack of response, I imagine that means he has no intentions to do so.

So I've taken the liberty of updating ServerPerks v6.1 for the new StoryGame mode. This modification of ServerPerks also expands its features by adding a new system for servers to modify Zed waves in both Invasion and Story game modes, specify GameMode-Specific PlayerController and HUD classes, specify a MonsterCollection (to enable event zeds if you want), and specify a ZombieList sub-system (if you want to write your own Zed-Replacement class). All of this while retaining all of the original ServerPerks functionality and adding no new client-side files other than the new HUD and PlayerController classes.

As the StoryGame mode is obviously new and heavily logged, so too is this mutator. I'll try to keep it updated as much as possible until StoryMode is relatively stable. Let me know if you encounter any bugs, and please send me your KillingFloor.log file if you do! This is especially helpful while StoryMode is still so heavily logged.

Thanks.

ServerPerksX
New Features
  • StoryGame (Objective) Mode Support
  • Dynamic Server-Side MonsterCollection selection
  • Support for custom game modes through dynamic PlayerController/HUD specification
  • Dynamic Server-Side Zed Replacement System for even more customized Story Maps

Old Features
See this thread. This mutator merely enhances the functionality of Marco's original mutator.


Installation and Use
Installation
  • Simply extract the files into your KillingFloor/System directory
  • This mutator does not overwrite any of the original ServerPerks files, and may be installed simultaneously
Use
  • This mutator may be considered a replacement for ServerPerks, and retains all of the original functionality of ServerPerks while adding new features.
  • ServerPerksX is a completely self-contained mutator and does not extend the original ServerPerks files. If you wish to extend ServerPerksX in your own mod, simply subclass ServerPerksX instead of ServerPerks and recompile. Handily, all of the class definitions are the same. For instance, let us assume that you had previously subclassed KFPCServ in your own mod. With ServerPerksX, all you'll need to do for a successful compile is change EditPackages=ServerPerks to EditPackages=ServerPerksX in your KillingFloor.ini file, and recompile your mod.
  • ServerPerksX cannot be loaded as an active mod at the same time as ServerPerks, this will cause conflicts because ServerPerksX uses the same class definitions. However, you may have both mutators installed at the same time if you'd like to test their differences.
  • If it worked with ServerPerks, it will work with ServerPerksX.
  • If it didn't work with ServerPerks, it probably won't work with ServerPerksX, but I'm willing to fix any bugs from the original ServerPerks anyone brings to my attention.

New Features Guide
New Variables in ServerPerksX.ini
  • MonstersCollection - Somewhat self-explanatory. Leave this blank to let Killing Floor select its own MonsterCollection, otherwise define the classname thusly:
    MonstersCollectionType="KFMod.KFMonstersCollection"
    This definition will become the Default monstercollection, which can be overridden and modified dynamically with the ZedList system, explained further below.
  • ZombieListClass - This defines the subclass of SRZombieList which will be used to load customized spawn waves/replacements. You can freely subclass SRZombieList to any server-side package, whether sent to clients or not, if you wish to offload its functionality. If you define a ZombieList in your own mod, your package will be imported dynamically at runtime with no need of a mutator. ServerPerksXMut.SRZombieList is defined by default.
  • GameTypeAssociates - It's unlikely you'll want to dick with these unless you're making a new game mode, have your own mod which uses GameType-specific HUDs or PlayerControllers, or just want to swap out what HUD/PlayerController is used without compiling ****. In any case, feel free to modify these. In a defined Associate, GameType specifies the associated GameType for the replacement, ClassType specifies the type of class to be replaced (only "HUD" and "PlayerController" are currently supported), ClassName specifies the path to the class used to replace these default classes. Again, any classes defined here will have their packages automatically loaded at runtime without the need of a mutator.

Explaining the ZedList replacement system
Essentially, this sub-system allows server-admins to specify what zeds they want to spawn on which maps without compiling any code, and merely modifying values in the ServerPerksX.ini file. The StoryMode squad system is quite sophisticated compared to older KF code (That Alex Quick guy is pretty good!), so messing with any of it directly could potentially be a nightmare for modders. And because the new spawning system is offloaded to the level designers almost entirely, it compounds the issue of trying to fiddle with the code in order to get the results you want. My hope is that this mutator will stop the almost certain problem of incompatibility between mods which all try to stick their fingers into that pie. This sub-system is modular, and allows modders to make their own replacement systems subclassing ServerPerksXMut.SRZombieList (which is the default, included module)

As of the v1.3 release of ServerPerksX, the ZedList system has been widely expanded for Invasion mode, allowing dynamic, map/difficulty/gamelength based modifications of waves without the need to mess with wavemasks, which the ZedList now generates on the fly every time a map loads.

SRZombieList
A moderately simple module for modifying spawn waves in both game modes. This is the default mode, and intends to be as capable as possible for the majority of people's needs.

Custom Monster Collection
ServerPerksX can now dynamically create and load in a Monster Collection at runtime, which allows you, the modder, to specify new or replacement monsters by simply changing a line in the ServerPerksX.ini file. Monster Collections are the basic list of zombies used by both game modes to spawn waves of zeds in the game, and any modifications to this will be global. The ServerPerksX Monster Collection replacement module lets you selectively specify replacements, or completely override the default MonsterCollectionClass. Default values in ServerPerksX.ini represent the vanilla KFMod version of the Monster Collection, with all the classic zeds.
Spoiler!


Invasion Squads
The Invasion spawning mechanic in ServerPerksX is capable of handling almost any kind of customized spawning patters for Invasion Mode. You may define squads, squad sets, waves, and wave information for both global use and map-specific use. Waves may be targeted at specific game lengths, difficulty modes, or maps, and may define the total number of zeds that wave, the set of monsters which spawn at the beginning of the wave, and even the zeds who accompany the patriarch.

Spoiler!


Story Mode Squads
So as I mentioned, this spawning system is much more sophisticated. Thus, I won't go into terrible details on it in this thread. As the system is still very new and capable of being altered by Tripwire, it wouldn't make much sense to do so now anyway. Let's just get right into it, then.
Spoiler!


SRSimpleList
An extremely simple replacement system designed to outright replace all occurences of one zombie type with another. Still under development.






Feedback, comments, suggestions, ideas, remarks, etcetera are all very welcome![/QUOTE]

can this mutator uped LV to 254,why i ask,i used serverperks but it could not uped the LV while i uped to 71,i always set the max LV254
 
Upvote 0