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