· 6 years ago · Apr 12, 2019, 05:24 PM
1public Action DB_Connect()
2{
3 if (SQL_CheckConfig("Rangi"))
4 {
5 char error[512];
6 DB = SQL_Connect("Rangi", true, error, sizeof(error));
7 if (DB == null) {
8 LogMessage("Could not connect to Rangi! Error: %s", error);
9 return;
10 } else {
11 char query[512];
12 Format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS rangi_5vs5(id INT NOT NULL AUTO_INCREMENT,PlayerName VARCHAR(64) NOT NULL,SteamID VARCHAR(64) NOT NULL, rangi_5vs5 INT NOT NULL,Points INT NOT NULL, MVP INT NOT NULL, WinMatch INT NOT NULL,PRIMARY KEY(`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;");
13 DB.Query(CreateTableHandler, query, _, DBPrio_Normal);
14 }
15 }
16 else {
17 SetFailState("Nie mozna odnalezc konfiguracji 'Rangi' w databases.cfg. ");
18 }
19}
20
21public void CreateTableHandler(Database db, DBResultSet results, const char[] error, any data) {
22 if (db == null) {
23 LogMessage("Could not create tables! Error: %s", error);
24 }
25}
26
27public void OnClientAuthorized(int client, const char[] auth) {
28 SQL_LoadData(client);
29}
30
31void SQL_LoadData(int client) {
32 char steamid[64];
33 GetClientAuthId(client, AuthId_Steam2, steamid, sizeof(steamid));
34
35 char query[512];
36 Format(query, sizeof(query), "SELECT `rangi_5vs5`, `Points`, `MVP`, `WinMatch` FROM rangi_5vs5 WHERE SteamID='%s'", steamid);
37 DB.Query(LoadDataHandler, query, GetClientUserId(client), DBPrio_Normal);
38}
39public void LoadDataHandler(Database db, DBResultSet results, const char[] error, int userid) {
40 if (db == null) {
41 LogMessage("Could not load user data! Error: %s", error);
42 return;
43 }
44
45 int client = GetClientOfUserId(userid);
46 if (!client)return;
47
48 char name[256], auth[64];
49 GetClientName(client, name, sizeof(name));
50 GetClientAuthId(client, AuthId_Steam2, auth, sizeof(auth));
51
52 char sanitized_name[128];
53 DB.Escape(name, sanitized_name, sizeof(name));
54
55 if (results.RowCount == 0) {
56 char query[512];
57 Format(query, sizeof(query), "INSERT INTO rangi_5vs5(`PlayerName`,`SteamID`,`Ranga`,`Points`,`MVP`,`WinMatch`) VALUES('%s','%s',0,0,0,0)", sanitized_name, auth);
58 DB.Query(InsertNewPlayer, query, _, DBPrio_Normal);
59 } else {
60 while (SQL_FetchRow(results)) {
61 g_iRank[client] = SQL_FetchInt(results, 0);
62 Points[client] = SQL_FetchInt(results, 1);
63 MVP[client] = SQL_FetchInt(results, 2);
64 WinMatch[client] = SQL_FetchInt(results, 3);
65 }
66 }
67}