· 7 years ago · Feb 04, 2019, 03:14 PM
1
2#include <sourcemod>
3#include <sdktools>
4#include <cstrike>
5#include <sdkhooks>
6#pragma semicolon 1
7
8new Handle:DB = INVALID_HANDLE;
9new Point[MAXPLAYERS+1];
10new VIP[MAXPLAYERS+1];
11
12public OnPluginStart()
13{
14 RegConsoleCmd("sm_1", Command_Test1);
15 RegConsoleCmd("sm_2", Command_Test2);
16}
17
18public Action:Command_Test1(Client, args)
19{
20 Point[Client] += 10000;
21 SQL_SaveUserPoint(Client);
22 return Plugin_Handled;
23}
24
25public Action:Command_Test2(Client, args)
26{
27 PrintToChat(Client, "ë‚´ í¬ì¸íЏ: %d", Point[Client]);
28 return Plugin_Handled;
29}
30
31public OnMapStart()
32{
33 SQL_TConnect(SQL_Connection, "GuppyShop");
34}
35
36public OnMapEnd()
37{
38 if(DB != INVALID_HANDLE)
39 {
40 CloseHandle(DB);
41 DB = INVALID_HANDLE;
42 }
43}
44
45public OnClientAuthorized(Client, const String:SteamID[])
46{
47 SQL_CheckUserData(DB, Client, SteamID);
48}
49
50public SQL_Connection(Handle:owner, Handle:handle, const String:error[], any:data)
51{
52 if(handle == INVALID_HANDLE)
53 {
54 PrintToServer("[GuppyShop] Error : %s", error);
55 }
56 else
57 {
58 DB = handle;
59 SQL_TQuery(DB, SQL_CheckError, "SET NAMES UTF8;", 0, DBPrio_High);
60 SQL_TQuery(DB, SQL_CheckTable, "SHOW TABLES LIKE 'UserData';", 0, DBPrio_High);
61 }
62}
63
64public SQL_CheckTable(Handle:owner, Handle:handle, const String:error[], any:data)
65{
66 if(handle == INVALID_HANDLE)
67 {
68 PrintToServer("[GuppyShop] Error : %s", error);
69 }
70
71 if(SQL_GetRowCount(handle) == 0)
72 {
73 if(DB != INVALID_HANDLE)
74 {
75 SQL_TQuery(DB, SQL_CheckError, "CREATE TABLE IF NOT EXISTS UserData(SteamID VARCHAR(128) NOT NULL, Name VARCHAR(128) NOT NULL, VIP INT, Point INT, PRIMARY KEY (SteamID)) ENGINE=MyISAM DEFAULT CHARSET=UTF8;", 0, DBPrio_High);
76 }
77 }
78}
79
80public SQL_CheckError(Handle:owner, Handle:handle, const String:error[], any:data)
81{
82 if(handle == INVALID_HANDLE)
83 {
84 PrintToServer("[GuppyShop] Error : %s", error);
85 }
86}
87
88SQL_SaveUserPoint(Client)
89{
90 if(DB != INVALID_HANDLE && !IsFakeClient(Client))
91 {
92 new String:SteamID[128], String:Query[512];
93 GetClientAuthId(Client, AuthId_Steam2, SteamID, sizeof(SteamID));
94 Format(Query, sizeof(Query), "UPDATE UserData SET Name = '%N', Point = %i WHERE SteamID = '%s';", Client, Point[Client], SteamID);
95 SQL_TQuery(DB, SQL_CheckError, Query, Client, DBPrio_High);
96 }
97}
98
99SQL_CheckUserData(Handle:database, Client, const String:SteamID[])
100{
101 if(database != INVALID_HANDLE && !IsFakeClient(Client))
102 {
103 new String:Query[128];
104 Format(Query, sizeof(Query), "SELECT * FROM UserData WHERE SteamID = '%s';", SteamID);
105 SQL_TQuery(database, SQL_CheckData, Query, Client, DBPrio_High);
106 }
107}
108
109public SQL_CheckData(Handle:owner, Handle:handle, const String:error[], any:Client)
110{
111 if(handle == INVALID_HANDLE)
112 {
113 PrintToServer("[GuppyShop] Error : %s", error);
114 }
115
116 if(SQL_GetRowCount(handle) == 0)
117 {
118 if(!IsFakeClient(Client))
119 {
120 new String:SteamID[128], String:Query[512];
121 GetClientAuthId(Client, AuthId_Steam2, SteamID, sizeof(SteamID));
122
123 Format(Query, sizeof(Query), "INSERT INTO UserData(SteamID, Name, VIP, Point) VALUES('%s', '%N', 0, 0);", SteamID, Client, VIP[Client], Point[Client]);
124 SQL_TQuery(DB, SQL_CheckError, Query, Client);
125 }
126 }
127 else
128 {
129 SQL_LoadUserData(Client);
130 }
131}
132
133SQL_LoadUserData(Client)
134{
135 if(DB != INVALID_HANDLE && !IsFakeClient(Client))
136 {
137 new String:SteamID[128], String:Query[128];
138 GetClientAuthId(Client, AuthId_Steam2, SteamID, sizeof(SteamID));
139
140 Format(Query, sizeof(Query), "SELECT * FROM UserData WHERE SteamID = '%s';", SteamID);
141 SQL_TQuery(DB, SQL_LoadData, Query, Client, DBPrio_High);
142 }
143}
144
145public SQL_LoadData(Handle:owner, Handle:handle, const String:error[], any:Client)
146{
147 if(handle == INVALID_HANDLE)
148 {
149 PrintToChat(Client, " \x05[구피서버]\x01 불러올 ë°ì´í„°ê°€ 없습니다.");
150 }
151 else
152 {
153 if(SQL_GetRowCount(handle))
154 {
155 if(SQL_HasResultSet(handle))
156 {
157 if(!IsFakeClient(Client))
158 {
159 new String:SteamID[128], String:Check[128];
160 GetClientAuthId(Client, AuthId_Steam2, SteamID, sizeof(SteamID));
161
162 while(SQL_FetchRow(handle))
163 {
164 SQL_FetchString(handle, 0, Check, sizeof(Check));
165 if(StrEqual(SteamID, Check))
166 {
167 VIP[Client] = SQL_FetchInt(handle, 2);
168 Point[Client] = SQL_FetchInt(handle, 3);
169 }
170 }
171 }
172 }
173 }
174 }
175}