Новое требование к прокачке перка. Счетчик убийств моба

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

  1. Flame

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

    Рад за тебя, но не забывай про теги spoiler и code
    Не надо целиком цитировать большие посты)
     
  2. Evmiva

    Evmiva Соучастник

    Для не стандартного перка, с не стандартным оружием, при прокачке счетчиком мобов - проблема в том, что убийство мобов засчитывается с любого оружия, а не того которое привязано к перку. Можно ли добавить условия проверки по самому перку или названию оружия, а не только по дамагу к function NotifyPlayerKill( Pawn Killed, class<DamageType> damageType ) или добавить дополнительную ф-ю проверки ? Что бы не засчитывало убийства сделанные на другом перке или другим оружием ?
     
  3. STaJIKeR

    STaJIKeR Капо

    Что-то я ничего не понял... Как у тебя идет засчитывание убийства? Почему происходит зачисление на другом оружии вообще?!?!
    Можно хотя-бы 1 исходник урона оружия, как в стату пишется вообще...
     
    Последнее редактирование: 16 дек 2018
  4. Evmiva

    Evmiva Соучастник

    У меня сп 7,5 Там новые условия добавляются через AddCustomStats. Вот,например, добавление сирен
    Код:
    class BKill extends SRCustomProgressInt;
    
    function NotifyPlayerKill( Pawn Killed, class<DamageType> damageType )
    {
        if( ZombieSiren(Killed)!=None 
    &&
    (    damageType==Class'DamTypeBruteM249New' ||
        damageType==Class'DamTypeBruteChainGunNew' ||
        damageType==Class'DamTypeBruteM41ANew' ||
        damageType==Class'DamTypeBrutePKMNew' ||
        damageType==Class'DamTypeBruteRPK47New' ||
        damageType==Class'DamTypeBruteAUG_A1ARNew'
        )
     
     
        )
            IncrementProgress(1);
    }
    
    В DamType для прокачки уроном:
    Код:
    static function AwardDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount)
    {
        if( SRStatsBase(KFStatsAndAchievements)!=None && SRStatsBase(KFStatsAndAchievements).Rep!=None )
        SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'BPerkProg',Amount);
    }
    
    Так не получается :
    static function AwardKill(KFSteamStatsAndAchievements KFStatsAndAchievements, KFPlayerController Killer, KFMonster Killed )
    {

    if( Killed.IsA('ZombieSiren') )
    ServerStStats(KFStatsAndAchievements).AddBKill();

    }
    И сейчас мобы засчитываются даже если берсом с топором бить( Как правильно написать ф-ю счетчика мобов в DamType для сп 7.5 ?
    В NotifyPlayerKill проверка по дамагу результата не дает, как добавить условие на проверку оружия по конкретному названию или по перку ?
     
    Последнее редактирование: 18 дек 2018
  5. Essence

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

    Не нужно NotifyPlayerKill трогать.

    Код:
    class BKill extends SRCustomProgressInt;
    
    defaultproperties
    {
         ProgressName="Siren Kills"
    }

    Код:
    static function AwardKill(KFSteamStatsAndAchievements KFStatsAndAchievements, KFPlayerController Killer, KFMonster Killed )
    {
        if(Killed.IsA('ZombieSiren') && SRStatsBase(KFStatsAndAchievements)!=None && SRStatsBase(KFStatsAndAchievements).Rep!=None) SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'BKill', 1);
    }
     
    Evmiva нравится это.
  6. STaJIKeR

    STaJIKeR Капо

    Вообщем... Осенило... Лучше пускай делают по такому примеру, ибо вписать свою переменную для "новичка" пока сложновато....
    Может конечно доепываюсь, но не проще направить сразу в SRStatsBase без лишних проверок?!?

    Код:
    static function AwardKill(KFSteamStatsAndAchievements KFStatsAndAchievements, KFPlayerController Killer, KFMonster Killed )
    {
        if( Killed.IsA('ZombieSiren') )
            SRStatsBase(KFStatsAndAchievements).AddSirenKill();
    }

    Хотя и придется интегрировать в SP засчитывание, но лучше уж так, чем этот сраный костыль...

    Еще важный аспект:
    Учитывайте, некоторые переменные могут быть изначально уже "заняты" под уже готовые "решения".
     
    Последнее редактирование: 18 дек 2018
  7. Evmiva

    Evmiva Соучастник

    Дело в том, что хочу добавить разные новые условия, и в одном условии может быть сразу несколько мутантов.

    Код:
    static function AwardKill(KFSteamStatsAndAchievements KFStatsAndAchievements, KFPlayerController Killer, KFMonster Killed )
    {
        if(Killed.IsA('ZombieSiren') || Killed.IsA('ZombieBloat') && SRStatsBase(KFStatsAndAchievements)!=None && SRStatsBase(KFStatsAndAchievements).Rep!=None) SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'BKilled', 1);
        if(Killed.IsA('ZombieScrake')&& SRStatsBase(KFStatsAndAchievements)!=None && SRStatsBase(KFStatsAndAchievements).Rep!=None) SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'KillScrake', 1);
    }
    Так все равно засчитывает мутантов и с пистолета простого, не понятно почему.

    И если счетчик работает и без AwardKill в дамтайпах, значит считает в этой ф-и NotifyPlayerKill или где-то еще ?
     
    Последнее редактирование: 18 дек 2018
  8. STaJIKeR

    STaJIKeR Капо

    Если идет подсчет, то да, значит он считает именно там.
     
    Evmiva нравится это.
  9. Evmiva

    Evmiva Соучастник

    и почему тогда игнорируется проверка по
    DamageType ?
     
  10. STaJIKeR

    STaJIKeR Капо

    Я вообще не понимаю смысл твоей проверки, выдай эту функцию только нужным DT, а лучше сделай материнский класс и наследуй от него уже эти DT.
     
  11. Evmiva

    Evmiva Соучастник

    Все, дошло!!! Спасибо! Вроде получилось, буду проверять
     
    Последнее редактирование: 18 дек 2018
  12. STaJIKeR

    STaJIKeR Капо

    Да отстань ты от своей переменной...
    Зачем она тебе сдалась то?
    Пока не умеешь, делай попроще...
     
  13. Evmiva

    Evmiva Соучастник

    Да , все. То сообщение уже не актуально . Спасибо!!! Без NotifyPlayerKill и с прописанными AwardKill вроде считает уже как нужно . Просто не сразу стало понятно что можно без той ф-и вообще.
     
    Фрэгл нравится это.
  14. STaJIKeR

    STaJIKeR Капо

    Да ничего, рад что все получилось.

    И еще, не нравиться мне вот этот вид переменных... В стату пишет шляпу, вроде такой "cc=(N="RSniperDamageStat",V="270835")" гадость фииии
     
    Фрэгл нравится это.
  15. Essence

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

    Тогда бы я на Вашем месте прокачку перков перенёс бы из DamageType в GameRules, в такие функции как NetDamage и PreventDeath. Это даст больше возможностей экспериментировать с новыми условиями для зачисления кача.
    И лучше всё-таки пользоваться реализацией Флейма, она удобна и проста, в отличие от реализации Marco.
     
    Фрэгл нравится это.
  16. Evmiva

    Evmiva Соучастник

    С GameRules мне вообще страшно пока разбираться. Даже не знаю, что будет и что делать, если сейчас все просто в песочнице, и какие нужны будут изменения и на что это повлияет... может позже станет понятнее. А пока, и так хватает всякого с чем разобраться нужно.Вообще мне представляется так, что если создавать свой гейм тип, тогда и весь сервер заново пересобрать нужно, или все не настолько критично ?
     
  17. Essence

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

    Кастомный геймтайп будет наследовать KFGameType, так что не критично. Весь сервер переписывать не надо будет. Хотя, смотря какие изменения Вы собираетесь вносить в кастомный геймтайп. Если правки минимальны - остальные файлы сервера не придётся трогать.
     
    ЛОХМАТЫЙ и Evmiva нравится это.