Вопросы по ServerPerks и его модификациям.

Тема в разделе "Кодинг", создана пользователем scar, 26 янв 2011.

  1. scar

    scar Бандит

    Может кто подскажет ,как и где редактировать какое оружие получит перк на определенном уровне.
     
    Molekula нравится это.
  2. F4TAL1ST

    F4TAL1ST ---

    Ты что, хочешь, что бы берсерк 18 уровня возрождался с огнеметом? :huh:
    Не думаю, что это логично, но тем не менее - тебе нужно скачать исходники мутатора, после чего изменить вручную его код (нужно владеть навыками программирования, и знать язык Unreal), потом надо скомпилировать исходник в мутатор
     
    Slava90, parollpasse и kiry767 нравится это.
  3. scar

    scar Бандит

    При компиляции выходит ошибка

    C:\killing.floor\System>C:/killing.floor/System/UCC.exe make
    ----------------------------Core - Release----------------------------
    ---------------------------Engine - Release---------------------------
    ----------------------------Fire - Release----------------------------
    ---------------------------Editor - Release---------------------------
    --------------------------UnrealEd - Release--------------------------
    ---------------------------IpDrv - Release----------------------------
    ----------------------------UWeb - Release----------------------------
    --------------------------GamePlay - Release--------------------------
    -------------------------UnrealGame - Release-------------------------
    ---------------------------XGame - Release----------------------------
    -------------------------XInterface - Release-------------------------
    ---------------------------XAdmin - Release---------------------------
    -------------------------XWebAdmin - Release--------------------------
    ---------------------------GUI2K4 - Release---------------------------
    --------------------------xVoting - Release---------------------------
    --------------------------UTV2004c - Release--------------------------
    --------------------------UTV2004s - Release--------------------------
    -------------------------ROEffects - Release--------------------------
    --------------------------ROEngine - Release--------------------------
    ------------------------ROInterface - Release-------------------------
    ---------------------------Old2k4 - Release---------------------------
    ---------------------------KFMod - Release----------------------------
    ---------------------------KFChar - Release---------------------------
    ---------------------------KFGui - Release----------------------------
    -----------------------ServerPerksV5 - Release------------------------
    Analyzing...
    Parsing ClientPerkRepLink
    Parsing ServerPerksMut
    Parsing DatabaseUdpLink
    Parsing KFVetEarnedMessageSR
    Parsing SRVeterancyTypes
    Parsing SRVetBerserker
    Parsing SRVetCommando
    Parsing SRVetDemolitions
    Parsing SRVetFieldMedic
    Parsing SRVetFirebug
    Parsing SRVetSharpshooter
    Parsing SRVetSupportSpec
    Parsing KFPCServ
    Parsing SRHUDKillingFloor
    Parsing ServerStStats
    C:\killing.floor\ServerPerksV5\Classes\ServerStStats.uc(338) : Error, Redefiniti
    on of 'function AddKill' differs from original in KFSteamStatsAndAchievements
    Compile aborted due to errors.
    Failure - 1 error(s), 0 warning(s)

    C:\killing.floor\System>pause
    Для продолжения нажмите любую клавишу . . .


    как обойти эту ошибку
    C:\killing.floor\ServerPerksV5\Classes\ServerStStats.uc(338) : Error, Redefiniti
    on of 'function AddKill' differs from original in KFSteamStatsAndAchievements
     
  4. simpsonbanz

    simpsonbanz Новенький

    я могу изменить stats на вкладку achievements? :)
     
  5. LLIePLLIeHb

    LLIePLLIeHb Guest

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

    VETAL Солдат

    По проблеме компилирования мутатора ServerPerks на форуме Протона удалось получить ответ на интересующий вопрос, а точнее подсказку в виде линка:
    http://forums.tripwireinteractive.com/showthread.php?p=689162#post689162
    на этой страничке парень задает тот же вопрос и на след. страничке в мессаге 221 получает ответ.
    Проще говоря в исходниках, в файле ServerStStats надо удалить строчки:
    Код:
    function AddKill(bool bLaserSightedEBRM14Headshotted, bool bMeleeKill, bool bZEDTimeActive)
    {
    	bHasChanged = true;
    	Rep.RKillsStat++;
    	if( MyStatsObject!=None )
    		MyStatsObject.KillsStat++;
    	DelayedStatCheck();
    }
    function AddBloatKill( bool bWithBullpup )
    {
    	bHasChanged = true;
    	Rep.RBloatKillsStat++;
    	if( MyStatsObject!=None )
    		MyStatsObject.BloatKillsStat++;
    	DelayedStatCheck();
    }
    
    function AddSirenKill(bool bLawRocketImpact)
    {
    	bHasChanged = true;
    	Rep.RSirenKillsStat++;
    	if( MyStatsObject!=None )
    		MyStatsObject.SirenKillsStat++;
    	DelayedStatCheck();
    }
    и
    Код:
    function KilledFleshpound(bool bWithMeleeAttack, bool bWithAA12, bool bWithKnife);
     
    Винни и LLIePLLIeHb нравится это.
  7. LLIePLLIeHb

    LLIePLLIeHb Guest

    VETAL, спасибо огромное все работает, исправил командоса:

    В файле SRVetCommando.uc находим строчки :

    static function SpecialHUDInfo(KFPlayerReplicationInfo KFPRI, Canvas C)
    {
    local KFMonster KFEnemy;
    local HUDKillingFloor HKF;
    local float MaxDistanceSquared;

    if ( KFPRI.ClientVeteranSkillLevel > 0 )
    {
    HKF = HUDKillingFloor(C.ViewPort.Actor.myHUD);
    if ( HKF == none || C.ViewPort.Actor.Pawn == none )
    return;

    switch ( KFPRI.ClientVeteranSkillLevel )
    {
    case 1:
    MaxDistanceSquared = 25600; // 20% (160 units)
    break;
    case 2:
    MaxDistanceSquared = 102400; // 40% (320 units)
    break;
    case 3:
    MaxDistanceSquared = 230400; // 60% (480 units)
    break;
    case 4:
    MaxDistanceSquared = 409600; // 80% (640 units)
    break;
    case 5:
    case 6:
    MaxDistanceSquared = 640000; // 100% (800 units)
    break;

    и в конце дописываем:
    default:
    MaxDistanceSquared = 921600; // 120% (960 units)
    break;

    т.е. получается так:

    static function SpecialHUDInfo(KFPlayerReplicationInfo KFPRI, Canvas C)
    {
    local KFMonster KFEnemy;
    local HUDKillingFloor HKF;
    local float MaxDistanceSquared;

    if ( KFPRI.ClientVeteranSkillLevel > 0 )
    {
    HKF = HUDKillingFloor(C.ViewPort.Actor.myHUD);
    if ( HKF == none || C.ViewPort.Actor.Pawn == none )
    return;

    switch ( KFPRI.ClientVeteranSkillLevel )
    {
    case 1:
    MaxDistanceSquared = 25600; // 20% (160 units)
    break;
    case 2:
    MaxDistanceSquared = 102400; // 40% (320 units)
    break;
    case 3:
    MaxDistanceSquared = 230400; // 60% (480 units)
    break;
    case 4:
    MaxDistanceSquared = 409600; // 80% (640 units)
    break;
    case 5:
    case 6:
    MaxDistanceSquared = 640000; // 100% (800 units)
    break;
    default:
    MaxDistanceSquared = 921600; // 120% (960 units)
    break;
    }
     
  8. LLIePLLIeHb

    LLIePLLIeHb Guest

    В файле SRVetSupportSpec.uc прописываешь так:

    // If Level 5, give them Moss12
    if ( KFPRI.ClientVeteranSkillLevel >= 5 )
    KFHumanPawn(P).CreateInventoryVeterancy("Moss12Mut.Moss12", GetCostScaling(KFPRI, class'Moss12Pickup'));

    затем в папку с исходником ServerPerks4 положи файл Moss12Pickup.uc из исходника Moss12

    Очень хотелось бы узнать как прописать скидки на кастомное оружие скажем на SA80 или Fn Fal.
     
  9. CompJ

    CompJ Солдат

    Вот как я делал, здесь правда нет Fn Fal, последняя версия на работе (благо поменять не долго и прямо перед игрой вношу изменения), но сравнивая оригинальные и мои варианты можно легко понять что к чему.

    Посмотреть вложение KJVetSkills.zip

    а так для скидок в перк добавляешь свой код в функцию:
    Код:
    static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item)
    например у коммандо у меня сделано так:
    Код:
    // Change the cost of particular items
    static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item)
    {
    	if ( Item == class'BullpupPickup' || Item == class'AK47Pickup' || Item == class'SCARMK17Pickup' || 
    Item == class'PPSHPickup' || Item == class'M7A3MPickup' || Item == class'MP7MPickup'  || Item == class'MAC10Pickup')
    		return FMax(0.9 - (0.10 * float(KFPRI.ClientVeteranSkillLevel)),0.1f); // Up to 70% discount on Assault Rifles
    	return 1.0;
    }
    вот это добавка моя импровизация
    Код:
     || 
    Item == class'PPSHPickup' || Item == class'M7A3MPickup' || Item == class'MP7MPickup'  || Item == class'MAC10Pickup'
     
    LLIePLLIeHb и VETAL нравится это.
  10. Atlan

    Atlan Капо

    Помогите прописать любое оружие из мута WTF,как не прописываю выбивает ошибку:

    Прописываю так:
    // If Level 11, give them a BanHammer
    if ( KFPRI.ClientVeteranSkillLevel >= 11 ) KFHumanPawn(P).CreateInventoryVeterancy("WTF.WTFEquipBanHammer", GetCostScaling(KFPRI, class'WTFEquipBanHammerPickup'));
     
  11. VETAL

    VETAL Солдат

    А ты закидываешь нужный файл из исходника ВТФ в исходники серверперксов при компиляции, как описано выше, в сообщении 91?
    P.S. Огромное спасибо CompJ за помощь в этой теме )
     
  12. Atlan

    Atlan Капо

    Конечно!но вообще файлы втф особенные,там в них даже цену на оружие не пробить,в общем,буду признателен,если кто то опишет,как правил серверперк-используя мут втф.
     
  13. LLIePLLIeHb

    LLIePLLIeHb Guest

    В файле WTFEquipBoomStickPickup.uc , который ты кинул в папку с исходником ServerPerks4 удали строчку :

    InventoryType=Class'WTF.WTFEquipBanHammer'

    Должно получиться так :

    class WTFEquipBanHammerPickup extends AxePickup;

    #exec OBJ LOAD FILE=WTFTex2.utx

    defaultproperties
    {
    Weight=2.000000
    Description="A deadly weapon."
    ItemName="Ban Hammer"
    ItemShortName="Ban Hammer"
    CorrespondingPerkIndex=6
    EquipmentCategoryID=3
    PickupMessage="You wield the Ban Hammer."
    Skins(0)=Texture'WTFTex2.BanHammer.Banhammer_3rd'
    }

    И так со всем оружием из WTF мода, жаль уже поставил оружие и запустил ServerPerks на серве так бы изменил скидки, а если поменять пишет "Несовпадение контенера ServerPerks4" у подключившихся.
     
    Atlan нравится это.
  14. VETAL

    VETAL Солдат

    Спасибо за совет, прописать автореспавн с Мосс12 получилось, но левелные бонусы никак не хотят работать, хотя прописываю все по примерам, и перепроверял на 100 раз, даже при компиляции никаких ошибок не выдает, но в игре на обычный дроб скидка идет, а на мосс12 нет, хотя прописаны они рядышком в функции. Посоветуйте, может быть я пропустил что-то и где то чего то недописал? (файлы Moss12Ammo и Moss12Pickup закинул в исходники ServerPerksV4)
    Залил свой файлик супортера
     

    Вложения:

  15. LLIePLLIeHb

    LLIePLLIeHb Guest

    Та же история респаун получается ,а вот бонусы нет.Также все скомпилировалось ,но в игре все по-прежнему. :(
     
  16. VETAL

    VETAL Солдат

    LLIePLLIeHb, загляни сюда, тут нашлось решение этой проблемы: http://proton-net.com/forums/viewtopic.php?f=40&t=720&p=20220#p20220
     
    LLIePLLIeHb нравится это.
  17. LLIePLLIeHb

    LLIePLLIeHb Guest

    Понятно, спс. А с WTF как быть ведь большенство оружия на WTF и нету бонусов?
     
  18. VETAL

    VETAL Солдат

    Мне кажется придется также распарывать мутатор WTF и скрещивать с ServerPerks, правда пока сам не пробовал т.к. решил что в моей сборке серва пока не будет оружия оттуда, хотя мб потом попробую. Если что-то найду - отпишусь.
     
  19. key

    key Солдат

    Подскажите пожалуйста как в мутаторе ServerPerksV4 изменить бонус на боезапас. Продвижение по перкам есть, но бонусов дальше 6-го уровня нету.
    Например в файле исходника SRVetCommando.uc только 6 уровней:
    class SRVetCommando extends SRVeterancyTypes
    abstract;

    static function int GetPerkProgressInt( ClientPerkRepLink StatOther, out int FinalInt, byte CurLevel, byte ReqNum )
    {
    switch( CurLevel )
    {
    case 0:
    if( ReqNum==0 )
    FinalInt = 10;
    else FinalInt = 10000;
    break;
    case 1:
    if( ReqNum==0 )
    FinalInt = 30;
    else FinalInt = 25000;
    break;
    case 2:
    if( ReqNum==0 )
    FinalInt = 100;
    else FinalInt = 100000;
    break;
    case 3:
    if( ReqNum==0 )
    FinalInt = 350;
    else FinalInt = 500000;
    break;
    case 4:
    if( ReqNum==0 )
    FinalInt = 1200;
    else FinalInt = 1500000;
    break;
    case 5:
    if( ReqNum==0 )
    FinalInt = 2300;
    else FinalInt = 3500000;
    break;
    case 6:
    if( ReqNum==0 )
    FinalInt = 3600;
    else FinalInt = 5500000;
    break;

    default:
    if( ReqNum==0 )
    FinalInt = 3600+GetDoubleScaling(CurLevel,350);
    else FinalInt = 5500000+GetDoubleScaling(CurLevel,500000);
    }
    if( ReqNum==0 )
    return Min(StatOther.RStalkerKillsStat,FinalInt);
    return Min(StatOther.RBullpupDamageStat,FinalInt);
    }

    // Display enemy health bars
    static function SpecialHUDInfo(KFPlayerReplicationInfo KFPRI, Canvas C)
    {
    local KFMonster KFEnemy;
    local HUDKillingFloor HKF;
    local float MaxDistanceSquared;

    if ( KFPRI.ClientVeteranSkillLevel > 0 )
    {
    HKF = HUDKillingFloor(C.ViewPort.Actor.myHUD);
    if ( HKF == none || C.ViewPort.Actor.Pawn == none )
    return;

    switch ( KFPRI.ClientVeteranSkillLevel )
    {
    case 1:
    MaxDistanceSquared = 25600; // 20% (160 units)
    break;
    case 2:
    MaxDistanceSquared = 102400; // 40% (320 units)
    break;
    case 3:
    MaxDistanceSquared = 230400; // 60% (480 units)
    break;
    case 4:
    MaxDistanceSquared = 409600; // 80% (640 units)
    break;
    case 5:
    case 6:
    MaxDistanceSquared = 640000; // 100% (800 units)
    break;
    }

    foreach C.ViewPort.Actor.DynamicActors(class'KFMonster',KFEnemy)
    {
    if ( KFEnemy.Health > 0 && !KFEnemy.Cloaked() && VSizeSquared(KFEnemy.Location - C.ViewPort.Actor.Pawn.Location) < MaxDistanceSquared )
    HKF.DrawHealthBar(C, KFEnemy, KFEnemy.Health, KFEnemy.HealthMax , 50.0);
    }
    }
    }

    static function bool ShowStalkers(KFPlayerReplicationInfo KFPRI)
    {
    return true;
    }

    static function float GetStalkerViewDistanceMulti(KFPlayerReplicationInfo KFPRI)
    {
    switch ( KFPRI.ClientVeteranSkillLevel )
    {
    case 0:
    return 0.0625; // 25%
    case 1:
    return 0.25; // 50%
    case 2:
    return 0.36; // 60%
    case 3:
    return 0.49; // 70%
    case 4:
    return 0.64; // 80%
    }

    return 1.0; // 100% of Standard Distance(800 units or 16 meters)
    }

    static function float GetMagCapacityMod(KFPlayerReplicationInfo KFPRI, KFWeapon Other)
    {
    if ( (Bullpup(Other) != none || AK47AssaultRifle(Other) != none || SCARMK17AssaultRifle(Other) != none ) && KFPRI.ClientVeteranSkillLevel > 0 )
    {
    if ( KFPRI.ClientVeteranSkillLevel == 1 )
    return 1.10;
    else if ( KFPRI.ClientVeteranSkillLevel == 2 )
    return 1.20;
    return 1.25; // 25% increase in assault rifle ammo carry
    }
    return 1.0;
    }

    static function float GetAmmoPickupMod(KFPlayerReplicationInfo KFPRI, KFAmmunition Other)
    {
    if ( (BullpupAmmo(Other) != none || AK47Ammo(Other) != none || SCARMK17Ammo(Other) != none) && KFPRI.ClientVeteranSkillLevel > 0 )
    {
    if ( KFPRI.ClientVeteranSkillLevel == 1 )
    return 1.10;
    else if ( KFPRI.ClientVeteranSkillLevel == 2 )
    return 1.20;
    return 1.25; // 25% increase in assault rifle ammo carry
    }
    return 1.0;
    }
    static function float AddExtraAmmoFor(KFPlayerReplicationInfo KFPRI, Class<Ammunition> AmmoType)
    {
    if ( (AmmoType == class'BullpupAmmo' || AmmoType == class'AK47Ammo' || AmmoType == class'SCARMK17Ammo') && KFPRI.ClientVeteranSkillLevel > 0 )
    {
    if ( KFPRI.ClientVeteranSkillLevel == 1 )
    return 1.10;
    else if ( KFPRI.ClientVeteranSkillLevel == 2 )
    return 1.20;
    return 1.25; // 25% increase in assault rifle ammo carry
    }
    return 1.0;
    }
    static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class<DamageType> DmgType)
    {
    if ( DmgType == class'DamTypeBullpup' || DmgType == class'DamTypeAK47AssaultRifle' || DmgType == class'DamTypeSCARMK17AssaultRifle' )
    {
    if ( KFPRI.ClientVeteranSkillLevel == 0 )
    return float(InDamage) * 1.05;
    return float(InDamage) * (1.00 + (0.10 * float(Min(KFPRI.ClientVeteranSkillLevel, 5)))); // Up to 50% increase in Damage with Bullpup
    }
    return InDamage;
    }

    static function float ModifyRecoilSpread(KFPlayerReplicationInfo KFPRI, WeaponFire Other, out float Recoil)
    {
    if ( Bullpup(Other.Weapon) != none || AK47AssaultRifle(Other.Weapon) != none || SCARMK17AssaultRifle(Other.Weapon) != none )
    {
    if ( KFPRI.ClientVeteranSkillLevel <= 3 )
    Recoil = 0.95 - (0.05 * float(KFPRI.ClientVeteranSkillLevel));
    else if ( KFPRI.ClientVeteranSkillLevel <= 5 )
    Recoil = 0.70;
    else if ( KFPRI.ClientVeteranSkillLevel == 6 )
    Recoil = 0.60; // Level 6 - 40% recoil reduction
    else Recoil = FMax(0.9 - (0.05 * float(KFPRI.ClientVeteranSkillLevel)),0.f);
    return Recoil;
    }
    Recoil = 1.0;
    return Recoil;
    }

    static function float GetReloadSpeedModifier(KFPlayerReplicationInfo KFPRI, KFWeapon Other)
    {
    return 1.05 + (0.05 * float(KFPRI.ClientVeteranSkillLevel)); // Up to 35% faster reload speed
    }

    // Set number times Zed Time can be extended
    static function int ZedTimeExtensions(KFPlayerReplicationInfo KFPRI)
    {
    if ( KFPRI.ClientVeteranSkillLevel >= 3 )
    return KFPRI.ClientVeteranSkillLevel - 2; // Up to 4 Zed Time Extensions
    return 0;
    }

    // Change the cost of particular items
    static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item)
    {
    if ( Item == class'BullpupPickup' || Item == class'AK47Pickup' || Item == class'SCARMK17Pickup' )
    return FMax(0.9 - (0.10 * float(KFPRI.ClientVeteranSkillLevel)),0.1f); // Up to 70% discount on Assault Rifles
    return 1.0;
    }

    // Give Extra Items as default
    static function AddDefaultInventory(KFPlayerReplicationInfo KFPRI, Pawn P)
    {
    // If Level 5, give them Bullpup
    if ( KFPRI.ClientVeteranSkillLevel == 5 )
    KFHumanPawn(P).CreateInventoryVeterancy("KFMod.Bullpup", GetCostScaling(KFPRI, class'BullpupPickup'));
    // If Level 6, give them an AK47
    if ( KFPRI.ClientVeteranSkillLevel >= 6 )
    KFHumanPawn(P).CreateInventoryVeterancy("KFMod.AK47AssaultRifle", GetCostScaling(KFPRI, class'AK47Pickup'));
    }

    static function string GetCustomLevelInfo( byte Level )
    {
    local string S;

    S = Default.CustomLevelInfo;
    ReplaceText(S,"%s",GetPercentStr(0.05 * float(Level)+0.05));
    ReplaceText(S,"%d",GetPercentStr(0.1+FMin(0.1 * float(Level),0.8f)));
    ReplaceText(S,"%z",string(Level-2));
    ReplaceText(S,"%r",GetPercentStr(FMin(0.05 * float(Level)+0.1,1.f)));
    return S;
    }

    defaultproperties
    {
    PerkIndex=3

    OnHUDIcon=Texture'KillingFloorHUD.Perks.Perk_Commando'
    OnHUDGoldIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Commando_Gold'
    VeterancyName="Commando"
    Requirements[0]="Kill %x Stalkers with Bullpup/AK47/SCAR"
    Requirements[1]="Deal %x damage with Bullpup/AK47/SCAR"
    NumRequirements=2

    LevelEffects(0)="5% more damage with Bullpup/AK47/SCAR|5% less recoil with Bullpup/AK47/SCAR|5% faster reload with all weapons|10% discount on Bullpup/AK47/SCAR|Can see cloaked Stalkers from 4 meters"
    LevelEffects(1)="10% more damage with Bullpup/AK47/SCAR|10% less recoil with Bullpup/AK47/SCAR|10% larger Bullpup/AK47/SCAR clip|10% faster reload with all weapons|20% discount on Bullpup/AK47/SCAR|Can see cloaked Stalkers from 8m|Can see enemy health from 4m"
    LevelEffects(2)="20% more damage with Bullpup/AK47/SCAR|15% less recoil with Bullpup/AK47/SCAR|20% larger Bullpup/AK47/SCAR clip|15% faster reload with all weapons|30% discount on Bullpup/AK47/SCAR|Can see cloaked Stalkers from 10m|Can see enemy health from 7m"
    LevelEffects(3)="30% more damage with Bullpup/AK47/SCAR|20% less recoil with Bullpup/AK47/SCAR|25% larger Bullpup/AK47/SCAR clip|20% faster reload with all weapons|40% discount on Bullpup/AK47/SCAR|Can see cloaked Stalkers from 12m|Can see enemy health from 10m|Zed-Time can be extended by killing an enemy while in slow motion"
    LevelEffects(4)="40% more damage with Bullpup/AK47/SCAR|30% less recoil with Bullpup/AK47/SCAR|25% larger Bullpup/AK47/SCAR clip|25% faster reload with all weapons|50% discount on Bullpup/AK47/SCAR|Can see cloaked Stalkers from 14m|Can see enemy health from 13m|Up to 2 Zed-Time Extensions"
    LevelEffects(5)="50% more damage with Bullpup/AK47/SCAR|30% less recoil with Bullpup/AK47/SCAR|25% larger Bullpup/AK47/SCAR clip|30% faster reload with all weapons|60% discount on Bullpup/AK47/SCAR|Spawn with a Bullpup|Can see cloaked Stalkers from 16m|Can see enemy health from 16m|Up to 3 Zed-Time Extensions"
    LevelEffects(6)="50% more damage with Bullpup/AK47/SCAR|40% less recoil with Bullpup/AK47/SCAR|25% larger Bullpup/AK47/SCAR clip|35% faster reload with all weapons|70% discount on Bullpup/AK47/SCAR|Spawn with an AK47|Can see cloaked Stalkers from 16m|Can see enemy health from 16m|Up to 4 Zed-Time Extensions"
    CustomLevelInfo="50% more damage with Bullpup/AK47/SCAR|%r less recoil with Bullpup/AK47/SCAR|25% larger Bullpup/AK47/SCAR clip|%s faster reload with all weapons|%d discount on Bullpup/AK47/SCAR|Spawn with an AK47|Can see cloaked Stalkers from 16m|Can see enemy health from 16m|Up to %z Zed-Time Extensions"
    }
    Где тут менять, добавлять бонусы?

    Может кому не жалко готовый, как на протоне? (мутов на оружия нет)
    Спасибо.
     
  20. VETAL

    VETAL Солдат

    То что ты выделил зеленым, это распределение кача по уровням от 0 до 6, остальные левелы задаются формулами в следующих же строчках:

    default:
    if( ReqNum==0 )
    FinalInt = 3600+GetDoubleScaling(CurLevel,350);
    else FinalInt = 5500000+GetDoubleScaling(CurLevel,500000);

    А менять бонусы нужно в коде который идет ниже, причом там тоже формулы продуманы так что сами генерируют значения для левелов больше 6го.
    Правда конкретно у команндоса есть в этом коде фэйл, после 7го уровня пропадает возможность видеть хп у мобов, надо просто добавить строчки:

    case 5:
    case 6:
    case 7:
    case 8:
    case 9: //- Смотря до какого уровня у тебя стоит возможность качаться
    MaxDistanceSquared = 640000; // 100% (800 units)
    break;

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