Нету верхней границы слотов.

Тема в разделе "Counter-Strike: Global Offensive", создана пользователем Rassol2, 24 июл 2015.

  1. Rassol2

    Rassol2

    Сообщения:
    19
    Симпатии:
    2
    Здравствуйте.
    Толи я что то глуплю Толи чего то не понимаю.
    есть сервер кс гоу.
    Строка запуска
    Код:
    ./srcds_run -game csgo -console -condebug -usercon -maxplayers_override 20 +maxplayers 20 +exec server.cfg -ip **** -port **** +game_mode 0 +game_type 0 +mapgroup mg_allclassic +map mg_buses_from_hell_csgo
    Указано 20 слотов, но когда игроки заполняю сервер и уже 20 человек.
    То спокойно может подключится 21 игрок, или 22, и так дальше.

    Сервер настраивался не мной, вот хочу уточнить это свойство серверов по умолчанию, или все же нужно капать в настройках плагинов, где эта гадость сидит ?
     
  2. NiGaByte

    NiGaByte

    Сообщения:
    501
    Симпатии:
    84
    У меня было по умолчанию, как правило такие игроки подключаются через консольную команду connect ip:port
     
  3. SlavON

    SlavON

    Сообщения:
    424
    Симпатии:
    36
    А зачем эти команды? +maxplayers 20 +exec server.cfg
    Первая не работает уже в кс го и заменена на -maxplayers_override, вторая сама по себе запускается.
     
    Последнее редактирование: 24 июл 2015
  4. pracc

    pracc

    Сообщения:
    480
    Симпатии:
    128
    В CS:GO всё работает через задний проход.
     
  5. Danyas

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

    Сообщения:
    1.719
    Симпатии:
    459
    Оффтоп
     
  6. Rassol2

    Rassol2

    Сообщения:
    19
    Симпатии:
    2
    Это можно жестко запретить ?
     
  7. NiGaByte

    NiGaByte

    Сообщения:
    501
    Симпатии:
    84
    Да, каждый раз при конекте игрока нужно сохранять его стим ид, и делать цикл по всем игрокам, если насчитывается больше определенного кол-ва(в твоем случаи кол-ва слотов), то кикать игрока по ранее сохранённому стим ид, и выводить сообщение "Server is full".

    По идее это косяк Valve, наверное исправят через лет эдак 5, ну как обычно короче.
    Может есть и другой способ получения кол-ва игроков на сервере я не знаю, но если есть то можно сделать без цыкла, как-то так короч.
     
  8. максимка27

    максимка27

    Сообщения:
    517
    Симпатии:
    170
    Rassol2, от Riko
    PHP:
    new g_iSlots

    public 
    OnMapStart() 

        
    g_iSlots GetMaxHumanPlayers(); 


    public 
    OnClientConnected(client

        
    g_iBuffer 0
        for(new 
    1<= MaxClients; ++i
        { 
            if (
    IsClientConnected(i) && !IsClientInKickQueue(i) && !IsFakeClient(i) && ++g_iBuffer g_iSlots
            { 
                
    KickClient(client"Сервер переполнен"); 
                return; 
            } 
        } 
    }
     
  9. AlmazON

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

    Сообщения:
    4.539
    Симпатии:
    1.984
    максимка27, опасный и малооптимальный код. Ботов нужно пропускать беспрепятственно, их нельзя кикать на автомате - сервер может и лечь, ибо функция будет зациклена.
    Можно попробовать проще:
    PHP:
    new g_iHumanCountg_iSlots

    public 
    OnMapStart() 
    {
        
    g_iHumanCount 0;
        
    g_iSlots GetMaxHumanPlayers(); 
    }

    public 
    OnClientConnected(client)
    {
        if(
    IsFakeClient(client) == false) if(++g_iHumanCount g_iSlotsKickClient(client"Сервер переполнен");
    }
    public 
    OnClientDisconnect(client) if(IsFakeClient(client) == false) --g_iHumanCount;
     
  10. максимка27

    максимка27

    Сообщения:
    517
    Симпатии:
    170
    AlmazON, ну или с майарены :) но я бы твой вариант поставил
     

    Вложения:

    • slots.smx
      Размер файла:
      2,8 КБ
      Просмотров:
      1
  11. AlmazON

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

    Сообщения:
    4.539
    Симпатии:
    1.984
    На Майарене боты запрещены, а потому, код может быть ещё более эффективным и быстрым (кик ещё на самом входе, подключение даже не отмечается некоторыми плагинами):
    PHP:
    new g_iSlots

    public 
    OnMapStart() g_iSlots GetMaxHumanPlayers();

    public 
    bool:OnClientConnect(clientString:rejectmsg[], maxlen
    {
        if(
    GetClientCount(false) >= g_iSlots)
        {
            
    strcopy(rejectmsgmaxlen"Сервер переполнен");
            return 
    false;
        }
        return 
    true;
    }
     
  12. Саша Шеин

    Саша Шеин

    Сообщения:
    1.259
    Симпатии:
    191
  13. AlmazON

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

    Сообщения:
    4.539
    Симпатии:
    1.984
    Саша Шеин, что ты этим хочешь сказать? С false натив показывает количество подключенных игроков. А, поскольку ботов быть не может - нас это устраивает.
     
  14. Rassol2

    Rassol2

    Сообщения:
    19
    Симпатии:
    2
    извините за тупняки.
    Я так понимаю этот код это код плагина который нужно компилировать ?
    Я то профан в этом.
     
  15. AlmazON

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

    Сообщения:
    4.539
    Симпатии:
    1.984
    Обязательно компилировать.