SourceBans fork 1.6.0 убрать авто-добавление сервера в базу данных

smoke96

Участник
Сообщения
1,134
Реакции
175
Вышел вообщем форк новый. https://forums.alliedmods.net/showthread.php?t=263735 . Но вот не задача , там стоит автодобавление сервера в базу, и нету квара регулирующего этот момент , может кто добавить квар или вырезать вообше автодобавление? Во вложении исходники.
 

Вложения

  • sourcemod.rar
    60.9 КБ · Просмотры: 4

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
строки 254 - 278.
Читай мои комментарии:
PHP:
public Query_ServerSelect(Handle:owner, Handle:hndl, const String:error[], any:data)
{
	if(error[0])
	{
		LogError("%T (%s)", "Failed to query database", LANG_SERVER, error);
		return;
	}
	if(SQL_FetchRow(hndl)) // Сервер есть в бд
	{
		// Store server ID locally
		SetTrieValue(g_hConfig, "ServerID", SQL_FetchInt(hndl, 0));
		
		Call_StartForward(g_hOnConnect);
		Call_PushCell(g_hDatabase);
		Call_Finish();
		return;
	}
	
	// сервера нет в бд, далее идет его добаление.
	decl String:sFolder[32], String:sQuery[1024];
	GetGameFolderName(sFolder, sizeof(sFolder));
	
	Format(sQuery, sizeof(sQuery), "INSERT INTO {{servers}} (ip, port, modid) \
	                                VALUES      ('%s', %i, (SELECT mid FROM {{mods}} WHERE modfolder = '%s'))",
	                                g_sServerIp, g_iServerPort, sFolder);
	SB_Query(Query_ServerInsert, sQuery);
}

Тоесть выреж это:
PHP:
decl String:sFolder[32], String:sQuery[1024];
	GetGameFolderName(sFolder, sizeof(sFolder));
	
	Format(sQuery, sizeof(sQuery), "INSERT INTO {{servers}} (ip, port, modid) \
	                                VALUES      ('%s', %i, (SELECT mid FROM {{mods}} WHERE modfolder = '%s'))",
	                                g_sServerIp, g_iServerPort, sFolder);
	SB_Query(Query_ServerInsert, sQuery);

и

public Query_ServerInsert(Handle:owner, Handle:hndl, const String:error[], any:data)
{
	if(error[0])
	{
		LogError("%T (%s)", "Failed to query database", LANG_SERVER, error);
		return;
	}
	
	// Store server ID locally
	SetTrieValue(g_hConfig, "ServerID", SQL_GetInsertId(owner));
	
	Call_StartForward(g_hOnConnect);
	Call_PushCell(g_hDatabase);
	Call_Finish();
}
 

smoke96

Участник
Сообщения
1,134
Реакции
175
А возможно квар прикрутить? И интересует вопрос , почему же при авто-добавлении админы не записываются ?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #4

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #6
PHP:
new Handle:g_hCvar_AutoAddServer

в OnPluginStart()
PHP:
g_hCvar_AutoAddServer = CreateConVar("sm_auto_add_server", "0", "Добавлять ли сервер автоматически (1 - да, 0 - нет)", 0, true, 0.0, true, 1.0);

А потом тот код что я писал заменяешь на этот:
PHP:
public Query_ServerSelect(Handle:owner, Handle:hndl, const String:error[], any:data)
{
	if(error[0])
	{
		LogError("%T (%s)", "Failed to query database", LANG_SERVER, error);
		return;
	}
	if(SQL_FetchRow(hndl)) // Сервер есть в бд
	{
		// Store server ID locally
		SetTrieValue(g_hConfig, "ServerID", SQL_FetchInt(hndl, 0));
		
		Call_StartForward(g_hOnConnect);
		Call_PushCell(g_hDatabase);
		Call_Finish();
		return;
	}
	
	// сервера нет в бд, далее идет его добаление.
	if(GetConVarBool(g_hCvar_AutoAddServer))
	{
		decl String:sFolder[32], String:sQuery[1024];
		GetGameFolderName(sFolder, sizeof(sFolder));
		
		Format(sQuery, sizeof(sQuery), "INSERT INTO {{servers}} (ip, port, modid) \
										VALUES      ('%s', %i, (SELECT mid FROM {{mods}} WHERE modfolder = '%s'))",
										g_sServerIp, g_iServerPort, sFolder);
		SB_Query(Query_ServerInsert, sQuery);
	}
}

В server.cfg прописываешь:
C-подобный:
sm_auto_add_server "0"
или
C-подобный:
sm_auto_add_server "1"
 

smoke96

Участник
Сообщения
1,134
Реакции
175
PHP:
new Handle:g_hCvar_AutoAddServer

в OnPluginStart()
PHP:
g_hCvar_AutoAddServer = CreateConVar("sm_auto_add_server", "0", "Добавлять ли сервер автоматически (1 - да, 0 - нет)", 0, true, 0.0, true, 1.0);

А потом тот код что я писал заменяешь на этот:
PHP:
public Query_ServerSelect(Handle:owner, Handle:hndl, const String:error[], any:data)
{
	if(error[0])
	{
		LogError("%T (%s)", "Failed to query database", LANG_SERVER, error);
		return;
	}
	if(SQL_FetchRow(hndl)) // Сервер есть в бд
	{
		// Store server ID locally
		SetTrieValue(g_hConfig, "ServerID", SQL_FetchInt(hndl, 0));
		
		Call_StartForward(g_hOnConnect);
		Call_PushCell(g_hDatabase);
		Call_Finish();
		return;
	}
	
	// сервера нет в бд, далее идет его добаление.
	if(GetConVarBool(g_hCvar_AutoAddServer))
	{
		decl String:sFolder[32], String:sQuery[1024];
		GetGameFolderName(sFolder, sizeof(sFolder));
		
		Format(sQuery, sizeof(sQuery), "INSERT INTO {{servers}} (ip, port, modid) \
										VALUES      ('%s', %i, (SELECT mid FROM {{mods}} WHERE modfolder = '%s'))",
										g_sServerIp, g_iServerPort, sFolder);
		SB_Query(Query_ServerInsert, sQuery);
	}
}

В server.cfg прописываешь:
C-подобный:
sm_auto_add_server "0"
или
C-подобный:
sm_auto_add_server "1"

Сейчас писал автору этого СБ , он написал что админы теперь не добавляются в админкс.цфг а куда-то в кеш Оо , но админки при добавлении нету все равно :(
 
Сверху Снизу