Skocz do zawartości

Rekomendowane odpowiedzi

Takie coś z wykorzystaniem SQLite
 

Spoiler
Database g_hDb = null;

public void OnPluginStart()
{
	RegAdminCmd("sm_connections_count", CMDConnectionsCount, ADMFLAG_ROOT);
	
	Database.Connect(SQL_ConnectToDatabase, "storage-local");
}

public void OnMapStart()
{
	if (g_hDb == null)
		Database.Connect(SQL_ConnectToDatabase, "storage-local");
}

public void SQL_ConnectToDatabase(Database db, const char[] error, any data)
{
	db.Query(SQL_OnFastQuery, "CREATE TABLE IF NOT EXISTS `connections_counter` ( `name` VARCHAR(16) PRIMARY KEY, `value` INT NULL DEFAULT '0');");
	g_hDb = db;
}

public void OnClientPutInServer() {
	g_hDb.Query(SQL_OnFastQuery, "INSERT INTO `connections_counter` (`name`) VALUES ('connections') ON CONFLICT(`name`) DO UPDATE SET `value` = `value`+1");
}

public Action CMDConnectionsCount(int client, int args)
{
	g_hDb.Query(SQL_CMDConnectionsCount, "SELECT `value` FROM `connections_counter` WHERE `name` = 'connections'", client);
}

public void SQL_CMDConnectionsCount(Database db, DBResultSet result, const char[] error, any data)
{
	if (result == null)
	{
		LogError("(SQL_OnFastQuery) %s", error);
	} else {
		int numberOfConnections = result.FetchInt(0);
		PrintToChat(data, "Number of connections to the server: %i", numberOfConnections);
	}
}

public void SQL_OnFastQuery(Database db, DBResultSet result, const char[] error, any data)
{
	if (result == null)
	{
		LogError("(SQL_OnFastQuery) %s", error);
	}
}

 


i takie coś z wykorzystaniem MYSQL:
 

Spoiler
Spoiler
Database g_hDb = null;

public void OnPluginStart()
{
	RegAdminCmd("sm_connections_count", CMDConnectionsCount, ADMFLAG_ROOT);
	
	Database.Connect(SQL_ConnectToDatabase, "connections_counter");
}

public void OnMapStart()
{
	if (g_hDb == null)
		Database.Connect(SQL_ConnectToDatabase, "connections_counter");
}

public void SQL_ConnectToDatabase(Database db, const char[] error, any data)
{
	db.Query(SQL_OnFastQuery, "CREATE TABLE IF NOT EXISTS `connections_counter` ( `name` VARCHAR(16) PRIMARY KEY, `value` INT NULL DEFAULT '0');");
	g_hDb = db;
}

public void OnClientPutInServer() {
	g_hDb.Query(SQL_OnFastQuery, "INSERT INTO `connections_counter` (`name`) VALUES ('connections') ON DUPLICATE KEY UPDATE `value` = `value`+1");
}

public Action CMDConnectionsCount(int client, int args)
{
	g_hDb.Query(SQL_CMDConnectionsCount, "SELECT `value` FROM `connections_counter` WHERE `name` = 'connections'", client);
}

public void SQL_CMDConnectionsCount(Database db, DBResultSet result, const char[] error, any data)
{
	int numberOfConnections
	if (result == null)
	{
		LogError("(SQL_OnFastQuery) %s", error);
	} else {
		if (SQL_FetchRow(result)) {
			numberOfConnections = result.FetchInt(0);
		} else 
			numberOfConnections = 0;
		PrintToChat(data, "Number of connections to the server: %i", numberOfConnections);
	}
}

public void SQL_OnFastQuery(Database db, DBResultSet result, const char[] error, any data)
{
	if (result == null)
	{
		LogError("(SQL_OnFastQuery) %s", error);
	}
}

 


Aby używać pluginu z wykorzystaniem MYSQL musisz stworzyć drzewko databases.cfg
o nazwie "connections_counter" albo zmienić sobie w pluginie na jakąś już istniejącą konfigurację

pod komendą:
sm_connections_count - pokazuje ile już jest tych połączeń z serwerem, dostęp tylko mając flagę "z" (root)

 

 

 

connections_counter_sqlite.smx connections_counter_sqlite.sp connections_counter_mysql.smx connections_counter_mysql.sp

Edytowane przez fejmek

Sygnatura użytkownika

Właściciel: AceKill.pl

  • Dziękuję
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przyznaje się bez bicia, że może 2 raz robiłem jakieś operacje na plikach i do tego jest 5 rano
ale wydaje mi się, że wygląda to git i no testowałem

 

Spoiler
char sPath[PLATFORM_MAX_PATH];
int numberOfConnections;
Handle s_hFile;

#define fPath "connections_count.txt"

public void OnPluginStart()
{
	RegAdminCmd("sm_connections_count", CMDConnectionsCount, ADMFLAG_ROOT);
}

public void OnMapStart()
{
	char existNum[32];
	
	BuildPath(Path_SM, sPath, sizeof(sPath), fPath);
	
	s_hFile = OpenFile(sPath, "a");
	ReadFileString(s_hFile, existNum, sizeof(existNum), -1);
	CloseHandle(s_hFile);
	
	StringToInt(existNum, numberOfConnections);
}

