· 6 years ago · Nov 14, 2019, 08:08 PM
1#pragma semicolon 1
2
3#define DEBUG
4
5#define PLUGIN_AUTHOR "PyNiO"
6#define PLUGIN_VERSION "1.00"
7
8#include <sourcemod>
9#include <cstrike>
10#include <sdkhooks>
11#include <sdktools>
12#include <clientprefs>
13
14int monety[MAXPLAYERS];
15
16#define MONETY_KILL_VIP 30
17#define MONETY_KILL 15
18#define MONETY_ASIST 10
19#define MONETY_ASIST_VIP 20
20#define MONETY_PLANT 10
21#define MONETY_PLANT_VIP 20
22#define MONETY_DEFUSE 10
23#define MONETY_DEFUSE_VIP 20
24#define MONETY_WIN 10
25#define MONETY_WIN_VIP 20
26
27Handle g_hSQL = INVALID_HANDLE;
28bool g_bPlayerLoad [MAXPLAYERS+1];
29int g_iConnections;
30
31new String:Error[100];
32
33public Plugin myinfo =
34{
35 name = "COD_Sklep_Monety",
36 author = PLUGIN_AUTHOR,
37 description = "COD_Sklep_Monety",
38 version = PLUGIN_VERSION,
39 url = ""
40};
41
42public void OnPluginStart()
43{
44 HookEvent("player_death", Player_Death);
45 HookEvent("round_end", Round_End);
46 HookEvent("bomb_planted", BombPlanted);
47 HookEvent("bomb_defused", BombDefused);
48
49 RegConsoleCmd("sm_shopmoney", CodSklepMonety);
50 RegConsoleCmd("sm_shm", CodSklepMonety);
51}
52public void OnMapStart()
53{
54 g_iConnections=0;
55 ConnectSQL();
56}
57public void OnClientPutInServer(int client)
58{
59 g_bPlayerLoad[client]=false;
60 Load(client);
61}
62
63
64
65public Action:CodSklepMonety(client, args)
66{
67 if(GameRules_GetProp("m_bWarmupPeriod") == 1){
68 CPrintToChat(client, "{darkred}[COD:MW]{green} Podczas rozgrzewki Sklep jest ZABLOKOWANY!");
69 }
70 else{
71 new Handle:menu = CreateMenu(CodSklepMonety_Handler);
72 SetMenuTitle(menu, "COD Sklep \n Monety: %i", monety[client]);
73 AddMenuItem(menu, "1", "Losowy Item [Dostajesz Losowy Item] Koszt: 300 Monet");
74 AddMenuItem(menu, "2", "Moc Itemu [+20 Procent Mocy Itemu] Koszt: 800 Monet");
75 AddMenuItem(menu, "3", "Doswiadczenie [Dostajesz 2000 Dosw.] Koszt: 1000 Monet");
76 AddMenuItem(menu, "4", "Super Doswiadczenie [Dostajesz 5000 Dosw.] Koszt: 2000 Monet");
77 DisplayMenu(menu, client, 250);
78 }
79 return Plugin_Handled;
80}
81
82public CodSklepMonety_Handler(Handle:classhandle, MenuAction:action, client, Position)
83{
84 if(action == MenuAction_Select)
85 {
86 new String:Item[32];
87 GetMenuItem(classhandle, Position, Item, sizeof(Item));
88 CodSklep(client, 0);
89
90 if(StrEqual(Item, "1"))
91 {
92 if(monety[client]>=300)
93 {
94 monety[client] = monety[client] - 300;
95 UstawNowyItem(client, -1, -1, -1);
96 CPrintToChat(client, "{darkred}[COD:MW]{green} Item Wylosowany");
97 }
98 else
99 CPrintToChat(client, "{darkred}[COD:MW]{green} Masz za malo monet!");
100 }
101 else if(StrEqual(Item, "2"))
102 {
103 if(monety[client]>=800)
104 {
105 monety[client] = monety[client] - 800;
106 if(wytrzymalosc_itemu_gracza[client] < 100){
107 wytrzymalosc_itemu_gracza[client] += 20;
108 CPrintToChat(client, "{darkred}[COD:MW]{green} Naprawiles Item");
109 }
110 else{
111 CPrintToChat(client, "{darkred}[COD:MW]{green} Naprawiles Item");
112 }
113 }
114 else
115 CPrintToChat(client, "{darkred}[COD:MW]{green} Masz za malo monet!");
116 }
117 else if(StrEqual(Item, "3"))
118 {
119 if(monety[client]>=1000)
120 {
121 monety[client] = monety[client] - 1000;
122 UstawNoweDoswiadczenie(client,2000+doswiadczenie_gracza[client]);
123 CPrintToChat(client, "{darkred}[COD:MW]{green} Kupiles Doswiadczenie.");
124 }
125 else
126 CPrintToChat(client, "{darkred}[COD:MW]{green} Masz za malo monet!");
127 }
128 else if(StrEqual(Item, "4"))
129 {
130 if(monety[client]>=2000)
131 {
132 monety[client] = monety[client] - 2000;
133 UstawNoweDoswiadczenie(client,5000+doswiadczenie_gracza[client]);
134 CPrintToChat(client, "{darkred}[COD:MW]{green} Kupiles Super Doswiadczenie.");
135 }
136 else
137 CPrintToChat(client, "{darkred}[COD:MW]{green} Masz za malo monet!");
138 }
139 }
140 else if(action == MenuAction_End)
141 CloseHandle(classhandle);
142}
143
144public Action Player_Death(Handle event, char[] name2, bool dontBroadcast)
145{
146
147 int attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
148 int assister = GetClientOfUserId(GetEventInt(event, "assister"));
149
150 if(GetUserFlagBits(attacker) & ADMFLAG_CUSTOM6)
151 {
152 monety[attacker] = monety[attacker] + MONETY_KILL_VIP;
153 Save(attacker);
154 }
155 else
156 {
157 monety[attacker] = monety[attacker] + MONETY_KILL;
158 Save(attacker);
159 }
160
161
162 if(GetUserFlagBits(client) & ADMFLAG_CUSTOM6)
163 {
164 monety[assister] = monety[assister] + MONETY_ASIST_VIP;
165 Save(assister);
166 }
167 else
168 {
169 monety[assister] = monety[assister] + MONETY_ASIST;
170 Save(assister);
171 }
172
173}
174
175public Round_End(Handle:event, const String:name[], bool:dontBroadcast)
176{
177 new wygrana_druzyna = GetEventInt(event, "winner");
178 for(new i = 1; i <= MaxClients; i ++)
179 {
180 if(!IsClientInGame(i))
181 continue;
182
183 if(GetClientTeam(i) != ((wygrana_druzyna == 2)? CS_TEAM_T: CS_TEAM_CT))
184 continue;
185
186 if(GetUserFlagBits(client) & ADMFLAG_CUSTOM6)
187 {
188 monety[i] = monety[i] + MONETY_WIN_VIP;
189 Save(i);
190 }
191 else
192 {
193 monety[i] = monety[i] + MONETY_WIN;
194 Save(i);
195 }
196
197 }
198}
199
200public BombDefused(Handle:event, const String:name[], bool:dontBroadcast)
201{
202 new userid = GetClientOfUserId(GetEventInt(event, "userid"));
203
204 if(GetUserFlagBits(client) & ADMFLAG_CUSTOM6)
205 {
206 monety[userid] = monety[userid] + MONETY_DEFUSE_VIP;
207 Save(userid);
208 }
209 else
210 {
211 monety[userid] = monety[userid] + MONETY_DEFUSE;
212 Save(userid);
213 }
214}
215
216public BombPlanted(Handle event, const String:name[], bool dontBroadcast)
217{
218 new userid = GetClientOfUserId(GetEventInt(event, "userid"));
219
220 if(GetUserFlagBits(client) & ADMFLAG_CUSTOM6)
221 {
222 monety[userid] = monety[userid] + MONETY_PLANT_VIP;
223 Save(userid);
224 }
225 else
226 {
227 monety[userid] = monety[userid] + MONETY_PLANT;
228 Save(userid);
229 }
230}
231
232////////////////////
233////////SQL/////////
234////////////////////
235public void ConnectSQL()
236{
237 if(g_hSQL != null)
238 {
239 CloseHandle(g_hSQL);
240 }
241
242 if(SQL_CheckConfig("cod_monety"))
243 {
244 char _cError[255];
245
246 if(!(g_hSQL = SQL_Connect("cod_monety", true, _cError, 255)))
247 {
248 if(g_iConnections < 5)
249 {
250 g_iConnections++;
251 LogError("ERROR: %s", _cError);
252 ConnectSQL();
253
254 return;
255 }
256 g_iConnections=0;
257 }
258 }
259
260 new Handle:queryH = SQL_Query(g_hSQL, "CREATE TABLE IF NOT EXISTS `Monety` ( `STEAMID64` VARCHAR(128) NOT NULL , `name` VARCHAR(128) NOT NULL , `monety` INT(11) NOT NULL)");
261 if(queryH != INVALID_HANDLE)
262 {
263 PrintToServer("Succesfully create database.");
264 }
265 else
266 {
267 SQL_GetError(g_hSQL, Error, sizeof(Error));
268 PrintToServer("Database wasn't created. Error: %s",Error);
269 }
270}
271public void Load(int client)
272{
273
274 if(!IsValidPlayer(client))
275 return;
276
277 if(!g_hSQL)
278 {
279 ConnectSQL();
280 Load(client);
281 return;
282 }
283
284
285 char _cBuffer[1024];
286 char _cSteamID64[64];
287 char s_name[64];
288
289 GetClientAuthId(client, AuthId_SteamID64, _cSteamID64, sizeof(_cSteamID64));
290 Format(_cBuffer,sizeof(_cBuffer),"SELECT * FROM Monety WHERE STEAMID64 = '%s'",_cSteamID64);
291 GetClientName(client, s_name, sizeof(s_name));
292
293 Handle _HQuery = SQL_Query(g_hSQL, _cBuffer);
294
295 if (_HQuery != INVALID_HANDLE)
296 {
297
298 bool _bFetch=SQL_FetchRow(_HQuery);
299 if(_bFetch)
300 {
301 Format(_cSteamID64,sizeof(_cSteamID64),"");
302 SQL_FetchString(_HQuery, 0, _cSteamID64, 63);
303
304 Format(s_name,sizeof(s_name),"");
305 SQL_FetchString(_HQuery, 1, s_name, 64);
306
307 monety[client]=SQL_FetchInt(_HQuery,2);
308
309
310 if(_cSteamID64[0])
311 {
312 g_bPlayerLoad[client]=true;
313 }
314
315 CloseHandle(_HQuery);
316 return;
317 }
318 }
319
320 CloseHandle(_HQuery);
321 Format(_cBuffer,sizeof(_cBuffer),"INSERT IGNORE INTO Monety VALUES ('%s', '%s','0')",_cSteamID64,s_name);
322
323 SQL_Query(g_hSQL, _cBuffer);
324 Load(client);
325}
326public void Save(int client)
327{
328 if(!IsValidPlayer(client))
329 return;
330
331 if(!g_hSQL)
332 {
333 ConnectSQL();
334 return;
335 }
336
337 char _cBuffer[1024];
338 char _cSteamID64[64];
339
340 GetClientAuthId(client, AuthId_SteamID64, _cSteamID64, sizeof(_cSteamID64));
341
342
343 Format(_cBuffer,sizeof(_cBuffer),"UPDATE Monety SET monety=%i WHERE STEAMID64 = '%s'",monety[client],_cSteamID64);
344
345 SQL_Query(g_hSQL, _cBuffer);
346
347}