Вопрос по sourcepawn

Тема в разделе "Программирование / Скриптинг", создана пользователем truekreo, 2 мар 2016.

  1. truekreo

    truekreo

    Сообщения:
    18
    Симпатии:
    8
    Как сделать, чтобы когда на сервере было 10 человек, запускался Warmod.
    --- Добавлено позже ---
    Или чтобы подгрузился конфиг от esl, ну в общем нужно начать соревновательный режим, когда на сервере будет 10 человек.
     
  2. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.714
    Симпатии:
    451
    Декомпельни WarMod Manager, там очень хорошо видно проверку кол-ва игроков
     
  3. truekreo

    truekreo

    Сообщения:
    18
    Симпатии:
    8
    Я только начал разбираться в сурспавне, поэтому я думаю будет легче в нем обработать кол-во игроков и подключить конфиг и сделать рестарты.

    Так вот, как подключить конфиг, в сурспавне есть команда или что-то вроде того?
     
    kyaN нравится это.
  4. selax

    selax

    Сообщения:
    1.044
    Симпатии:
    211
    @truekreo,
    Код:
    ServerCommand("exec my_config.cfg");
     
  5. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.714
    Симпатии:
    451
    PHP:
    #define MINPLAYERS 10

    public OnPluginStart()
    {
        
    CreateTimer(3.0PlayerChecker_TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
    }

    public 
    Action:PlayerChecker(Handle:timer)
    {
        new 
    alive_players GetClientsCount(3true);
        new 
    InTeams GetClientsCount(1true);
        if (
    InTeams == alive_players && alive_players >= MINPLAYERS)
        {
            
    ServerCommand("fs");
            return 
    Plugin_Stop;
        }
     
        else
        {
            
    PrintCenterTextAll("Недостаточно игроков - %i\n(%i/%i)",MINPLAYERS InTeamsInTeamsMINPLAYERS);
            return 
    Plugin_Continue;
        }
    }

    GetClientsCount(filterbool:inc_bots)
    {
        new 
    connected;
        new 
    inteams;
        new 
    ingame;
        new 
    alive;
        for(new 
    1<= MaxClientsi++)
        {
            if (
    IsClientConnected(i) && !IsClientSourceTV(i) && !IsClientReplay(i))
            {
                if (!(!
    inc_bots && IsFakeClient(i)))
                {
                    
    connected++;
                    if (
    IsClientInGame(i))
                    {
                        
    ingame++;
                        if (
    GetClientTeam(i) > 1)
                        {
                            
    inteams++;
                            if (
    IsPlayerAlive(i)) alive++;
                        }
                    }
                }
                
    i++;
            }
            
    i++;
        }
        
    /*
        switch (filter)
        {
            case 1:        return inteams;
            case 2:        return ingame;
            case 3:        return alive;
            default:    return connected;
        }
        */
     
        
    if (filter == 1)            return inteams;
        else if (
    filter == 2)    return ingame;
        else if (
    filter == 3)    return alive;
        else return 
    ingame;
    }
    Должно работать, только вот на счет работы после смены карты я не уверен.

    Если что - замени OnMapStart() на OnPluginStart()

    P.S. Команда для выполнения указана тут
    PHP:
    ServerCommand("fs");
    Можешь например заменить ее на
    PHP:
    ServerCommand("exec config_5x5.cfg");
     
    truekreo нравится это.
  6. truekreo

    truekreo

    Сообщения:
    18
    Симпатии:
    8
    @Danyas, Спасибо, с тобой можно как-то связаться? Есть предложение.
     
    kyaN нравится это.
  7. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.714
    Симпатии:
    451
    Оффтоп
     
    kyaN нравится это.
  8. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    @Danyas, каждые 3 секунды проверяешь количество игроков? мм
     
  9. gibs

    gibs Фитиль народного волненья

    Сообщения:
    536
    Симпатии:
    133
    @Danyas, про ивенты на подобие 'player_team' не слышал?
     
  10. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.714
    Симпатии:
    451
    Что бы в hint-e было постоянно написано количество игроков нужно обновлять его чаще 5 секунд. После выполнения команды таймер завершает свою работу, и больше не ест ресурсов.
    Слышал, можно было бы и через player_team сделать, записывая количество игроков в переменную.
     
  11. SourceSamil

    SourceSamil

    Сообщения:
    121
    Симпатии:
    24
    Было бы более оптимизировано, а так на быдлокод похоже.
     
  12. Reg1oxeN

    Reg1oxeN

    Сообщения:
    83
    Симпатии:
    26
    6 лет назад еще куда не шло жаловаться на оптимизацию такого кода, но на текущий момент, извини меня - это уже нисколько не повлияет на производительность.
     
    Danyas нравится это.
  13. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.509
    Симпатии:
    1.961
    Оффтоп
     
  14. SourceSamil

    SourceSamil

    Сообщения:
    121
    Симпатии:
    24
    По себе знаю, что 150 оптимизированных плагинов могут нагружать, как 80-100 неоптимизированных