Перейти к содержанию

Мутаторы

Мутаторы для Killing Floor

109 файлов

  1. Мутатор Web Admin Cyrillic

    Описание:
    Мутатор Web Admin Cyrillic v2 - Мутатор исправляет кодировку сообщений, отправленных из WebAdmin.

    Установка:
    Перед тем как запускать сервер с мутатором нам нужно зайти в файл UWeb.int который находится в папке System и поменять там кодировку в этом файле.

    Находим строку:
    [WebResponse]
    CharSet="iso-8859-1"

    Редактируем:
    [WebResponse]
    CharSet="windows-1251"

    Код мутатора Web Admin Cyrillic v2:
    WebAdminCyrillicMutv2.WebAdminCyrillicMut

    13 раз скачали

    Updated

  2. нанесёный урон/Popup Damage

    Popup Damage - данный мутатор показывает сколько было нанесено мобу урона при попадании.
     

    Код чтобы добавить мутатор в ServerPerks:
    PyDamagePopupKF.mutDamagePopup

    151 раз скачали

    Submitted

  3. Новое меню магазина/ Custom Buy Shop

    Custom Buy Shop - это измененное меню магазина. Добавлены кнопки, разделяющие оружие по классам.
     
    Код мутатора Custom Shop Buy:
    CustomBuyMenu.CBMMutator

    65 раз скачали

    Submitted

  4. Оружие остаётся на месте/WeaponStay

    WeaponStay - позволяет оружию всегда оставаться на своем месте, даже после смены волн.
     
    Код для активации мутатора:
    KFWeaponStay.WepStay

    69 раз скачали

    Submitted

  5. Submitted

  6. Перк пулеметчик

    Новый перк для сервера - пулеметчик. Перк имеет свою иконку уровней 0-6 - красная, а после золотая, у торговца пулемёты привязаны к иконке.


    568 раз скачали

    Updated

  7. Привязка IP (или серий IP) к одному ID. Отсекаем читеров меняющих ID

    Мутатор проверяет ini файл в котором прописаны пары ID игрока <-> IP игрока
    То есть, если определённый игрок зашёл под странным IP, то ему доступ к игре будет закрыт
    Изменить свой ID - сейчас не проблема, изменить свой IP - никогда не проблема, но подогнать пару ID+IP куда сложнее
     
    Настройки:
     
    Параметр ComparedBlocks - количество сравниваемых чисел используемых в IP

    Например, пусть есть два IP
    IP №1 = "121.45.22.15" и IP №2 = "121.45.41.15"

    Eсли ComparedBlocks=1, то будут сравниваться только 1 числа каждого IP - а именно 121 и 121
    Они равны и поэтому два IP считаются равными

    Если ComparedBlocks=2, то сравниваться будут вначале 121 и 121, потом 45 и 45
    В обоих случаях равенство. Значит эти IP равны и при ComparedBlocks=2

    А вот при ComparedBlocks=3 IP уже не равны
    121==121, 45==45, но 22!=41

    Какое значение ставить для ComparedBlocks - дело ваше
    По мне так оптимальны значения 2 или 3

    Следующий параметр ForumLink - ссылка на форум или страничку соцсети (или ещё куда) ваших серверов
    Там вы можете обсудить с игроком его IP. Некоторые же заходят с разных компов в игру (работа/дом/...) и IP могут отличаться очень значительно.
    Ниже я напишу, как добавлять для одного игрока несколько возможных IP
     
     
    И главная часть ini файла - элементы массива SecurePairList
     
    SecurePairList=(PlayerName="Sgt.McNeal",PlayerIP="192.168.0.101",PlayerID="76555555555555555")
     
    Здесь вроде всё понятно. Переменная PlayerName может быть любой - она тут только для удобства
    Переменная PlayerIP должна задавать IP, PlayerID - задавать ID игрока
     
    Если мы хотим добавить игроку несколько возможных IP пишем так
     
    SecurePairList=(PlayerName="Sgt.McNeal",PlayerIP="192.168.0.101",PlayerID="76555555555555555")
    SecurePairList=(PlayerName="Sgt.McNeal",PlayerIP="123.131.2.21",PlayerID="76555555555555555")
    SecurePairList=(PlayerName="Sgt.McNeal",PlayerIP="54.121.11.81",PlayerID="76555555555555555")
     
    То есть если мы так пропишем Sgt.McNeal настройки и поставим ComparedBlocks=2, то в игру будут допущены все
    игроки с ID=76555555555555555 и с IP=192.168.xxx.xxx, 123.131.xxx.xxx, 54.121.xxx.xxx
     
    Внешняя программа для конвертации (лежит в общем архиве):
     
    Для тех у кого удалённая база - вам не повезло. По умолчанию в неё не пишутся IP игроков. Поэтому ждите
    следующую версию мутатора, которая будет обновлять список пар IP-ID по мере захода игроков на сервера
    Те же у кого локальная база - вот вам программа, которая конвертирует вашу базу в ini файл мутатора.

    Инструкция:
    Кидаем файл ServerPerksStat.ini в папку с программой, запускаем, получаем SecurePairMut.ini со всеми выдранными
    парами. Копируем SecurePairMut.ini на сервер к мутатору.

    Текст сообщения в табличке можете поправить сами в файле SecurePairMessage.uc
     
    Код:
     
    class SecurePairMut extends Mutator config(SecurePairMut);

    var array<PlayerController> PendingPlayers;

    struct SecurePairStruct
    {
        var config string PlayerID;
        var config string PlayerName;
        var config string PlayerIP;
    };
    var config array<SecurePairStruct> SecurePairList;
    var config int ComparedBlocks;
    var config string ForumLink;

    function PostBeginPlay()
    {
        SaveConfig();
    }

    function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
    {
        if( PlayerController(Other)!=None )
        {
            PendingPlayers[PendingPlayers.Length] = PlayerController(Other);
            SetTimer(0.1,false);
        }
        return true;
    }

    function Timer()
    {
        local string PlayerID,PlayerIP,PlayerName,tmpString;
        while( PendingPlayers.Length>0 )
        {
            PlayerID=PendingPlayers[0].GetPlayerIDHash();
            Divide(PendingPlayers[0].GetPlayerNetworkAddress(),":",PlayerIP,tmpString);
            PlayerName=PendingPlayers[0].PlayerReplicationInfo.PlayerName;
            if(IPIsDifferent(PlayerID,PlayerIP,ComparedBlocks))
                CallMessageBox(PendingPlayers[0]);
            PendingPlayers.Remove(0,1);
        }
    }

    function bool IPIsDifferent(string PlayerID, string PlayerIP, int N)
    {
        local int i;
        local int counter;
        for(i=0;i<SecurePairList.Length;i++)
        {
            if(SecurePairList[i].PlayerID~=PlayerID)
            {
                if(SimilarIP(SecurePairList[i].PlayerIP,PlayerIP,N))
                    return false;
                else
                    counter++;
            }
        }
        if(counter>0)
            return true;
        return false;
    }

    function bool SimilarIP(string PlayerIP1, string PlayerIP2, int N)
    {
        local array<string> ip1,ip2;
        local int i;
        Split(PlayerIP1, ".", ip1);
        Split(PlayerIP2, ".", ip2);
        for(i=0;i<N;i++)
        {
            if(ip1[i]!=ip2[i])
                return false;
        }
        return true;
    }

    function CallMessageBox(PlayerController PC)
    {
        KFPlayerController(PC).ClientOpenMenu("SecurePairMut.SecurePairMessage",,ForumLink);
    }

    defaultproperties
    {
        ComparedBlocks=2
        ForumLink="http://killingfloor.ru/forum/index.php?/topic/4119-priviazka-ip-ili-serii-ip-k-odnomu-id-otsekaem-chiterov/"
        SecurePairList(0)=(PlayerName="Sgt.McNeal",PlayerID="76561197960265728",PlayerIP="123.121.126.112")
        bAddToServerPackages=True
        GroupName="KF-SecurePair"
        FriendlyName="SecurePair"
        Description="SecurePair"
     
    class SecurePairMessage extends UT2K4GUIPage;
    var int tickNumber;
    var string ForumLink;

    event Opened(GUIComponent Sender)
    {
        tickNumber=0;
        SetTimer(10,true);
        Super.Opened(Sender);
    }

    event HandleParameters(string Param1, string Param2)
    {
        ForumLink=Param1;
        Super.HandleParameters(Param1,Param2);
    }

    event Timer()
    {
        if(tickNumber>=3)
            MyOnClose();
        tickNumber++;
    }

    function bool DisconnectClick(GUIComponent Sender)
    {
        local GUIController C;
        C = Controller;
        C.ViewportOwner.Console.ConsoleCommand("Disconnect");
        return true;
    }

    function bool VizitForumClick(GUIComponent Sender)
    {
        local GUIController C;
        C = Controller;
        C.ViewportOwner.Console.ConsoleCommand("start"@ForumLink);
        return true;
    }

    function MyOnClose(optional bool bCanceled)
    {
        DisconnectClick(self);
    }

    defaultproperties
    {
        bRenderWorld=True
        bAllowedAsLast=True
        OnClose=SecurePairMessage.MyOnClose
        Begin Object Class=FloatingImage Name=FloatingFrameBackground
            Image=Texture'2K4Menus.BkRenders.Bgndtile'
            DropShadow=None
            ImageStyle=ISTY_Stretched
            ImageRenderStyle=MSTY_Normal
            WinTop=0.020000
            WinLeft=0.000000
            WinWidth=1.000000
            WinHeight=0.980000
            RenderWeight=0.000003
        End Object
        Controls(0)=FloatingFrameBackground

        Begin Object Class=GUIHeader Name=TitleBar
            bUseTextHeight=True
            Caption="Strange IP! / Странный IP!"
            WinHeight=0.043750
            RenderWeight=0.100000
            bBoundToParent=True
            bScaleToParent=True
            bAcceptsInput=True
            bNeverFocus=False
            ScalingType=SCALE_X
        End Object
        Controls(1)=TitleBar

        Begin Object Class=GUILabel Name=RulesLabel1
            Caption="Attention! / Внимание!"
            TextColor=(B=0,R=255,G=0)
            WinTop=0.100000
            WinLeft=0.340000
            WinWidth=0.460000
            WinHeight=20.000000
            bBoundToParent=True
        End Object
        Controls(2)=RulesLabel1

        Begin Object Class=GUIButton Name=DisconnectButton
            Caption="Disconnect / Отключиться"
            WinTop=0.620000
            WinLeft=0.240000
            WinWidth=0.240000
            OnClick=SecurePairMessage.DisconnectClick
            OnKeyEvent=DisconnectButton.InternalOnKeyEvent
        End Object
        Controls(3)=DisconnectButton

        Begin Object Class=GUIButton Name=VisitForumButton
            Caption="Visit Forum / Форум"
            WinTop=0.620000
            WinLeft=0.520000
            WinWidth=0.240000
            OnClick=SecurePairMessage.VizitForumClick
            OnKeyEvent=VisitForumButton.InternalOnKeyEvent
        End Object
        Controls(4)=VisitForumButton

        Begin Object Class=GUILabel Name=RulesLabel2
            Caption=""
            TextColor=(B=255,G=255,R=255)
            WinTop=0.200000
            WinLeft=0.070000
            WinWidth=0.460000
            WinHeight=20.000000
            bBoundToParent=True
        End Object
        Controls(5)=RulesLabel2

        Begin Object Class=GUILabel Name=RulesLabel3
            Caption="You entered game under unusual IP"
            TextColor=(B=255,G=255,R=255)
            WinTop=0.250000
            WinLeft=0.070000
            WinWidth=0.460000
            WinHeight=20.000000
            bBoundToParent=True
        End Object
        Controls(6)=RulesLabel3

        Begin Object Class=GUILabel Name=RulesLabel4
            Caption=""
            TextColor=(B=255,G=255,R=255)
            WinTop=0.300000
            WinLeft=0.070000
            WinWidth=0.460000
            WinHeight=20.000000
            bBoundToParent=True
        End Object
        Controls(7)=RulesLabel4

        Begin Object Class=GUILabel Name=RulesLabel5
            Caption="Contact admin and discuss your new IP"
            TextColor=(B=255,G=255,R=255)
            WinTop=0.350000
            WinLeft=0.070000
            WinWidth=0.460000
            WinHeight=20.000000
            bBoundToParent=True
        End Object
        Controls(8)=RulesLabel5

        Begin Object Class=GUILabel Name=RulesLabel6
            Caption=""
            TextColor=(B=255,G=255,R=255)
            WinTop=0.450000
            WinLeft=0.070000
            WinWidth=0.460000
            WinHeight=20.000000
            bBoundToParent=True
        End Object
        Controls(9)=RulesLabel6

        Begin Object Class=GUILabel Name=RulesLabel7
            Caption="Вы зашли под необычным IP"
            TextColor=(B=255,G=255,R=255)
            WinTop=0.500000
            WinLeft=0.070000
            WinWidth=0.460000
            WinHeight=20.000000
            bBoundToParent=True
        End Object
        Controls(10)=RulesLabel7

        Begin Object Class=GUILabel Name=RulesLabel8
            Caption=""
            TextColor=(B=255,G=255,R=255)
            WinTop=0.550000
            WinLeft=0.070000
            WinWidth=0.460000
            WinHeight=20.000000
            bBoundToParent=True
        End Object
        Controls(11)=RulesLabel8

        Begin Object Class=GUILabel Name=RulesLabel9
            Caption="Обсудите с админом ваш новый IP"
            TextColor=(B=255,G=255,R=255)
            WinTop=0.600000
            WinLeft=0.070000
            WinWidth=0.460000
            WinHeight=20.000000
            bBoundToParent=True
        End Object
        Controls(12)=RulesLabel9

        WinTop=0.275000
        WinLeft=0.200000
        WinWidth=0.600000
        WinHeight=0.450000
    }
     
     
    Прописать как :

    SecurePairMut.SecurePairMut
     
     

    18 раз скачали

    Submitted

  8. Сварка брони

    Этот мутатор позволяет заваривать бронь.

    Выбор сварки:
    1) Сварка брони доступна только техникам(Support), заварить броню можно только при наличии 1% или более.
    weldarmorsupport
    2) Возможность варить турели Portal Turret, только если есть броня у игрока, больше функций в конфиге.
    weldarmor_v5
    3) Можно варить туррели и туррель из RPG мода, сообщение о сварке появляется у игрока, которому варят бронь.
    weldarmor_v10

    Описание конфига:
    [WeldArmor_v5.WeldFireEx]
    CashSupport10=7 - размер денежного вознаграждения для перка поддержки за сварку брони, если брони осталось <10
    CashSupport=4 - размер денежного вознаграждения для перка поддержки за сварку брони
    CashUsual=3 - размер денежного вознаграждения для всех остальных перков
    DivShieldSupport=6.6 - делитель заварки брони для перка поддержки - чем число меньше, тем варит быстрее
    DivShield=6.6 - делитель заварки брони для всех остальных перков - чем число меньше, тем варит быстрее
    DivTurretSupport=7.8 - делитель починки туррели для перка поддержки - чем число меньше, тем восстанавливает туррель быстрее
    DivTurret=10.8 - делитель починки туррели для всех остальных перков - чем число меньше, тем восстанавливает туррель быстрее
     
    Установка:
    В файле "KillingFloor.ini" в разделе [Engine.GameEngine]
    добавить строчку ServerPackages=WeldArmor
    В ".bat" файле запуска сервера дописать в строку Mutator="WeldArmor.WeldArmor"

    184 раза скачали

    Updated

  9. Техника

    Данный мутатор вносит разнообразие в игровой процесс, добавляя в игру всевозможную технику(машины,вертолёты и т.д.).
     

    178 раз скачали

    Submitted

×
×
  • Создать...