[Кодинг] Прописываем бонусы для оружия в ServerPerks

Тема в разделе "Кодинг", создана пользователем kok-s, 14 май 2012.

  1. Imaginary

    Imaginary Новенький

    Ну, вопросы обычно бесконечными не бывают. Вот они и закончились) Вообщем если какой нибудь вопрос всплывет, отпишусь в соответствующей теме)
     
  2. Stein

    Stein Солдат

    всем привет, как прописать чтобы у мед гана был больший объём хила, или просто увеличить наверно скорость регенерации как то так в шприце? по аналогии с объёмом магазина

    -в пушке есть такой параметр HealAmmoCharge=500 в deafultpr.. это то или нет, и если то, то как его через сп увеличивать с уровнем
     
  3. eXes1ze`

    eXes1ze` Соучастник

    Вот на скорость регенерации,поправь функцию GetSyringeChargeRate:

    static function float GetSyringeChargeRate(KFPlayerReplicationInfo KFPRI)
    {
    local float cHealboostamount;

    cHealboostamount = Class'HealingProjectile'.Default.HealBoostAmount;
    return cHealboostamount * (1.0 + 0.3 * Min(10,KFPRI.ClientVeteranSkillLevel));
    }
     
    ЛОХМАТЫЙ нравится это.
  4. kok-s

    kok-s Консильери

    Вот функции которые нужно править в ServerPerksP.SRVetFieldMedic:
    static function float GetSyringeChargeRate(KFPlayerReplicationInfo KFPRI) и static function float GetHealPotency(KFPlayerReplicationInfo KFPRI)
     
    ЛОХМАТЫЙ и Stein нравится это.
  5. Stein

    Stein Солдат

    ещё возник вопрос по дамагу снайпера вот код SP
    //дамаг от хэдшота как я понял
    static function float GetHeadShotDamMulti(KFPlayerReplicationInfo KFPRI, KFPawn P, class<DamageType> DmgType)
    {
    local float ret;

    // Удален дополнительный СС Арбалет повреждений выстрел в голову в 1 раунде (добавляется обратно в 2-м раунде) и Убрана женат / Dualies Урон для ада на Земле в 6 раунде
    // Добавлено Dual дигл назад в течение Balance 7 раунде
    if ( DmgType == class'DamTypeCrossbow' || DmgType == class'DamTypeCrossbowHeadShot' || DmgType == class'DamTypeWinchester' ||
    DmgType == class'DamTypeDeagle' || DmgType == class'DamTypeDualDeagle' || DmgType == class'DamTypeM14EBR' ||
    DmgType == class'DamTypeMagnum44Pistol' || DmgType == class'DamTypeDual44Magnum'
    || DmgType == class'DamTypeMK23Pistol' || DmgType == class'DamTypeDualMK23Pistol'
    || DmgType == class'DamTypeM99SniperRifle' || DmgType == class'DamTypeM99HeadShot'
    || DmgType == class'DamTypeSPSniper' || DmgType == class'DamTypeM82A1LLI'
    || DmgType == class'DamTypeSVDLLIm' || DmgType == class'DamTypeSVDLLI'
    || DmgType == class'DamTypeL96AWPLLIm' || DmgType == class'DamTypeL96AWPLLI'
    || DmgType == class'DamTypeVSSDT' || DmgType == class'DamTypeM76LLI'
    || DmgType == class'DamTypeNew_Glock17' || DmgType == class'DamTypeDualNew_Glock17'
    || DmgType == class'DamTypeP226LLI' || DmgType == class'DamTypeTDColt'
    || DmgType == class'DamTypeDualTDColt' || DmgType == class'DamTypePB'
    || DmgType == class'DamTypeG2ContenderDT' ||
    (DmgType == class'DamTypeDualies' && KFPRI.Level.Game.GameDifficulty < 7.0) )
    {
    if ( KFPRI.ClientVeteranSkillLevel <= 3 )
    {
    ret = 1.05 + (0.02 * float(KFPRI.ClientVeteranSkillLevel));
    }
    else if ( KFPRI.ClientVeteranSkillLevel == 4 )
    {
    ret = 1.15; //15%
    }
    else if ( KFPRI.ClientVeteranSkillLevel == 5 )
    {
    ret = 1.20;//20%
    }
    else if ( KFPRI.ClientVeteranSkillLevel == 6 )
    {
    ret = 1.30; // 30%
    }
    else
    {
    ret = 1.3 + (0.05 * float(KFPRI.ClientVeteranSkillLevel)); //90% на 12
    }
    }
    // Headshot damage (Повреждения хедшотов) от Двойных Диглов на уровне сложности 6
    else if ( DmgType == class'DamTypeDualies' && KFPRI.Level.Game.GameDifficulty >= 7.0 )
    {
    return (1.0 + (0.04 * float(Min(KFPRI.ClientVeteranSkillLevel, 5)))); // 20% increase in Headshot Damage
    }
    else
    {
    ret = 1.0; // Fix for oversight in Balance Round 6(which is the reason for the Round 6 second attempt patch)
    }

    if ( KFPRI.ClientVeteranSkillLevel == 0 )
    {
    return ret * 1.05;
    }

    return ret * (1.0 + (0.10 * float(Min(KFPRI.ClientVeteranSkillLevel, 5)))); // 50% increase in Headshot Damage
    }

    -примерный расчёт-

    дак вот дамаг получается слишком, возмём "VSSDT" дамаг 200, HeadShotDamageMult=3 = 600

    на 2 уровне
    if ( KFPRI.ClientVeteranSkillLevel <= 3 )
    {
    ret = 1.05 + (0.02 * float(KFPRI.ClientVeteranSkillLevel)); = 1,09
    1,09*600=654
    а у меня на 2 уровне ~3150 в игре
    голова моба монстра "скрейка" диф билдер = 650 (с 1м игроком)
    монстр убивается с 1го раза при этом показывает дамаг в голову 3150

    уважаемые знатоки, вопрос, чем я упоролся? и второй вопрос ошибка в sp или в муте который показывает дамаг = MutKillMessage.MutKillMessage?
    -я понял что в муте но всё же может я просто не правильно считаю, тоесть мут мутом но снайпер всё равно слишком мощный или головы слишком не жирные
     
  6. kok-s

    kok-s Консильери

    Функция в СП GetHeadShotDamMulti увеличивает урон в голову + к тому, что у тебя прописано в оружии. HeadShotDamageMult есть как в DamTypeVSSDT, так и в самой пули VSSDTBullet. И так у тебя есть сам урон + 2 множителя и + надбавка в СП. Как всё это сбалансить решать тебе.

    Для проверки урона используй Show Damage
     
    ЛОХМАТЫЙ нравится это.
  7. Stein

    Stein Солдат

    тоесть оба множетеля действуют из пули и из дам тайпа, урон умножает на первый потом на второй множитель, или они действуют при определённых условиях... кстати class пули VSSDTBullet у меня нет такого может версия другая!
     
  8. kok-s

    kok-s Консильери

    Да оба работают.
     
  9. Stein

    Stein Солдат

    спасибо, вот ещё что за параметр порог урона в классах пуль DamageThreshold=1
     
  10. eXes1ze`

    eXes1ze` Соучастник

    Прописал технику бонус на отдачу и теперь почему то у дробовиков вместо дроби вылетает одна большая дробь,можно как нибудь решать эту проблему?
    static function float ModifyRecoilSpread(KFPlayerReplicationInfo KFPRI, WeaponFire Other, out float Recoil)
    {
    if ( Boomstick(Other.Weapon) != none)
    {
    if ( KFPRI.ClientVeteranSkillLevel == 0 )
    Recoil = 1.0;
    else Recoil = FMax(1.0 - (0.10 * float(KFPRI.ClientVeteranSkillLevel)),0.f);
    return Recoil;
    }
    Recoil = 1.0;
    return Recoil;
    }
     
  11. kok-s

    kok-s Консильери

    Если ты хочешь сделать разлёт дроби меньше с каждым уровнем, но не хочешь чтобы вся дробь летела как одна пуля. Тебе нужно просто поменять (отмечено цветом) цифру на более низкое значение. Конкретно какое ставить не подскажу, вить это настраивается под сервер.

    else Recoil = FMax(1.0 - (0.10 * float(KFPRI.ClientVeteranSkillLevel)),0.f);
     
    ЛОХМАТЫЙ нравится это.
  12. eXes1ze`

    eXes1ze` Соучастник

    Нет, я хочу что с уровнем уменьшалась отдача,а разлёт дроби так и оставался прежним.
     
  13. kok-s

    kok-s Консильери

    А подожди ты имеешь в виду, чтоб игрок не подпрыгивал при стрельбе? Тогда это меняется в самом стволе. Блин как называется функция я не помню.
     
  14. eXes1ze`

    eXes1ze` Соучастник

    Нет я имею ввиду чтобы у дробовиков уменьшалась отдача как и у остальных пушек,например как у автоматов или как у винтовок,но что бы разброс дроби не уменьшался.
     
  15. gall87

    gall87 Капо

    не получится простым способом
    тока фаер классы править
     
  16. Stein

    Stein Солдат

    Всем привет...
    вот подрыв код родной сп7.10
    скидка на предметы

    static function float GetAmmoCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item)
    {
    if ( Item == class'PipeBombPickup' )
    // Todo, this won't need to be so extreme when we set up the system to only allow him to buy it perhaps
    return FMax(0.5 - (0.04 * float(KFPRI.ClientVeteranSkillLevel)),0.01f); // Up to 93% discount on PipeBomb
    почему 93% не могу понять (// Up to 93% discount on PipeBomb) считаю получается 74% на 6м уровне
     
  17. Flame

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

    ну и молодец
    правильно считаешь
    а почему - спроси тех, кому лень поправить старые комментарии
     
    ЛОХМАТЫЙ нравится это.
  18. Stein

    Stein Солдат

  19. gall87

    gall87 Капо

    Цена бомбы 1000, с таким кодом она стоит копейки, -50% и 4% примерно с каждым уровнем, вроде так)
     
  20. Flame

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

    Эт ты ваще к чему? ))
    Мы вроде уже разобрались))
    Ну раз такое дело могу дополнить, что начиная с 13 уровня всегда будет скидка 99%
    Но как бы и пофик)
     
    Stein нравится это.