· 8 years ago · Aug 10, 2018, 10:00 PM
1#include <sourcemod>
2#include <sdktools>
3
4Database g_hDatabase;
5
6int g_iNumber[64];
7
8public OnPluginStart()
9{
10 Database.Connect(SQL_Connection, "number2");
11 RegConsoleCmd("sm_savenbr", sm_savenbr);
12}
13
14public Action sm_savenbr(client, args)
15{
16 char arg1[64];
17 GetCmdArg(1, arg1, 64);
18 g_iNumber[client] = StringToInt(arg1);
19 SQL_UpdateClient(client);
20}
21
22public void SQL_Connection(Database hDatabase, const char[] sError, int iData)
23{
24 if (hDatabase == null)
25 ThrowError(sError);
26 else
27 {
28 g_hDatabase = hDatabase;
29 g_hDatabase.Query(SQL_Error, "CREATE TABLE IF NOT EXISTS SavedNumber (name VARCHAR(32) NOT NULL PRIMARY KEY, number2 INT(11) NOT NULL)");
30 }
31}
32
33public void SQL_Error(Database hDatabase, DBResultSet hResults, const char[] sError, int iData)
34{
35 if (hResults == null)
36 ThrowError(sError);
37}
38
39public void OnClientPostAdminCheck(int client)
40{
41 if (IsValidClient(client))
42 {
43 char sQuery[256];
44 Format(sQuery, sizeof(sQuery), "SELECT * FROM SavedNumber WHERE name = \"%N\"", client);
45 g_hDatabase.Query(SQL_Authorization, sQuery, GetClientUserId(client));
46 }
47}
48
49public void SQL_Authorization(Database hDatabase, DBResultSet hResults, const char[] sError, int iData)
50{
51 if (hResults == null)
52 ThrowError(sError);
53 int client = GetClientOfUserId(iData);
54 if (IsValidClient(client))
55 {
56 if (hResults.RowCount != 0)
57 {
58 hResults.FetchRow();
59 g_iNumber[client] = hResults.FetchInt(1);
60 }
61 else
62 {
63 char sQuery[2048];
64 Format(sQuery, sizeof(sQuery), "INSERT INTO SavedNumber (name, number2) VALUES (\"%N\", '%d')", client, g_iNumber[client]);
65 g_hDatabase.Query(SQL_Error, sQuery);
66 }
67 }
68}
69
70
71void SQL_UpdateClient(int client)
72{
73 char sQuery[2048];
74 Format(sQuery, sizeof(sQuery), "UPDATE SavedNumber SET number2 = '%d' WHERE name = \"%N\"", g_iNumber[client], client);
75 g_hDatabase.Query(SQL_Error, sQuery);
76}
77
78
79bool IsValidClient(client)
80{
81 if (client <= 0 || client > MaxClients || !IsClientConnected(client) || IsFakeClient(client) || !IsClientInGame(client))
82 {
83 return false;
84 }
85 return true;
86}