· 7 years ago · Feb 04, 2019, 05:46 PM
1
2//ì•„ì´í…œ ì €ìž¥ 불러오기 만들면ë¨
3
4
5#include <sourcemod>
6#include <sdktools>
7#include <cstrike>
8#include <sdkhooks>
9#pragma semicolon 1
10
11new Handle:DB = INVALID_HANDLE;
12
13new Point[MAXPLAYERS+1];
14new Class[MAXPLAYERS+1];
15
16new String:SkinName[MAXPLAYERS+1][256];
17new String:ShoesName[MAXPLAYERS+1][256];
18new String:LaserName[MAXPLAYERS+1][256];
19new String:KnifeName[MAXPLAYERS+1][256];
20new String:PetName[MAXPLAYERS+1][256];
21new String:TagName[MAXPLAYERS+1][256];
22
23new SkinEnable[MAXPLAYERS+1];
24new ShoesEnable[MAXPLAYERS+1];
25new LaserEnable[MAXPLAYERS+1];
26new KnifeEnable[MAXPLAYERS+1];
27new PetEnable[MAXPLAYERS+1];
28new TagEnable[MAXPLAYERS+1];
29new Vibration01[MAXPLAYERS+1];
30new Vibration02[MAXPLAYERS+1];
31
32public OnPluginStart()
33{
34 RegConsoleCmd("sm_1", Command_Test1);
35 RegConsoleCmd("sm_2", Command_Test2);
36 RegConsoleCmd("sm_3", Command_Test3);
37 RegConsoleCmd("sm_4", Command_Test4);
38}
39
40public Action:Command_Test1(Client, args)
41{
42 Point[Client] += 10000;
43 SQL_SaveUserData(Client, 1);
44 return Plugin_Handled;
45}
46
47public Action:Command_Test2(Client, args)
48{
49 PrintToChat(Client, "ë‚´ í¬ì¸íЏ: %d", Point[Client]);
50 return Plugin_Handled;
51}
52
53public Action:Command_Test3(Client, args)
54{
55 SkinName[Client] = "ã…Žã…Ž";
56 ShoesName[Client] = "ã…Žã…Ž";
57 LaserName[Client] = "ã…Žã…Ž";
58 KnifeName[Client] = "ã…Žã…Ž";
59 PetName[Client] = "ã…Žã…Ž";
60 TagName[Client] = "ã…Žã…Ž";
61 SkinEnable[Client] = 1;
62 ShoesEnable[Client] = 1;
63 LaserEnable[Client] = 1;
64 KnifeEnable[Client] = 1;
65 TagEnable[Client] = 1;
66 PetEnable[Client] = 1;
67 Vibration01[Client] = 1;
68 Vibration02[Client] = 1;
69 return Plugin_Handled;
70}
71
72public Action:Command_Test4(Client, args)
73{
74 PrintToChat(Client, "스킨: %s 슈즈: %s ë ˆì´ì € %s ì¹¼ %s 펫 %s 태그 %s 스킨 %d 슈즈 %d ë ˆì´ì € %d ì¹¼ %d 펫 %d 태그 %d ì§„ë™1 %d ì§„ë™2 %d", SkinName[Client], ShoesName[Client], LaserName[Client], KnifeName[Client], PetName[Client], TagName[Client], SkinEnable[Client], ShoesEnable[Client], LaserEnable[Client], KnifeEnable[Client], PetEnable[Client], TagEnable[Client], Vibration01[Client], Vibration02[Client]);
75 return Plugin_Handled;
76}
77
78public OnMapStart()
79{
80 SQL_TConnect(SQL_Connection, "GuppyShop");
81}
82
83public OnMapEnd()
84{
85 if(DB != INVALID_HANDLE)
86 {
87 CloseHandle(DB);
88 DB = INVALID_HANDLE;
89 }
90}
91
92public OnClientAuthorized(Client, const String:SteamID[])
93{
94 SQL_LoadUserData(DB, Client, SteamID);
95 //SQL_LoadItems(DB, Client, SteamID);
96}
97
98public OnClientDisconnect(Client)
99{
100 SQL_SaveUserItemData(Client);
101}
102
103public SQL_Connection(Handle:owner, Handle:handle, const String:error[], any:data)
104{
105 if(handle == INVALID_HANDLE)
106 {
107 PrintToServer("[GuppyShop] Error : %s", error);
108 }
109 else
110 {
111 DB = handle;
112 SQL_TQuery(DB, SQL_CheckError, "SET NAMES UTF8;", 0, DBPrio_High);
113 SQL_TQuery(DB, SQL_CheckTable, "SHOW TABLES LIKE 'UserData';", 0, DBPrio_High);
114 SQL_TQuery(DB, SQL_CheckTable, "SHOW TABLES LIKE 'Items';", 0, DBPrio_High);
115 }
116}
117
118public SQL_CheckTable(Handle:owner, Handle:handle, const String:error[], any:data)
119{
120 if(handle == INVALID_HANDLE)
121 {
122 PrintToServer("[GuppyShop] Error : %s", error);
123 }
124
125 if(SQL_GetRowCount(handle) == 0)
126 {
127 if(DB != INVALID_HANDLE)
128 {
129 SQL_TQuery(DB, SQL_CheckError, "CREATE TABLE IF NOT EXISTS UserData(SteamID VARCHAR(128) NOT NULL, Name VARCHAR(128) NOT NULL, Point INT, Class INT, SkinName VARCHAR(128) NOT NULL, ShoesName VARCHAR(128) NOT NULL, LaserName VARCHAR(128) NOT NULL, KnifeName VARCHAR(128) NOT NULL, PetName VARCHAR(128) NOT NULL, TagName VARCHAR(128) NOT NULL, SkinEnable INT, ShoesEnable INT, LaserEnable INT, KnifeEnable INT, PetEnable INT, TagEnable INT, Vibration01 INT, Vibration02 INT, PRIMARY KEY (SteamID)) ENGINE=MyISAM DEFAULT CHARSET=UTF8;", 0, DBPrio_High);
130 SQL_TQuery(DB, SQL_CheckError, "CREATE TABLE IF NOT EXISTS Items(SteamID VARCHAR(128) NOT NULL, Name VARCHAR(128) NOT NULL, Item INT, PRIMARY KEY (SteamID)) ENGINE=MyISAM DEFAULT CHARSET=UTF8;", 0, DBPrio_High);
131 }
132 }
133}
134
135public SQL_CheckError(Handle:owner, Handle:handle, const String:error[], any:data)
136{
137 if(handle == INVALID_HANDLE)
138 {
139 PrintToServer("[GuppyShop] Error : %s", error);
140 }
141}
142
143SQL_LoadUserData(Handle:database, Client, const String:SteamID[])
144{
145 if(database != INVALID_HANDLE && !IsFakeClient(Client))
146 {
147 new String:Query[128];
148 Format(Query, sizeof(Query), "SELECT * FROM UserData WHERE SteamID = '%s';", SteamID);
149 SQL_TQuery(database, SQL_LoadData, Query, Client, DBPrio_High);
150 }
151}
152
153public SQL_LoadData(Handle:owner, Handle:handle, const String:error[], any:Client)
154{
155 new String:SteamID[128];
156 GetClientAuthId(Client, AuthId_Steam2, SteamID, sizeof(SteamID));
157
158 if(handle != INVALID_HANDLE)
159 {
160 if(!SQL_GetRowCount(handle))
161 {
162 new String:Query[512];
163 Format(Query, sizeof(Query), "INSERT INTO UserData(SteamID, Name, Point, Class, SkinName, ShoesName, LaserName, KnifeName, PetName, TagName, SkinEnable, ShoesEnable, LaserEnable, KnifeEnable, PetEnable, TagEnable, Vibration01, Vibration02) VALUES('%s', '%N', %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, %d, %d, %d, %d);", SteamID, Client, Point[Client], Class[Client], SkinName[Client], ShoesName[Client], LaserName[Client], KnifeName[Client], PetName[Client], TagName[Client], SkinEnable[Client], ShoesEnable[Client], LaserEnable[Client], KnifeEnable[Client], PetEnable[Client], TagEnable[Client], Vibration01[Client], Vibration02[Client]);
164 SQL_TQuery(DB, SQL_CheckError, Query, Client);
165 }
166 else
167 {
168 while(SQL_FetchRow(handle))
169 {
170 new String:CheckID[128];
171 SQL_FetchString(handle, 0, CheckID, sizeof(CheckID));
172
173 if(StrEqual(SteamID, CheckID))
174 {
175 Point[Client] = SQL_FetchInt(handle, 2);
176 Class[Client] = SQL_FetchInt(handle, 3);
177 SQL_FetchString(handle, 4, SkinName[Client], 256);
178 SQL_FetchString(handle, 5, ShoesName[Client], 256);
179 SQL_FetchString(handle, 6, LaserName[Client], 256);
180 SQL_FetchString(handle, 7, KnifeName[Client], 256);
181 SQL_FetchString(handle, 8, PetName[Client], 256);
182 SQL_FetchString(handle, 9, TagName[Client], 256);
183 SkinEnable[Client] = SQL_FetchInt(handle, 10);
184 ShoesEnable[Client] = SQL_FetchInt(handle, 11);
185 LaserEnable[Client] = SQL_FetchInt(handle, 12);
186 KnifeEnable[Client] = SQL_FetchInt(handle, 13);
187 PetEnable[Client] = SQL_FetchInt(handle, 14);
188 TagEnable[Client] = SQL_FetchInt(handle, 15);
189 Vibration01[Client] = SQL_FetchInt(handle, 16);
190 Vibration02[Client] = SQL_FetchInt(handle, 17);
191 }
192 }
193 }
194 }
195}
196
197
198SQL_SaveUserData(Client, Type)
199{
200 if(DB != INVALID_HANDLE && !IsFakeClient(Client))
201 {
202 new String:SteamID[128], String:Query[512];
203 GetClientAuthId(Client, AuthId_Steam2, SteamID, sizeof(SteamID));
204 if(Type == 1) Format(Query, sizeof(Query), "UPDATE UserData SET Name = '%N', Point = %i WHERE SteamID = '%s';", Client, Point[Client], SteamID);
205 if(Type == 2) Format(Query, sizeof(Query), "UPDATE UserData SET Name = '%N', Class = %i WHERE SteamID = '%s';", Client, Class[Client], SteamID);
206 SQL_TQuery(DB, SQL_CheckError, Query, Client, DBPrio_High);
207 }
208}
209
210SQL_SaveUserItemData(Client)
211{
212 if(DB != INVALID_HANDLE && !IsFakeClient(Client))
213 {
214 new String:SteamID[128], String:Query[512];
215 GetClientAuthId(Client, AuthId_Steam2, SteamID, sizeof(SteamID));
216 Format(Query, sizeof(Query), "UPDATE UserData SET Name = '%N', SkinName = '%s', ShoesName = '%s', LaserName = '%s', KnifeName = '%s', PetName = '%s', TagName = '%s', SkinEnable = %i, ShoesEnable = %i, LaserEnable = %i, KnifeEnable = %i, PetEnable = %i, TagEnable = %i, Vibration01 = %i, Vibration02 = %i WHERE SteamID = '%s';", Client, SkinName[Client], ShoesName[Client], LaserName[Client], KnifeName[Client], PetName[Client], TagName[Client], SkinEnable[Client], ShoesEnable[Client], LaserEnable[Client], KnifeEnable[Client], PetEnable[Client], TagEnable[Client], Vibration01[Client], Vibration02[Client], SteamID);
217 SQL_TQuery(DB, SQL_CheckError, Query, Client, DBPrio_High);
218 }
219}