Team Killer Kick Mutator. Мутатор Автокик за убийство игроков

Team Killer Kick Mutator. Мутатор Автокик за убийство игроков

  • Тема закрыта
  • Вы не можете ответить в тему

Team Killer Kick Mutator. Мутатор Автокик за убийство игроков Team Killer Kick Mutator. Мутатор Автокик за убийство игроков Единственная переменная выведена в TeamKillerKickMut.ini файл Если в течении карты убито больше MaxAllowedToKill игроков - идёт кик на сессию Обновление 03...

Geekrainian #1

    • Группа: Администратор
    • Сообщений: 800

    Отправлено:

    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

    Назад