· 6 years ago · Dec 24, 2019, 08:58 PM
1Database g_hDatabase;
2
3public void OnConfigsExecuted()
4{
5 Database.Connect(SQL_Connection, "nazev_v_databases_cfg");
6}
7
8public void SQL_Connection(Database hDatabase, const char[] szError, int iData)
9{
10 if(hDatabase == null)
11 {
12 ThrowError(szError);
13 }
14 else
15 {
16 g_hDatabase = hDatabase;
17 //Tady si většinou vytváříš tabulku, pokud ji ještě nemáš, toto doporučuji vždy dělat - taková kontrola, jestli ti to funguje, když se tabulka vytvoří, tak si cajk
18 g_hDatabase.Query(SQL_Error, "CREATE TABLE IF NOT EXISTS nazev_tabulky (map VARCHAR(32) NOT NULL, steamid VARCHAR(32) NOT NULL, name VARCHAR(32) NOT NULL, time INT(11))");
19 }
20}
21
22public void SQL_Error(Database hDatabase, DBResultSet hResults, const char[] szError, int iData)
23{
24 if(hResults == null)
25 {
26 ThrowError(szError);
27 }
28}
29
30public void CheckSQLPlayer(int client)
31{
32 if(IsValidClient(client))
33 {
34 char szSteamId[32], szQuery[512];
35 GetClientAuthId(client, AuthId_Engine, szSteamId, sizeof(szSteamId));
36
37 Format(szQuery, sizeof(szQuery), "SELECT * FROM users WHERE steamid=\"%s\"", szSteamId);
38
39 g_hDatabase.Query(SQL_CheckQuery, szQuery, GetClientUserId(client));
40 }
41}
42
43public void SQL_CheckQuery(Database hDatabase, DBResultSet hResults, const char[] szError, any iData)
44{
45 if(hResults == null)
46 {
47 ThrowError(szError);
48 }
49
50 int client = GetClientOfUserId(iData);
51
52 if(hResults.RowCount != 0)
53 {
54 char szName[MAX_NAME_LENGTH];
55
56 hResults.FetchRow();
57
58 hResults.FetchString(1, szName, sizeof(szName));
59
60 PrintToChat(client, "Tvůj nick v Dtb je %s", szName);
61 }
62 else
63 {
64 //Nenašlo to žádný řádek podle SteamId, kterou jsme zadali v query
65 if(IsValidClient(client))
66 {
67 char szSteamId[32], szQuery[512];
68 GetClientAuthId(client, AuthId_Engine, szSteamId, sizeof(szSteamId));
69
70 Format(szQuery, sizeof(szQuery), "INSERT INTO nazev_tabulky (steamid) VALUES (\"%s\") ON DUPLICATE KEY UPDATE steamid = VALUES(steamid)", szSteamId);
71
72 g_hDatabase.Query(SQL_Error, szQuery);
73 }
74 }
75}
76
77stock bool IsValidClient(int client)
78{
79 if(client >= 1 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client) && !IsClientSourceTV(client))
80 {
81 return true;
82 }
83
84 return false;
85}