public void OnClientPostAdminCheck() {
	numberOfConnections++;
}

public void OnMapEnd()
{
	char Num[32];
	
	IntToString(numberOfConnections, Num, sizeof(Num));
	
	BuildPath(Path_SM, sPath, sizeof(sPath), fPath);
	
	s_hFile = OpenFile(sPath, "w+");
	WriteFileLine(s_hFile, Num, false);
	CloseHandle(s_hFile);
} 

public Action CMDConnectionsCount(int client, char args)
{
	char existString[32];
	
	BuildPath(Path_SM, sPath, sizeof(sPath), fPath);
	
	s_hFile = OpenFile(sPath, "r");
	ReadFileString(s_hFile, existString, sizeof(existString), -1);
	CloseHandle(s_hFile);
	
	PrintToChat(client, "Number of connections to the server: %s" ,existString);
	
}

 

 

najlepiej zmień tam sobie scieżke do pliku, gdzie tam chcesz 

 

 

 

connections_counter_files.smx connections_counter_files.sp

Edytowane przez fejmek
estetyka kodu ziomek

Sygnatura użytkownika

Właściciel: AceKill.pl

  • Dziękuję
Odnośnik do odpowiedzi
Udostępnij na innych stronach
9 godzin temu, fejmek napisał:

Przyznaje się bez bicia, że może 2 raz robiłem jakieś operacje na plikach i do tego jest 5 rano
ale wydaje mi się, że wygląda to git i no testowałem

 

  Ukryj zawartość

char sPath[PLATFORM_MAX_PATH];
int numberOfConnections;
Handle s_hFile;

#define fPath "connections_count.txt"

public void OnPluginStart()
{
	RegAdminCmd("sm_connections_count", CMDConnectionsCount, ADMFLAG_ROOT);
}

public void OnMapStart()
{
	char existNum[32];
	
	BuildPath(Path_SM, sPath, sizeof(sPath), fPath);
	
	s_hFile = OpenFile(sPath, "a");
	ReadFileString(s_hFile, existNum, sizeof(existNum), -1);
	CloseHandle(s_hFile);
	
	StringToInt(existNum, numberOfConnections);
}

public void OnClientPostAdminCheck() {
	numberOfConnections++;
}

public void OnMapEnd()
{
	char Num[32];
	
	IntToString(numberOfConnections, Num, sizeof(Num));
	
	BuildPath(Path_SM, sPath, sizeof(sPath), fPath);
	
	s_hFile = OpenFile(sPath, "w+");
	WriteFileLine(s_hFile, Num, false);
	CloseHandle(s_hFile);
} 

public Action CMDConnectionsCount(int client, char args)
{
	char existString[32];
	
	BuildPath(Path_SM, sPath, sizeof(sPath), fPath);
	
	s_hFile = OpenFile(sPath, "r");
	ReadFileString(s_hFile, existString, sizeof(existString), -1);
	CloseHandle(s_hFile);
	
	PrintToChat(client, "Number of connections to the server: %s" ,existString);
	
}

 

 

najlepiej zmień tam sobie scieżke do pliku, gdzie tam chcesz 

 

 

connections_counter_files.smx 3 kB · 0 pobrań connections_counter_files.sp 1 kB · 0 pobrań

Po co w komendzie otwierasz plik skoro liczbe polaczen masz w 

int numberOfConnections;

?

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Racja, głupota, zapomniałem przerobić tej komendy
we wcześniejszej metodzie int numberOfConnections;
zwracał ilość połączeń na danej mapie, bo nie pobieralem danych w onmapstart
i wszystko dzialo sie w onmapend...
Dzieki, poprawione

 

Spoiler
char sPath[PLATFORM_MAX_PATH];
int numberOfConnections;
Handle s_hFile;

#define fPath "connections_count.txt"

public void OnPluginStart()
{
	RegAdminCmd("sm_connections_count", CMDConnectionsCount, ADMFLAG_ROOT);
}

public void OnMapStart()
{
	char existNum[32];
	
	BuildPath(Path_SM, sPath, sizeof(sPath), fPath);
	
	s_hFile = OpenFile(sPath, "a");
	ReadFileString(s_hFile, existNum, sizeof(existNum), -1);
	CloseHandle(s_hFile);
	
	StringToInt(existNum, numberOfConnections);
}

public void OnClientPostAdminCheck() {
	numberOfConnections++;
}

public void OnMapEnd()
{
	char Num[32];
	
	IntToString(numberOfConnections, Num, sizeof(Num));
	
	BuildPath(Path_SM, sPath, sizeof(sPath), fPath);
	
	s_hFile = OpenFile(sPath, "w+");
	WriteFileLine(s_hFile, Num, false);
	CloseHandle(s_hFile);
}

public Action CMDConnectionsCount(int client, char args)
{
	PrintToChat(client, "Number of connections to the server: %i", numberOfConnections);
} 

 

 

Edytowane przez fejmek

Sygnatura użytkownika

Właściciel: AceKill.pl

  • Kocham to
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 4 tygodnie później...

Ostatnio przeglądający ten temat (5 użytkowników)

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...