KFCustomShopMutV2

Тема в разделе "Общего назначения", создана пользователем F4TAL1ST, 3 дек 2010.

  1. evol

    evol Новенький

    C ServerPerks тоже проблем не мало, но меня интересует именно этот мутатор.
     
    Flame нравится это.
  2. Schmaiser

    Schmaiser Бандит

    чем тебя не устроил server perks?
     
    ALEX_GREEN нравится это.
  3. evol

    evol Новенький

    Здесь создана тема о другом вопросе.
    Давайте не будем разводить флуд.

    Я спросил о проблеме связаной с Custom Shop, мне предложили использовать другой мод, я так и сделал, но вопрос остается открытым.

    server perks пока не проверял в качестве многопользовательского использования, может и по нему тема будет?
    хотя по этому моду и так вопросов хватает и ответов тоже.

    Тема с server perks закрыта.

    Если есть ещё конструктивные предложения пишите, буду благодарен.

    кстати спасибо за предложение лови плюсики)
     
  4. IVergil24

    IVergil24 Соучастник

    У меня вылетает игра когда добавляю его в список мутаторов(
    1037 версия игры. Без него всё отлично играет, а как добавляю, погрузик секунды две карту и вылетает.

    Build UT2004_Build_[2004-11-11_10.48]

    OS: Windows NT 6.1 (Build: 7601)
    CPU: GenuineIntel PentiumPro-class processor @ 2095 MHz with 2047MB RAM
    Video: NVIDIA GeForce GT 130M (8636)

    General protection fault!

    History: UObject::processEvent <- (KFCustomShopMutB KF-ArenaWarsV3.KFCustomShopMutB, Function KFCustomShopMutV2.KFCustomShopMutB.Timer) <- AActor::Tick <- TickAllActors <- ULevel::Tick <- (NetMode=2) <- TickLevel <- UGameEngine::Tick <- Level KF-ArenaWarsV3 <- UpdateWorld <- MainLoop <- FMallocWindows::Free <- FMallocWindows::Realloc <- 4C576C61 0 FArray <- FArray::Realloc <- 0*2 <- FMallocWindows::Free
     
  5. Flame

    Flame -Заслуженый кодер форума-

    не надо добавлять
    при наличии SP этот мутатор не нужен
     
  6. Herman

    Herman Новенький

    люд а есть ли такой мутатор, что бы как в сервер перке оружия по категориям рассовывал? На 45 патче.
     
  7. ArTuRuK

    ArTuRuK Соучастник

    Хочу поднять тему. Интересут такой же вопрос, как писал пользователь Herman. Есть ли мутатор добавляющий оружие в магазин по категориям, точно так же как и server perks v5+ ?
     
  8. Freddy

    Freddy Капо

    нет
     
  9. ARIFMOMETR

    ARIFMOMETR Солдат

    Может кто сказать код для ставки оружия из всех платных паков?
     
  10. DukeNukem4ever

    DukeNukem4ever Соучастник

    У меня лицуха.
    Врубаю карту - и:
    Build UT2004_Build_[2004-11-11_10.48]

    OS: Windows NT 6.1 (Build: 7600)
    CPU: GenuineIntel PentiumPro-class processor @ 3074 MHz with 4095MB RAM
    Video: NVIDIA GeForce GTX 560 (1106)

    General protection fault!

    History: UObject::processEvent <- (KFCustomShopMutB KF-Defiance[Alpha2].KFCustomShopMutB, Function KFCustomShopMutV2.KFCustomShopMutB.Timer) <- AActor::Tick <- TickAllActors <- ULevel::Tick <- (NetMode=0) <- TickLevel <- UGameEngine::Tick <- Level Defiance <- UpdateWorld <- MainLoop <- FMallocWindows::Free <- FMallocWindows::Realloc <- 726F6F6C 0 FArray <- FArray::Realloc <- 0*2 <- FMallocWindows::Free
    Что не так?
     
  11. Flame

    Flame -Заслуженый кодер форума-

    не надо использовать этот мутатор
    он давно не работает для кф
     
  12. Dr_Killjoy

    Dr_Killjoy Заблокированные

    Используй сервер перкс и забудь про этот шлак.
     
  13. DukeNukem4ever

    DukeNukem4ever Соучастник

    Так что, этот проект ЗАБРОШЕН?!!
    Если что,киньте новую версию.
    Да,и на Server Perks я не сижу.
     
  14. HATAXA

    HATAXA Солдат

    А зачем выдумывать велосипед, если над ServerPerks постоянно идёт работа?
     
  15. Flame

    Flame -Заслуженый кодер форума-

    Заброшен
    Хотя мысль сделать отдельно магазин есть
    Но ввиду малой для меня ценности отложена надолго)
     
  16. wizardplay

    wizardplay Новенький

    Здравствуйте товарищи, у меня такая проблема пытаюсь добавить пушки в магазин все прописываю как по инструкции, но при попытке зайти с этим мутатором на карту меня выкидывает из игры. Как это исправить? Также у меня стоит server perks 7 может через него можно пушки настроить?
     

    Вложения:

    • kf.jpg
      kf.jpg
      Размер файла:
      114,4 КБ
      Просмотров:
      3
  17. Stein

    Stein Солдат

    ...server perks 7 оставляешь включенным в файле ServerPerks.ini в нём строчки прописываешь добавляешь, пример - TraderInventory=0:KFMod.ShotgunPickup цифра 0 какому перку, KFMod.ShotgunPickup код пушки.. CustomShop не нужен
     
  18. Flame

    Flame -Заслуженый кодер форума-

    Часто просят адаптировать этот мутатор под текущую реальность
    Самому стало интересно
    Оказывается особо нет проблем с этим

    Настройки:
    Сделал настройки приближенными к настройкам ServerPerks
    Пушки прописаны так:
    Код:
    WeaponForSale=0:KFMod.MP7MPickup
    WeaponForSale=0:KFMod.BlowerThrowerPickup
    WeaponForSale=0:KFMod.MP5MPickup
    WeaponForSale=0:KFMod.M7A3MPickup
    WeaponForSale=0:KFMod.KrissMPickup
    WeaponForSale=1:KFMod.ShotgunPickup
    WeaponForSale=1:KFMod.KSGPickup
    WeaponForSale=1:KFMod.BoomStickPickup
    WeaponForSale=1:KFMod.BenelliPickup
    WeaponForSale=1:KFMod.AA12Pickup
    WeaponForSale=1:KFMod.NailGunPickup
    WeaponForSale=1:KFMod.SPShotGunPickup
    WeaponForSale=2:KFMod.DualiesPickup
    WeaponForSale=2:KFMod.MK23Pickup
    WeaponForSale=2:KFMod.DualMK23Pickup
    WeaponForSale=2:KFMod.Magnum44Pickup
    WeaponForSale=2:KFMod.Dual44MagnumPickup
    WeaponForSale=2:KFMod.DeaglePickup
    WeaponForSale=2:KFMod.DualDeaglePickup
    WeaponForSale=2:KFMod.WinchesterPickup
    WeaponForSale=2:KFMod.CrossbowPickup
    WeaponForSale=2:KFMod.M14EBRPickup
    WeaponForSale=2:KFMod.M99Pickup
    WeaponForSale=2:KFMod.SPSniperPickup
    WeaponForSale=3:KFMod.BullpupPickup
    WeaponForSale=3:KFMod.AK47Pickup
    WeaponForSale=3:KFMod.MKb42Pickup
    WeaponForSale=3:KFMod.M4Pickup
    WeaponForSale=3:KFMod.SCARMK17Pickup
    WeaponForSale=3:KFMod.FNFAL_ACOG_Pickup
    WeaponForSale=3:KFMod.ThompsonPickup
    WeaponForSale=3:KFMod.SPThompsonPickup
    WeaponForSale=3:KFMod.ThompsonDrumPickup
    WeaponForSale=3:KFMod.AK47Pickup
    WeaponForSale=4:KFMod.MachetePickup
    WeaponForSale=4:KFMod.AxePickup
    WeaponForSale=4:KFMod.ChainsawPickup
    WeaponForSale=4:KFMod.KatanaPickup
    WeaponForSale=4:KFMod.ClaymoreSwordPickup
    WeaponForSale=4:KFMod.CrossbuzzsawPickup
    WeaponForSale=4:KFMod.ScythePickup
    WeaponForSale=4:KFMod.DwarfAxePickup
    WeaponForSale=5:KFMod.MAC10Pickup
    WeaponForSale=5:KFMod.FlareRevolverPickup
    WeaponForSale=5:KFMod.DualFlareRevolverPickup
    WeaponForSale=5:KFMod.TrenchgunPickup
    WeaponForSale=5:KFMod.FlameThrowerPickup
    WeaponForSale=5:KFMod.HuskGunPickup
    WeaponForSale=6:KFMod.PipeBombPickup
    WeaponForSale=6:KFMod.M79Pickup
    WeaponForSale=6:KFMod.M32Pickup
    WeaponForSale=6:KFMod.M4203Pickup
    WeaponForSale=6:KFMod.SPGrenadePickup
    WeaponForSale=6:KFMod.LAWPickup
    WeaponForSale=6:KFMod.SealSquealPickup
    WeaponForSale=6:KFMod.SeekerSixPickup
    WeaponForSale=7:KFMod.ZEDGunPickup
    WeaponForSale=7:KFMod.ZEDMKIIPickup
    
    То есть номер перка, двоеточие, название Pickup класса. Седьмая категория - спец категория.
    Особо не заморачивался с настройками по-умолчанию. Сами под себя настраивайте какие вам пушки нужны

    Код:
    В коде есть комментарии для тех кому интересно, как это работает
    Код:
    Class CustomShopMut extends Mutator Config(CustomShopMut);
    
    var config array<string> WeaponForSale;
    var array<string> PackList;
    
    function PostBeginPlay()
    {
        AddPackagesToMap();
        SetTimer(0.2,false);
    }
    
    //Добавляем в ServerPackages, чтобы не было нужды прописывать пакеты пушек в KillingFloor.ini
    function AddPackagesToMap()
    {
        local int i;
        local array<string> parts;
        for(i=0;i<WeaponForSale.Length;i++)
        {
            //Разбиваем строки из ini файла на 2 части. в parts[0] содержится номер перка, в parts[1] название pickup класса
            Split(WeaponForSale[i],":",parts);
            if(parts.Length<2)
                continue;
            //Добавляем в ServerPackages, чтобы не было нужды прописывать пакеты пушек в KillingFloor.ini
            AddPackage(parts[1]);
        }
    }
    //Добавляем в ServerPackages, чтобы не было нужды прописывать пакеты пушек в KillingFloor.ini
    function AddPackage(string Item)
    {
        local array<string> parts;
        Split(Item,".",parts);
        if(!AlreadyAdded(parts[0]) && Len(parts[0])>0)
        {
            AddToPackageMap(parts[0]);
            PackList[PackList.Length]=parts[0];
        }
    }
    //Не хотим добавлять одни и те же пакеты. KFMod по умолчанию уже добавлен
    function bool AlreadyAdded(string packName)
    {
        local int i;
        if(packName~="KFMod")
            return true;
        for(i=0;i<PackList.Length;i++)
        {
            if(PackList[i]~=packName)
                return true;
        }
        return false;
    }
    //
    
    function Timer()
    {
        local int i;
        local KFLevelRules KFLR;
        local array<string> parts;
        local class<Pickup> Item;
    
        KFLR = KFGameType(Level.Game).KFLRules;
        if(KFLR!=None)
        {
            //Обнуляем классические массивы с пушками
            KFLR.MediItemForSale.Length=0;
            KFLR.SuppItemForSale.Length=0;
            KFLR.ShrpItemForSale.Length=0;
            KFLR.CommItemForSale.Length=0;
            KFLR.BersItemForSale.Length=0;
            KFLR.FireItemForSale.Length=0;
            KFLR.DemoItemForSale.Length=0;
            KFLR.NeutItemForSale.Length=0;
            //Цикл по всем пушкам в ini файле
            for(i=0;i<WeaponForSale.Length;i++)
            {
                //Разбиваем строки из ini файла на 2 части. в parts[0] содержится номер перка, в parts[1] название pickup класса
                Split(WeaponForSale[i],":",parts);
                if(parts.Length<2)
                    continue;
                //Загружаем Pickup класс пушки
                Item=class<Pickup>(DynamicLoadObject(parts[1], Class'Class'));
                if(Item==none)
                    continue;
                //В текущей версии KF не один массив для пушек, а 8. Семь перков и спец раздел
                //В зависимости от того к какому перку мы приписали пушку в ini файле пушки сортируются по массивам
                if(parts[0]=="0")
                    KFLR.MediItemForSale[KFLR.MediItemForSale.Length]=Item;
                else if(parts[0]=="1")
                    KFLR.SuppItemForSale[KFLR.SuppItemForSale.Length]=Item;
                else if(parts[0]=="2")
                    KFLR.ShrpItemForSale[KFLR.ShrpItemForSale.Length]=Item;
                else if(parts[0]=="3")
                    KFLR.CommItemForSale[KFLR.CommItemForSale.Length]=Item;
                else if(parts[0]=="4")
                    KFLR.BersItemForSale[KFLR.BersItemForSale.Length]=Item;
                else if(parts[0]=="5")
                    KFLR.FireItemForSale[KFLR.FireItemForSale.Length]=Item;
                else if(parts[0]=="6")
                    KFLR.DemoItemForSale[KFLR.DemoItemForSale.Length]=Item;
                else if(parts[0]=="7")
                    KFLR.NeutItemForSale[KFLR.NeutItemForSale.Length]=Item;
            }
        }
    }
    
    //Создаём Info класс, который будет выполняться на сервере и клиенте. Передаём туда ссылку на этот мутатор
    function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
    {
        if(PlayerController(Other)!=None)
            Spawn(Class'CustomShopRepWeaponList',Other).Mut = Self;
        return true;
    }
    
    defaultproperties
    {
        bAddToServerPackages=True
        GroupName="KF-CustomShopMut"
        FriendlyName="Custom Shop Menu"
        Description="Allows custom WeaponForSale to be added at trader."
    }
    
    Код:
    //Класс, который будет выполняться на сервере и клиенте
    //В Auto State RepList (состояние по умолчанию для данного объекта - её код начинает выполняться при создании объекта)
    //выполняются действия на сервере и заполняется массив на клиенте. Все остальные функции выполняются на клиенте
    Class CustomShopRepWeaponList extends Info;
    
    var CustomShopMut Mut;
    var int Index;
    var array<string> InvList;
    
    replication
    {
        reliable if (Role == ROLE_Authority)
            ReplicateItem,ClientFinishSetup;
    }
    
    //С помощью этой функции мы передаём строку содержащую Pickup класс с сервера на клиент
    //Это просто механизм для заполнения массива пушек на клиенте, так как мы не можем реплицировать динамический массив
    simulated function ReplicateItem(string S)
    {
        InvList[InvList.Length] = S;
    }
    
    //Тут мы делаем основную работу - заполняем магазин пушками в зависимости от категорий
    simulated function ClientFinishSetup()
    {
        local KFLevelRules KFLR;
        local int i;
        local array<string> parts;
        local class<Pickup> Item;
    
        foreach DynamicActors(Class'KFLevelRules',KFLR)
            break;
        if(KFLR==None)
            return;
    
        KFLR.MediItemForSale.Length=0;
        KFLR.SuppItemForSale.Length=0;
        KFLR.ShrpItemForSale.Length=0;
        KFLR.CommItemForSale.Length=0;
        KFLR.BersItemForSale.Length=0;
        KFLR.FireItemForSale.Length=0;
        KFLR.DemoItemForSale.Length=0;
        KFLR.NeutItemForSale.Length=0;
        for(i=0;i<InvList.Length;i++)
        {
            Split(InvList[i],":",parts);
            if(parts.Length<2)
                continue;
            Item=class<Pickup>(DynamicLoadObject(parts[1], Class'Class'));
            if(Item==none)
                continue;
            if(parts[0]=="0")
                KFLR.MediItemForSale[KFLR.MediItemForSale.Length]=Item;
            else if(parts[0]=="1")
                KFLR.SuppItemForSale[KFLR.SuppItemForSale.Length]=Item;
            else if(parts[0]=="2")
                KFLR.ShrpItemForSale[KFLR.ShrpItemForSale.Length]=Item;
            else if(parts[0]=="3")
                KFLR.CommItemForSale[KFLR.CommItemForSale.Length]=Item;
            else if(parts[0]=="4")
                KFLR.BersItemForSale[KFLR.BersItemForSale.Length]=Item;
            else if(parts[0]=="5")
                KFLR.FireItemForSale[KFLR.FireItemForSale.Length]=Item;
            else if(parts[0]=="6")
                KFLR.DemoItemForSale[KFLR.DemoItemForSale.Length]=Item;
            else if(parts[0]=="7")
                KFLR.NeutItemForSale[KFLR.NeutItemForSale.Length]=Item;
        }
    }
    
    //Выполняется на сервере, на клиенте PlayerController(Owner)==None
    //Поочерёдно реплицируем значения массива пушек взятых из ini
    Auto State RepList
    {
    Begin:
        Sleep(1.f);
        if(PlayerController(Owner)==None || PlayerController(Owner).Player==None)
            Destroy();
        Sleep(7.f);
        for(Index=0;Index<Mut.WeaponForSale.Length;Index++)
        {
            if(PlayerController(Owner)==None)
                Destroy();
            ReplicateItem(Mut.WeaponForSale[Index]);
            Sleep(0.1f);
        }
        ClientFinishSetup();
        Sleep(3.f);
        Destroy();
    }
    
    defaultproperties
    {
        bOnlyRelevantToOwner=True
        RemoteRole=ROLE_SimulatedProxy
    }
    

    Скриншоты:
    [​IMG] [​IMG]

    Ссылка
    CustomShopMut.CustomShopMut

    Замечание: Я сам в своё время задрался прописывать пакеты пушек в ServerPackages в KillingFloor.ini, поэтому сделал в мутаторе автодобавление пакета пушки в ServerPackages. То есть достаточно просто прописать Pickup класс, пакет автоматически загрузится.
     
    Последнее редактирование: 16 янв 2017
    Strafer, STaJIKeR, WHAAAAAT и ещё 1-му нравится это.
  19. Strafer

    Strafer Новенький

    Очень хороший мутатор, по скрину то что надо, после установки серверперк 7,50 стало чуток по другому, оружие поделилось на типы с группами:
    Мили оружие
    -нож1
    -нож2
    -нож3​
    Пистолеты
    -пистолет1
    -пистолет2
    -пистолет3​
    Дробовики
    -дробовик1
    -дробовик2
    -дробовик3​
    А очень хочется как в базовом варианте(как у Вас на скрине), но увы скомпиленый и подключенный мут как-то не работает. Видимо по приоритету выигрыват серверперк магазин ибо при загрузке вижу в логах что работает
    Код:
    ScriptLog: mut.added CustomShopMut.CustomShopMut
    Warning: Failed to load 'svd-c_T': Can't find file for package 'svd-c_T'
    Warning: Failed to load 'SVD-cMut': Can't find file for package 'svd-c_T'
    Warning: Failed to load 'Class SVD-cMut.MutSVDcShop': Can't find file for package 'svd-c_T'
    ScriptLog: mut.added SVD-cMut.MutSVDcShop
    Warning: Converting in ItemForSale of M82A1LLILevelRules to dynamic array.
    ScriptLog: mut.added M82A1LLImut.MutM82A1LLIShop
    Warning: Converting in ItemForSale of V94LLILevelRules to dynamic array.
    ScriptLog: mut.added V94LLImut.MutV94LLIShop
    ScriptLog: mut.added RPK47Mut.MutRPK47Shop
    ScriptLog: mut.added SA80LSWMut.MutSA80LSWShop
    Warning: Failed to load 'Class HK417Mut.MutHK417Shop': Failed to find object 'Class HK417Mut.MutHK417Shop'
    ScriptLog: mut.added HK417Mut.MutHK417Shop
    Warning: Converting in ItemForSale of Saiga12cLevelRules to dynamic array.
    ScriptLog: mut.added Saiga12cMut.MutSaiga12cShop
    ScriptLog: Not adding M82A1LLImut.MutM82A1LLIShop because already have a mutator in the same group - KF-bioticslab.MutM82A1LLIShop
    ScriptLog: mut.added M82A1LLImut.MutM82A1LLIShop
    ScriptLog: Not adding V94LLImut.MutV94LLIShop because already have a mutator in the same group - KF-bioticslab.MutV94LLIShop
    ScriptLog: mut.added V94LLImut.MutV94LLIShop
    Warning: Converting in ItemForSale of L96AWPLLILevelRules to dynamic array.
    ScriptLog: mut.added L96AWPLLImut.MutL96AWPLLIShop
    
     
    Последнее редактирование модератором: 31 янв 2017
  20. Flame

    Flame -Заслуженый кодер форума-

    Ну естественно не работает) У SP ведь свой магазин
    А этот мутатор просто правит стандартный
    Ну а сделать магазин в SP таким же эт просто - надо переопределить категории в ServerPerks.ini
    Так, например:
    Код:
    WeaponCategories=0:FieldMedic
    WeaponCategories=1:SupportSpec
    WeaponCategories=2:Sharpshooter
    WeaponCategories=3:Commando
    WeaponCategories=4:Berserker
    WeaponCategories=5:FireBug
    WeaponCategories=6:Demolitions
    WeaponCategories=7:Special
    
    Ну и распихать пушки в нужные новые категории
     
    Strafer нравится это.