· 8 years ago · Mar 18, 2018, 10:04 AM
1public void OnClientDisconnect(int client)
2{
3 CheckRank(client, false);
4 DB_SaveInfo(client);
5}
6
7public Action ________________________________________________________(){}
8public Action DB_Connect()
9{
10 if(SQL_CheckConfig("rankme"))
11 {
12 char DBBuffer[512];
13 g_hSql = SQL_Connect("rankme", true, DBBuffer, sizeof(DBBuffer));
14 if (g_hSql == INVALID_HANDLE)
15 LogError("[RANGI] Could not connect: %s", DBBuffer);
16 else
17 {
18 SQL_LockDatabase(g_hSql);
19 SQL_FastQuery(g_hSql, "CREATE TABLE IF NOT EXISTS rankme_5vs5_cache (auth_data VARCHAR(48) NOT NULL PRIMARY KEY default '',\
20 name VARCHAR(64) NOT NULL default '',\
21 points INT NOT NULL default 0,\
22 rank INT NOT NULL default 0)\
23 ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;");
24 SQL_UnlockDatabase(g_hSql);
25 }
26 }
27 else
28 SetFailState("Nie mozna odnalezc konfiguracji 'rankme' w databases.cfg.");
29}
30
31public DB_SaveInfo(int client)
32{
33 if(!IsValidClient(client))
34 return;
35
36 char authid[64];
37 if(!GetClientAuthId(client, AuthId_Steam2, authid, sizeof(authid)))
38 return;
39
40 char nick[64];
41 char EscapedName[64];
42
43 GetClientName(client, nick, sizeof(nick));
44 SQL_EscapeString(g_hSql, nick, EscapedName, sizeof(nick));
45
46 char query[2048];
47 Format(query, sizeof(query), "INSERT INTO `rankme_5vs5_cache` (auth_data, name, points, rank) VALUES ('%s', '%s', %d, %d) ON DUPLICATE KEY UPDATE name=VALUES(name), points=VALUES(points), rank=VALUES(rank)", authid, EscapedName, g_iPoints[client], g_iRank[client]);
48 SQL_TQuery(g_hSql, DB_SaveInfoCallback, query);
49}
50
51public void DB_TopCallback(Handle owner, Handle hndl, const char[] error, DataPack info_pack)
52{
53 if(hndl == INVALID_HANDLE)
54 {
55 LogError("[TOP] Query failed! %s", error);
56 return;
57 }
58
59 info_pack.Reset(); // Get some info !
60 int client = info_pack.ReadCell();
61
62 if(client == 0 || !IsClientInGame(client))
63 return;
64
65 delete info_pack;
66
67 int i;
68
69 Menu menu = new Menu(TOP_Handler, MENU_ACTIONS_ALL);
70 menu.SetTitle("[#TOP] Nick - Ranga - Punkty");
71
72 char menu_item[256];
73 char sAuth[64];
74
75 while(SQL_FetchRow(hndl))
76 {
77 i++;
78 SQL_FetchString(hndl, 0, menu_item, sizeof(menu_item)); // name
79
80 Format(menu_item, sizeof(menu_item), "#%d - %s - %s - [%d]", i, menu_item, g_sRanksNames[SQL_FetchInt(hndl, 2)], SQL_FetchInt(hndl, 1));
81 menu.AddItem(sAuth, menu_item);
82 }
83
84 if(i == 0)
85 menu.AddItem("no_records", "Wygląda na to, że ranking jest czysty.");
86
87 menu.ExitButton = true;
88 menu.Display(client, 0);
89}
90
91public DB_SaveInfoCallback(Handle owner, Handle query, const char[] error, any data)
92{
93 if(query == INVALID_HANDLE)
94 {
95 LogError("[RANGI] Failed to save client info (error: %s)", error);
96 return;
97 }
98}