#include <sourcemod> ConVar g_tableName; Database g_db; public Plugin info = { name = "Test Vip", author = "BlacK", description = "Test VIP" } public void OnPluginStart(){ g_tableName = CreateConVar("nazwa_tabeli", "tVip", "Ustawia nazwę tabeli w bazie danych"); Database.Connect(OnConnect, "tVip"); PrintToServer("[Onecer] Test vip aktywny"); } public void OnConnect(Database db, char[] error, any data){ char tableName[20]; g_tableName.GetString(tableName, sizeof(tableName)); if(db == null){ PrintToServer("[Onecer] Nie można połączyć się z bazą danych."); SetFailState("[Onecer] Nie można połączyć się z bazą danych."); PrintToConsoleAll("[Onecer] Nie można połączyć z bazą danych"); return; } PrintToServer("[Onecer] Połączono z bazą danych"); PrintToConsoleAll("[Onecer] Połączono z bazą danych"); g_db = db; char query[264]; g_db.Format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `%s` (`name` varchar(30) NOT NULL, `steamId` varchar(32), `enabled` int(1))", tableName); g_db.Query(ConnectCallback, query); } public void ConnectCallback(Database db, DBResultSet results, char[] error, any data){ char tableName[20]; g_tableName.GetString(tableName, sizeof(tableName)); PrintToConsoleAll("--------- Connect Callback ---------"); if(results == null){ PrintToServer("[Onecer] Nie można Stworzyć/Wczytać tabeli"); PrintToConsoleAll("[Onecer] Nie można Stworzyć/Wczytać tabeli"); return; } PrintToServer("[Onecer] Stworzono/Wczytano tabelę"); PrintToConsoleAll("[Onecer] Stworzono/Wczytano tabelę"); for(int i = 1; i <= MaxClients; i++){ if(IsClientInGame(i)){ char steamId[32]; GetClientAuthId(i, AuthId_Steam2, steamId, sizeof(steamId)); char name[30]; GetClientName(i, name, sizeof(name)); int enabled = 1; InsertPlayer(name, steamId, enabled); } } } public void InsertPlayer(char[] name, char[] steamId, int enabled){ char tableName[20]; g_tableName.GetString(tableName, sizeof(tableName)); char query[264]; g_db.Format(query, sizeof(query), "INSERT INTO `%s` (`name`, `steamId`, `enabled`) SELECT * FROM (SELECT '%s', '%s', '%d') AS tmp WHERE NOT EXISTS (SELECT `steamId` FROM `%s` WHERE `steamId` = '%s') LIMIT 1;", tableName, name, steamId, enabled, tableName, steamId ); g_db.Query(InsertCallback, query); } public void InsertCallback(Database db, DBResultSet results, char[] error, any data){ PrintToServer("[Results]: %s", results) if(results == null){ PrintToServer("[Onecer] Nie można wczytać klienta"); PrintToConsoleAll("[Onecer] Nie można wczytać klienta"); } }
Witam. Próbowałem napisać plugin na testowego vipa lecz zatrzymałem się w momencie gdy próbuje stworzyć tabelę w bazie danych mysql.
Nie mam pojęcia co jest nie tak z tym kodem. W konsoli loguje, że udało się połączyć z bazą.