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

Мутаторы

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

109 файлов

  1. KFPatKiller

    Благодаря этому мутатору для всех игроков высвечивается сообщение, в котором написано, кто убил Патриарха.
     
    Код для MutLoader: KFPatKiller.KFPatKiller

    126 раз скачали

    Submitted

  2. Исправление русских имен в игре

    Мутатор исправляет стимовские русские крякозябренные имена
     
     
    Код:
     
     
    class FixSteamRusNameMut extends Mutator;
    //Мутатор исправляет стимовские русские крякозябренные имена
    var array<KFPlayerController> PendingPlayers;

    //Отлавливаем приходящих на сервер игроков
    function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
    {
        if(KFPlayerController(Other)!=None)
        {
            PendingPlayers[PendingPlayers.Length] = KFPlayerController(Other);
            SetTimer(0.1,false);
        }
        return true;
    }

    //Прошла 0.1 секунда после появления контроллера и класс PlayerReplicationInfo для этого контроллера уже заполнен
    //Пора править полученное имя
    function Timer()
    {
        local int i;
        for(i=0;i<PendingPlayers.Length;i++)
            CheckAndFixName(PendingPlayers[i]);
        PendingPlayers.Length = 0;
    }

    //Тут ничего и не делается полезного. Только вызов функции и закрепление нового имени в PlayerReplicationInfo
    function CheckAndFixName(KFPlayerController KFPC)
    {
        local PlayerReplicationInfo PRI;
        local string playerName, fixedName;
        if(KFPC==none) return;
        PRI=KFPC.PlayerReplicationInfo;
        if(PRI==none) return;
        playerName=PRI.PlayerName;
        fixedName=ConvertSteamString(playerName);
        if(fixedName!=playerName)
            KFPC.PlayerReplicationInfo.PlayerName=fixedName;
    }

    //Всё ценное в этих 2х функциях. В этой, например, мы на вход получаем имя и посимвольно глядим коды
    //Все крякозябренные конвертируем
    function string ConvertSteamString(string msg)
    {
        local int i;
        local string tmp;
        local string result;
        local int code;
        tmp=msg;
        for(i=0; i<Len(msg); i++)
        {
            code=Asc(tmp);
            if(code==1056 || code==1057)
            {
                tmp=Mid(tmp,1);
                continue;
            }
            code=FixCode(code);
            if(code>167)
                code+=848;
            if(i==0) result=Chr(code);
            else result=result$Chr(code);
            tmp=Mid(tmp,1);
        }
        return result;
    }

    //Перекодировка из того набора символов что передаёт стим в нужный нам
    function int FixCode(int code)
    {
        switch(code)
        {
            case 176:    return 224;
            case 177:    return 225;
            case 1030:    return 226;
            case 1110:    return 227;
            case 1169:    return 228;
            case 181:    return 229;
            case 8216:    return 184;
            case 182:    return 230;
            case 183:    return 231;
            case 1105:    return 232;
            case 8470:    return 233;
            case 1108:    return 234;
            case 187:    return 235;
            case 1112:    return 236;
            case 1029:    return 237;
            case 1109:    return 238;
            case 1111:    return 239;
            case 1026:    return 240;
            case 1027:    return 241;
            case 8218:    return 242;
            case 1107:    return 243;
            case 8222:    return 244;
            case 8230:    return 245;
            case 8224:    return 246;
            case 8225:    return 247;
            case 8364:    return 248;
            case 8240:    return 249;
            case 1033:    return 250;
            case 8249:    return 251;
            case 1034:    return 252;
            case 1036:    return 253;
            case 1035:    return 254;
            case 1039:    return 255;
            case 1106:    return 192;
            case 8216:    return 193;
            case 8217:    return 194;
            case 8220:    return 195;
            case 8221:    return 196;
            case 8226:    return 197;
            case 1027:    return 168;
            case 8211:    return 198;
            case 8212:    return 199;
            case 152:    return 200;
            case 8482:    return 201;
            case 1113:    return 202;
            case 8250:    return 203;
            case 1114:    return 204;
            case 1116:    return 205;
            case 1115:    return 206;
            case 1119:    return 207;
            case 160:    return 208;
            case 1038:    return 209;
            case 1118:    return 210;
            case 1032:    return 211;
            case 164:    return 212;
            case 1168:    return 213;
            case 166:    return 214;
            case 167:    return 215;
            case 1025:    return 216;
            case 169:    return 217;
            case 1028:    return 218;
            case 171:    return 219;
            case 172:    return 220;
            case 173:    return 221;
            case 174:    return 222;
            case 1031:    return 223;
        }
        return code;
    }

    /*
    а    176        224
    б    177        225
    в    1030    226
    г    1110    227
    д    1169    228
    е    181        229
    ё    8216    184
    ж    182        230
    з    183        231
    и    1105    232
    й    8470    233
    к    1108    234
    л    187        235
    м    1112    236
    н    1029    237
    о    1109    238
    п    1111    239
    р    1026    240
    с    1027    241
    т    8218    242
    у    1107    243
    ф    8222    244
    х    8230    245
    ц    8224    246
    ч    8225    247
    ш    8364    248
    щ    8240    249
    ъ    1033    250
    ы    8249    251
    ь    1034    252
    э    1036    253
    ю    1035    254
    я    1039    255

    А    1106    192
    Б    8216    193
    В    8217    194
    Г    8220    195
    Д    8221    196
    Е    8226    197
    Ё    1027    168
    Ж    8211    198
    З    8212    199
    И    152        200
    Й    8482    201
    К    1113    202
    Л    8250    203
    М    1114    204
    Н    1116    205
    О    1115    206
    П    1119    207
    Р    160        208
    С    1038    209
    Т    1118    210
    У    1032    211
    Ф    164        212
    Х    1168    213
    Ц    166        214
    Ч    167        215
    Ш    1025    216
    Щ    169        217
    Ъ    1028    218
    Ы    171        219
    Ь    172        220
    Э    173        221
    Ю    174        222
    Я    1031    223
    */

    defaultproperties
    {
        bAddToServerPackages=True
        GroupName="KF-FixSteamRusName"
        FriendlyName="FixSteamRusNameMut"
        Description="FixSteamRusNameMut"
     
     
    Путь к мутатору:
    FixSteamRusNameMut.FixSteamRusNameMut

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

    Updated

  3. Привязка 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

  4. Выдача оружия по ID

    В инишник забивается массив структур в стиле
    VipList=(PlayerID="76561198051378",PlayerName="Sgt.McNeal",SpecialWeapon="KFMod.Katana")
    Здесь PlayerID - ID игрока, SpecialWeapon - оружие, которое ему выдаётся при появлении в игре и после оживления, а PlayerName используется чисто для удобства. Чтобы не забывали кто же это под таким ID и с такой пушкой.
    Можно добавлять сколько угодно (в пределах памяти) элементов массива с разными ID и пушками. Хоть всем игрокам по персональной пушке пропишите.

    Можно прописать одному игроку несколько пушек - просто напишите
    VipList=(PlayerID="76561198051378",PlayerName="Sgt.McNeal",SpecialWeapon="KFMod.Katana")
    VipList=(PlayerID="76561198051378",PlayerName="Sgt.McNeal",SpecialWeapon="KFMod.Axe")
     
    Код
     
    class GiveWeaponByIDMut extends Mutator config(GiveWeaponByIDMut);

    struct VipStruct
    {
        var config string PlayerID;
        var config string PlayerName;
        var config string SpecialWeapon;
    };
    var config array<VipStruct> VipList;

    function PostBeginPlay()
    {
        SaveConfig();
    }

    function ModifyPlayer(Pawn P)
    {
        Super.ModifyPlayer(P);
        TryGiveSpecialWeapon(P);
    }

    function TryGiveSpecialWeapon(Pawn P)
    {
        local PlayerController PC;
        local string Hash;
        local int i;
        if(P==None) return;
        PC=PlayerController(P.Controller);
        if(PC==None) return;
        Hash=PC.GetPlayerIDHash();
        for(i=0;i<VipList.Length;i++)
        {
            if(VipList[i].PlayerID~=Hash)
                P.GiveWeapon(VipList[i].SpecialWeapon);
        }
    }

    defaultproperties
    {
        VipList(0)=(PlayerID="76561198051378",PlayerName="Sgt.McNeal",SpecialWeapon="KFMod.Katana")
        bAddToServerPackages=True
        GroupName="KF-GiveWeaponByIDMut"
        FriendlyName="GiveWeaponByIDMut"
        Description="Give Weapon By ID"
     
     
    Прописать как :
     
    GiveWeaponByIDMut.GiveWeaponByIDMut

    45 раз скачали

    Updated

  5. AllTraders

    Роль мутатора проста - открываются все двери магазина в конце волны. Выбираете тот. к которому вам ближе.

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

    Submitted

  6. Анти АФК

    Мутатор кикает АФК игроков, в том числе сидящих в лобби до старта карты и не дающих стартануть её
     
    описание конфига AFKMut.ini
    [AFKMut.AFKMut]
    AFKTimer=240.000000 - время в секундах через сколько будет кикать
    KickMessage=%player% выкинут анти-АФК системой
    KickMessagePlayer=Вы выкинуты анти-АФК системой
    bDebug=false - если true, то режим отладки (выводит в консоль сервера доп. инфо)
    bKickSpectators=true - если true (по умолчанию) - АФК спектры будут выкидываться. если false - спектраторы вообще не будут трогаться (это плохо на мой взгляд)
    AllowAFK=Admin - ники, которых Анти-АФК не кикает
    AllowAFK=Админ
    AllowAFK=Ололоша
    AllowAFK=FinalDanger-хочет-меня-убить
    AllowAFK=MetalMedved-превед!
     
    Мутатор добавляем строчкой
    AFKMut.AFKMut

    9 раз скачали

    Submitted

  7. MonsterConfig

    Этот мутатор позволяет настраивать состав, количество и параметры монстров, выходящих по ходу игрового процесса.
     
    Код для запуска мутатора в .bat файле или в MutLoader: MonsterConfig.MonsterConfig
     
    Настройка мутатора:
     
    [Имя_Объекта Тип_Объекта]

    После этой строчки вы добавляете параметры объекта. Имена объектов придумываются пользователем и не должны совпадать. Существует несколько типов объектов - MCMonsterInfo (Тип моба), MCSquadInfo (Отряд мобов), MCWaveInfo (Волна), MCMapInfo (Индивидуальные настройки для определённой карты).

    Сам ход игрового процесса состоит из волн, волны состоят из набора отрядов, а отряды состоят из мобов. Заполнять конфигурацию будем соотвествующе.

    Примечание - все значения параметров пишутся сразу же после = , никаких пробелов!! Иначе конфиг не будет прочитан.

    Начнём с мобов:

    [Имя_Монстра MCMonsterInfo]

    MonsterClass - класс монстра.

    Пример:
    MonsterClass=class'KFChar.ZombieClot'

    Как вы видите нужно эту строчку заполнять в форме class'Имя_Пакета.Имя_Класса'. Пакет это .u файл, содержащий класс монстра. Классы монстров обычно указываются в описании мутатора, если это нестандартный моб, у стандартных мобов коды указаны в .ini файле-примере.

    MonsterName - имя монстра, которое вы даёте самостоятельно. Это имя будет отображаться при убийстве моба.

    Пример:
    MonsterName=Clot

    Health - здоровье моба.

    HeadHealth - здоровье головы моба.

    HealthMax - предел роста хп моба.

    HeadHealthMax - предел роста хп головы моба.

    Speed - скорость передвижения моба. Если скорость не указана, то берётся его стандартная скорость.

    SpeedMod - модификатор скорости передвижения моба. Работает только в случае, если параметр Speed не задан.

    Пример:
    SpeedMod=1.15

    При таком параметре, скорость моба увеличится на 15% от стандартной.

    RewardScore - деньги, выдаваемые за убийство моба. Если параметр не указан, берётся стандартное значение моба.

    RewardScoreCoeff - множитель выдаваемых за убийство моба денег. На это число умножаются выдаваемые за монстра деньги.

    PerPlayer - дополнительный параметр, отвечающий за значения, добавляющиеся за каждого живого игрока на сервере.

    Пример:
    PerPlayer=(Health=20,HeadHealth=10)

    Health - здоровье за одного игрока, HeadHealth - здоровье головы за одного игрока

    Resist - настройки резиста моба к типам урона. Резистов можно добавлять неограниченное количество.

    Пример:
    Resist=(DamType=class'KFMod.DamTypeBullpup',Coeff=0.5,bNotCheckChild=true)
    Resist=(DamType=class'KFMod.DamTypeMelee',Coeff=0.5)

    DamType - к какому типу урона будет резист, Coeff - число, на которое умножается дамаг, bNotCheckChild - если равно true, то резист не будет работать против классов, наследующих данный класс

    Mesh,Skins - Замена меши или скина моба.

    Пример:
    Mesh=SkeletalMesh'KF_Freaks_Trip.GoreFast_Freak'
    Skins=Combiner'KF_Specimens_Trip_T.gorefast_cmb'

    Далее рассмотрим отряды:

    [Имя_Отряда MCSquadInfo]

    Monster - массив монстров, которые входят в отряд

    Пример:
    Monster=(MonsterName=("Clot"),Num=2)
    Monster=(MonsterName=("Gorefast"),Num=1)
    Monster=(MonsterName=("Crawler"),Num=1)

    MonsterName - имя монстра, выбираемое из созданных вами объектов-монстров; Num - количество монстров

    Дальнейшие параметры работают только для специальных сквадов. Специальный сквад, это отряд, который спавнится не рандомно, в принудительном порядке, через определённое пройденное количество заспавненных мобов.

    Freq - количество мобов, после спавна которых выходит спец сквад

    FreqRand - случайное число, добавляемое к Freq при респе спец сквада

    InitialCounter - число счётчика количества заспавненных мобов в начале волны. Если есть желание чтобы спец сквад появился ближе к началу, или в самом начале волны, ставьте значения в зависимости от Freq и FreqRand. Чтобы спец сквад появлялся гарантированно в начале волны, ставьте этот параметр больше или равным Freq + FreqRand

    Теперь перейдём к волнам:

    [Имя_Волны MCWaveInfo]

    Squad - отряды мобов из созданных вами MCSquadInfo объектов.

    Пример:
    Squad=sq_Clot
    Squad=sq_Cl_Gf_Cr
    Squad=sq_Gorefast

    SpecialSquad - спец сквады из созданных вами MCSquadInfo.

    Пример:
    SpecialSquad=sq_ClotBossInvis

    Position - положение волны. От этого параметра зависит очерёдность волн. Чем ниже число Position, тем раньше выйдет эта волна монстров.

    TimeBetweenThisWaveCoeff - число, на которое умножается время перерыва перед началом этой волны.

    MonstersTotal - количество мобов в этой волне.

    PerPlayerMonstersTotal - количество мобов, добавляемое за каждого игрока.

    MonstersMaxAtOnce - максимальное количество монстров находящихся на карте в один момент времени.

    PerPlayerMonstersMaxAtOnce - число, добавляемое к MonstersMaxAtOnce за каждого игрока

    SquadDelay - время между появлением отрядов мобов

    PerPlayerSquadDelayMod - число, на которое умножается время между появлением мобов, за каждого игрока.

    PerPlayerSquadDelayModMin,PerPlayerSquadDelayModMax - минимальное и максимальное значения PerPlayerSquadDelayMod.

    Пример:
    PerPlayerSquadDelayModMin=0.3
    PerPlayerSquadDelayModMax=1.0

    PerPlayerFund - деньги, выдаваемые игроку в конце волны, работает только при включенной новой системе выдачи денег

    bMapSpecific - если равно true, то эта волна будет добавлена только на специальных картах

    Эти три объекта - моб, отряд, волна, составляют конструкцию нашей песочницы. Но чтобы всё это работало, нужно задать некоторые общие настройки.

    Общие настройки:

    [MonsterConfig.MonsterConfig]

    GameTypeClass - тип игры, загружаемый мутатором. Не менять. Сделано для создателей мутаторов на основе этого гейм тайпа.

    GameTypeClass=class'MonsterConfig.MCGameType'

    FixMeshInfoConfig - параметр, позволяющий профиксить ивентовские пропавшие скины мобов.

    Пример:

    FixMeshInfoConfig=(MClass=Class'KFChar.ZombieScrake',Mesh=SkeletalMesh'KF_Freaks_Trip.Scrake_Freak',Skins=(Shader'KF_Specimens_Trip_T.scrake_FB',TexPanner'KF_Specimens_Trip_T.scrake_saw_panner'))
    FixMeshInfoConfig=(MClass=Class'KFChar.ZombieFleshPound',Mesh=SkeletalMesh'KF_Freaks_Trip.FleshPound_Freak',Skins=(Combiner'KF_Specimens_Trip_T.fleshpound_cmb',Shader'KFCharacters.FPAmberBloomShader'))

    Это часть общих настроек, все остальные вынесены в специальный объект, имя которого нельзя трогать:

    [GameInfo MCGameInfo]

    FakedPlayersNum - количество фальшивых игроков, приплюсовываемых к действительному количеству. Количество игроков влияет на PerPlayer параметры.

    bWaveFundSystem - если равно true, используется новая система распределения денег. В этой системе деньги начисляются не по факту нанесённых повреждений/лечения, а в конце волны.

    HealedToScoreCoeff - коэффициент перевода лечения в очки. Работает при новой денежной системе.

    MoneyMod - число, на которое умножается количество выдаваемых денег. Работает при новой денежной системе.

    GameDifficulty - уровень классической сложности. Нужен для мобов которые респавнятся на картах наподобие Stalker Prometeus.

    MonstersMaxAtOnceMod - число, на которое умножается максимальное количество мобов находящихся на карте

    MonstersTotalMod - множитель количества монстров за волну

    MonsterBodyHPMod - множитель здоровья мобов

    MonsterHeadHPMod - множитель здоровья головы мобов

    MonsterSpeedMod - множитель скорости передвижения мобов

    MonsterDamageMod - множитель урона, наносимого мобами

    BroadcastKillmessagesMass - масса моба, необходимая для общего сообщения об убийстве мутатора MCKillsMessage

    BroadcastKillmessagesHealth - здоровье моба, необходимая для общего сообщения об убийстве мутатора MCKillsMessage

    Кроме параметров, указанных выше, есть параметры зависящие от конкретной карты. Параметры, задаваемые для всех карт, кроме тех которые указаны отдельно, задаются в секции [default MCMapInfo]

    Параметры зависящие от карты:

    [Точное_Название_Карты MCMapInfo]

    Waves - здесь добавляются волны с параметров bMapSpecific=true. Эти волны будут добавлены именно на эту карту, при этом не появившись на других.

    Пример:

    Waves=WaveSpec01
    Waves=WaveSpec03

    bUseZombieVolumeWaveDisabling - если равно true, используем настройки мапперов по блокировке определённых спавнов мобов в зависимости от текущей волны, если же равно false, эти настройки игнорируются.

    MonstersTotalCoeff - множитель количества мобов за волну

    MonstersMaxAtOnceCoeff - множитель количества мобов, одновременно находящихся на карте

    TimeBetweenWaves - время на перерыв между волнами, в секундах

    MonsterBodyHPMod,MonsterHeadHPMod,MonsterSpeedMod,MonsterDamageMod - аналогичны параметрам с такими же названиями в MCGameInfo, и перемножаются с ними

    SquadDelayMod - множитель времени между появлением отрядов мобов

    PerPlayerSquadDelayMod,PerPlayerSquadDelayModMin,PerPlayerSquadDelayModMax - аналогичны параметрам с такими же названиями в MCWaveInfo, и перемножаются с ними

    111 раз скачали

    Submitted

  8. HARDPAT v2

    Представляю вашему вниманию нам хорошо известный но измененный мутатор HardPat
    Теперь мутатор выведен в ini файл
     
    [KFHardPat.HardPat]
    PatStates[0]=(bMovCG=False,bRunCG=False,bPauseCG=True,bMisIgnoreRange=False,bAltRoute=False,NumMis[0]=1,NumMis[1]=0,NumCG[0]=35,NumCG[1]=60,MisRepTime=1.000000)
    PatHealth=4000
     
    В нем можна изменять,а именно:
     
    PatStates[0]=количество его шприцов (по данным что мне раньше сообщали - выше чем 3 шприца,анимация что патриарх лечится не должно отображаться в игре (сам пока не пробовал ставить выше чем 3 шприца))
    bMovCG=команда отвечает будет ли он двигатся или нет при стрельбе из пулемета
    bRunCG=будет ли он бежать при стрельбе
    bPauseCG=команда отвечает за паузу во время перестрелки (как всем известно он делает короткую паузу во время перестрелки из пулемета)
    bAltRoute=альтернативное нападение на игроков (он может в любое время стать невидимым и обойти игрока со стороны и напасть на любого себе понравившегося)
    NumMis[0]=количество ракет которое он выпустит
    NumCG[0]=количество патронов которое выпустит из пулемета
    MisRepTime=время в секундах (если стоит 1.000000 - значит будет выпускать ракету за ракетой каждую секунду,в зависимости сколько вы поставили ракет) Ниже чем 1.000000 - идут доли секунды
    PatHealth=количество здоровья рассчитанное на одного игрока
     
    Код для песочницы:KFHardPat.HardPat
    В файле killingfloor.ini в секцию [Engine.GameEngine] обезательно вставляем ServerPackages=KFHardPat

    95 раз скачали

    Submitted

  9. Toy Master Mod Killing Floor

    Мод Toy Master изменяет игру наличием измененных монстров и новой картой TOY-DevilsDollhouse.
     
    Установка:
     
    Скачать и распаковать архив.
    Зайдите в корневую папку ToyMaster и переместите вложенные папки в корневую папку игры.
    Запускать из батника: TOY_Server_Launcher.bat Путь: папка игры\System
     
    Видео:
     

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

    Updated

  10. Mut Kill Message

    Мутатор который показывает игроку кого он убил.

    71 раз скачали

    Submitted

  11. MagMut

    Если вам надоело перезаряжать оружие, и если вам тупо хочется мясо устроить так сказать поиздеваться над тупыми зомби которые тока и могут что ходить, бегать за вами, то этот мутатор для вас ... Он убирает перезарядку у почти каждого оружия кроме тех у которых действовал принцип "выстрел, перезарядка"

     

    6 раз скачали

    Submitted

  12. AutoSpawnerDK

    Мутатор хорош тем, что он возраждает игроков не на респавне (как это обычно бывало, как раз из-за этого большинство во время волны появившихся игроков на респавне пытались убежать от мутантов которые сразу начинали преследовать игрока). Этот мутатор при заходе вами на сервер во время волны телепортнёт вас к вашему боевому товарищу, который вам однозначно поможет отбить волну монстров.

    Код для .bat-файла или MutLoader:

    AutoSpawnerDK.AutoSpawner
     

    20 раз скачали

    Submitted

  13. Teleportation Lost Monsters

    Данный мутатор телепортирует зомби, при условии если зомби давно никто не видел. Если за этот промежуток не был найден мутант, его просто телепортирует на ближайшую точку респавна. (Точку возрождения мутантов ZombieVolum). После этого мы его убиваем и продолжаем играть.

    Код для вставки:
    LostZombiesMut.LostZombiesMut

    20 раз скачали

    Submitted

  14. Замена начального оружия

    Данный мутатор на самом деле очень полезный, с помощью этого мутаторы вы можете заменить все стандартные оружия на своё новое.

     Пример замены оружия:
    OldWeaponB, NewWeaponB - старое оружие, заменяется на новое оружие Берсеркера
    OldWeaponCM,NewWeaponCM - старое оружие, заменяется на новое оружие Коммандоса
    OldWeaponDM,NewWeaponDM - старое оружие, заменяется на новое оружие Подрывника
    OldWeaponM,NewWeaponM - старое оружие, заменяется на новое оружие Медика
    OldWeaponF,NewWeaponF - старое оружие, заменяется на новое оружие Поджигателя
    OldWeaponSS,NewWeaponSS - старое оружие, заменяется на новое оружие Снайпера
    OldWeaponSP,NewWeaponSP - старое оружие, заменяется на новое оружие Техника

    bKFNeverThrow - если True, то оружие которое новые за замену пошло, его нельзя будет выбросить. Будет стоять запрет.
    Weight - Функция отвечает за вес нового оружия.

    Пример:
    OldWeaponDM=KFMod.M79, NewWeaponDM=KFMod.M32, bKFNeverThrow=true, Weight=2

    26 раз скачали

    Submitted

  15. Multiplied Exp \ Удвоенный опыт

    Данный мутатор добавит к вам на сервер большего настроя для игроков на прокачку своих перков. Кстати мутатор может не только умножать опыт на x2 но и на x3, x4, x5 и так далее. То есть опыт может умножаться вплоть до x1000 или вообще уйти в отрицательное число -1. Так или иначе всё равно будет работать. Чтобы опыт за убийство засчитывался по стандарту - Default, нужно в MultipliedExpMut.ini файле выставить значение nExp=1.

    Код мутатор:
    MultipliedExpMut.MultipliedExpMut

    35 раз скачали

    Submitted

  16. Web Admin Cyrillic v2

    Мутатор Web Admin Cyrillic v2 - Раньше была такая проблема с встроенным Веб Админкой (Web Admin), если на сервере используется русский текст, то в Веб Админке этот текст выводится непонятно, так сказать кракозябристо. Так же была проблема с отправкой русского текста с Веб Админки в чат сервера. Всё это было исправлено благодаря этого мутатора.
    Установка:
    Перед тем как запускать сервер с мутатором нам нужно зайти в файл UWeb.int который находится в папке System и поменять там кодировку в этом файле.
    Находим строку: [WebResponse]
    CharSet="iso-8859-1"

    Редактируем её на:
    [WebResponse]
    CharSet="windows-1251"
     
    Код мутатора Web Admin Cyrillic v2:
    WebAdminCyrillicMutv2.WebAdminCyrillicMut

    14 раз скачали

    Submitted

  17. Player Cameras

    Мутатор даёт возможность для всех игроков на сервере следить за обстановкой игроков, то есть каждому игроку на сервере выдаётся камера - которая "типа" устанавливается где-то на голове и благодаря этой камере вы можете наблюдать за другими игроками.
    Команды камеры:
    NextCamTarget, SetCamPos, SetCamSize, SetCamBorder, SetCamFilter, SetCamFOV

    Код мутатора:
    ShoulderCamMut.ShoulderCamMut

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

    Submitted

  18. Мутатор Custom Weapon Priorities

    Благодаря этому мутатору вы сможете абсолютно любое оружие применить к любому перку. Придаю пример: Появилось не официальное новое оружие и по вашему предпочтению это оружие не подходит к иному перку, В этой случае вы запускаете этот мутатор Custom Weapon Priorities и меняете все приоритеты которые вас не устраивают. Вы можете одно оружие прикрепить ко всем перкам, и кто не возьмёт за это оружие - прокачка будет осуществляться.
     
    Код мутатора:
     
    CWPMut.CWPMut
     

    26 раз скачали

    Submitted

  19. ServerPerks By Marco v6

    Этот мутатор позволяет главному администратору сервера управлять любым из установленных на сервер мутатором, модификацией, картой. Можно поставить мутатор из белого списка или же даже из серого, разницы ни какой так как мутатор создаёт базу данных перков, то есть у вашего сервера будет качаться индивидуально перки.Администратор сервера сможет добавлять, удалять стандартные настройки. Игроки не смогут обмануть базу данных (статистику сервера).

    Установка

    1) Распаковываем все файлы с архива в папку System
    2) Скачиваем мутатор MutLoader
    3) При установке мутатора MutLoader читаем внимательно инструкцию.
    4) Находим файл в папке system MutLoader.ini и туда прописываем вот такой код
    Mutator=ServerPerksMut.ServerPerksMut 5) Находим запускной файл в папке system (Расширение обычно у него .bat) файл обычно называет KF_Server_Launcher.bat или Запустить сервер.bat. Значит нажимаем правой кнопкой по файлу и выбираем изменить, внутри файла вписываем код мутатора MutLoader - ?Mutator=MutLoader.MutLoader
    6)Сохраняем и запускаем сервер (Нажимаю по запускному файлу).

    75 раз скачали

    Updated

  20. Мутатор DLC Unlocked - Clean ID

    Данный мутатор очень прост собой, но он включает в себя очень полезное свойство, свойство разблокировки DLC оружий. Тем самым вы сможете без каких-либо проблем приобретать у себя на сервере одно из DLD оружий. Что этот мутатор делает? Он сбрасывает ID пушек и позволяет их покупать.
     
    Код что бы подключить мутатор:

    CleanAppIDMut.CleanAppIDMut

    66 раз скачали

    Submitted

  21. Patriarch HP Left with Health Bar

    Patriarch HP Left with Health Bar — это переделка KFPatHPLeft Mutator. Теперь здоровье патриарха после вашей смерти показывается в виде полоски.

    59 раз скачали

    Submitted

  22. Proper Grenade Arms / Правильные руки при броске гранаты

    Мутатор исправляет текстуру на руке при броске гранаты (баг, когда при броске, текстура стоит стандартная от формы военного).

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

    Submitted

  23. Reload Interrupt

    Некоторые пушки очень долго перезаряжаются и не дают шанса поменять себя на другое оружие.
    Мутатор это исправляет. Он позволяет прерывать любую перезарядку сменой оружия или броском гранаты.

    Код мутатора:
    ReloadInterruptMut.ReloadInterruptMut

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

    Submitted

  24. CashStay

    С этим мутатором скинутые деньги не исчезают.

    Код мутатора:
    CashStayMut.CashStayMut  

    41 раз скачали

    Submitted

  25. ShoulderCamMut

    Мутатор даёт возможность для всех игроков на сервере следить за обстановкой игроков.

    Код мутатора:
    ShoulderCamMut.ShoulderCamMut  

    26 раз скачали

    Submitted

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