Как изменить или добавить значения в таблицу с бонусами перка?

Тема в разделе "Игровое редактирование", создана пользователем Hemoglobin, 3 май 2020.

  1. Hemoglobin

    Hemoglobin Соучастник

    Накинул я немного скорости перезарядки технику. Зашел в файл SRVetSupportSpec.uc и там внизу в строках где расписаны бонусы на первые 6 лвл добавил между ними строку с перезарядкой, и в строку CustomLevelInfo тоже вписал но только вместо определенного значения в процентах указал как и в случае с уроном указал значения %m, но все это не отображается в игре как и первых 6 лвл нет строки с перезарядкой так и выше. Я догадываюсь конечно то что я прописал %m в кастомлвл ему неоткуда брать значение, только я не нашел файла где нужно прописать эти значения и не могу понять почему в первых 6лвлах нет той четкой прописи с перезарядкой, там я не ставил %m а условно 10%.
     
  2. Flame

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

    Мало что понял
    Я просто расскажу, как там это устроено

    Есть динамический массив SRLevelEffects. Если он прописан в defaultproperties, то его элементы и берутся для текста бонусов
    То есть если на сервере у перков 10 уровней и для все 10 прописаны
    Код:
    SRLevelEffects(0)="10% more damage with Shotguns|10% better Shotgun penetration|10% faster welding/unwelding|10% discount on Shotguns"
    SRLevelEffects(1)=...
    ...
    SRLevelEffects(9)=...
    
    То берутся данные именно из них

    Если же на сервере 10 уровней, а расписаны только первые 6 элементов массива
    Код:
    SRLevelEffects(0)="10% more damage with Shotguns|10% better Shotgun penetration|10% faster welding/unwelding|10% discount on Shotguns"
    SRLevelEffects(1)=...
    ...
    SRLevelEffects(5)=...
    
    То для уровней от 7 по 10 будет использоваться строка CustomLevelInfo.
    Соответственно если вообще нет строк SRLevelEffects в defaultproperties, то для всех уровней используется строка CustomLevelInfo

    Теперь CustomLevelInfo - она модифицируется в функции GetCustomLevelInfo
    Код:
    static function string GetCustomLevelInfo( byte Level )
    {
        local string S;
    
        S = Default.CustomLevelInfo;
        S = Repl(S,"%s",GetPercentStr(0.1 * float(Level)));
        S = Repl(S,"%g",GetPercentStr(0.1*float(Level)-0.1f));
        S = Repl(S,"%d",GetPercentStr(0.1+FMin(0.1 * float(Level),0.8f)));
        return S;
    }
    
    Берётся стандартная строка
    Код:
    CustomLevelInfo="%s more damage with Shotguns|90% better Shotgun penetration|30% extra shotgun ammo|%g more damage with Grenades|120% increase in grenade capacity|%s increased carry weight|150% faster welding/unwelding|%d discount on Shotguns|Spawn with a Hunting Shotgun"
    
    И ищутся подстроки "%s", "%g", "%d". Эти подстроки заменяются на конкретные значения.
    Например "%s" заменяется на число GetPercentStr(0.1 * ТекущийУровень). А функция GetPercentStr умножает на 100 и дописывает проценты.
    Код:
    static final function string GetPercentStr( float InValue )
    {
        return int(InValue*100.f)$"%";
    }
    
    То есть для 10 уровня получится строка "100% more damage with Shotguns"

    Ну и чтобы добавить перезарядку и использовать для неё "%m" делаем как то так
    Код:
    CustomLevelInfo="%s more damage with Shotguns|%m  Текст про сварку|90% better Shotgun penetration|30% extra shotgun ammo|%g more damage with Grenades|120% increase in grenade capacity|%s increased carry weight|150% faster welding/unwelding|%d discount on Shotguns|Spawn with a Hunting Shotgun"
    
    Код:
    static function string GetCustomLevelInfo( byte Level )
    {
        local string S;
    
        S = Default.CustomLevelInfo;
        S = Repl(S,"%s",GetPercentStr(0.1 * float(Level)));
        S = Repl(S,"%m",GetPercentStr(ФормулаЗависимостиОтУровня));
        S = Repl(S,"%g",GetPercentStr(0.1*float(Level)-0.1f));
        S = Repl(S,"%d",GetPercentStr(0.1+FMin(0.1 * float(Level),0.8f)));
        return S;
    }
    
    Соответственно формулу для сварки взять из GetWeldSpeedModifier
     
  3. Hemoglobin

    Hemoglobin Соучастник

    Все так и сделал но текст в игре не изменился, может где-то недоглядел или чего-то не понял?
    Вот мои прописи:

    Код:
    static function string GetCustomLevelInfo( byte Level )
    {
        local string S;
    
        S = Default.CustomLevelInfo;
        ReplaceText(S,"%s",GetPercentStr(0.1 * float(Level)));
        ReplaceText(S,"%g",GetPercentStr(0.1*float(Level)-0.1f));
        ReplaceText(S,"%m",GetPercentStr(0.025 * float(Level)));
        ReplaceText(S,"%d",GetPercentStr(0.1+FMin(0.1 * float(Level),0.8f)));
        return S;
    }
    
    defaultproperties
    {
         CustomLevelInfo="%s more damage with Shotguns|%m faster Shotgun reload|90% better Shotgun penetration|30% extra shotgun ammo|%g more damage with Grenades|120% increase in grenade capacity|%s increased carry weight|150% faster welding/unwelding|%d discount on Shotguns|Spawn with a Hunting Shotgun and Body Armor"
         SRLevelEffects(0)="10% more damage with Shotguns|2.5% faster Shotgun reload|10% better Shotgun penetration|10% faster welding/unwelding|10% discount on Shotguns"
         SRLevelEffects(1)="10% more damage with Shotguns|5% faster Shotgun reload|18% better Shotgun penetration|10% extra shotgun ammo|5% more damage with Grenades|20% increase in grenade capacity|15% increased carry weight|25% faster welding/unwelding|20% discount on Shotguns"
         SRLevelEffects(2)="20% more damage with Shotguns|7.5% faster Shotgun reload|36% better Shotgun penetration|20% extra shotgun ammo|10% more damage with Grenades|40% increase in grenade capacity|20% increased carry weight|50% faster welding/unwelding|30% discount on Shotguns"
         SRLevelEffects(3)="30% more damage with Shotguns|10% faster Shotgun reload|54% better Shotgun penetration|25% extra shotgun ammo|20% more damage with Grenades|60% increase in grenade capacity|25% increased carry weight|75% faster welding/unwelding|40% discount on Shotguns"
         SRLevelEffects(4)="40% more damage with Shotguns|12.5% faster Shotgun reload|72% better Shotgun penetration|25% extra shotgun ammo|30% more damage with Grenades|80% increase in grenade capacity|30% increased carry weight|100% faster welding/unwelding|50% discount on Shotguns"
         SRLevelEffects(5)="50% more damage with Shotguns|15% faster Shotgun reload|90% better Shotgun penetration|25% extra shotgun ammo|40% more damage with Grenades|100% increase in grenade capacity|50% increased carry weight|150% faster welding/unwelding|60% discount on Shotguns|Spawn with a Shotgun and Body Armor"
         SRLevelEffects(6)="60% more damage with Shotguns|17.5% faster Shotgun reload|90% better Shotgun penetration|30% extra shotgun ammo|50% more damage with Grenades|120% increase in grenade capacity|60% increased carry weight|150% faster welding/unwelding|70% discount on Shotguns|Spawn with a Hunting Shotgun and Body Armor"
    }
    
     
    Последнее редактирование модератором: 21 май 2020
  4. Essence

    Essence Moderator Команда форума

     
  5. Hemoglobin

    Hemoglobin Соучастник

    Так я вроде и в SRLevelEffects прописал и в CustomLevelInfo тоже все расписал, код закинул в пред. сообщении, но в таблице все по прежнему. Я твое сообщение несколько раз прочитал и проверил, может я совсем не врубаюсь?
     
  6. CaT@

    CaT@ Новенький

    Вы компилировали ServerPerks после изменений скорости перезарядки техника?
     
    Mashina нравится это.
  7. Hemoglobin

    Hemoglobin Соучастник

    Да. Сначала тоже подумал может вписал все это и просто забыл скомпилировать, но нет проверил залил, все компилируется. Но ничего так и нет. При этом перезарядка на технике работает, ну оно и понятно ведь за это совсем другая строка отвечает, только странно то что скорость перезарядки только на двустволку не действует хотя она вписана туда и компилируется.
     
  8. Essence

    Essence Moderator Команда форума

    Закомментируй элементы массива SRLevelEffects и смотри какая инфа будет выводится
    Код:
    defaultproperties
    {
         CustomLevelInfo="%s more damage with Shotguns|%m faster Shotgun reload|90% better Shotgun penetration|30% extra shotgun ammo|%g more damage with Grenades|120% increase in grenade capacity|%s increased carry weight|150% faster welding/unwelding|%d discount on Shotguns|Spawn with a Hunting Shotgun and Body Armor"
         // SRLevelEffects(0)="10% more damage with Shotguns|2.5% faster Shotgun reload|10% better Shotgun penetration|10% faster welding/unwelding|10% discount on Shotguns"
         // SRLevelEffects(1)="10% more damage with Shotguns|5% faster Shotgun reload|18% better Shotgun penetration|10% extra shotgun ammo|5% more damage with Grenades|20% increase in grenade capacity|15% increased carry weight|25% faster welding/unwelding|20% discount on Shotguns"
         // SRLevelEffects(2)="20% more damage with Shotguns|7.5% faster Shotgun reload|36% better Shotgun penetration|20% extra shotgun ammo|10% more damage with Grenades|40% increase in grenade capacity|20% increased carry weight|50% faster welding/unwelding|30% discount on Shotguns"
         // SRLevelEffects(3)="30% more damage with Shotguns|10% faster Shotgun reload|54% better Shotgun penetration|25% extra shotgun ammo|20% more damage with Grenades|60% increase in grenade capacity|25% increased carry weight|75% faster welding/unwelding|40% discount on Shotguns"
         // SRLevelEffects(4)="40% more damage with Shotguns|12.5% faster Shotgun reload|72% better Shotgun penetration|25% extra shotgun ammo|30% more damage with Grenades|80% increase in grenade capacity|30% increased carry weight|100% faster welding/unwelding|50% discount on Shotguns"
         // SRLevelEffects(5)="50% more damage with Shotguns|15% faster Shotgun reload|90% better Shotgun penetration|25% extra shotgun ammo|40% more damage with Grenades|100% increase in grenade capacity|50% increased carry weight|150% faster welding/unwelding|60% discount on Shotguns|Spawn with a Shotgun and Body Armor"
         // SRLevelEffects(6)="60% more damage with Shotguns|17.5% faster Shotgun reload|90% better Shotgun penetration|30% extra shotgun ammo|50% more damage with Grenades|120% increase in grenade capacity|60% increased carry weight|150% faster welding/unwelding|70% discount on Shotguns|Spawn with a Hunting Shotgun and Body Armor"
    }
    Ответ
     
  9. RaideN-

    RaideN- Игровая Администрация

    Лучше сделать так, чтобы бонус перезарядки подтягивался из стандартной функции

    Код:
    static function float GetFireSpeedMod(KFPlayerReplicationInfo KFPRI, Weapon Other)
    {
        if ( BoomStick(Other) != none  )
        {
            return GetReloadSpeedModifier(KFPRI,KFWeapon(Other));
        }
    
        return Super.GetFireSpeedMod(KFPRI,Other);
    }
    
    
    И двухстовку так же незабыть прописать в "GetReloadSpeedModifier"
     
  10. Hemoglobin

    Hemoglobin Соучастник

    Круто, щас попробую.
    Закомментировал, все равно ничего не дало как будто именно то что я вписал он не воспринимает. Все по старому, странно ведь строки закомментированы откуда он берет значения? если бы брал из custom level info то на 5 уровне(то есть как сейчас я себе выставил) он должен показывать 120% вместимости гранат и 30% пенетрейшина, но показывает 100% и 25% то есть как будто строка не закомментирована.
     
  11. Hemoglobin

    Hemoglobin Соучастник

    Я тут что заметил, двустволка быстро перезаряжается только если выстрелить альт. атакой, а при стандартных двух выстрелах у него обычная скорость перезарядки, пробовал прописать и так как ты предложил и просто вписать туда boomstick, странно по сути он после двух выстрелов должен быстро перезаряжаться поскольку вписан в getreloadspeed, но нет не хочет и что блин с этим делать я вообще понять не могу.
     
  12. RaideN-

    RaideN- Игровая Администрация

    хм.. странно.

    Ну или тогда скопируй себе всю двухстволку и сделай так, чтобы только дуплетом стрелял)
     
  13. Hemoglobin

    Hemoglobin Соучастник

    Ахаха нее) хочу нормально сделать, может есть какой-то обходной путь, костыль что-ли?
     
  14. RaideN-

    RaideN- Игровая Администрация

    Можешь тогда поэкспериментировать еще.... в GetReloadSpeedModifier удали вобще все пухи и оставь только бонусы

    У меня так выглядит:

    Код:
    static function float GetReloadSpeedModifier(KFPlayerReplicationInfo KFPRI, KFWeapon Other)
    {
        if ( KFPRI.ClientVeteranSkillLevel >= 1 && KFPRI.ClientVeteranSkillLevel <= 3  )
        {
        return 1.20;
        }
        if (  KFPRI.ClientVeteranSkillLevel >= 4 && KFPRI.ClientVeteranSkillLevel <= 6  )
        {
        return 1.30;
        }
        if (  KFPRI.ClientVeteranSkillLevel >= 7 && KFPRI.ClientVeteranSkillLevel <= 9 )
        {
        return 1.40;
        }
        if (  KFPRI.ClientVeteranSkillLevel >= 10 && KFPRI.ClientVeteranSkillLevel <= 12 )
        {
        return 1.50;
        }
        if (  KFPRI.ClientVeteranSkillLevel >= 13 && KFPRI.ClientVeteranSkillLevel <= 15  )
        {
        return 1.60;
        }
        if ( KFPRI.ClientVeteranSkillLevel == 16 )
        {
        return 1.70;
        }
        if ( KFPRI.ClientVeteranSkillLevel == 17 )
        {
        return 1.80;
        }
        if ( KFPRI.ClientVeteranSkillLevel == 18 )
        {
        return 1.90;
        }
        if ( KFPRI.ClientVeteranSkillLevel >= 19 )
        {
        return 1.90;
        }
        return 1.30;
           
    }
     
    Папка01 нравится это.
  15. Hemoglobin

    Hemoglobin Соучастник

    Тоже не помогло. Может попробовать в самой двустволке что нибудь поменять? Просто в коде оружия я вообще практически не шарю, знаю только как урон менять и боезапас с отдачей
     
  16. RaideN-

    RaideN- Игровая Администрация

    Двухстволка сама по себе кривая со всех сторон. Её даже Трипвайры не сразу пофиксили (были бесконечные патроны). Так что делай у неё только дуплет или ищи замену)
     
    Папка01 нравится это.
  17. Hemoglobin

    Hemoglobin Соучастник

    Мда жаль, не подскажешь где можно брать оружие для кф, я брал на сайте http://killing-floor.ru/, но там на некоторые перки оружия почти нет, а некоторые пушки откровенно сырые. Или все же большинство серверов берут оружие паками на заказ как например у Essence если он еще занимается этим, ну по крайне мере он пилит и модит мутаторы.
     
  18. RaideN-

    RaideN- Игровая Администрация

    Тут на форуме ищи. Либо можешь покупать/заказывать у ребят. У нас есть мододелы, которые могут даже с нуля пушку тебе сделать.
     
    Папка01 нравится это.
  19. Hemoglobin

    Hemoglobin Соучастник

    Ладно думаю потом просто заменю двустволку на что нибудь другое, думаю может не стоить создавать отдельную тему есть еще такой вопрос у меня на коммандосе вписаны все пушки и бонусы для них но вот только на большинство из них что я добавил не работает бонус по урону, то есть у них почему-то стандартный урон, а скорость перезарядки, патроны и т.д. все есть. Почему так?
     
  20. RaideN-

    RaideN- Игровая Администрация

    мб не прописана пушка в AddDamage
     
    Папка01 нравится это.