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

Rassol2

Участник
Сообщения
19
Реакции
2
Здравствуйте.
Толи я что то глуплю Толи чего то не понимаю.
есть сервер кс гоу.
Строка запуска
C-подобный:
./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, и так дальше.

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

NiGaByte

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

SlavON

Добрая душа
Сообщения
1,582
Реакции
326
А зачем эти команды? +maxplayers 20 +exec server.cfg
Первая не работает уже в кс го и заменена на -maxplayers_override, вторая сама по себе запускается.
 
Последнее редактирование:
N

NiGaByte

Это можно жестко запретить ?

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

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

максимка27

Участник
Сообщения
513
Реакции
213
Rassol2, от Riko
PHP:
new g_iSlots; 

public OnMapStart() 
{ 
    g_iSlots = GetMaxHumanPlayers(); 
} 

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

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
максимка27, опасный и малооптимальный код. Ботов нужно пропускать беспрепятственно, их нельзя кикать на автомате - сервер может и лечь, ибо функция будет зациклена.
Можно попробовать проще:
PHP:
new g_iHumanCount, g_iSlots; 

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

public OnClientConnected(client)
{
	if(IsFakeClient(client) == false) if(++g_iHumanCount > g_iSlots) KickClient(client, "Сервер переполнен");
}
public OnClientDisconnect(client) if(IsFakeClient(client) == false) --g_iHumanCount;
 

максимка27

Участник
Сообщения
513
Реакции
213
AlmazON, ну или с майарены :) но я бы твой вариант поставил
 

Вложения

  • slots.smx
    2.8 КБ · Просмотры: 2

AlmazON

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

public OnMapStart() g_iSlots = GetMaxHumanPlayers();

public bool:OnClientConnect(client, String:rejectmsg[], maxlen) 
{
	if(GetClientCount(false) >= g_iSlots)
	{
		strcopy(rejectmsg, maxlen, "Сервер переполнен");
		return false;
	}
	return true;
}
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Саша Шеин, что ты этим хочешь сказать? С false натив показывает количество подключенных игроков. А, поскольку ботов быть не может - нас это устраивает.
 

Rassol2

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

public OnMapStart() g_iSlots = GetMaxHumanPlayers();

public bool:OnClientConnect(client, String:rejectmsg[], maxlen) 
{
	if(GetClientCount(false) >= g_iSlots)
	{
		strcopy(rejectmsg, maxlen, "Сервер переполнен");
		return false;
	}
	return true;
}

извините за тупняки.
Я так понимаю этот код это код плагина который нужно компилировать ?
Я то профан в этом.
 
Сверху Снизу