Team Killer Kick Mutator. Мутатор Автокик за убийство игроков
Единственная переменная выведена в TeamKillerKickMut.ini файл
MaxAllowedToKill
Если в течении карты убито больше MaxAllowedToKill игроков - идёт кик на сессию
class TeamKillerKickMut extends Mutator config(TeamKillerKickMut);
struct killerStruct
{
var PlayerController PC;
var int killed;
};
var array<killerStruct> killers;
var config int MaxAllowedToKill;
function PostBeginPlay()
{
local TKKickGameRules RulesMod;
SaveConfig();
if( RulesMod==None )
RulesMod = Spawn(Class'TKKickGameRules');
RulesMod.mut=self;
if(KFGameType(Level.Game)==None) Destroyed();
SetTimer(1.0,true);
Super.PostBeginPlay();
}
function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
local killerStruct ks;
if( PlayerController(Other)!=None )
{
ks.PC=PlayerController(Other);
killers[killers.Length]=ks;
}
return true;
}
function Timer()
{
local int i;
for(i=0;i<killers.Length;i++)
{
if(killers[i].killed>MaxAllowedToKill)
{
killers[i].killed=0;
SessionKick(killers[i].PC);
}
}
}
function IncreaseKills(PlayerController PC)
{
local int i;
for(i=0;i<killers.Length;i++)
if(killers[i].PC==PC)
killers[i].killed++;
}
function SessionKick(PlayerController PC)
{
local AccessControl Manager;
if (Level.Game.AccessControl != None)
Manager = Level.Game.AccessControl;
Manager.BanPlayer(PC, true);
}
defaultproperties
{
MaxAllowedToKill=5
bAddToServerPackages=True
GroupName="KF-TeamKillerKickMut"
FriendlyName="TeamKillerKickMut"
Description="TeamKillerKickMut"
}
Обновление 03.04.2014
Добавлен массив исключений
В ini файл добавлять элементы массива, типа
ExceptionList=7656119805137844
class TeamKillerKickMut extends Mutator config(TeamKillerKickMut);
struct killerStruct
{
var PlayerController PC;
var int killed;
};
var array<killerStruct> killers;
var config array<string> ExceptionList;
var config int MaxAllowedToKill;
function PostBeginPlay()
{
local TKKickGameRules RulesMod;
SaveConfig();
if( RulesMod==None )
RulesMod = Spawn(Class'TKKickGameRules');
RulesMod.mut=self;
if(KFGameType(Level.Game)==None) Destroyed();
SetTimer(1.0,true);
Super.PostBeginPlay();
}
function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
local killerStruct ks;
if( PlayerController(Other)!=None )
{
ks.PC=PlayerController(Other);
killers[killers.Length]=ks;
}
return true;
}
function Timer()
{
local int i;
for(i=0;i<killers.Length;i++)
{
if(killers[i].killed>MaxAllowedToKill)
{
killers[i].killed=0;
SessionKick(killers[i].PC);
}
}
}
function IncreaseKills(PlayerController PC)
{
local int i;
for(i=0;i<killers.Length;i++)
if(killers[i].PC==PC)
killers[i].killed++;
}
function SessionKick(PlayerController PC)
{
local AccessControl Manager;
if (Level.Game.AccessControl != None)
Manager = Level.Game.AccessControl;
if(!InList(PC.GetPlayerIDHash()))
Manager.BanPlayer(PC, true);
}
function bool InList(string Hash)
{
local int i;
for(i=0;i<ExceptionList.Length;i++)
{
if(Hash~=ExceptionList[i])
return true;
}
return false;
}
defaultproperties
{
ExceptionList(0)=121
MaxAllowedToKill=5
bAddToServerPackages=True
GroupName="KF-TeamKillerKickMut"
FriendlyName="TeamKillerKickMut"
Description="TeamKillerKickMut"
}
В список мутаторв добавляем: TeamKillerKickMut.TeamKillerKickMut