Grafit Napisano 3 Stycznia Witam, Wiem, że nie pasuje do działu, ale innego chyba nie ma, ale potrzebuje by ktoś napisał pluginu liczący ilość wejść na serwer. Z góry dziękuje. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
fejmek 1 Napisano 4 Stycznia (edytowane) 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.smxHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! connections_counter_sqlite.spHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! connections_counter_mysql.smxHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! connections_counter_mysql.spHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Edytowane 4 Stycznia przez fejmek Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Grafit Napisano 5 Stycznia Dzięki wielkie, ale zapomniałem dodać, że wolałbym by nie było to robione mysql ani sqlite, za co przepraszan. Więc poczekam jeszcze. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
fejmek 1 Napisano 5 Stycznia to w jakim sposobem ma zapisywać ci te informacje? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Grafit Napisano 5 Stycznia 2 minuty temu, fejmek napisał: to w jakim sposobem ma zapisywać ci te informacje? nie wiem czy one moga działać, ale cookies (wiem ze to podobne do sql) keyvalues i zapis do pliku txt Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
fejmek 1 Napisano 5 Stycznia (edytowane) 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.smxHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! connections_counter_files.spHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Edytowane 5 Stycznia przez fejmek estetyka kodu ziomek Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
daffyy 1 Napisano 5 Stycznia 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 Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! 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ń Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! connections_counter_files.sp 1 kB · 0 pobrań Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Po co w komendzie otwierasz plik skoro liczbe polaczen masz w int numberOfConnections; ? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
fejmek Napisano 5 Stycznia (edytowane) 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 5 Stycznia przez fejmek Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach