Настройка песочницы

Тема в разделе "Dedicated Server", создана пользователем key, 3 май 2011.

  1. Flame

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

    Чот самая полезная темка про песочницу заныкалась. Надо поднять
    Расскажу я вам тогда сегодня как же сделать песочницу более удобной для настройки. Визуально
    Особенно эт интересно будет тем, кто часто меняет баланс и у кого много зомбиков

    Всёж запись сквада

    MonsterSquad=4A3B2C1D4G6P1Q2S4T
    ...
    MonsterClasses=(MClassName="KFChar.ZombieClot",Mid="A")
    ...

    была бы более наглядна в виде

    MonsterSquad=4CL 3CR 2GF 1ST 4BL 6MP 1BR 2DR 4SH
    ...
    MonsterClasses=(MClassName="KFChar.ZombieClot",Mid="CL")
    ...

    или вообще

    MonsterSquad=4Clot 3Craw 2Gore 1Stal 4Bloa 6Meat 1Brut 2Drea 4Shiv
    ...
    MonsterClasses=(MClassName="KFChar.ZombieClot",Mid="Clot")
    ...

    Если у нас есть свой GameType унаследованный от KFGameType, то копируем функцию LoadUpMonsterList
    function LoadUpMonsterList()
    {
    local int i,j,q,c,n;
    local Class<KFMonster> MC;
    local string S,ID;
    local bool bInitSq;
    local array<IMClassList> InitMList;

    if( KFGameLength != GL_Custom )
    InitMList = LoadUpMonsterListFromCollection();
    else
    InitMList = LoadUpMonsterListFromGameType();

    //MonsterSquad в нашем случае берётся из KillingFloor.ini
    //Сделаем так, чтобы не 1 символ отвечал за зомбика, а 2
    for( i=0; i<MonsterSquad.Length; i++ )
    {
    S = MonsterSquad;
    if( S=="" )
    Continue;
    bInitSq = False;
    n = 0;
    while( S!="" )
    {
    q = int(Left(S,1));
    ID = Mid(S,1,2); //было Mid(S,1,1)
    S = Mid(S,4); //было Mid(S,2) у нас формат 4CL 3CR ...
    MC = None;
    for( j=0; j<InitMList.Length; j++ )
    {
    if( InitMList[j].ID~=ID )
    {
    MC = InitMList[j].MClass;
    Break;
    }
    }
    if( MC==None )
    Continue;
    if( !bInitSq )
    {
    InitSquads.Length = c+1;
    bInitSq = True;
    }
    while( (q--)>0 )
    {
    InitSquads[c].MSquad.Length = n+1;
    InitSquads[c].MSquad[n] = MC;
    n++;
    }
    }
    if( bInitSq )
    c++;
    }
    if( FallbackMonster==class'EliteKrall' && InitMList.Length>0 )
    FallbackMonster = InitMList[0].MClass;
    }


    Нас будет интересовать этот кусок кода

    while( S!="" )
    {
    q = int(Left(S,1));
    ID = Mid(S,1,2); //было Mid(S,1,1)
    S = Mid(S,4); //было Mid(S,2) у нас формат 4CL 3CR ...
    MC = None;
    ...

    S это каждая из строк MonsterSquad, например

    MonsterSquad=4CL 3CR 2GF 1ST 4BL 6MP 1BR 2DR 4SH

    q - мы считываем 1 символ в строке - это 4, тут без изменений
    А вот следующие 2 строки кода и надо поправить, чтобы достичь желаемого
    ID - в данном случае мы берём 2 символа начиная с 1
    (строка начинается с 0 символа, поэтому 1 символ это C)
    получаем CL
    После этого в 3 строчке мы как бы вырезаем уже полученные данные и строкой S у нас становится строка

    3CR 2GF 1ST 4BL 6MP 1BR 2DR 4SH

    Так как я ещё поставил пробел между разными зомбиками, то S = Mid(S,4), а не S = Mid(S,3)
    Если надо чтобы было не 2 символа, а, например, 5, то пишем так

    ID = Mid(S,1,5);
    S = Mid(S,7);

    Ну, а если хотим вообще произвольной длины писать сокращения

    4Clot 3Crawler 2Gorefast 1Stalker 4Bloat 6MeatPounder 1Brute 2Dread 4Shiver
    То тогда стоит весь этот кусок переписать и, например, использовать функцию Split по пробелам
    Попозже напишу, если не забуду
     
    LLIePLLIeHb, Фрэгл, Strit_Striker и 2 другим нравится это.
  2. BAHO

    BAHO Fresh Meat

    Зачетно
     
  3. Strit_Striker

    Strit_Striker Солдат

    Да , информация очень полезная ( правда так дольше и заморочек больше ))) но все же спасибо за инфу )
     
  4. dronis

    dronis Guest

    удобно, давно так пользуюсь после // на каких волнах
    [​IMG]
     
    Flame нравится это.
  5. Atlan

    Atlan Капо

    Перешел на китая-японские иероглифы в обозначении и норм.
     
  6. AssassinTim

    AssassinTim Новенький

    Есть проблема касаемая новой версии 1064, KFChar.ZombieClot и другие в песочнице не работают, помогите пожалуйста!
     
  7. eXes1ze`

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

    Код:
    
    [KFmod.KFGameType]
    MonsterClasses=(MClassName="KFChar.ZombieClot_STANDARD",Mid="A")
    MonsterClasses=(MClassName="KFChar.ZombieCrawler_STANDARD",Mid="B")
    MonsterClasses=(MClassName="KFChar.ZombieGoreFast_STANDARD",Mid="C")
    MonsterClasses=(MClassName="KFChar.ZombieStalker_STANDARD",Mid="D")
    MonsterClasses=(MClassName="KFChar.ZombieScrake_STANDARD",Mid="E")
    MonsterClasses=(MClassName="KFChar.ZombieFleshpound_STANDARD",Mid="F")
    MonsterClasses=(MClassName="KFChar.ZombieBloat_STANDARD",Mid="G")
    MonsterClasses=(MClassName="KFChar.ZombieSiren_STANDARD",Mid="H")
    MonsterClasses=(MClassName="KFChar.ZombieHusk_STANDARD",Mid="I")
    
     
    HATAXA нравится это.