· 6 years ago · Jan 13, 2020, 07:30 PM
1#include <amxmodx>
2#include <amxmisc>
3#include <engine>
4#include <fakemeta>
5#include <fakemeta_util>
6#include <hamsandwich>
7#include <cstrike>
8#include <fun>
9#include <sqlx>
10#include <supplybox>
11#include <csgo>
12
13new const PLUGIN[] = "Global Offensive";
14new const VERSION[] = "4.52";
15new const AUTHOR[] = "DeRoiD, REZ.LT / horde's edit";
16
17/*================================================================================
18[MySQLx Vars, other]
19=================================================================================*/
20//#define DB_HOST "localhost"
21#define DB_HOST "127.0.0.1"
22#define DB_USER "root"
23#define DB_PASS "ZalkstiaiAtitremdineti"
24#define DB_DATA "csgplt_csgo"
25
26#define TABLE_NAME "csgo_new2"
27#define WEB_TABLE_NAME "web_users"
28
29#define SOUND_SOLD "ambience/quail1.wav"
30#define SOUND_UPG "upgraded.wav"
31
32new Handle:g_hTuple;
33new g_msgid_ScreenFade, g_msgid_SyncHud;
34
35#define MAX 200 //Jei MAX 200 tai CHEST_ID = 201 ir KEY_ID = 202
36#define MAX_RANGS 30
37
38#define MAX_LVLS 51
39
40#define MAX_PLAYERS 32
41
42#define CHEST_ID 201
43#define CHEST_COUNT 7
44
45#define KEY_ID 209
46
47#define VIP ADMIN_RESERVATION
48
49#define SVIP ADMIN_KICK
50
51#define ADMIN ADMIN_MAP
52
53#define is_str_empty(%1) (%1[0] == EOS)
54
55//PAPRASTO ZAIDEJO RATE
56#define DROP_RATE_KILL_USER 30
57#define DROP_RATE_PLANT_USER 30
58#define DROP_RATE_DEF_USER 30
59#define DROP_RATE_HOSTAGE_USER 30
60
61//SADMIN RATE
62#define DROP_RATE_KILL_SADMIN 100
63#define DROP_RATE_PLANT_SADMIN 100
64#define DROP_RATE_DEF_SADMIN 100
65#define DROP_RATE_HOSTAGE_SADMIN 100
66
67#define MIN_PASSWORD_LENGTH 4
68#define MIN_CODE_LENGTH 6
69
70#define MARKET_MIN_PRICE 50
71#define MARKET_WAIT_ADD 3
72
73#define HOSTAGE_ESCAPE 5
74#define HOSTAGE_KILL_PENALTY 15 //Reduce points -
75
76#define BOMB_PLANTED_POINTS 5
77#define BOMB_DEFUSED_POINTS 7
78
79#define ROUND_WIN_POINTS 10
80
81#define NEED_MIN_PLAYERS 3
82
83new g_logfile[64];
84
85#define TASKID_REMENU 100
86
87new csgo_password_field;
88
89new COLCHAR[3][2] = { "^x03"/*team col*/, "^x04"/*green*/, "^x01"/*white*/ }
90
91new cvar_refill_spawn;
92new g_iRank[ MAX_PLAYERS + 1 ];
93new g_iCount;
94
95new g_iKills[33], g_iHS[33], Float:g_fDmg[33];
96
97//cvar pointers
98new p_allchat, p_alltalk, p_hidestat, p_teamchat;
99
100//vars to check if message has already been duplicated
101new alv_sndr, alv_str2[26], alv_str4[101];
102new msg[513];
103new gWarnings[33] = 0;
104
105new iDay[33]; //žaidėjų kintamieji kuriuose talpinama diena po atlygio atsiėmimo
106
107/*=========*/
108new bool:bTrade[33] = false;
109new bool:bTradeAccepted[33] = false;
110/*=========*/
111
112/*================================================================================
113=================================================================================*/
114const PEV_SPEC_TARGET = pev_iuser2;
115
116new const g_weapons[] = {
117 CSW_P228, CSW_SCOUT, CSW_XM1014, CSW_MAC10, CSW_AUG, CSW_ELITE, CSW_FIVESEVEN, CSW_UMP45, CSW_SG550, CSW_GALI, CSW_GALIL, CSW_FAMAS, CSW_USP,
118 CSW_GLOCK18, CSW_AWP, CSW_MP5NAVY, CSW_M249, CSW_M3, CSW_M4A1, CSW_TMP, CSW_G3SG1, CSW_DEAGLE, CSW_SG552, CSW_AK47, CSW_P90
119}
120new const g_other_weapons[] = { CSW_KNIFE, CSW_HEGRENADE, CSW_C4 }
121new const g_max_clip[] = { 13, 10, 7, 30, 30, 30, 20, 25, 30, 35, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 7, 30, 30, 50 }
122enum _:AmmoIds { ammo_none, ammo_338magnum = 1, ammo_762nato, ammo_556natobox, ammo_556nato, ammo_buckshot, ammo_45acp, ammo_57mm, ammo_50ae, ammo_357sig, ammo_9mm }
123new g_iAmmoMax[AmmoIds] = { -1, 30, 90, 200, 90, 32, 100, 100, 35, 52, 120 }
124new const g_iAmmoWeaponSharedBitSum[AmmoIds] = { 0,
125 (1<<CSW_AWP), (1<<CSW_SCOUT)|(1<<CSW_G3SG1)|(1<<CSW_AK47), (1<<CSW_M249),
126 (1<<CSW_AUG)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_M4A1)|(1<<CSW_SG552),
127 (1<<CSW_XM1014)|(1<<CSW_M3), (1<<CSW_MAC10)|(1<<CSW_UMP45)|(1<<CSW_USP),
128 (1<<CSW_P90)|(1<<CSW_FIVESEVEN), (1<<CSW_DEAGLE), (1<<CSW_P228),
129 (1<<CSW_MP5NAVY)|(1<<CSW_TMP)|(1<<CSW_ELITE)|(1<<CSW_GLOCK18)
130}
131new g_msgid_AmmoX;
132
133
134new WeaponNames[MAX][64], WeaponMdls[MAX][128], WeaponMdlsP[MAX][128], Weapons[MAX], WeaponDrop[MAX], Chance[MAX], AllWeapon, Float:Price[MAX];
135new uWeapon[MAX][33], uWeaponKills[MAX][33], SkinRarity[MAX], Chest[33][CHEST_COUNT+1], Float:Eurai[33], Rang[33], Kills[33], WarKills[33], SkillPoints[33], Level[33], xp[33], Frags[33], aThing[33], aTarget[33], Float:aEurai[33], Rounds[33], Prefix[32];
136new cKey[33][CHEST_COUNT+1];
137new KeyChoice[33];
138new Float:Skill[33];
139new Folder[48], SkinFile[48], RangFile[48], LvlFile[48], DefaFile[48], MenuMod[33];
140new WeaponinMarket[33], inMarket[33], Float:MarketEurai[33], Kiekis[33];
141new SavedPassword[33][32], bool:Loged[33], bool:gLogged[33], bool:gRegistered[33], Password[33][32];
142new DefaultSkin[33][32], DefaultSkinP[33][32], DefaultSkinW[33][32], Float:NeedKills[MAX_RANGS], Rangs[MAX_RANGS][32], Needxp[MAX_LVLS], Levels[MAX_LVLS][32];
143new gCanLoad, gCanSave;
144new bUsingGuns[33][CSW_VESTHELM];
145new gLastMarketTime[33] = 0;
146new chestsList[CHEST_COUNT+1][128][512];
147new chestsChance[CHEST_COUNT+1][128];
148new Pass[33];
149new PradinisLaikas[33];
150new bool:Doublexp[33] = false;
151new mSkinId;
152new rItem;
153new TurnInvite[33];
154new IpAddress[33][40], IpCreated[33], UserID[33], Username[33][32];
155new g_bModeRanked[33];
156new WeaponHold[33][64];
157new IpAddress[33][40], IpCreated[33], UserID[33], Username[33][32];
158
159//UPGRADER VARIABLES
160
161new g_iMultiplier[33], g_iUpgSkinId[33], g_bUpgSkinChosen[33], Float:g_fUpgCost[33];
162
163
164
165new const eWeapon[][] =
166{
167 "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
168 "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
169 "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp",
170 "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1",
171 "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90"
172};
173
174new const szWeaponNames[][] =
175{
176 "", "P228", "", "Scout", "HE Granata", "XM1014", "C4", "MAC10", "Aug", "SG Granata", "Elite",
177 "Five Seven", "UMP45", "SG550", "Galil", "Famas", "USP", "Glock", "AWP", "MP5 Navy", "M249",
178 "M3", "M4A1", "TMP", "G3SG1", "FB Granata", "Deagle", "SG552", "AK47", "Knife", "P90"
179};
180
181native get_user_clan(id, name[], len);
182
183public plugin_precache()
184{
185 register_dictionary("globaloffensive.txt");
186
187 get_time("csgo_%Y%m%d.log", g_logfile, charsmax(g_logfile));
188
189 log_errors("-------------------- == --------------------");
190 new Line[512], Data[9][128], Len;
191 AllWeapon++;
192 get_configsdir(Folder, 47);
193 format(SkinFile, 47, "%s/csgo/skins.cfg", Folder);
194 format(RangFile, 47, "%s/csgo/rangs.cfg", Folder);
195 format(DefaFile, 47, "%s/csgo/dskins.cfg", Folder);
196 format(LvlFile, 47, "%s/csgo/levels.cfg", Folder);
197
198 if(file_exists(RangFile))
199 {
200 for(new i; i < file_size(RangFile, 1); i++)
201 {
202 if(i >= MAX_RANGS) {
203 log_errors("[plugin_precache] Increase your MAX_RANGS define.");
204 break;
205 }
206
207 read_file(RangFile, i, Line, 127, Len);
208 parse(Line, Data[0], 31, Data[1], 31);
209
210 copy(Rangs[i], 31, Data[0]);
211 NeedKills[i] = str_to_float(Data[1]);
212 }
213 }
214
215 if(file_exists(LvlFile))
216 {
217 for(new i; i < file_size(LvlFile, 1); i++)
218 {
219 if(i >= MAX_LVLS) {
220 log_errors("[plugin_precache] Increase your MAX_LVLS define.");
221 break;
222 }
223
224 read_file(LvlFile, i, Line, 127, Len);
225 parse(Line, Data[0], 31, Data[1], 31);
226
227 copy(Levels[i], 31, Data[0]);
228 Needxp[i] = str_to_num(Data[1]);
229 }
230 }
231
232 if(file_exists(SkinFile))
233 {
234 for(new i; i < file_size(SkinFile, 1); i++)
235 {
236 if(AllWeapon >= MAX) {
237 log_errors("[plugin_precache] Increase your MAX define.");
238 break;
239 }
240
241 read_file(SkinFile, i, Line, 512, Len);
242
243 if(strlen(Line) < 5 || Line[0] == ';' || (Line[0] == '/' && Line[1] == '/'))
244 continue;
245
246 //ginklas, pavadinimas, v_, p_, chance - old
247 //ginklas, pavadinimas, v_, p_, chest, chance, number,
248 parse(Line, Data[0], 31, Data[1], 31, Data[2], 128, Data[3], 128, Data[4], 31, Data[5], 31, Data[6], 31, Data[7], 31);
249
250 Weapons[AllWeapon] = str_to_num(Data[0]);
251 copy(WeaponNames[AllWeapon], 63, Data[1]);
252
253 if(ValidMdl(Data[2])) {
254 precache_model(Data[2]);
255 copy(WeaponMdls[AllWeapon], 128, Data[2]);
256
257 if(file_exists(Data[3]) && strlen(Data[3]) > 5) {
258 precache_model(Data[3]);
259 copy(WeaponMdlsP[AllWeapon], 128, Data[3]);
260 }
261 }
262
263 WeaponDrop[AllWeapon] = str_to_num(Data[4]);
264 Chance[AllWeapon] = str_to_num(Data[5]);
265 chestsChance[str_to_num(Data[4])][str_to_num(Data[5])] += 1;
266 chestsList[str_to_num(Data[4])][str_to_num(Data[5])][str_to_num(Data[6])] = AllWeapon;
267 SkinRarity[AllWeapon] = str_to_num(Data[5]);
268 Price[AllWeapon] = str_to_float(Data[7]);
269 //log_amx("Price[AllWeapon] = %d", Data[], Data[5], Data[6], AllWeapon);
270
271 AllWeapon++;
272 }
273 }
274 if(file_exists(DefaFile))
275 {
276 for(new i; i < file_size(DefaFile, 1); i++)
277 {
278 read_file(DefaFile, i, Line, 127, Len);
279
280 if(strlen(Line) < 5 || Line[0] == ';' || (Line[0] == '/' && Line[1] == '/'))
281 continue;
282
283 parse(Line, Data[0], 31, Data[1], 47, Data[2], 47);
284
285 if(ValidMdl(Data[1])) {
286 precache_model(Data[1]);
287 copy(DefaultSkin[str_to_num(Data[0])], 47, Data[1]);
288
289 if(file_exists(Data[2]) && strlen(Data[2]) > 5) {
290 precache_model(Data[2]);
291 copy(DefaultSkinP[str_to_num(Data[0])], 47, Data[2]);
292 }
293
294 if(file_exists(Data[3]) && strlen(Data[3]) > 5) {
295 precache_model(Data[3]);
296 copy(DefaultSkinW[str_to_num(Data[0])], 47, Data[3]);
297 }
298 }
299 }
300 }
301
302 precache_sound(SOUND_SOLD);
303 precache_sound(SOUND_UPG);
304
305 g_hTuple = SQL_MakeDbTuple(DB_HOST, DB_USER, DB_PASS, DB_DATA);
306 #if AMXX_VERSION_NUM >= 183
307 SQL_SetCharset(g_hTuple,"utf8");
308 #endif
309
310
311 new szTables[1024];
312 format(szTables, 1024, "CREATE TABLE IF NOT EXISTS `%s` (`id` int NOT NULL AUTO_INCREMENT, `username` varchar(128)COLLATE utf8_lithuanian_ci NOT NULL, `password` varchar(64) COLLATE utf8_lithuanian_ci NOT NULL, `ip` varchar(40), `eurai` float(5,2) NOT NULL, `keys` varchar(1024) NOT NULL, `chests` varchar(1024) NOT NULL, `skins` longtext NOT NULL, `using_skins` longtext NOT NULL, `skins_kills` longtext NOT NULL, `kills` int(11) NOT NULL, `mvp` int(11) NOT NULL, `level` int(11) NOT NULL, `xp` int(11) NOT NULL, `rang` int(11) NOT NULL, `skill` float(5,2) NOT NULL, `day` int(2) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_lithuanian_ci", TABLE_NAME);
313 SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables);
314
315 format(szTables, 1024, "CREATE TABLE IF NOT EXISTS `%s` (`id` int NOT NULL AUTO_INCREMENT, `username` varchar(128) COLLATE utf8_lithuanian_ci NOT NULL, `avatar` varchar(512) COLLATE utf8_lithuanian_ci NOT NULL, `kreditai` int(11) NOT NULL, `showcase_1` varchar(128) NOT NULL, `showcase_2` varchar(128) NOT NULL, `showcase_3` varchar(128) NOT NULL, `is_admin` int(1) NOT NULL, `is_mod` int(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_lithuanian_ci", WEB_TABLE_NAME);
316 SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables);
317}
318
319public plugin_init()
320{
321 register_plugin(PLUGIN, VERSION, AUTHOR);
322 register_cvar(PLUGIN, VERSION, FCVAR_SERVER);
323 register_supply_box("Experience Box");
324
325 register_clcmd("say /menu", "MenuOpen");
326 register_clcmd("say /reg", "RegMenu");
327 register_clcmd("say /trade", "TradeMenu");
328 register_clcmd("say /random", "ChooseRandom");
329 //register_clcmd("say /test", "tests");
330
331 register_clcmd("say menu", "MenuOpen");
332 register_clcmd("say reg", "RegMenu");
333 register_clcmd("say trade", "TradeMenu");
334 register_clcmd("say register", "TradeMenu");
335 //register_clcmd("say /test", "maxpl");
336
337 register_clcmd("say !menu", "MenuOpen");
338 register_clcmd("say !reg", "RegMenu");
339 register_clcmd("say !trade", "TradeMenu");
340 register_clcmd("say !register", "TradeMenu");
341
342 register_clcmd("say .menu", "MenuOpen");
343 register_clcmd("say .reg", "RegMenu");
344 register_clcmd("say .trade", "TradeMenu");
345 register_clcmd("say .register", "TradeMenu");
346
347 register_clcmd("say /top15", "Top15");
348 register_clcmd("say top15", "Top15");
349 register_clcmd("say !top15", "Top15");
350 register_clcmd("say .top15", "Top15");
351
352 register_clcmd("say /taisykles", "Taisykles");
353 register_clcmd("say taisykles", "Taisykles");
354 register_clcmd("say !taisykles", "Taisykles");
355 register_clcmd("say .taisykles", "Taisykles");
356
357 register_clcmd("say /rules", "Rules");
358 register_clcmd("say rules", "Rules");
359 register_clcmd("say !rules", "Rules");
360 register_clcmd("say .rules", "Rules");
361
362 register_clcmd("say /news", "News");
363 register_clcmd("say news", "News");
364 register_clcmd("say !news", "News");
365 register_clcmd("say .news", "News");
366
367 register_clcmd("say /clan15", "Clan15");
368 register_clcmd("say clan15", "Clan15");
369 register_clcmd("say !clan15", "Clan15");
370 register_clcmd("say .clan15", "Clan15");
371
372 register_clcmd("say /rank", "Rank");
373 register_clcmd("say rank", "Rank");
374 register_clcmd("say !rank", "Rank");
375 register_clcmd("say .rank", "Rank");
376
377 register_clcmd("say /savepass", "SavePassword");
378
379 register_clcmd("say /reward", "reward")
380
381 register_clcmd("radio1", "MenuOpen");
382
383 register_concmd("Cost", "MarketCost");
384 register_concmd("Gift", "GiftPoint");
385 register_concmd("Kiekis", "KiekisNew");
386 register_concmd("UserPassword", "PlayerPassword");
387
388 register_logevent("Hostage_Rescued", 3, "2=Rescued_A_Hostage");
389 register_event("TextMsg", "TextMsg_Killed_Hostage", "b", "1=4", "2=#Killed_Hostage");
390 register_event("HLTV", "RoundStart", "a", "1=0", "2=0");
391
392 register_forward(FM_ClientUserInfoChanged, "NameChange");
393 register_forward(FM_SetModel, "SetModel");
394
395 register_message(get_user_msgid("SendAudio"), "Message_SendAudio");
396
397 RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1);
398
399 for(new i; i < sizeof(eWeapon); i++) {
400 if(strlen(eWeapon[i]) > 3) {
401 RegisterHam(Ham_Item_Deploy, eWeapon[i], "WeaponSwitch", 1);
402 }
403 }
404 csgo_password_field = register_cvar("csgo_password_field", "_grand");
405
406 g_msgid_ScreenFade = get_user_msgid("ScreenFade");
407 g_msgid_SyncHud = CreateHudSyncObj();
408 g_msgid_AmmoX = get_user_msgid("AmmoX");
409
410 cvar_refill_spawn = register_cvar("csgo_refill_onspawn", "1");
411
412 p_allchat = register_cvar( "sv_allchat", "2" );
413 p_hidestat = register_cvar( "ac_hidestatus", "0" );
414 p_teamchat = register_cvar( "ac_teamchat", "0" );
415 register_cvar( "csgo_nick_show", "0" );
416
417 p_alltalk = get_cvar_pointer( "sv_alltalk" );
418
419 register_message(get_user_msgid("SayText"), "col_changer");
420
421 set_task(5.0, "LoadConnected");
422 gCanLoad = 0;
423 gCanSave = 0;
424
425 new iEnt = -1;
426 while((iEnt = find_ent_by_class(iEnt, "env_sound")))
427 {
428 DispatchKeyValue(iEnt, "roomtype", "0");
429 DispatchKeyValue(iEnt, "radius", "0");
430 }
431
432 format(Prefix, 31, "%L", LANG_PLAYER, "PREFIX");
433
434}
435
436public Top15(id) {
437 show_motd(id, "ranks.txt");
438}
439
440public Clan15(id) {
441 new szMotd[126];
442 formatex(szMotd, charsmax(szMotd), "http://cs-egp.lt/csgoweb/clan");
443 show_motd(id, szMotd, "Top 15 komandos");
444}
445
446public Taisykles(id) {
447 new szMotd[126];
448 formatex(szMotd, charsmax(szMotd), "http://cs-egp.lt/csgoweb/taisykles.html");
449 show_motd(id, szMotd, "Taisykles");
450}
451
452public Rules(id) {
453 new szMotd[126];
454 formatex(szMotd, charsmax(szMotd), "http://cs-egp.lt/csgoweb/rules.html");
455 show_motd(id, szMotd, "Rules");
456}
457
458public News(id) {
459 new szMotd[126];
460 formatex(szMotd, charsmax(szMotd), "http://cs-egp.lt/csgo/news.php");
461 show_motd(id, szMotd, "Naujienos");
462}
463
464public plugin_natives()
465{
466 // Player natives //
467 register_native("get_user_points", "native_get_user_points", 1);
468 register_native("set_user_points", "native_set_user_points", 1);
469 register_native("get_user_pass", "native_get_user_pass", 1);
470 register_native("is_user_loged", "native_is_user_loged", 1);
471 register_native("get_user_xp", "native_get_user_xp", 1);
472 register_native("set_user_xp", "native_set_user_xp", 1);
473 //register_native("get_user_mkey", "native_get_user_mkey", 1);
474 //register_native("set_user_mkey", "native_set_user_mkey", 1);
475 //register_native("get_user_mchest", "native_get_user_mchest", 1);
476 //register_native("set_user_mchest", "native_set_user_mchest", 1);
477 //register_native("get_user_mskin", "native_get_user_mskin", 1);
478 //register_native("set_user_mskin", "native_set_user_mskin", 1);
479 register_native("get_user_rkey", "native_get_user_rkey", 1);
480 register_native("set_user_rkey", "native_set_user_rkey", 1);
481 register_native("get_user_rchest", "native_get_user_rchest", 1);
482 register_native("set_user_rchest", "native_set_user_rchest", 1);
483 register_native("get_user_euro", "native_get_user_euro", 1);
484 register_native("set_user_euro", "native_set_user_euro", 1);
485 register_native("get_user_skill", "native_get_user_skill", 1);
486 register_native("set_user_skill", "native_set_user_skill", 1);
487 register_native("get_user_warkill", "native_get_user_warkill", 1);
488 register_native("set_user_warkill", "native_set_user_warkill", 1);
489 register_native("invite_status", "native_invite_status", 1);
490
491}
492public SavePassword(id)
493{
494 if(!Loged[id])
495 {
496 if(!gRegistered[id])
497 {
498 print_color(id, "%L", LANG_PLAYER, "NEED_REGISTER_1", Prefix);
499 print_color(id, "%L", LANG_PLAYER, "NEED_REGISTER_2", Prefix);
500 } else {
501 print_color(id, "%L", LANG_PLAYER, "LOGIN_FIRST", Prefix);
502 }
503 return PLUGIN_HANDLED;
504 }
505
506 new passfield[32]; get_pcvar_string(csgo_password_field, passfield, 31);
507 set_user_info(id, passfield, SavedPassword[id]);
508 client_cmd(id, "setinfo %s %s", passfield, SavedPassword[id]);
509
510 print_color(id, "%L", LANG_PLAYER, "SUCCESS_SAVED", Prefix);
511
512 return PLUGIN_HANDLED;
513}
514
515public Vip(id) {
516 new flags = read_flags("bit");
517 set_user_flags(id,flags);
518}
519
520public ChooseRandom(id) {
521 if(!(get_user_flags(id) & ADMIN_BAN)) {
522 return PLUGIN_HANDLED;
523 }
524 new szName[32], iPlayer = random_num(1, get_playersnum())
525 get_user_name(iPlayer, szName, 31);
526 client_print_color(0, print_team_default, "^1[^4RANDOM PLAYER^1] ^4%s", szName)
527 return PLUGIN_CONTINUE;
528}
529
530public TextMsg_Killed_Hostage(id)
531{
532 Eurai[id] -= 0.10;
533
534 set_hudmessage(255, 0, 0, -1.0, 0.15, 0, 6.0, 2.0);
535 show_hudmessage(id, "-0.10 eurų");
536
537 SaveEurai(id);
538}
539
540public Hostage_Rescued()
541{
542 static loguser[80], name[32], id;
543 read_logargv(0, loguser, 79); parse_loguser(loguser, name, 31);
544 id = get_user_index(name);
545 new szName[32]; get_user_name(id, szName, 31);
546 new accesNum = get_access(id);
547
548 if(is_user_connected(id))
549 {
550 if(Doublexp[id] && accesNum == 4) {
551 Eurai[id] += 0.20;
552 set_hudmessage(255, 255, 255, -1.0, 0.15, 0, 6.0, 2.0);
553 show_hudmessage(id, "+0.20 eurų");
554 }
555
556 else {
557 Eurai[id] += 0.20;
558 set_hudmessage(255, 255, 255, -1.0, 0.15, 0, 6.0, 2.0);
559 show_hudmessage(id, "+0.10 eurų");
560 }
561
562 if(Doublexp[id] && accesNum == 4) {
563 drop_item(id, DROP_RATE_HOSTAGE_SADMIN*2);
564 }
565 else if(accesNum == 4) {
566 drop_item(id, DROP_RATE_HOSTAGE_SADMIN);
567 }
568 else if(accesNum == 5) {
569 drop_item(id, DROP_RATE_HOSTAGE_USER);
570 }
571
572 xp[id] += 10;
573 SaveEurai(id);
574 SaveChests(id);
575 }
576}
577
578public LoadConnected()
579{
580 gCanLoad = 1;
581 gCanSave = 1;
582
583 for(new i=1; i <= 32; i++) {
584 if(is_user_connected(i)) {
585 add_delay(i);
586 }
587 }
588}
589
590public plugin_end()
591{
592 SQL_FreeHandle(g_hTuple);
593}
594
595public bomb_planted(planter)
596{
597 new szName[32]; get_user_name(planter, szName, 31);
598 new accesNum = get_access(planter);
599
600 if(is_user_connected(planter))
601 {
602 if(Doublexp[planter] && accesNum == 4) {
603 Eurai[planter] += 0.20;
604 set_hudmessage(255, 255, 255, -1.0, 0.15, 0, 6.0, 2.0);
605 show_hudmessage(planter, "+0.20 eurų");
606 }
607 else {
608 Eurai[planter] += 0.10;
609 set_hudmessage(255, 255, 255, -1.0, 0.15, 0, 6.0, 2.0);
610 show_hudmessage(planter, "+0.10 eurų");
611 }
612
613 if(Doublexp[planter] && accesNum == 4) {
614 drop_item(planter, DROP_RATE_PLANT_SADMIN*2);
615 }
616 else if(accesNum == 4) {
617 drop_item(planter, DROP_RATE_PLANT_SADMIN);
618 }
619 else if(accesNum == 5) {
620 drop_item(planter, DROP_RATE_PLANT_USER);
621 }
622
623 xp[planter] += 10;
624 set_task(0.1, "UpdateDouble", planter);
625 SaveEurai(planter);
626 SaveChests(planter);
627 }
628}
629
630public bomb_defused(defuser)
631{
632 new szName[32]; get_user_name(defuser, szName, 31);
633 new accesNum = get_access(defuser);
634
635 if(is_user_connected(defuser))
636 {
637 if(Doublexp[defuser] && accesNum == 4) {
638 Eurai[defuser] += 0.05;
639 set_hudmessage(255, 255, 255, -1.0, 0.15, 0, 6.0, 2.0);
640 show_hudmessage(defuser, "+0.20 eurų");
641 }
642 else {
643 Eurai[defuser] += 0.10;
644 set_hudmessage(255, 255, 255, -1.0, 0.15, 0, 6.0, 2.0);
645 show_hudmessage(defuser, "+0.10 eurų");
646 }
647
648 if(Doublexp[defuser] && accesNum == 4) {
649 drop_item(defuser, DROP_RATE_DEF_SADMIN*2);
650 }
651 else if(accesNum == 4) {
652 drop_item(defuser, DROP_RATE_DEF_SADMIN);
653 }
654 else if(accesNum == 5) {
655 drop_item(defuser, DROP_RATE_DEF_USER);
656 }
657 xp[defuser] += 10;
658 set_task(0.1, "UpdateDouble", defuser);
659
660
661 SaveEurai(defuser);
662 SaveChests(defuser);
663 }
664}
665
666public RoundStart() {
667 rItem = random(CHEST_COUNT+1);
668 new Players[32], Count;
669 get_players(Players, Count, "ach")
670 for( new i = 1; i <= Count; i++ )
671 {
672 Rounds[i]++;
673 SaveKills(i);
674 }
675}
676
677public Message_SendAudio(iMsgId, iMsgDest, id)
678{
679 /*if( !id && !gEnd)
680 {
681 new szSound[14]; get_msg_arg_string(2, szSound, charsmax(szSound));
682 new maxpl = get_maxplayers()
683
684 if(equal(szSound, "%!MRAD_ctwin") && get_playersnum() > 2)
685 {
686 for(new i=1; i<=maxpl; i++) {
687 if(cs_get_user_team(i) == CS_TEAM_T) {
688 SkillPoints[i] -= 5;
689 SaveKills(i);
690 }
691 else if(cs_get_user_team(i) == CS_TEAM_CT) {
692 Eurai[i] += 0.05;
693 SkillPoints[i] += 5;
694 SaveEurai(i);
695 SaveKills(i);
696 }
697 set_task(0.1, "UpdateDouble", i);
698 }
699 gEnd = true;
700 print_color(0, "%L", LANG_PLAYER, "CT_TEAM_WIN", Prefix);
701 }
702 else if( equal(szSound, "%!MRAD_terwin") && get_playersnum() > 2)
703 {
704 for(new i=1; i<=maxpl; i++) {
705 if(cs_get_user_team(i) == CS_TEAM_CT) {
706 SkillPoints[i] -= 5;
707 SaveKills(i);
708 }
709 else if(cs_get_user_team(i) == CS_TEAM_T) {
710 Eurai[i] += 0.05;
711 SkillPoints[i] += 5;
712 SaveEurai(i);
713 SaveKills(i);
714 }
715 set_task(0.1, "UpdateDouble", i);
716 }
717 gEnd = true;
718 print_color(0, "%L", LANG_PLAYER, "T_TEAM_WIN", Prefix);
719 }
720 }*/
721}
722
723public PlayerSpawn(id)
724{
725 if(is_user_alive(id))
726 {
727 if(!Loged[id] && gRegistered[id])
728 {
729 RegMenu(id);
730 set_user_maxspeed(id, 1.0);
731
732 message_begin(MSG_ONE, g_msgid_ScreenFade, _, id);
733 write_short(60);
734 write_short(60);
735 write_short(0x0004);
736 write_byte(15);
737 write_byte(15);
738 write_byte(15);
739 write_byte(255);
740 message_end();
741
742 if(!equal(Password[id], SavedPassword[id]))
743 {
744 print_color(id, "%L", LANG_PLAYER, "LOGIN_FIRST", Prefix);
745 print_color(id, "%L", LANG_PLAYER, "LOGIN_FIRST", Prefix);
746 print_color(id, "%L", LANG_PLAYER, "LOGIN_FIRST", Prefix);
747 }
748 }
749
750 if(!gRegistered[id]) {
751 print_color(id, "%L", LANG_PLAYER, "NEED_REGISTER_1", Prefix);
752 print_color(id, "%L", LANG_PLAYER, "NEED_REGISTER_2", Prefix);
753 }
754
755 if(get_pcvar_num(cvar_refill_spawn))
756 {
757 static iWeapons[32], iNum, i, iGun; iNum = 0;
758 get_user_weapons(id, iWeapons, iNum);
759
760 for( i = 0; i < iNum; i++ ) {
761 for (new a = 0; a < sizeof (g_other_weapons); a++)
762 if (iWeapons[i] == g_other_weapons[a])
763 continue;
764
765 for (new a = 0; a < sizeof (g_weapons); a++) {
766
767 if(g_weapons[a] == iWeapons[i])
768 {
769 if (get_weapon_maxclip(iWeapons[i]))
770 {
771 iGun = has_user_weapon(id, iWeapons[i]);
772 client_cmd(id, "spk ^"items/9mmclip1.wav^"");
773 cs_set_weapon_ammo(iGun, get_weapon_maxclip(iWeapons[i]));
774 SetFullBpAmmo(id, iWeapons[i]);
775 }
776 }
777 }
778 }
779 }
780
781 if(cs_get_user_team(id) == CS_TEAM_CT) {
782 cs_set_user_defuse(id, 1);
783 }
784 }
785 return PLUGIN_CONTINUE;
786}
787
788public col_changer( msg_id, msg_dest, rcvr )
789{
790 new str2[26];
791 get_msg_arg_string( 2, str2, 25 );
792 if( equal( str2, "#Cstrike_Chat", 13 ) )
793 {
794 new str3[22];
795 get_msg_arg_string( 3, str3, 21 );
796
797 if( !strlen( str3 ) )
798 {
799 new str4[101];
800 get_msg_arg_string( 4, str4, 100 );
801 new sndr = get_msg_arg_int( 1 );
802
803 new bool:is_team_msg = !bool:equal( str2, "#Cstrike_Chat_All", 17 );
804
805 new sndr_team = get_user_team( sndr );
806 new bool:is_sndr_spec = !bool:( 0 < sndr_team < 3 );
807
808 new bool:same_as_last = bool:( alv_sndr == sndr && equal( alv_str2, str2 ) && equal( alv_str4, str4) );
809
810 if( !same_as_last )
811 {//Duplicate message once
812 new allchat = clamp( get_pcvar_num( p_allchat ), 0, 2 );
813 if( allchat == 2 || ( allchat == 1 && clamp( get_pcvar_num( p_alltalk ), 0, 1 ) == 1 ) )
814 {
815 if( !( is_team_msg && ( is_sndr_spec || is_team_msg && get_pcvar_num( p_teamchat ) == 0 ) ) )
816 {//Don't duplicate if it's a spectator team message
817 new flags[5], team[10];
818 if( is_user_alive( sndr ) ) flags = "bch";
819 else flags = "ach";
820
821 if( is_team_msg )
822 {
823 add( flags[strlen( flags )], 4, "e" );
824 if( sndr_team == 1 ) team = "TERRORIST";
825 else team = "CT";
826 }
827
828 new players[32], num;
829 get_players( players, num, flags, team );
830
831 buildmsg( sndr, is_sndr_spec, is_team_msg, sndr_team, 0, 2, str4 ); //normal colors
832
833 for( new i=0; i < num; i++ )
834 {
835 message_begin( MSG_ONE, get_user_msgid( "SayText" ), _, players[i] );
836 write_byte( sndr );
837 write_string( msg );
838 message_end();
839 }
840
841 }
842
843 alv_sndr = sndr;
844 alv_str2 = str2;
845 alv_str4 = str4;
846
847 if(task_exists(411))
848 remove_task(411);
849
850 set_task( 0.1, "task_clear_antiloop_vars", 411 );
851 }
852 }
853
854 if(gLogged[sndr])
855 {
856 if( !same_as_last )
857 buildmsg( sndr, is_sndr_spec, is_team_msg, sndr_team, 0, 2, str4 );
858
859 set_msg_arg_string( 2, msg );
860 set_msg_arg_string( 4, "" );
861 }
862 }
863 }
864 return PLUGIN_CONTINUE;
865}
866
867public buildmsg( sndr, is_sndr_spec, is_team_msg, sndr_team, namecol, msgcol, str4[ ] )
868{
869 new sndr_name[33];
870 get_user_name( sndr, sndr_name, 32);
871 new steam[40]; get_user_authid(sndr, steam, 39);
872
873 new prefix[126] = "^x01";
874 if( get_pcvar_num( p_hidestat ) == 0 )
875 {
876 if( is_sndr_spec ) prefix = "^x01*SPEC* ";
877 else if( !is_user_alive( sndr ) ) prefix = "^x01*MIRĘS* ";
878 }
879
880 if(is_user_connected(sndr))
881 {
882 if(Loged[sndr]) {
883 new groupname[33];
884 get_user_clan(sndr, groupname, sizeof(groupname)-1);
885 if(!is_str_empty(groupname)) {
886 if(equal(steam, "STEAM_0:0:434200095")) {
887 new szMsg[64];
888 format(szMsg, sizeof(szMsg)-1, "^1[^4Savininkė^1] %s ", groupname);
889 add(prefix[strlen(prefix)-1], 64, szMsg);
890 }
891 else if(UserID[sndr] <= 10) {
892 new szMsg[64];
893 format(szMsg, sizeof(szMsg)-1, "^1[^3ϟ ^4%s ^3ϟ^1] %s ", (g_bModeRanked[sndr]) ? Rangs[Rang[sndr]] : "Casual", groupname);
894 add(prefix[strlen(prefix)-1], 64, szMsg);
895 }
896 else {
897 new szMsg[64];
898 format(szMsg, sizeof(szMsg)-1, "^1[^4%s^1] %s ", (g_bModeRanked[sndr]) ? Rangs[Rang[sndr]] : "Casual", groupname);
899 add(prefix[strlen(prefix)-1], 64, szMsg);
900 }
901 }
902 else {
903 if(equal(steam, "STEAM_0:0:222084599")) {
904 new szMsg[64];
905 format(szMsg, sizeof(szMsg)-1, "^1[^4Savininkė^1] ");
906 add(prefix[strlen(prefix)-1], 64, szMsg);
907 }
908 else if(UserID[sndr] <= 10) {
909 new szMsg[64];
910 format(szMsg, sizeof(szMsg)-1, "^1[^3ϟ ^4%s ^3ϟ^1] ", (g_bModeRanked[sndr]) ? Rangs[Rang[sndr]] : "Casual");
911 add(prefix[strlen(prefix)-1], 64, szMsg);
912 }
913 else {
914 new szMsg[64];
915 format(szMsg, sizeof(szMsg)-1, "^1[^4%s^1] ", (g_bModeRanked[sndr]) ? Rangs[Rang[sndr]] : "Casual");
916 add(prefix[strlen(prefix)-1], 64, szMsg);
917 }
918 }
919 }
920 else
921 {
922 new szMsg[64];
923 format(szMsg, sizeof(szMsg)-1, "^1[^4Neprisijungęs] ");
924 add(prefix[strlen(prefix)-1], 64, szMsg);
925 }
926
927 }
928
929 if( is_team_msg )
930 {
931 if( is_sndr_spec ) prefix = "^x01(Spectator) ";
932 else if( sndr_team == 1 ) add( prefix[strlen(prefix)-1], 29, "^x01(Terrorist) " );
933 else if( sndr_team == 2 ) add( prefix[strlen(prefix)-1], 29, "^x01(Counter-Terrorist) " );
934 }
935 if (get_user_flags(sndr) & ADMIN_IMMUNITY) {
936 format( msg, 512, "%s%s%s ^1: %s%s", strlen( prefix ) > 1 ? prefix : "", "^x04", sndr_name, COLCHAR[namecol], str4 );
937 }
938 else if (get_user_flags(sndr) & ADMIN_RESERVATION /*&& MissionsActivated[sndr] */) {
939 format( msg, 512, "%s%s%s ^1: %s%s", strlen( prefix ) > 1 ? prefix : "", COLCHAR[namecol], sndr_name, "^x04", str4 );
940 }
941
942 return PLUGIN_HANDLED;
943}
944
945public task_clear_antiloop_vars( )
946{
947 alv_sndr = 0;
948 alv_str2 = "";
949 alv_str4 = "";
950
951 return PLUGIN_HANDLED;
952}
953
954public MenuOpen(id)
955{
956 if(!Loged[id]) { RegMenu(id); return PLUGIN_HANDLED; }
957 MenuMod[id] = 0;
958 Menu(id);
959 return PLUGIN_HANDLED;
960}
961
962public client_death(Killer, Victim, wpnindex, hitplace, TK)
963{
964 if(Killer == Victim) { return PLUGIN_CONTINUE; }
965
966 if(!gRegistered[Victim]) {
967 print_color(Victim, "%L", LANG_PLAYER, "BLANK");
968 print_color(Victim, "%L", LANG_PLAYER, "NEED_REGISTER_1", Prefix);
969 print_color(Victim, "%L", LANG_PLAYER, "NEED_REGISTER_2", Prefix);
970 print_color(Victim, "%L", LANG_PLAYER, "BLANK");
971 }
972
973 if(!gRegistered[Killer]) {
974 print_color(Killer, "%L", LANG_PLAYER, "BLANK");
975 print_color(Killer, "%L", LANG_PLAYER, "NEED_REGISTER_1", Prefix);
976 print_color(Killer, "%L", LANG_PLAYER, "NEED_REGISTER_2", Prefix);
977 print_color(Killer, "%L", LANG_PLAYER, "BLANK");
978 }
979
980 new accesNum = get_access(Killer);
981 Kills[Killer]++;
982
983 new Float:diff;
984 if(!gLogged[Victim]) {
985 diff = 100.00;
986 }
987 else {
988 diff = Skill[Victim];
989 }
990 new Float:delta = 1.0 / (1.0 + floatpower(10.0,(Skill[Killer] - diff) / 100.0))
991 new Float:koeff = 0.0
992
993 if(Kills[Killer] < 100)
994 {
995 koeff = 2.0;
996 }
997 else
998 {
999 koeff = 1.5;
1000 }
1001 if(g_bModeRanked[Killer] && g_bModeRanked[Victim]) {
1002 Skill[Killer] += (koeff * delta);
1003 Skill[Victim] -= (koeff * delta);
1004 SaveKills(Victim);
1005 }
1006
1007
1008 xp[Killer] += 20;
1009 g_iKills[Killer]++;
1010 static kGun; kGun = get_user_weapon(Killer, _, _);
1011 new szName[32]; get_user_name(Killer, szName, 31);
1012 new szName2[32]; get_user_name(Victim, szName2, 31);
1013
1014
1015 if(bUsingGuns[Killer][kGun]) {
1016 uWeaponKills[bUsingGuns[Killer][kGun]][Killer]++;
1017 SaveGunsKills(Killer);
1018 //set_task(0.1, "UpdateStatusText", Killer);
1019 }
1020
1021 //RANK UP 5 < 19 && 2
1022 if(Kills[Killer] >= 100) {
1023 if(Rang[Killer] < sizeof(Rangs) && Rang[Killer] < file_size(RangFile, 1))
1024 {
1025 while(Skill[Killer] >= NeedKills[Rang[Killer]])
1026 {
1027 Rang[Killer]++;
1028 SaveRang(Killer);
1029 SaveKills(Victim);
1030 if(Kills[Victim] > 100) {
1031 client_print_color(0, print_team_default, "^4%L", LANG_PLAYER, "RANKUP", szName, Rangs[Rang[Killer]]);
1032 }
1033 }
1034 }
1035 if(Rang[Victim] < sizeof(Rangs) && Rang[Victim] < file_size(RangFile, 1)) {
1036 while(Skill[Victim] < NeedKills[Rang[Victim]-1])
1037 {
1038 Rang[Victim]--;
1039 SaveRang(Victim);
1040 SaveKills(Victim);
1041 if(Kills[Victim] >= 100) {
1042 client_print_color(0, print_team_red, "^3%L", LANG_PLAYER, "DERANK", szName2, Rangs[Rang[Victim]]);
1043 }
1044 }
1045 }
1046 }
1047 //LVL UP
1048 if(Level[Killer] < sizeof(Levels) && Level[Killer] < file_size(LvlFile, 1))
1049 {
1050 if(xp[Killer] >= Needxp[Level[Killer]])
1051 {
1052 Level[Killer]++;
1053
1054 new chest = random(CHEST_COUNT)+1;
1055 new Float:rNum = random_float((random(5)*1.0), 200.0);
1056 new chance = (rNum <= 1.0) ? 1 : ((rNum <= 5.0) ? 5 : ((rNum <= 25) ? 25 : 100));
1057
1058 new skinsCnt = chestsChance[chest][chance];
1059 new skinNum = random(skinsCnt);
1060 new skinId = chestsList[chest][chance][skinNum];
1061 uWeapon[skinId][Killer]++;
1062 print_color(0, "%L", LANG_PLAYER, "LEVELUP", szName, Levels[Level[Killer]], WeaponNames[skinId]);
1063
1064 SaveEurai(Killer);
1065 }
1066 }
1067
1068 set_hudmessage(255, 255, 255, -1.0, 0.30, 0, 6.0, 2.0);
1069
1070 if(hitplace == HIT_HEAD) {
1071 if(accesNum == 4 && Doublexp[Killer]) {
1072 new Float:hsPoints, Float:Double, Float:Bonus, Float:Sum;
1073 hsPoints = random_float(0.1, 0.2);
1074 Bonus = random_float(0.1, 0.12);
1075 Double += hsPoints + Bonus;
1076 Sum += hsPoints + Bonus+ Double;
1077 Eurai[Killer] += Sum;
1078 SaveKills(Killer);
1079 SaveEurai(Killer);
1080 show_hudmessage(Killer, "+%.2f HS +%.2f PRIME +%.2f DOUBLE", hsPoints, Bonus, Double);
1081 }
1082 else if(accesNum == 4) {
1083 new Float:hsPoints, Float:Bonus, Float:Sum;
1084 hsPoints = random_float(0.10, 0.12);
1085 Bonus = random_float(0.10, 0.12);
1086 Sum += hsPoints + Bonus;
1087 Eurai[Killer] += Sum;
1088 SaveKills(Killer);
1089 SaveEurai(Killer);
1090 show_hudmessage(Killer, "+%.2f HS +%.2f PRIME", hsPoints, Bonus);
1091 }
1092
1093 else if(accesNum == 5) {
1094 new Float:hsPoints;
1095 hsPoints = random_float(0.03, 0.05);
1096 Eurai[Killer] += hsPoints;
1097 SaveKills(Killer);
1098 SaveEurai(Killer);
1099 show_hudmessage(Killer, "+%.2f HS", hsPoints);
1100 }
1101
1102 }
1103
1104 else {
1105 if(accesNum == 4 && Doublexp[Killer]) {
1106 new Float:Double, Float:Bonus, Float:Sum;
1107 Bonus = random_float(0.10, 0.12);
1108 Double += Bonus;
1109 Sum += Bonus + Double;
1110 Eurai[Killer] += Sum;
1111 SaveKills(Killer);
1112 SaveEurai(Killer);
1113 show_hudmessage(Killer, "+%.2f PRIME +%.2f DOUBLE", Bonus, Double);
1114 }
1115 else if(accesNum == 4) {
1116 new Float:Bonus, Float:Sum;
1117 Bonus = random_float(0.10, 0.12);
1118 Sum += Bonus;
1119 Eurai[Killer] += Sum;
1120 SaveKills(Killer);
1121 SaveEurai(Killer);
1122 show_hudmessage(Killer, "+%.2f PRIME", Bonus);
1123 }
1124
1125 else if(accesNum == 5) {
1126 new Float:Bonus;
1127 Bonus = random_float(0.03, 0.05);
1128 Eurai[Killer] += Bonus;
1129 SaveKills(Killer);
1130 SaveEurai(Killer);
1131 show_hudmessage(Killer, "+%.2f EUR", Bonus);
1132 }
1133 }
1134
1135 if(Doublexp[Killer] && accesNum == 4) {
1136 drop_item(Killer, DROP_RATE_KILL_SADMIN*2);
1137 }
1138 else if(accesNum == 4) {
1139 drop_item(Killer, DROP_RATE_KILL_SADMIN);
1140 }
1141 else if(accesNum == 5) {
1142 drop_item(Killer, DROP_RATE_KILL_USER);
1143 }
1144 set_task(0.1, "UpdateDouble", Killer);
1145
1146 SaveEurai(Killer);
1147 SaveKills(Killer);
1148 return PLUGIN_CONTINUE;
1149}
1150
1151
1152public SetModel(entity, model[])
1153{
1154 if(!pev_valid(entity))
1155 return FMRES_IGNORED;
1156
1157 static Classname[32]; pev(entity, pev_classname, Classname, sizeof(Classname));
1158
1159 if(!equal(Classname, "weaponbox"))
1160 return FMRES_IGNORED;
1161
1162 static iOwner; iOwner = pev(entity, pev_owner);
1163 static iWeapon; iWeapon = get_user_weapon(iOwner, _, _);
1164 static weapon; weapon = find_ent_by_owner(-1, eWeapon[iWeapon], entity);
1165
1166 if(bUsingGuns[iOwner][iWeapon] && !pev(weapon, pev_impulse))
1167 {
1168 if(!pev_valid(weapon))
1169 return FMRES_IGNORED;
1170
1171 set_pev(weapon, pev_impulse, bUsingGuns[iOwner][iWeapon]);
1172
1173 if(strlen(DefaultSkinW[iWeapon]) > 5) {
1174 entity_set_model(entity, DefaultSkinW[iWeapon]);
1175
1176 return FMRES_SUPERCEDE;
1177 }
1178 return FMRES_IGNORED;
1179 }
1180
1181 return FMRES_IGNORED;
1182}
1183
1184public MarketCost(id)
1185{
1186 if(inMarket[id] || !Loged[id])
1187 return PLUGIN_HANDLED;
1188
1189 new Data[32], Float:Cost;
1190 read_args(Data, 31);
1191 remove_quotes(Data);
1192
1193 Cost = str_to_float(Data);
1194
1195 if(Cost < 0.00)
1196 {
1197 client_cmd(id, "messagemode Cost");
1198 return PLUGIN_HANDLED;
1199 }
1200 else if(0.03 > Cost)
1201 {
1202 //print_color(id, "%L", LANG_PLAYER, "NOTENOUGHTMARKET", Prefix, MARKET_MIN_PRICE);
1203 //client_cmd(id, "messagemode Cost");
1204 MarketEurai[id] = 0.00;
1205 Menu(id);
1206 MenuMod[id] = 3;
1207
1208 return PLUGIN_HANDLED;
1209 }
1210 else
1211 {
1212 MarketEurai[id] = Cost;
1213 Menu(id);
1214 MenuMod[id] = 3;
1215 return PLUGIN_CONTINUE;
1216 }
1217}
1218
1219public KiekisNew(id)
1220{
1221 if(!Loged[id])
1222 return PLUGIN_HANDLED;
1223
1224 new Data[32], Cost;
1225 read_args(Data, 31);
1226 remove_quotes(Data);
1227
1228 Cost = str_to_num(Data);
1229
1230 if(Cost < 0)
1231 {
1232 client_cmd(id, "messagemode Kiekis");
1233 return PLUGIN_HANDLED;
1234 }
1235 else
1236 {
1237 Kiekis[id] = Cost;
1238 return PLUGIN_CONTINUE;
1239 }
1240}
1241
1242public GiftPoint(id)
1243{
1244 if(inMarket[id] || !Loged[id])
1245 return PLUGIN_HANDLED;
1246
1247 new Data[32], Float:Cost;
1248 read_args(Data, 31);
1249 remove_quotes(Data);
1250
1251 Cost = str_to_float(Data);
1252
1253 if(Cost < 0.00 || Eurai[id] < Cost)
1254 {
1255 client_cmd(id, "messagemode Gift");
1256 return PLUGIN_HANDLED;
1257 }
1258 else
1259 {
1260 aEurai[id] = Cost;
1261 Menu(id);
1262 MenuMod[id] = 5;
1263 return PLUGIN_CONTINUE;
1264 }
1265}
1266
1267public WeaponSwitch(Weapon)
1268{
1269 new id = get_pdata_cbase(Weapon, 41, 4);
1270 new wid = cs_get_weapon_id(Weapon);
1271 static iOwner; iOwner = pev(Weapon, pev_owner);
1272
1273 if(id > 32 || id < 1) {
1274 return HAM_SUPERCEDE;
1275 }
1276
1277 if(!is_user_connected(id)) {
1278 return HAM_SUPERCEDE;
1279 }
1280
1281 if(pev(Weapon, pev_impulse))
1282 {
1283 set_pev(id, pev_viewmodel2, WeaponMdls[pev(Weapon, pev_impulse)]);
1284 format(WeaponHold[id], 63, "%s", WeaponNames[pev(Weapon, pev_impulse)]);
1285 //client_print_color(id, print_team_default, "^4[DEBUG #1 #1] Paėmete %s skiną priklausanti %s", WeaponHold[id], get_user_name_ex(pev(Weapon, pev_impulse)))
1286
1287
1288 /*if(strlen(WeaponMdlsP[pev(Weapon, pev_impulse)]) > 5) {
1289 set_pev(id, pev_weaponmodel2, WeaponMdlsP[pev(Weapon, pev_impulse)]);
1290 }*/
1291 }
1292 else if(bUsingGuns[id][wid])
1293 {
1294 set_pev(id, pev_viewmodel2, WeaponMdls[bUsingGuns[id][wid]]);
1295 /*if(strlen(WeaponMdlsP[bUsingGuns[id][wid]]) > 5) {
1296 set_pev(id, pev_weaponmodel2, WeaponMdlsP[bUsingGuns[id][wid]]);
1297 client_print_color(id, print_team_default, "^4[DEBUG #2] Paėmete %s skiną", WeaponNames[pev(Weapon, pev_impulse)])
1298 }*/
1299 }
1300 else if(strlen(DefaultSkin[wid]) > 5)
1301 {
1302 if(cs_get_user_team(id) == CS_TEAM_CT && wid == 29) { wid = 31; }
1303
1304 set_pev(id, pev_viewmodel2, DefaultSkin[wid]);
1305 //client_print_color(id, print_team_default, "^4[DEBUG #3 #1]")
1306 if(strlen(DefaultSkinP[wid]) > 5) {
1307 set_pev(id, pev_weaponmodel2, DefaultSkinP[wid]);
1308 //client_print_color(id, print_team_default, "^4[DEBUG #3]")
1309 }
1310 }
1311
1312 return HAM_IGNORED;
1313}
1314
1315public Menu(id)
1316{
1317 if(!Loged[id]) { RegMenu(id); return; }
1318
1319 new sMenu, szText[256];
1320
1321 switch(MenuMod[id])
1322 {
1323 case -2: //Kazkas su dovanom
1324 {
1325 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "GIFTCH", LANG_PLAYER, "YPOINT", Eurai[id]);
1326 sMenu = menu_create(szText, "MenuHandler");
1327
1328 new String[32], All;
1329 for(new i = 1; i < AllWeapon; i++)
1330 {
1331 if(uWeapon[i][id] <= 0)
1332 continue;
1333
1334 num_to_str(i, String, 31);
1335 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "SKINPIECE", (bUsingGuns[id][Weapons[i]] == i) ? "\w" : "\y", WeaponNames[i], uWeapon[i][id]);
1336 menu_additem(sMenu, szText, String);
1337 All++;
1338 }
1339
1340 for(new i=1; i < CHEST_COUNT; i++)
1341 {
1342 if(Chest[id][i] > 0)
1343 {
1344 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "CHESTPIECE", chest_name(i), Chest[id][i]);
1345
1346 new szButton[128]; formatex(szButton, charsmax(szButton), "%d", CHEST_ID+i);
1347 menu_additem(sMenu, szText, szButton);
1348
1349 All++;
1350 }
1351 }
1352 for(new i=1; i < CHEST_COUNT; i++)
1353 {
1354 if(cKey[id][i] > 0)
1355 {
1356 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "KEYPIECE", chest_name(i), cKey[id][i]);
1357
1358 new szButton[128]; formatex(szButton, charsmax(szButton), "%d", KEY_ID+i);
1359 menu_additem(sMenu, szText, szButton);
1360
1361 All++;
1362 }
1363 }
1364
1365 if(All == 0)
1366 {
1367 MenuMod[id] = 0;
1368 Menu(id);
1369 }
1370 }
1371 case -1: //Deti i turgu
1372 {
1373 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "GIFTCH", LANG_PLAYER, "YPOINT", Eurai[id]);
1374 sMenu = menu_create(szText, "MenuHandler");
1375
1376 new String[32], All;
1377 for(new i = 1; i < AllWeapon; i++)
1378 {
1379 if(uWeapon[i][id] <= 0)
1380 continue;
1381
1382 num_to_str(i, String, 31);
1383 formatex(szText, sizeof(szText), "%L \r[\w%.2fEur.\r]", LANG_PLAYER, "KSKINPIECE", (bUsingGuns[id][Weapons[i]] == i) ? "\w" : "\y", WeaponNames[i], uWeapon[i][id], Price[i]);
1384 menu_additem(sMenu, szText, String);
1385 All++;
1386 }
1387
1388 for(new i=1; i < CHEST_COUNT; i++)
1389 {
1390 if(Chest[id][i] > 0)
1391 {
1392 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "CHESTPIECE", chest_name(i), Chest[id][i]);
1393
1394 new szButton[128]; formatex(szButton, charsmax(szButton), "%d", CHEST_ID+i-1);
1395 menu_additem(sMenu, szText, szButton);
1396
1397 All++;
1398 }
1399 }
1400
1401 for(new i=1; i < CHEST_COUNT; i++)
1402 {
1403 if(cKey[id][i] > 0)
1404 {
1405 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "KEYPIECE", chest_name(i), cKey[id][i]);
1406
1407 new szButton[128]; formatex(szButton, charsmax(szButton), "%d", KEY_ID+i-1);
1408 menu_additem(sMenu, szText, szButton);
1409
1410 All++;
1411 }
1412 }
1413
1414
1415 if(All == 0)
1416 {
1417 MenuMod[id] = 0;
1418 Menu(id);
1419 }
1420 }
1421 case 0:
1422 {
1423 formatex(szText, sizeof(szText), "\r%L %L \w", LANG_PLAYER, "MAIN", LANG_PLAYER, "YPOINT", Eurai[id]);
1424 sMenu = menu_create(szText, "MenuHandler");
1425
1426 formatex(szText, sizeof(szText), "%L^n\r------------------------------------", LANG_PLAYER, "MY_ACCOUNT");
1427 menu_additem(sMenu, szText, "1");
1428
1429 formatex(szText, sizeof(szText), "%L %L", LANG_PLAYER, "MENUTOCHESTOPEN", LANG_PLAYER, (inMarket[id]) ? "INMARKET" : ((coinflip_playing(id) > 0) ? "INCOINFLIP" : "BLANK"));
1430 menu_additem(sMenu, szText, (!inMarket[id]) ? "2" : "0");
1431
1432 formatex(szText, sizeof(szText), "%L^n\r------------------------------------", LANG_PLAYER, "MENUCHESTINFO");
1433 menu_additem(sMenu, szText, "7");
1434
1435 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "MENUTOMARKET", LANG_PLAYER, (coinflip_playing(id) > 0) ? "INCOINFLIP" : "BLANK");
1436 menu_additem(sMenu, szText, (coinflip_playing(id) > 0) ? "0" : "3");
1437
1438 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "MENUTOSHOP", LANG_PLAYER, (coinflip_playing(id) > 0) ? "INCOINFLIP" : "BLANK");
1439 menu_additem(sMenu, szText, (coinflip_playing(id) > 0) ? "0" : "6");
1440
1441 formatex(szText, sizeof(szText), "%L %L^n\r------------------------------------", LANG_PLAYER, "MENUTOGIFT", LANG_PLAYER, (inMarket[id]) ? "INMARKET" : ((coinflip_playing(id) > 0) ? "INCOINFLIP" : "BLANK"));
1442 menu_additem(sMenu, szText, (!inMarket[id]) ? "5" : "0");
1443
1444 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "MENUCLAN");
1445 menu_additem(sMenu, szText, "9");
1446
1447 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "MINIGAMES", LANG_PLAYER);
1448 menu_additem(sMenu, szText, "4");
1449
1450
1451 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "MENUTODUSTBIN");
1452 menu_additem(sMenu, szText, "8");
1453
1454 menu_setprop( sMenu, 9, 0 );
1455 }
1456 case 1: //Paskyra
1457 {
1458 formatex(szText, sizeof(szText), "\r%L %L \w", LANG_PLAYER, "MY_ACCOUNT", LANG_PLAYER, "YPOINT", Eurai[id]);
1459 sMenu = menu_create(szText, "MenuHandler");
1460 new call = menu_makecallback("Call_Back");
1461
1462 formatex(szText, sizeof(szText), "%L^n\r------------------------------------", LANG_PLAYER, "MENUTOSKINS");
1463 menu_additem(sMenu, szText, _, _, -1);
1464
1465 formatex(szText, sizeof(szText), "%L^n\r------------------------------------", LANG_PLAYER, "MISSIONS");
1466 menu_additem(sMenu, szText, _, _, (Pass[id] == 1) ? -1 : call);
1467
1468 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "UPGRADER", LANG_PLAYER, (inMarket[id]) ? "INMARKET" : "BLANK");
1469 menu_additem(sMenu, szText, _, _, (!inMarket[id]) ? -1 : call);
1470
1471 formatex(szText, sizeof(szText), "%L \d[\w%L\d]", LANG_PLAYER, "GAMEMODE", LANG_PLAYER, (g_bModeRanked[id]) ? "RANKED" : "CASUAL");
1472 menu_additem(sMenu, szText, _, _, -1);
1473
1474 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "MAIN_LANGUAGE");
1475 menu_additem(sMenu, szText, _, _, -1);
1476 }
1477 case 2: //Skrynios
1478 {
1479 formatex(szText, sizeof(szText), "\r%L", LANG_PLAYER, "MENUTOCHESTOPEN");
1480 sMenu = menu_create(szText, "MenuHandler");
1481 new call = menu_makecallback("Call_Back");
1482
1483 for(new i=1; i <= CHEST_COUNT; i++)
1484 {
1485 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "CHESTPIECEOPEN", chest_name(i), Chest[id][i], cKey[id][i]);
1486 menu_additem(sMenu, szText, _, _, (Chest[id][i] > 0 && cKey[id][i] > 0) ? -1 : call);
1487 }
1488 }
1489 case 3: //Turgus
1490 {
1491 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "MENUTOMARKET", LANG_PLAYER, "YPOINT", Eurai[id]);
1492 sMenu = menu_create(szText, "MenuHandler");
1493 new call = menu_makecallback("Call_Back");
1494
1495 aThing[id] = 0;
1496
1497 new String[32], All;
1498 if(!inMarket[id])
1499 {
1500 for(new i = 1; i < AllWeapon; i++) {
1501 if(i == WeaponinMarket[id] && uWeapon[i][id] > 0) {
1502 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "MARKETPLACES", WeaponNames[i], szWeaponNames[Weapons[i]], MarketEurai[id]);
1503 All++;
1504 }
1505 }
1506
1507 //log_amx("Turgus. Rodo. %d <= %d <= %d && Chest[id][%d] > 0", CHEST_ID, WeaponinMarket[id], CHEST_ID+CHEST_COUNT, (WeaponinMarket[id]-CHEST_ID)+1);
1508 if(CHEST_ID <= WeaponinMarket[id] <= CHEST_ID+CHEST_COUNT && Chest[id][(WeaponinMarket[id]-CHEST_ID)+1] > 0)
1509 {
1510 for(new i=1; i < CHEST_COUNT-1; i++)
1511 {
1512 //log_amx("Chest[id][%d] && %d == %d", i, (CHEST_ID+i-1), WeaponinMarket[id]);
1513 if(Chest[id][i] > 0 && ((CHEST_ID+i-1) == WeaponinMarket[id]))
1514 {
1515 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "MARKETPLACEC", chest_name(i), MarketEurai[id]);
1516
1517 All++;
1518 break;
1519 }
1520 }
1521 }
1522
1523 if(KEY_ID <= WeaponinMarket[id] <= KEY_ID+CHEST_COUNT && cKey[id][(WeaponinMarket[id]-KEY_ID)+1] > 0)
1524 {
1525 for(new i=1; i < CHEST_COUNT-1; i++)
1526 {
1527 //log_amx("Chest[id][%d] && %d == %d", i, (CHEST_ID+i-1), WeaponinMarket[id]);
1528 if(cKey[id][i] > 0 && ((KEY_ID+i-1) == WeaponinMarket[id]))
1529 {
1530 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "MARKETPLACEK", chest_name(i), MarketEurai[id]);
1531
1532 All++;
1533 break;
1534 }
1535 }
1536 }
1537
1538 if(All == 0)
1539 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "MARKETPLACECH");
1540
1541 menu_additem(sMenu, szText, "-1");
1542 }
1543
1544 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, (!inMarket[id]) ? "TOMARKETM" : "BACKMARKET");
1545 menu_additem(sMenu, szText, "0", _, ((get_systime()-gLastMarketTime[id]) > MARKET_WAIT_ADD) ? -1 : call);
1546
1547 for(new x = 1; x <= get_maxplayers(); x++)
1548 {
1549 if(!is_user_connected(x) || is_user_bot(x))
1550 continue;
1551
1552 if(inMarket[x] && MarketEurai[x] > 0.00)
1553 {
1554 num_to_str(x, String, 31);
1555 new sName[32];
1556 get_user_name(x, sName, 31);
1557
1558 if(CHEST_ID <= WeaponinMarket[x] <= CHEST_ID+CHEST_COUNT)
1559 {
1560 //log_amx("Turgus. Rodo. (%d-%d) = %d", WeaponinMarket[x], CHEST_ID, WeaponinMarket[x]-CHEST_ID);
1561 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "SELLERC", chest_name((WeaponinMarket[x]-CHEST_ID)+1), sName, MarketEurai[x]);
1562 menu_additem(sMenu, szText, String);
1563 }
1564 else if(KEY_ID <= WeaponinMarket[x] <= KEY_ID+CHEST_COUNT)
1565 {
1566 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "SELLERK", chest_name((WeaponinMarket[x]-KEY_ID)+1), sName, MarketEurai[x]);
1567 menu_additem(sMenu, szText, String);
1568 }
1569 else
1570 {
1571 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "SELLERS", WeaponNames[WeaponinMarket[x]], sName, MarketEurai[x]);
1572 menu_additem(sMenu, szText, String);
1573 }
1574 }
1575 }
1576 }
1577 case 4: //Siuksliadeze
1578 {
1579 new call = menu_makecallback("Call_Back");
1580 formatex(szText, sizeof(szText), "\r%L ^n\wValiuta: \r[\w%.2f\r]", LANG_PLAYER, "MINIGAMES", Eurai[id]);
1581 sMenu = menu_create(szText, "MenuHandler");
1582
1583 formatex(szText, sizeof(szText), "Coinflip");
1584 menu_additem(sMenu, szText, _, _, -1);
1585
1586 formatex(szText, sizeof(szText), "Jackpot [DISABLED]");
1587 menu_additem(sMenu, szText, _, _, call);
1588
1589 formatex(szText, sizeof(szText), "Pakvietimai [%s]", (TurnInvite[id] == 0) ? "\wĮjungti" : "\rIšjungti\w");
1590 menu_additem(sMenu, szText, _, _, -1);
1591 }
1592 case 5: //Dovanos
1593 {
1594 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "MENUTOGIFT", LANG_PLAYER, "YPOINT", Eurai[id]);
1595 sMenu = menu_create(szText, "MenuHandler");
1596 new call = menu_makecallback("Call_Back");
1597
1598 new All, Name[126], String[32];
1599 get_user_name(aTarget[id], Name, 31);
1600
1601 if(aTarget[id] > 0)
1602 {
1603 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "GIFTT", Name);
1604 menu_additem(sMenu, szText, "-1");
1605
1606 for(new i = 1; i < AllWeapon; i++)
1607 {
1608 if(i == aThing[id] && uWeapon[i][id] > 0)
1609 {
1610 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "GIFTS", WeaponNames[i]);
1611 menu_additem(sMenu, szText, "-2");
1612 All++;
1613 }
1614 }
1615
1616 if(aThing[id] == 0 && All == 0)
1617 {
1618 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "GIFTCH");
1619 menu_additem(sMenu, szText, "-2");
1620 }
1621 else if(aThing[id] > MAX)
1622 {
1623 if(CHEST_ID <= aThing[id] <= CHEST_ID+CHEST_COUNT) { formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "GIFTC", chest_name((aThing[id]-CHEST_ID))); }
1624 if(KEY_ID <= aThing[id] <= KEY_ID+CHEST_COUNT-1) {
1625 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "GIFTK", chest_name((aThing[id]-KEY_ID)));
1626 log_errors("%s", chest_name((aThing[id]-KEY_ID)))
1627 }
1628
1629 menu_additem(sMenu, szText, "-2");
1630 }
1631
1632 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "GIFTPOINTS", aEurai[id]);
1633 menu_additem(sMenu, szText, "-4");
1634
1635 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "SENDGIFT");
1636 menu_additem(sMenu, szText, "-3");
1637 }
1638 else
1639 {
1640 for(new i; i < 32; i++)
1641 {
1642 if(is_user_connected(i) && !is_user_bot(i))
1643 {
1644 get_user_name(i, Name, 31);
1645
1646 if(!Loged[i]) { format(Name, charsmax(Name), "%s \r[N.L]", Name); }
1647
1648 num_to_str(i, String, 31);
1649 menu_additem(sMenu, Name, String, _, (!Loged[i]) ? call : -1);
1650 }
1651 }
1652 }
1653 }
1654 case 6: //Parduotuve
1655 {
1656 formatex(szText, sizeof(szText), "\rParduotuvė %L", LANG_PLAYER, "YPOINT", Eurai[id]);
1657 sMenu = menu_create(szText, "MenuHandler");
1658
1659 //formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "SHOPCHEST_1", chest_name(i), 2.32);
1660 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "KEY_SHOP");
1661 menu_additem(sMenu, szText, _, _, -1);
1662
1663 //formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "SHOPCHEST_1", chest_name(i), 0.63);
1664 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "CASE_SHOP");
1665 menu_additem(sMenu, szText, _, _, -1);
1666
1667 }
1668 case 7: // Skryniu info
1669 {
1670 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "CHEST_LIST", LANG_PLAYER, "YPOINT", Eurai[id]);
1671 sMenu = menu_create(szText, "MenuHandler");
1672
1673 for(new i=1; i <= CHEST_COUNT; i++)
1674 {
1675 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "CHESTINFOPIECE", chest_name(i));
1676 menu_additem(sMenu, szText);
1677 }
1678 }
1679 case 8: //Siuksliadeze
1680 {
1681 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "MENUTODUSTBIN", LANG_PLAYER, "YPOINT", Eurai[id]);
1682 sMenu = menu_create(szText, "MenuHandler");
1683
1684 new String[32], All;
1685 for(new i = 1; i < AllWeapon; i++)
1686 {
1687 if(uWeapon[i][id] < 0)
1688 continue;
1689
1690 num_to_str(i, String, 31);
1691 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "KSKINPIECE", (bUsingGuns[id][Weapons[i]] == i) ? "\w" : "\y", WeaponNames[i], uWeapon[i][id]);
1692 menu_additem(sMenu, szText, String);
1693 All++;
1694 }
1695
1696 if(All == 0)
1697 {
1698 MenuMod[id] = 0;
1699 Menu(id);
1700 }
1701 }
1702
1703 case 9: { client_cmd(id,"say /clan"); }
1704 }
1705
1706 menu_display(id, sMenu);
1707}
1708
1709public Call_Back(id, menu, item)
1710 return ITEM_DISABLED;
1711
1712public MenuHandler(id, gMenu, item)
1713{
1714 if(item == MENU_EXIT)
1715 {
1716 MenuMod[id] = 0;
1717 menu_destroy(gMenu);
1718 return PLUGIN_HANDLED;
1719 }
1720
1721 new aMenu[2], Data[4][32], sKey[32], Name[32], mName[32], Key;
1722 menu_item_getinfo(gMenu, item, aMenu[0], Data[0], 31, Data[1], 31, aMenu[1]);
1723
1724 parse(Data[0], sKey, 31);
1725 Key = str_to_num(sKey);
1726
1727 switch(MenuMod[id])
1728 {
1729 case -2:
1730 {
1731 MenuMod[id] = 5;
1732 aThing[id] = Key;
1733
1734 Menu(id);
1735 }
1736 case -1:
1737 {
1738 MenuMod[id] = 3;
1739 WeaponinMarket[id] = Key;
1740
1741 client_cmd(id, "messagemode Cost");
1742
1743 Menu(id);
1744 }
1745 case 0:
1746 {
1747 MenuMod[id] = Key;
1748 Menu(id);
1749 }
1750 case 1:
1751 {
1752 switch(item)
1753 {
1754 case 0: {
1755 SkinMenu(id);
1756 }
1757 case 1:
1758 {
1759 client_cmd(id, "say /missions");
1760 }
1761 case 2:
1762 {
1763 UpgMenu(id);
1764 }
1765 case 3:
1766 {
1767 g_bModeRanked[id] = !g_bModeRanked[id];
1768 client_print_color(id, print_team_default, "%L", LANG_PLAYER, (g_bModeRanked[id]) ? "CHANGETORANKED" : "CHANGETOCASUAL", Prefix);
1769 }
1770 case 4:
1771 {
1772 Language(id);
1773 }
1774 }
1775 }
1776 case 2:
1777 {
1778 if(Chest[id][(item+1)] <= 0)
1779 {
1780 Chest[id][(item+1)] = 0;
1781
1782 if(cKey[id][(item+1)] <= 0)
1783 cKey[id][(item+1)] = 0;
1784
1785 return PLUGIN_CONTINUE;
1786 }
1787
1788 Chest[id][(item+1)]--;
1789 cKey[id][(item+1)]--;
1790
1791 new chest = item+1/*, kVar = floatround((random_float(0.0, 1.0) * 20), floatround_floor) + 10*/;
1792
1793 new Float:rNum = random_float((random(5)*1.0), 200.0);
1794 new chance = (rNum <= 1.0) ? 1 : ((rNum <= 5.0) ? 5 : ((rNum <= 25) ? 25 : 100));
1795
1796
1797
1798 new skinsCnt = chestsChance[chest][chance];
1799 new skinNum = random(skinsCnt);
1800 new skinId = chestsList[chest][chance][skinNum];
1801
1802
1803 new szName[32]; get_user_name(id, szName, 31);
1804
1805 if(1 <= chance <= 5) {
1806 new rnm = random(100);
1807 if(rnm < 5) {
1808 new rareCount = chestsChance[0][0];
1809 new rareNum = random(rareCount);
1810 new rareSkin = chestsList[0][0][rareNum];
1811
1812 print_color(0, "%L", LANG_PLAYER, "FOUNDITEMRARE_ALL", Prefix, szName, WeaponNames[skinId], szWeaponNames[Weapons[skinId]], WeaponNames[skinId], szWeaponNames[Weapons[skinId]]);
1813 uWeapon[rareSkin][id]++;
1814 }
1815 else {
1816 print_color(0, "%L", LANG_PLAYER, "FOUNDITEM_ALL", Prefix, szName, WeaponNames[skinId], szWeaponNames[Weapons[skinId]]);
1817 }
1818 }
1819
1820 else { print_color(id, "%L", LANG_PLAYER, "FOUNDITEM_SELF", Prefix, WeaponNames[skinId], szWeaponNames[Weapons[skinId]]); }
1821
1822 uWeapon[skinId][id]++;
1823 UpdateData(id);
1824
1825
1826 Menu(id);
1827 }
1828 case 3:
1829 {
1830 if(Key == -1) { MenuMod[id] = -1; Menu(id); }
1831 else if(Key == 0)
1832 {
1833 if(inMarket[id]) { inMarket[id] = false; }
1834 else if(MarketEurai[id] > 0.00)
1835 {
1836 get_user_name(id, Name, 31);
1837
1838 switch(WeaponinMarket[id])
1839 {
1840 case CHEST_ID..(CHEST_ID+CHEST_COUNT): { print_color(0, "%L", LANG_PLAYER, "TOMARKET_CHEST", Prefix, Name, chest_name((WeaponinMarket[id]-CHEST_ID)+1), MarketEurai[id]); }
1841 case KEY_ID..(KEY_ID+CHEST_COUNT): { print_color(0, "%L", LANG_PLAYER, "TOMARKET_KEY", Prefix, Name, chest_name((WeaponinMarket[id]-KEY_ID)+1), MarketEurai[id]); }
1842 default: { print_color(0, "%L", LANG_PLAYER, "TOMARKET_SKIN", Prefix, Name, WeaponNames[WeaponinMarket[id]], szWeaponNames[Weapons[WeaponinMarket[id]]], MarketEurai[id]); }
1843 }
1844
1845 inMarket[id] = true;
1846 }
1847 gLastMarketTime[id] = get_systime();
1848 Menu(id);
1849 }
1850 else if(inMarket[Key] && Eurai[id] >= MarketEurai[Key])
1851 {
1852 get_user_name(Key, Name, 31); get_user_name(id, mName, 31);
1853
1854 if(WeaponinMarket[Key] < CHEST_ID)
1855 {
1856 if(uWeapon[WeaponinMarket[Key]][Key] <= 0.00)
1857 {
1858 inMarket[Key] = false;
1859 MarketEurai[Key] = 0.00;
1860 WeaponinMarket[Key] = 0;
1861
1862 return PLUGIN_CONTINUE;
1863 }
1864
1865 print_color(0, "!g%s%L", Prefix, LANG_PLAYER, "BUYMARKETITEM", mName, WeaponNames[WeaponinMarket[Key]], MarketEurai[Key], Name);
1866 uWeapon[WeaponinMarket[Key]][id]++;
1867 uWeapon[WeaponinMarket[Key]][Key]--;
1868
1869 if(!uWeapon[WeaponinMarket[Key]][Key])
1870 for(new i; i < CSW_VESTHELM; i++) { if(bUsingGuns[Key][i] == WeaponinMarket[Key]) { bUsingGuns[Key][i] = 0; uWeaponKills[i][Key] = 0; break; } }
1871
1872 static szQuery[512], szUGuns[128];
1873 format(szUGuns, sizeof(szUGuns), "");
1874 for(new i; i < CSW_VESTHELM; i++) { format(szUGuns, sizeof(szUGuns), "%s%d ", szUGuns, bUsingGuns[id][i]); }
1875 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `using_skins` = '%s' WHERE `username` = '%s';", TABLE_NAME, szUGuns, get_user_name_ex(id));
1876 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
1877 log_errors("[SKIN SHOP] %s", szQuery);
1878
1879 format(szUGuns, sizeof(szUGuns), "");
1880 for(new i; i < CSW_VESTHELM; i++) { format(szUGuns, sizeof(szUGuns), "%s%d ", szUGuns, bUsingGuns[Key][i]); }
1881 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `using_skins` = '%s' WHERE `username` = '%s';", TABLE_NAME, szUGuns, get_user_name_ex(Key));
1882 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
1883
1884 log_errors("[SKIN SHOP] %s", szQuery);
1885 }
1886 else if(CHEST_ID <= WeaponinMarket[Key] <= CHEST_ID+CHEST_COUNT)
1887 {
1888 new chId = (WeaponinMarket[Key]-CHEST_ID)+1;
1889
1890 if(Chest[Key][chId] <= 0)
1891 {
1892 inMarket[Key] = false;
1893 MarketEurai[Key] = 0.00;
1894 WeaponinMarket[Key] = 0;
1895
1896 return PLUGIN_CONTINUE;
1897 }
1898
1899 print_color(0, "!g%s%L", Prefix, LANG_PLAYER, "BUYMARKETCHEST", mName, chest_name(chId), MarketEurai[Key], Name);
1900
1901 Chest[id][chId]++;
1902 Chest[Key][chId]--;
1903 }
1904
1905 else if(KEY_ID <= WeaponinMarket[Key] <= KEY_ID+CHEST_COUNT)
1906 {
1907 new chId = (WeaponinMarket[Key]-KEY_ID)+1;
1908
1909 if(cKey[Key][chId] <= 0)
1910 {
1911 inMarket[Key] = false;
1912 MarketEurai[Key] = 0.00;
1913 WeaponinMarket[Key] = 0;
1914
1915 return PLUGIN_CONTINUE;
1916 }
1917
1918 print_color(0, "!g%s%L", Prefix, LANG_PLAYER, "BUYMARKETKEY", mName, chest_name(chId), MarketEurai[Key], Name);
1919
1920 cKey[id][chId]++;
1921 cKey[Key][chId]--;
1922 }
1923
1924
1925 emit_sound(Key, CHAN_ITEM, SOUND_SOLD, VOL_NORM, ATTN_NORM ,0 , PITCH_NORM );
1926 Eurai[Key] += MarketEurai[Key];
1927 Eurai[id] -= MarketEurai[Key];
1928 UpdateData(Key);
1929 UpdateData(id);
1930 inMarket[Key] = false;
1931 MarketEurai[Key] = 0.00;
1932 WeaponinMarket[Key] = 0;
1933 MenuMod[id] = 0;
1934 }
1935 }
1936 case 4:
1937 {
1938 switch(item) {
1939 case 0: {
1940 client_cmd(id, "say /coin123")
1941 }
1942 case 1: {
1943 print_color(id, "!g%s %L", Prefix, LANG_PLAYER, "JACKPOT_INFO")
1944 }
1945 case 2: {
1946 if(TurnInvite[id] == 0) {
1947 TurnInvite[id] = 1;
1948 }
1949 else {
1950 TurnInvite[id] = 0;
1951 }
1952 }
1953 }
1954 }
1955 case 5:
1956 {
1957 if(Key == -1) { aTarget[id] = 0; }
1958 if(Key == -2) { MenuMod[id] = -2; }
1959 if(Key == -3)
1960 {
1961 if(!is_user_connected(aTarget[id])) {
1962 return PLUGIN_CONTINUE;
1963 }
1964
1965 if(aThing[id] < CHEST_ID)
1966 {
1967 if(uWeapon[aThing[id]][id] > 0)
1968 {
1969 uWeapon[aThing[id]][aTarget[id]]++;
1970 uWeapon[aThing[id]][id]--;
1971
1972 if(!uWeapon[aThing[id]][id])
1973 for(new i; i < CSW_VESTHELM; i++) { if(bUsingGuns[id][i] == aThing[id]) { bUsingGuns[id][i] = 0; uWeaponKills[i][id] = 0; break; } }
1974
1975 static szQuery[512], szUGuns[128]; format(szUGuns, sizeof(szUGuns), "");
1976 for(new i; i < CSW_VESTHELM; i++) { format(szUGuns, sizeof(szUGuns), "%s%d ", szUGuns, bUsingGuns[id][i]); }
1977 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `using_skins` = '%s' WHERE `username` = '%s';", TABLE_NAME, szUGuns, get_user_name_ex(id));
1978 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
1979 log_errors("[SKIN GIFT] %s padovanojo %s - %s", get_user_name_ex(id), get_user_name_ex(aTarget[id]), WeaponNames[aThing[id]]);
1980 log_errors("[SKIN GIFT] %s", szQuery);
1981
1982 print_color(id, "%L", LANG_PLAYER, "GIFTSUCCESS_SKIN", Prefix, WeaponNames[aThing[id]], get_user_name_ex(aTarget[id]));
1983
1984 print_color(aTarget[id], "%L", LANG_PLAYER, "GIFTGOT_SKIN", Prefix, get_user_name_ex(id), WeaponNames[aThing[id]], szWeaponNames[Weapons[aThing[id]]]);
1985 }
1986 }
1987 else if(CHEST_ID <= aThing[id] <= CHEST_ID+CHEST_COUNT)
1988 {
1989 new cId = aThing[id]-CHEST_ID;
1990
1991 Chest[aTarget[id]][cId]++;
1992 Chest[id][cId]--;
1993
1994 print_color(id, "%L", LANG_PLAYER, "GIFTSUCCESS_CHEST", Prefix, chest_name(cId), get_user_name_ex(aTarget[id]));
1995 print_color(aTarget[id], "%L", LANG_PLAYER, "GIFTGOT_CHEST", Prefix, get_user_name_ex(id), chest_name(cId));
1996 }
1997 else if(KEY_ID <= aThing[id] <= KEY_ID+CHEST_COUNT)
1998 {
1999 new cId = aThing[id]-KEY_ID;
2000
2001 cKey[aTarget[id]][cId]++;
2002 cKey[id][cId]--;
2003
2004 print_color(id, "%L", LANG_PLAYER, "GIFTSUCCESS_KEY", Prefix, chest_name(cId), get_user_name_ex(aTarget[id]));
2005 print_color(aTarget[id], "%L", LANG_PLAYER, "GIFTGOT_KEY", Prefix, get_user_name_ex(id), chest_name(cId));
2006
2007 }
2008
2009 if(aEurai[id] > 0.00 && Eurai[id] >= aEurai[id])
2010 {
2011 Eurai[aTarget[id]] += aEurai[id];
2012 Eurai[id] -= aEurai[id];
2013
2014 print_color(id, "%L", LANG_PLAYER, "GIFTSUCCESS_POINT", Prefix, get_user_name_ex(aTarget[id]));
2015 print_color(aTarget[id], "%L", LANG_PLAYER, "GIFTGOT_PTS", Prefix, get_user_name_ex(id), aEurai[id]);
2016 log_errors("[SKINLOG PTS] %s padovanojo %s - %d tasku", get_user_name_ex(id), get_user_name_ex(aTarget[id]), aEurai[id]);
2017 }
2018 UpdateData(aTarget[id]);
2019 UpdateData(id);
2020
2021 MenuMod[id] = 0;
2022 aThing[id] = 0;
2023 aTarget[id] = 0;
2024 aEurai[id] = 0.00;
2025 }
2026 if(Key == -4) { client_cmd(id, "messagemode Gift"); }
2027 if(Key > 0) { aTarget[id] = Key; }
2028 Menu(id);
2029 }
2030 case 6:
2031 {
2032 switch(item)
2033 {
2034 case 0: {
2035 Raktai(id);
2036 }
2037 case 1:
2038 {
2039 Skrynios(id);
2040 }
2041 }
2042 }
2043 case 7:
2044 {
2045 if(!Loged[id])
2046 { RegMenu(id); return PLUGIN_HANDLED; }
2047 new szText2[512];
2048
2049 formatex(szText2, sizeof(szText2), "\r%s \wskins", chest_name(item+1));
2050 new sMenu = menu_create(szText2, "MenuHandlerSkins");
2051
2052 new szText[512], gItems = chestsChance[item+1][100], gItems2 = chestsChance[item+1][25], gItems3 = chestsChance[item+1][5], gItems4 = chestsChance[item+1][1];
2053
2054 new szid[16];
2055 for(new i; i < gItems; i++)
2056 {
2057 new gWeaponId = chestsList[item+1][100][i];
2058
2059 formatex(szText, charsmax(szText), "\d%s \r[\w%.2fEur.\r]", WeaponNames[gWeaponId], Price[gWeaponId]);
2060 num_to_str(gWeaponId, szid, charsmax(szid));
2061 menu_additem(sMenu, szText, szid);
2062 }
2063 for(new i; i < gItems2; i++)
2064 {
2065 new gWeaponId = chestsList[item+1][25][i];
2066
2067 formatex(szText, charsmax(szText), "\w%s \r[\w%.2fEur.\r]", WeaponNames[gWeaponId], Price[gWeaponId]);
2068 num_to_str(gWeaponId, szid, charsmax(szid));
2069 menu_additem(sMenu, szText, szid);
2070 }
2071 for(new i; i < gItems3; i++)
2072 {
2073 new gWeaponId = chestsList[item+1][5][i];
2074
2075 formatex(szText, charsmax(szText), "\y%s \r[\w%.2fEur.\r]", WeaponNames[gWeaponId], Price[gWeaponId]);
2076 num_to_str(gWeaponId, szid, charsmax(szid));
2077 menu_additem(sMenu, szText, szid);
2078 }
2079 for(new i; i < gItems4; i++)
2080 {
2081 new gWeaponId = chestsList[item+1][1][i];
2082
2083 formatex(szText, charsmax(szText), "\r%s \r[\w%.2fEur.\r]", WeaponNames[gWeaponId], Price[gWeaponId]);
2084 num_to_str(gWeaponId, szid, charsmax(szid));
2085 menu_additem(sMenu, szText, szid);
2086 }
2087
2088 menu_setprop(sMenu, MPROP_EXIT, MEXIT_ALL);
2089 menu_display(id, sMenu);
2090
2091 return PLUGIN_CONTINUE;
2092 /*Menu(id);*/
2093 }
2094 case 8:
2095 {
2096 if(uWeapon[Key][id] > 0) {
2097 uWeapon[Key][id]--;
2098
2099 bUsingGuns[id][Weapons[Key]] = 0;
2100
2101 if(!uWeapon[Key][id])
2102 uWeaponKills[Key][id] = 0;
2103
2104 client_print_color(id, print_team_default, "^4%s ^1Išmetei ^4%s.", Prefix, WeaponNames[Key]);
2105 log_errors("[SKINLOG TRASH] %s ismete %s", get_user_name_ex(id), WeaponNames[Key]);
2106 UpdateData(id);
2107 }
2108 else {
2109 uWeapon[Key][id] = 0;
2110 UpdateData(id);
2111 }
2112 Menu(id);
2113 }
2114 }
2115
2116 menu_destroy(gMenu);
2117 return PLUGIN_HANDLED;
2118}
2119
2120public Language(id) {
2121 client_cmd(id, "amx_langmenu");
2122}
2123
2124public SkinMenu(id) {
2125 new sMenu, szText[256];
2126 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "MENUTOSKINS", LANG_PLAYER, "YPOINT", Eurai[id]);
2127 sMenu = menu_create(szText, "AccHandler");
2128
2129 new String[32];
2130 for(new i = 1; i < AllWeapon; i++) {
2131 if(uWeapon[i][id] <= 0)
2132 continue;
2133
2134 formatex(String, 31, "%d %d", i, Weapons[i]);
2135 formatex(szText, sizeof(szText), "%L \r[\w%.2fEur.\r]", LANG_PLAYER, "SKINPIECE", (bUsingGuns[id][Weapons[i]] == i) ? "\w" : "\y", WeaponNames[i], uWeapon[i][id], Price[i]);
2136 menu_additem(sMenu, szText, String);
2137
2138 }
2139
2140 menu_display(id, sMenu, 0);
2141 return PLUGIN_CONTINUE;
2142}
2143
2144public AccHandler(id, sMenu, item)
2145{
2146 if(item == MENU_EXIT)
2147 {
2148 menu_destroy(sMenu);
2149 return PLUGIN_HANDLED;
2150 }
2151 new aMenu[2], Data[4][32];
2152 menu_item_getinfo(sMenu, item, aMenu[0], Data[0], 31, Data[1], 31, aMenu[1]);
2153
2154
2155 parse(Data[0], Data[2], 31, Data[3], 31);
2156
2157 if(bUsingGuns[id][str_to_num(Data[3])] == str_to_num(Data[2])) {
2158 bUsingGuns[id][str_to_num(Data[3])] = 0;
2159 print_color(id, "%L", LANG_PLAYER, "SKIN_REMOVED", Prefix, WeaponNames[str_to_num(Data[2])], szWeaponNames[str_to_num(Data[3])]);
2160 }
2161 else {
2162 bUsingGuns[id][str_to_num(Data[3])] = str_to_num(Data[2]);
2163 print_color(id, "%L", LANG_PLAYER, "SKIN_CHANGED", Prefix, WeaponNames[str_to_num(Data[2])], szWeaponNames[str_to_num(Data[3])]);
2164 //set_task(0.1, "UpdateStatusText", id);
2165 }
2166
2167 static szQuery[512], szUGuns[128]; format(szUGuns, sizeof(szUGuns), "");
2168 for(new i; i < CSW_VESTHELM; i++) { format(szUGuns, sizeof(szUGuns), "%s%d ", szUGuns, bUsingGuns[id][i]); }
2169 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `using_skins` = '%s' WHERE `username` = '%s';", TABLE_NAME, szUGuns, get_user_name_ex(id));
2170 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
2171 log_errors("[SKIN CHANGE] %s", szQuery);
2172 return PLUGIN_HANDLED;
2173}
2174
2175//UPGRADER
2176public UpgMenu(id)
2177{
2178 /*if(!(get_user_flags(id) & ADMIN_RCON))
2179 {
2180 return PLUGIN_HANDLED;
2181 }*/
2182 new menu, szText[256], percents;
2183
2184 switch(g_iMultiplier[id])
2185 {
2186 case 1:
2187 {
2188 percents = 9;
2189 g_fUpgCost[id] = 0.05;
2190 }
2191 case 2:
2192 {
2193 percents = 18;
2194 g_fUpgCost[id] = 0.12;
2195 }
2196 case 5:
2197 {
2198 percents = 45;
2199 g_fUpgCost[id] = 0.23;
2200 }
2201 case 10:
2202 {
2203 percents = 60;
2204 g_fUpgCost[id] = 0.41;
2205 }
2206 }
2207
2208 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "UPGRADER", LANG_PLAYER, "YPOINT", Eurai[id]);
2209 menu = menu_create(szText, "UpgHandler");
2210
2211 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "UPG_SKIN", (g_bUpgSkinChosen[id]) ? WeaponNames[g_iUpgSkinId[id]] : " --- ");
2212 menu_additem(menu, szText, _, _, -1);
2213
2214 formatex(szText, sizeof(szText), "%L^n\r----------------------------^n", LANG_PLAYER, "UPG_MULTIPLIER", g_iMultiplier[id], percents);
2215 menu_additem(menu, szText, _, _, -1);
2216
2217 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "UPG_START", (g_bUpgSkinChosen[id]) ? Price[g_iUpgSkinId[id]] * g_fUpgCost[id] : 0.00);
2218 menu_additem(menu, szText, _, _, -1);
2219
2220 menu_display(id, menu, 0);
2221 return PLUGIN_HANDLED;
2222}
2223
2224public UpgHandler(id, menu, item)
2225{
2226 if(item == MENU_EXIT)
2227 {
2228 menu_destroy(menu);
2229 return PLUGIN_HANDLED;
2230 }
2231
2232 switch(item)
2233 {
2234 case 0:
2235 {
2236 UpgChoose(id);
2237 }
2238 case 1:
2239 {
2240 switch(g_iMultiplier[id])
2241 {
2242 case 0:
2243 {
2244 g_iMultiplier[id] = 1;
2245 }
2246 case 1:
2247 {
2248 g_iMultiplier[id] = 2;
2249 }
2250 case 2:
2251 {
2252 g_iMultiplier[id] = 5;
2253 }
2254 case 5:
2255 {
2256 g_iMultiplier[id] = 10;
2257 }
2258 case 10:
2259 {
2260 g_iMultiplier[id] = 1;
2261 }
2262 }
2263 UpgMenu(id);
2264 }
2265 case 2:
2266 {
2267 new rWep[MAX], upgChance, upgChance = random(100);
2268 new bool:upgSuccess;
2269
2270 switch(g_iMultiplier[id])
2271 {
2272 case 1:
2273 {
2274 if(upgChance < 9)
2275 {
2276 upgSuccess = true;
2277 }
2278 }
2279 case 2:
2280 {
2281 if(upgChance < 18)
2282 {
2283 upgSuccess = true;
2284 }
2285 }
2286 case 5:
2287 {
2288 if(upgChance < 45)
2289 {
2290 upgSuccess = true;
2291 }
2292 }
2293 case 10:
2294 {
2295 if(upgChance < 60)
2296 {
2297 upgSuccess = true;
2298 }
2299 }
2300 }
2301
2302 if(g_bUpgSkinChosen[id] && g_iMultiplier[id] != 0 && uWeapon[g_iUpgSkinId[id]][id] > 0)
2303 {
2304 if(Eurai[id] >= Price[g_iUpgSkinId[id]] * g_fUpgCost[id])
2305 {
2306
2307 for(new i = 1; i < sizeof(Price)-30; i++)
2308 {
2309 if(Price[i] > Price[g_iUpgSkinId[id]] * 1.8 || Price[i] <= Price[g_iUpgSkinId[id]])
2310 {
2311 rWep[i] = 0; continue;
2312 }
2313 rWep[i] = i;
2314 }
2315
2316 new rAward = rWep[random(sizeof(rWep))];
2317
2318 for(new i = 1; i < sizeof(Price)-30; i++)
2319 {
2320 rAward = rWep[random(sizeof(rWep))];
2321
2322 if(rAward != 0)
2323 {
2324 break;
2325 }
2326 }
2327
2328 if(rAward == 0)
2329 {
2330 upgSuccess = false;
2331 }
2332
2333 if(upgSuccess)
2334 {
2335 new Float:profit;
2336 profit = Price[rAward] - Price[g_iUpgSkinId[id]];
2337 client_print_color(id, print_team_default, "%L", LANG_PLAYER, "UPG_SUCCESS", WeaponNames[g_iUpgSkinId[id]], Price[g_iUpgSkinId[id]], WeaponNames[rAward], Price[rAward], profit);
2338
2339 new szMotd[126];
2340 formatex(szMotd, charsmax(szMotd), "http://cs-egp.lt/csgo/upgr.php?old=%s&price1=%.2f&skin=%s&price2=%.2f", WeaponNames[g_iUpgSkinId[id]], Price[g_iUpgSkinId[id]], WeaponNames[rAward], Price[rAward]);
2341 show_motd(id, szMotd, "Upgraded Skin");
2342
2343 uWeapon[rAward][id]++;
2344 uWeapon[g_iUpgSkinId[id]][id]--;
2345 UpdateData(id);
2346
2347 emit_sound(id, CHAN_ITEM, SOUND_UPG, VOL_NORM, ATTN_NORM ,0 , PITCH_NORM );
2348 }
2349 else
2350 {
2351 client_print_color(id, print_team_default, "%L", LANG_PLAYER, "UPG_FAILED");
2352 uWeapon[g_iUpgSkinId[id]][id]--;
2353 UpdateData(id);
2354 }
2355 bUsingGuns[id][g_iUpgSkinId[id]] = 0;
2356 Eurai[id] = Eurai[id] - (Price[g_iUpgSkinId[id]] * g_fUpgCost[id]);
2357 g_iUpgSkinId[id] = 0;
2358 g_bUpgSkinChosen[id] = false;
2359 upgSuccess = false;
2360 }
2361 else
2362 {
2363 client_print_color(id, print_team_default, "%L", LANG_PLAYER, "UPG_NOMONEY");
2364 }
2365 }
2366 else
2367 {
2368 client_print_color(id, print_team_default, "%L", LANG_PLAYER, "UPG_NOSKIN");
2369 }
2370 UpgMenu(id);
2371 }
2372 case 3:
2373 {
2374 UpgMenu(id);
2375 }
2376 }
2377 menu_destroy(menu);
2378 return PLUGIN_HANDLED;
2379}
2380
2381public UpgChoose(id)
2382{
2383 new sMenu, szText[256];
2384 formatex(szText, sizeof(szText), "\w%L", LANG_PLAYER, "UPG_CHOOSESKIN");
2385 sMenu = menu_create(szText, "UpgChooseHandler");
2386
2387 new String[32];
2388
2389 for(new i = 1; i < AllWeapon; i++)
2390 {
2391 if(uWeapon[i][id] <= 0)
2392 continue;
2393
2394 formatex(String, 31, "%d %d", i, Weapons[i]);
2395 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "SKINPIECE", (bUsingGuns[id][Weapons[i]] == i) ? "\w" : "\y", WeaponNames[i], uWeapon[i][id]);
2396 menu_additem(sMenu, szText, String);
2397
2398 }
2399
2400 menu_display(id, sMenu, 0);
2401 return PLUGIN_CONTINUE;
2402}
2403
2404public UpgChooseHandler(id, sMenu, item)
2405{
2406 if(item == MENU_EXIT)
2407 {
2408 menu_destroy(sMenu);
2409 return PLUGIN_HANDLED;
2410 }
2411
2412 new szData[6], szName[64];
2413 new _access, item_callback;
2414 menu_item_getinfo( sMenu, item, _access, szData,charsmax( szData ), szName, charsmax( szName ), item_callback );
2415 new skin_id = str_to_num( szData );
2416 g_iUpgSkinId[id] = skin_id;
2417
2418 g_bUpgSkinChosen[id] = true;
2419
2420 UpgMenu(id);
2421
2422 return PLUGIN_CONTINUE;
2423}
2424
2425//-------------END
2426public UpdateDouble(id)
2427{
2428 if(get_systime() - PradinisLaikas[id] >= 1200)
2429 {
2430 if((get_systime() - PradinisLaikas[id]) == 1200)
2431 {
2432 set_hudmessage(255, 255, 255, -0.1, 0.85, 0, 6.0, 1.0);
2433 show_hudmessage(id, "Doublexp isjungtas", get_systime() - PradinisLaikas[id]);
2434 }
2435 Doublexp[id] = false;
2436 }
2437 else if(get_systime() - PradinisLaikas[id] < 1200)
2438 {
2439 Doublexp[id] = true;
2440 }
2441}
2442
2443public Skrynios(id)
2444{
2445 new menu, szText[256];
2446 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "CASE_SHOP", LANG_PLAYER, "YPOINT", Eurai[id]);
2447 menu = menu_create(szText, "ChestsHandler");
2448
2449 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "BUY");
2450 menu_additem(menu, szText, _, _, -1);
2451
2452 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "CASE", chest_name(KeyChoice[id]));
2453 menu_additem(menu, szText, _, _, -1);
2454
2455 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "QUANTITY", Kiekis[id]);
2456 menu_additem(menu, szText, _, _, -1);
2457
2458 menu_display(id, menu, 0);
2459 return PLUGIN_CONTINUE;
2460}
2461
2462public Raktai(id)
2463{
2464 new menu, szText[256];
2465 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "KEY_SHOP", LANG_PLAYER, "YPOINT", Eurai[id]);
2466 menu = menu_create(szText, "KeysHandler");
2467
2468 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "BUY");
2469 menu_additem(menu, szText, _, _, -1);
2470
2471 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "KEY", chest_name(KeyChoice[id]));
2472 menu_additem(menu, szText, _, _, -1);
2473
2474 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "QUANTITY", Kiekis[id]);
2475 menu_additem(menu, szText, _, _, -1);
2476
2477 menu_display(id, menu, 0);
2478 return PLUGIN_CONTINUE;
2479}
2480
2481public KeysHandler(id, menu, item)
2482{
2483 if(item == MENU_EXIT)
2484 {
2485 menu_destroy(menu);
2486 return PLUGIN_HANDLED;
2487 }
2488
2489 switch(item)
2490 {
2491 case 0:
2492 {
2493 if(!KeyChoice[id])
2494 {
2495 print_color(id, "%L", LANG_PLAYER, "CHOOSE_KEY", Prefix)
2496 Raktai(id);
2497 }
2498 else if(Kiekis[id] == 0)
2499 {
2500 print_color(id, "%L", LANG_PLAYER, "CHOOSE_QUANTITY", Prefix)
2501 Raktai(id);
2502 }
2503 else if(Eurai[id] >= Kiekis[id]*2.45)
2504 {
2505 cKey[id][KeyChoice[id]] += Kiekis[id];
2506 Eurai[id] -= Kiekis[id]*2.45;
2507 print_color(id, "%L", LANG_PLAYER, "BOUGHTKEY_1", Prefix, Kiekis[id], chest_name(KeyChoice[id]));
2508 SaveEurai(id);
2509 SaveKeys(id);
2510 KeyChoice[id] = 0;
2511 Kiekis[id] = 0;
2512 Raktai(id);
2513
2514 }
2515 else
2516 {
2517 print_color(id, "%L", LANG_PLAYER, "NO_EURO", Prefix, Kiekis[id]*2.45, Eurai[id]);
2518 Raktai(id);
2519 }
2520 }
2521 case 1:
2522 {
2523 KeysList(id);
2524 }
2525 case 2:
2526 {
2527 client_cmd(id, "messagemode Kiekis");
2528 Raktai(id);
2529 set_task(2.4, "Raktai", id)
2530 }
2531 }
2532
2533 menu_destroy(menu);
2534 return PLUGIN_HANDLED;
2535}
2536
2537public KeysList(id)
2538{
2539 new menu, szText[256];
2540 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "KEY_SHOP", LANG_PLAYER, "YPOINT", Eurai[id]);
2541 menu = menu_create(szText, "KeysBuy");
2542
2543 for(new i = 1; i <= CHEST_COUNT; i++)
2544 {
2545 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "SHOPKEY_1", chest_name(i), 2.45);
2546 menu_additem(menu, szText, "0");
2547 }
2548
2549 menu_display(id, menu, 0);
2550 return PLUGIN_CONTINUE;
2551}
2552
2553public KeysBuy(id, menu, item)
2554{
2555 if(item == MENU_EXIT)
2556 {
2557 menu_destroy(menu);
2558 return PLUGIN_HANDLED;
2559 }
2560 KeyChoice[id] = item+1;
2561 Raktai(id);
2562 menu_destroy(menu);
2563 return PLUGIN_HANDLED;
2564}
2565
2566public ChestsHandler(id, menu, item)
2567{
2568 if(item == MENU_EXIT)
2569 {
2570 menu_destroy(menu);
2571 return PLUGIN_HANDLED;
2572 }
2573 switch(item)
2574 {
2575 case 0:
2576 {
2577 if(!KeyChoice[id])
2578 {
2579 print_color(id, "%L", LANG_PLAYER, "CHOOSE_CASE", Prefix)
2580 Skrynios(id);
2581 }
2582 else if(Kiekis[id] == 0)
2583 {
2584 print_color(id, "%L", LANG_PLAYER, "CHOOSE_QUANTITY", Prefix)
2585 Skrynios(id);
2586 }
2587 else if(Eurai[id] >= Kiekis[id]*0.63)
2588 {
2589 Chest[id][KeyChoice[id]] += Kiekis[id];
2590 Eurai[id] -= Kiekis[id]*0.63;
2591 print_color(id, "%L", LANG_PLAYER, "BOUGHTCHEST_1", Prefix, Kiekis[id], chest_name(KeyChoice[id]));
2592 SaveEurai(id);
2593 SaveChests(id);
2594 KeyChoice[id] = 0;
2595 Kiekis[id] = 0;
2596 Skrynios(id);
2597 }
2598 else
2599 {
2600 print_color(id, "%L", LANG_PLAYER, "NO_EURO", Prefix, Kiekis[id]*0.63, Eurai[id]);
2601 Skrynios(id);
2602 }
2603 }
2604 case 1:
2605 {
2606 ChestsList(id);
2607 }
2608 case 2:
2609 {
2610 client_cmd(id, "messagemode Kiekis");
2611 Skrynios(id);
2612 set_task(2.4, "Skrynios", id)
2613 }
2614 }
2615
2616 menu_destroy(menu);
2617 return PLUGIN_HANDLED;
2618}
2619
2620public ChestsList(id)
2621{
2622 new menu, szText[256];
2623 formatex(szText, sizeof(szText), "\r%L %L", LANG_PLAYER, "CASE_SHOP", LANG_PLAYER, "YPOINT", Eurai[id]);
2624 menu = menu_create(szText, "ChestsBuy");
2625
2626 for(new i = 1; i <= CHEST_COUNT; i++)
2627 {
2628 formatex(szText, sizeof(szText), "%L", LANG_PLAYER, "SHOPCHEST_1", chest_name(i), 0.63);
2629 menu_additem(menu, szText, "0");
2630 }
2631
2632 menu_display(id, menu, 0);
2633 return PLUGIN_CONTINUE;
2634}
2635
2636public ChestsBuy(id, menu, item)
2637{
2638 if(item == MENU_EXIT)
2639 {
2640 menu_destroy(menu);
2641 return PLUGIN_HANDLED;
2642 }
2643
2644 KeyChoice[id] = item+1;
2645 Skrynios(id);
2646
2647 menu_destroy(menu);
2648 return PLUGIN_HANDLED;
2649}
2650
2651public MenuHandlerSkins(id, menu, item)
2652{
2653 if(item == MENU_EXIT)
2654 {
2655 menu_destroy(menu);
2656 return PLUGIN_HANDLED;
2657 }
2658
2659 new szData[6], szName[64];
2660 new _access, item_callback;
2661 menu_item_getinfo(menu, item, _access, szData, charsmax(szData), szName, charsmax(szName), item_callback);
2662
2663 new skin_id = str_to_num(szData);
2664
2665 set_pev(id, pev_viewmodel2, WeaponMdls[skin_id]);
2666
2667 set_task(3.0, "reset_hand_skin", id);
2668 menu_destroy(menu);
2669 return PLUGIN_HANDLED;
2670}
2671
2672public reset_hand_skin(id)
2673{
2674 if(is_user_connected(id) && is_user_alive(id))
2675 {
2676 new ent = fm_get_user_weapon_entity(id, get_user_weapon(id));
2677 WeaponSwitch(ent);
2678 }
2679}
2680
2681public client_disconnected(id)
2682{
2683 Kills[id] = 0, Rang[id] = 0, Rounds[id] = 0, Frags[id] = 0, Eurai[id] = 0.0, SkillPoints[id] = 0, Level[id] = 0;
2684 xp[id] = 0, Pass[id] = 0, iDay[id] = 0, Skill[id] = 0.0;
2685
2686 WarKills[id] = 0;
2687 g_iKills[id] = 0;
2688 g_iHS[id] = 0;
2689 g_fDmg[id] = 0.0;
2690
2691 for(new i; i <= CHEST_COUNT; i++) { Chest[id][i] = 0; }
2692 for(new i; i <= CHEST_COUNT; i++) { cKey[id][i] = 0; }
2693 for(new i; i < AllWeapon; i++) { uWeapon[i][id] = 0; }
2694 for(new i; i < CSW_VESTHELM; i++) { bUsingGuns[id][i] = 0; }
2695
2696 gWarnings[id] = 0;
2697 WeaponinMarket[id] = 0;
2698 MarketEurai[id] = 0.00;
2699 inMarket[id] = 0;
2700 Password[id] = "";
2701 SavedPassword[id] = "";
2702 IpAddress[id] = "";
2703 Loged[id] = false;
2704 gRegistered[id] = false;
2705 gLogged[id] = false;
2706 bTrade[id] = false;
2707 bTradeAccepted[id] = false;
2708}
2709
2710public client_putinserver(id)
2711{
2712 set_task(1.0, "PlayerData", id, .flags = "b");
2713
2714 Kills[id] = 0, Rang[id] = 0, Rounds[id] = 0, Frags[id] = 0, Eurai[id] = 0.0, SkillPoints[id] = 0, Level[id] = 0;
2715 xp[id] = 0, Pass[id] = 0, iDay[id] = 0, Skill[id] = 0.0;
2716
2717 WarKills[id] = 0;
2718
2719 for(new i; i <= CHEST_COUNT; i++) { Chest[id][i] = 0; }
2720 for(new i; i <= CHEST_COUNT; i++) { cKey[id][i] = 0; }
2721 for(new i; i < AllWeapon; i++) { uWeapon[i][id] = 0; }
2722 for(new i; i < CSW_VESTHELM; i++) { bUsingGuns[id][i] = 0; }
2723
2724 gWarnings[id] = 0;
2725 Password[id] = "";
2726 SavedPassword[id] = "";
2727 Loged[id] = false;
2728 bTrade[id] = false;
2729 bTradeAccepted[id] = false;
2730 gRegistered[id] = false;
2731 gLogged[id] = false;
2732 gLastMarketTime[id] = get_systime();
2733
2734 new szIP[40], get_user_ip(id, szIP, charsmax(szIP) , 1);
2735
2736 IpAddress[id] = szIP;
2737 CheckIP(id);
2738
2739 if(gCanLoad) { set_task(0.5, "Registered", id); }
2740}
2741
2742public add_delay(id)
2743{
2744 switch(id)
2745 {
2746 case 1..8: set_task(0.1, "Registered", id);
2747 case 9..16: set_task(0.2, "Registered", id);
2748 case 17..24: set_task(0.3, "Registered", id);
2749 case 25..32: set_task(0.4, "Registered", id);
2750 }
2751}
2752
2753public reward(id)
2754{
2755 new year, month, day;
2756 date(year,month,day) //Gaunama data
2757
2758 if(!Loged[id])
2759 {
2760 client_print_color(id, print_team_default, "^4%s ^1Norėdami atsiimti dienos atlygį turite prisijungti!", Prefix)
2761 }
2762 else if(iDay[id] != day)
2763 {
2764 switch(random_num(1, 20))
2765 {
2766 case 1..10:
2767 {
2768 new Float:fEur = random_float(1.0, 5.0)
2769 client_print_color(id, print_team_default, "^4%s ^1Šiandienos atlygis - ^3%.2f eurai", Prefix, fEur)
2770 Eurai[id] += fEur;
2771 SaveEurai(id)
2772 }
2773 case 11..17:
2774 {
2775 new rChestz = random_num(0, 6);
2776 new rName = random(CHEST_COUNT)+1;
2777 client_print_color(id, print_team_default, "^4%s ^1Šiandienos atlygis - ^3%d %s skrynios", Prefix, rChestz, chest_name(rName))
2778 Chest[id][rName] += rChestz;
2779 SaveChests(id)
2780 }
2781 case 18..20:
2782 {
2783 new rKeyz = random_num(1, 3)
2784 new rName = random(CHEST_COUNT)+1;
2785 client_print_color(id, print_team_default, "^4%s ^1Šiandienos atlygis - ^3%d %s raktai", Prefix, rKeyz, chest_name(rName))
2786 cKey[id][rName] += rKeyz;
2787 SaveKeys(id)
2788 }
2789 }
2790 iDay[id] = day;
2791 SaveDay(id);
2792 }
2793 else
2794 {
2795 //msg jei pasieme jau snd
2796 client_print_color(id, print_team_default, "^4%s ^1Šiandien jau atsiėmėte savo atlygi. Godus niekšas!", Prefix)
2797 }
2798 return PLUGIN_HANDLED; //kad nerodytu jog chate parasai /reward, jeigu bus viskas tvarkoj gali istrint sita
2799}
2800
2801// ============================================================//
2802// [~ Saving / Loading datas ~] //
2803// ============================================================//
2804public Rank(id)
2805{
2806 new Data[1];
2807 Data[0] = id;
2808
2809 new szTemp[512];
2810 format(szTemp, charsmax(szTemp), "SELECT COUNT(*) FROM %s WHERE `skill` >= '%.2f' AND kills >= 100", TABLE_NAME, Skill[id]);
2811
2812 SQL_ThreadQuery(g_hTuple, "Rank_QueryHandler", szTemp, Data, 1);
2813
2814 return PLUGIN_CONTINUE;
2815}
2816
2817public Rank_QueryHandler(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
2818{
2819 if(!SQL_IsFail(FailState, Errcode, Error))
2820 {
2821 new id;
2822 id = Data[0];
2823
2824 g_iRank[id] = SQL_ReadResult(Query, 0);
2825
2826 TotalRows(id);
2827 }
2828}
2829
2830public TotalRows(id)
2831{
2832 new Data[1];
2833 Data[0] = id;
2834
2835 new szTemp[128];
2836 format(szTemp, charsmax(szTemp), "SELECT COUNT(*) FROM %s", TABLE_NAME);
2837
2838 SQL_ThreadQuery(g_hTuple, "TotalRows_QueryHandler", szTemp, Data, 1);
2839}
2840
2841public TotalRows_QueryHandler(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
2842{
2843 if(!SQL_IsFail(FailState, Errcode, Error))
2844 {
2845 new id;
2846 id = Data[0];
2847
2848 g_iCount = SQL_ReadResult(Query, 0);
2849
2850 if(Kills[id] >= 100)
2851 {
2852 print_color(id, "^4%s ^1Pozicija: %d iš %d su %d nužudymais. Skill: %.2f", Prefix, g_iRank[ id ], g_iCount, Kills[id], Skill[id]);
2853 }
2854 else
2855 {
2856 print_color(id, "^4%s ^1Reikia %d nužudymų jog gautumete ranką.", Prefix, 100 - Kills[id]);
2857 }
2858 }
2859}
2860
2861SQL_IsFail(FailState, Errcode, Error[])
2862{
2863 if(FailState == TQUERY_CONNECT_FAILED)
2864 {
2865 log_amx("[Error] Could not connect to SQL database: %s", Error);
2866 return true;
2867 }
2868
2869 if(FailState == TQUERY_QUERY_FAILED)
2870 {
2871 log_amx("[Error] Query failed: %s", Error);
2872 return true;
2873 }
2874
2875 if(Errcode)
2876 {
2877 log_amx("[Error] Error on query: %s", Error);
2878 return true;
2879 }
2880
2881 return false;
2882}
2883
2884public QueryCreateTable(iFailState, Handle:hQuery, szError[], iError, iData[], iDataSize, Float:fQueueTime)
2885{
2886 if(iFailState == TQUERY_CONNECT_FAILED) { log_errors("Nepavyko prisijungti prie duomenu bazes. [%d] %s", iError, szError); return; }
2887 else if(iFailState == TQUERY_QUERY_FAILED) { log_errors("Neapyko apdoroti uzklausos. [%d] %s", iError, szError); return; }
2888}
2889
2890public Login(id)
2891{
2892 if(!is_user_connected(id) || is_user_bot(id))
2893 return;
2894
2895 static szQuery[256], iData[1]; iData[0] = id;
2896 formatex(szQuery, 255, "SELECT * FROM `%s` WHERE `username` = '%s' AND `password` = '%s'", TABLE_NAME, get_user_name_ex(id), Password[id]);
2897 SQL_ThreadQuery(g_hTuple, "QuerySelect", szQuery, iData, 1);
2898
2899 log_errors("[LOGIN] %s", szQuery);
2900}
2901
2902public QuerySelect(iFailState, Handle:hQuery, szError[], iError, iData[ ], iDataSize, Float:fQueueTime)
2903{
2904 if(iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED) { log_errors("%s", szError); return; }
2905 else
2906 {
2907 new id = iData[0];
2908
2909 if(SQL_NumResults(hQuery))
2910 {
2911 new szSkins[512+MAX], szKSkins[512+MAX], szUGuns[256], szChests[128], szKeys[128];
2912
2913 UserID[id] = SQL_ReadResult(hQuery, 0);
2914
2915 SQL_ReadResult(hQuery, 2, SavedPassword[id], 32);
2916 SQL_ReadResult(hQuery, 3, IpAddress[id], 32);
2917 SQL_ReadResult(hQuery, 4, Float:Eurai[id]);
2918 SQL_ReadResult(hQuery, 5, szKeys, sizeof(szKeys));
2919 SQL_ReadResult(hQuery, 6, szChests, sizeof(szChests));
2920 SQL_ReadResult(hQuery, 7, szSkins, sizeof(szSkins));
2921 SQL_ReadResult(hQuery, 8, szUGuns, sizeof(szUGuns));
2922 SQL_ReadResult(hQuery, 9, szKSkins, sizeof(szKSkins));
2923 SQL_ReadResult(hQuery, 15, Float:Skill[id]);
2924
2925 xp[id] = SQL_ReadResult(hQuery, 13);
2926 iDay[id] = SQL_ReadResult(hQuery, 16);
2927 Rang[id] = SQL_ReadResult(hQuery, 14);
2928 Level[id] = SQL_ReadResult(hQuery, 12);
2929 Kills[id] = SQL_ReadResult(hQuery, 10);
2930 SkillPoints[id] = SQL_ReadResult(hQuery, 11);
2931
2932 SQL_NextRow(hQuery);
2933
2934 new myNumbers[512+MAX];
2935
2936 new count = ExplodeString(szSkins, myNumbers);
2937 if(count) { for(new i = 1; i < MAX; i++) { uWeapon[i][id] = myNumbers[i]; } }
2938
2939 count = ExplodeString(szKSkins, myNumbers);
2940 if(count) { for(new i = 1; i < MAX; i++) { uWeaponKills[i][id] = myNumbers[i]; } }
2941
2942 count = ExplodeString(szUGuns, myNumbers);
2943 if(count)
2944 {
2945 for(new i = 1; i < CSW_VESTHELM; i++)
2946 {
2947 if(myNumbers[i] <= MAX)
2948 {
2949 if(uWeapon[myNumbers[i]][id] && i == Weapons[myNumbers[i]])
2950 {
2951 bUsingGuns[id][i] = myNumbers[i];
2952 }
2953 }
2954 }
2955 }
2956
2957 count = ExplodeString(szChests, myNumbers);
2958 if(count) { for(new i = 1; i <= CHEST_COUNT; i++) { Chest[id][i] = myNumbers[i]; } }
2959
2960 count = ExplodeString(szKeys, myNumbers);
2961 if(count) { for(new i = 1; i <= CHEST_COUNT; i++) { cKey[id][i] = myNumbers[i]; } }
2962
2963 if(!equal(Password[id], SavedPassword[id]))
2964 {
2965 print_color(id, "%L", LANG_PLAYER, "SAVE_PASS_ANNOUNCE", Prefix);
2966 }
2967 }
2968
2969 Loged[id] = true;
2970 g_bModeRanked[id] = true;
2971
2972 UnsetBlack(id);
2973 }
2974}
2975
2976public SaveData(id)
2977{
2978 if(Loged[id] && gRegistered[id] && gCanSave)
2979 {
2980 static szQuery[2048], szSkins[1024], szKSkins[1024], szUGuns[128], szChests[128], szKeys[128];
2981 static szQuerynew[2048];
2982
2983 format(szSkins, sizeof(szSkins), "");
2984 format(szKSkins, sizeof(szKSkins), "");
2985 format(szUGuns, sizeof(szUGuns), "");
2986 format(szChests, sizeof(szChests), "");
2987 format(szKeys, sizeof(szKeys), "");
2988
2989 for(new i; i < MAX; i++)
2990 {
2991 format(szSkins, sizeof(szSkins), "%s%d ", szSkins, uWeapon[i][id]);
2992 format(szKSkins, sizeof(szKSkins), "%s%d ", szKSkins, uWeaponKills[i][id]);
2993 }
2994
2995 for(new i; i < CSW_VESTHELM; i++) { format(szUGuns, sizeof(szUGuns), "%s%d ", szUGuns, bUsingGuns[id][i]); }
2996 for(new i; i <= CHEST_COUNT; i++) { format(szChests, sizeof(szChests), "%s%d ", szChests, Chest[id][i]); }
2997 for(new i; i <= CHEST_COUNT; i++) { format(szKeys, sizeof(szKeys), "%s%d ", szKeys, cKey[id][i]); }
2998
2999 formatex(szQuery, sizeof(szQuery), "INSERT INTO `%s` SET `username` = '%s', `password` = '%s', `ip` = '%s', `eurai` = '%.2f', `keys` = '%s', `chests` = '%s', `skins` = '%s', `using_skins` = '%s', `skins_kills` = '%s', `kills` = '%d', `mvp` = '%d', `level` = '%d', `xp` = '%d', `rang` = '%d', `skill` = '%.2f', `day` = '%d'", TABLE_NAME, get_user_name_ex(id), SavedPassword[id], IpAddress[id], Eurai[id], szKeys, szChests, szSkins, szUGuns, szKSkins, Kills[id], SkillPoints[id], Level[id], xp[id], Rang[id], Skill[id], iDay[id]);
3000 SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
3001
3002 formatex(szQuerynew, sizeof(szQuerynew), "INSERT INTO `web_users` SET `username` = '%s', `avatar` = 'images/default_avatar.png', `kreditai` = '0', `is_admin` = '0', `is_mod` = '0'", get_user_name_ex(id));
3003 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuerynew);
3004
3005 log_errors("[SAVE] %s", szQuery);
3006 }
3007}
3008
3009public UpdateData(id)
3010{
3011 if(Loged[id] && gRegistered[id] && gCanSave)
3012 {
3013 static szQuery[2048], szSkins[1024], szKSkins[1024], szUGuns[128], szChests[128], szKeys[128];
3014
3015 format(szSkins, sizeof(szSkins), "");
3016 format(szKSkins, sizeof(szKSkins), "");
3017 format(szUGuns, sizeof(szUGuns), "");
3018 format(szChests, sizeof(szChests), "");
3019 format(szKeys, sizeof(szKeys), "");
3020
3021 for(new i; i < MAX; i++)
3022 {
3023 format(szSkins, sizeof(szSkins), "%s%d ", szSkins, uWeapon[i][id]);
3024 format(szKSkins, sizeof(szKSkins), "%s%d ", szKSkins, uWeaponKills[i][id]);
3025 }
3026
3027 for(new i; i < CSW_VESTHELM; i++) { format(szUGuns, sizeof(szUGuns), "%s%d ", szUGuns, bUsingGuns[id][i]); }
3028 for(new i; i <= CHEST_COUNT; i++) { format(szChests, sizeof(szChests), "%s%d ", szChests, Chest[id][i]); }
3029 for(new i; i <= CHEST_COUNT; i++) { format(szKeys, sizeof(szKeys), "%s%d ", szKeys, cKey[id][i]); }
3030
3031 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `eurai` = '%.2f', `keys` = '%s', `chests` = '%s', `skins` = '%s', `using_skins` = '%s', `skins_kills` = '%s', `kills` = '%d', `mvp` = '%d', `level` = '%d', `xp` = '%d', `rang` = '%d', `skill` = '%.2f', `day` = '%d' WHERE `username` = '%s'", TABLE_NAME, Eurai[id], szKeys, szChests, szSkins, szUGuns, szKSkins, Kills[id], SkillPoints[id], Level[id], xp[id], Rang[id], Skill[id], iDay[id], get_user_name_ex(id));
3032 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
3033
3034 log_errors("[SAVE] %s", szQuery);
3035 }
3036}
3037
3038public QuerySetData(iFailState, Handle:hQuery, szError[], iError, iData[], iDataSize, Float:fQueueTime)
3039{
3040 if(iFailState == TQUERY_CONNECT_FAILED) { log_errors("Nepavyko prisijungti prie duomenu bazes. [%d] %s", iError, szError); return; }
3041 else if(iFailState == TQUERY_QUERY_FAILED) { log_errors("Nepavyko apdoroti uzklausos. [%d] %s", iError, szError); return; }
3042}
3043
3044public UnsetBlack(id)
3045{
3046 set_user_maxspeed(id, 250.0);
3047
3048 message_begin(MSG_ONE, g_msgid_ScreenFade, {0,0,0}, id);
3049 write_short(1<<10);
3050 write_short(1<<10);
3051 write_short(0x0000);
3052 write_byte(255);
3053 write_byte(255);
3054 write_byte(255);
3055 write_byte(50);
3056 message_end();
3057}
3058
3059public TradeMenu(id)
3060{
3061 if(!is_user_connected(id))
3062 return PLUGIN_CONTINUE;
3063
3064 print_color(id, "%d", get_systime())
3065
3066 return PLUGIN_CONTINUE;
3067}
3068
3069public RegMenu(id)
3070{
3071 static sId; sId = id;
3072 id = ((id - TASKID_REMENU) < 0) ? id : id-TASKID_REMENU;
3073
3074 if(Loged[id])
3075 {
3076 print_color(id, "%L", LANG_PLAYER, "ALREADY_REGISTERED", Prefix);
3077 Menu(id);
3078 return PLUGIN_HANDLED;
3079 }
3080
3081 if(!gLogged[id] || !gCanLoad)
3082 {
3083 print_color(id, "%L", LANG_PLAYER, "WAIT_SYSTEM_LOADING", Prefix);
3084 remove_task(id+TASKID_REMENU);
3085 set_task(1.0, "RegMenu", id+TASKID_REMENU);
3086 return PLUGIN_HANDLED;
3087 }
3088
3089 remove_task(id+TASKID_REMENU);
3090
3091 if(gLogged[id] && sId > 32 && gCanLoad && !gRegistered[id])
3092 {
3093 print_color(id, "%L", LANG_PLAYER, "BLANK");
3094 print_color(id, "%L", LANG_PLAYER, "NEED_REGISTER_1", Prefix);
3095 print_color(id, "%L", LANG_PLAYER, "NEED_REGISTER_2", Prefix);
3096 print_color(id, "%L", LANG_PLAYER, "BLANK");
3097
3098 UnsetBlack(id);
3099 return PLUGIN_HANDLED;
3100 }
3101
3102 if(equal(Password[id], SavedPassword[id]) && gRegistered[id])
3103 {
3104 Login(id);
3105 print_color(id, "%L", LANG_PLAYER, "AUTO_CONNECTED", Prefix);
3106 UpdateDouble(id);
3107 return PLUGIN_HANDLED;
3108 }
3109
3110 new szString[128], Name[32];
3111 format(szString, sizeof(szString), "%L", LANG_PLAYER, "RMMAIN");
3112 new rMenu = menu_create(szString, "rMenuHandler");
3113 get_user_name(id, Name, 31);
3114
3115 format(szString, sizeof(szString), "%L", LANG_PLAYER, "RMACCOUNT", Name); //Client name
3116 menu_additem(rMenu, szString, "0");
3117
3118 new szPassword[126];
3119
3120 for(new i; i < strlen(Password[id]); i++)
3121 {
3122 format(szPassword, charsmax(szPassword), "%s*", szPassword);
3123 }
3124
3125 // format(szString, sizeof(szString), "%L", LANG_PLAYER, "RMP", Password[id]); //Client password
3126 format(szString, sizeof(szString), "%L", LANG_PLAYER, "RMP", szPassword); //Client password
3127 menu_additem(rMenu, szString, "1");
3128
3129 if(!gRegistered[id]) //Not registered
3130 {
3131 format(szString, sizeof(szString), "%s%L", (strlen(Password[id]) >= MIN_PASSWORD_LENGTH) ? "" :"\d", LANG_PLAYER, "RMR");
3132 menu_additem(rMenu, szString, (strlen(Password[id]) >= MIN_PASSWORD_LENGTH) ? "2" : "0");
3133 }
3134 else
3135 {
3136 if(!Loged[id]) //Registered, but not logged
3137 {
3138 new gPassCheck = equal(SavedPassword[id], Password[id]);
3139
3140 format(szString, sizeof(szString), "%s%L", (gPassCheck) ? "" : "\d", LANG_PLAYER, "RMLOGIN");
3141 menu_additem(rMenu, szString, (gPassCheck) ? "3" : "0");
3142 }
3143 else
3144 {
3145 Menu(id);
3146 }
3147 }
3148
3149 menu_display(id, rMenu);
3150 return PLUGIN_HANDLED;
3151}
3152
3153public rMenuHandler(id, gMenu, item)
3154{
3155 if(item == MENU_EXIT)
3156 {
3157 menu_destroy(gMenu);
3158 return PLUGIN_CONTINUE;
3159 }
3160
3161 new data[9], name[64], Key;
3162 new access, callback;
3163 menu_item_getinfo(gMenu, item, access, data, charsmax(data), name, charsmax(name), callback);
3164
3165 Key = str_to_num(data);
3166
3167 switch(Key)
3168 {
3169 case 0: { RegMenu(id); }
3170 case 1: { client_cmd(id, "messagemode UserPassword"); RegMenu(id); }
3171 case 2:
3172 {
3173 if(strlen(Password[id]) >= MIN_PASSWORD_LENGTH)
3174 {
3175 copy(SavedPassword[id], 31, Password[id]);
3176 Loged[id] = true;
3177 gRegistered[id] = true;
3178 Skill[id] = 100.0;
3179 SaveData(id);
3180
3181 print_color(id, "%L", LANG_PLAYER, "REGISTERSUCCESS", Prefix, Password[id]);
3182 UnsetBlack(id);
3183 SavePassword(id);
3184 SavePassword(id);
3185
3186 new szName[32]; get_user_name(id, szName, 31);
3187 log_errors("%s ivede slaptazodi [prisiregistravo]", szName);
3188 gWarnings[id] = 0;
3189 return PLUGIN_CONTINUE;
3190 }
3191 else
3192 {
3193 print_color(id, "%L", LANG_PLAYER, "REGISTERSHORT", Prefix);
3194
3195 return PLUGIN_HANDLED;
3196 }
3197 }
3198 case 3:
3199 {
3200 if(!Loged[id])
3201 {
3202 gWarnings[id] = 0;
3203 Login(id);
3204 }
3205 }
3206 }
3207 return PLUGIN_CONTINUE;
3208}
3209
3210public PlayerPassword(id)
3211{
3212 if(Loged[id])
3213 {
3214 return PLUGIN_HANDLED;
3215 }
3216
3217 new Data[32]; read_args(Data, 31); remove_quotes(Data);
3218 CheckIP(id);
3219
3220 if(IpCreated[id] > 3 && !equal(get_user_name_ex(id), Username[id]))
3221 {
3222 print_color(id, "%L", LANG_PLAYER, "REGISTERIP", Prefix);
3223 return PLUGIN_HANDLED;
3224 }
3225 else if(strlen(Data) < MIN_PASSWORD_LENGTH)
3226 {
3227 print_color(id, "%L", LANG_PLAYER, "REGISTERSHORT", Prefix);
3228 client_cmd(id, "messagemode UserPassword");
3229 return PLUGIN_HANDLED;
3230 }
3231 else if(!equal(SavedPassword[id], Data) && strlen(Data) > MIN_PASSWORD_LENGTH && !equal(Password[id], Data))
3232 {
3233 print_color(id, "%L", LANG_PLAYER, "BAD_PASSWORD", Prefix);
3234 gWarnings[id]++;
3235
3236 if(gWarnings[id] >= 3)
3237 {
3238 gWarnings[id] = 0;
3239
3240 server_cmd("amx_ban 60 #%d ^"Trying to hack other account!^"", get_user_userid(id));
3241 }
3242 }
3243
3244 copy(Password[id], 31, Data);
3245 RegMenu(id);
3246 return PLUGIN_CONTINUE;
3247}
3248
3249public tests(id)
3250{
3251 client_print_color(id, print_team_default, "Nick: ^4%s^1, DB nick: ^4%s", get_user_name_ex(id), username[id])
3252 client_print_color(id, print_team_default, "IP nums: %d", IPCreated[id]);
3253}
3254
3255public NameChange(id)
3256{
3257 if(get_cvar_num("csgo_nick_show"))
3258 return FMRES_IGNORED;
3259
3260 if(!is_user_connected(id) || is_user_bot(id))
3261 return FMRES_IGNORED;
3262
3263 new OldName[32], NewName[32], Name[32];
3264 get_user_name(id, Name, 31);
3265 pev(id, pev_netname, OldName, charsmax(OldName));
3266
3267 if(OldName[0])
3268 {
3269 get_user_info(id, "name", NewName, charsmax(NewName));
3270 if(!equal(OldName, NewName))
3271 {
3272 set_user_info(id, "name", OldName);
3273 print_color(id, "%L", LANG_PLAYER, "REGISTERNAMECHANGE", Prefix);
3274 return FMRES_HANDLED;
3275 }
3276 }
3277 return FMRES_IGNORED;
3278}
3279
3280public Registered(id)
3281{
3282 if(!is_user_connected(id) || is_user_bot(id))
3283 return;
3284
3285 static szQuery[256], iData[1]; iData[0] = id;
3286 formatex(szQuery, 255, "SELECT * FROM `%s` WHERE `username` = '%s'", TABLE_NAME, get_user_name_ex(id));
3287 SQL_ThreadQuery(g_hTuple, "QuerySelectReg", szQuery, iData, 1);
3288
3289 log_errors("[REGISTERED] %s", szQuery);
3290}
3291
3292public QuerySelectReg( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
3293{
3294 if(iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED) { log_errors("[QuerySelectReg] %s", szError); return; }
3295 else
3296 {
3297 new id = iData[0];
3298 if(SQL_NumResults(hQuery))
3299 {
3300 gLogged[id] = true;
3301 gRegistered[id] = true;
3302
3303 new passfield[32], password[32];
3304 get_pcvar_string(csgo_password_field, passfield, 31);
3305 get_user_info(id, passfield, password, 31);
3306
3307 SQL_ReadResult(hQuery, 2, SavedPassword[id], 32);
3308
3309 if(equal(password, SavedPassword[id])) {
3310 Password[id] = password;
3311 }
3312
3313 new szName[32]; get_user_name(id, szName, 31);
3314 log_errors("[Registered] %s - %s", szName, (gRegistered[id]) ? "true" : "false");
3315 }
3316 else
3317 {
3318 gLogged[id] = true;
3319 gRegistered[id] = false;
3320
3321 new szName[32]; get_user_name(id, szName, 31);
3322 log_errors("[Founded REG] %s - %s", szName, (gRegistered[id]) ? "true" : "false");
3323 }
3324 }
3325}
3326
3327public sb_pickup(id)
3328{
3329 new szName[33];
3330 get_user_name(id, szName, 32);
3331
3332 new Float:reward = random_float(0.10, 1.00);
3333
3334 new rCase = random(CHEST_COUNT-1)+1;
3335 new rKey = random(CHEST_COUNT-1)+1;
3336
3337 new chance = random_num(1, 200);
3338
3339 if(chance <= 120)
3340 {
3341 Eurai[id] += reward;
3342 SaveEurai(id);
3343 print_color(0, "^4[DOVANA] ^3%s ^1rado ^4%.2f ^1eurų!", szName, reward);
3344 }
3345 else if(chance <= 180)
3346 {
3347 Chest[id][rCase]++;
3348 SaveChests(id);
3349 print_color(0, "^4[DOVANA] ^3%s ^1rado ^4%s ^1skrynią!", szName, chest_name(rCase));
3350 }
3351 else {
3352 cKey[id][rKey]++;
3353 SaveKeys(id);
3354 print_color(0, "^4[DOVANA] ^3%s ^1rado ^4%s ^1raktą!", szName, chest_name(rCase));
3355 }
3356}
3357
3358//SPECTATOR INFO
3359public YourFunc()
3360{
3361 static SpecID, wpnid;
3362
3363 new iSpecPlayer
3364 new szSpecName[33]
3365 new players[32], num, i
3366
3367 get_players(players, num, "ch")
3368
3369 for(i = 0; i < num; i++)
3370 {
3371 SpecID = players[i]
3372 iSpecPlayer = pev( SpecID, PEV_SPEC_TARGET )
3373
3374 if(!(1 <= iSpecPlayer <= MAX_PLAYERS))
3375 return
3376
3377 if(is_user_alive(iSpecPlayer) && !is_user_alive(SpecID))
3378 {
3379 wpnid = get_user_weapon(iSpecPlayer, _, _)
3380 get_user_name(iSpecPlayer, szSpecName, 32);
3381 set_hudmessage(64, 64, 64, -1.0, 0.75, 0, 0.0, 1.0 + 0.1, 0.0, 0.0, -1);
3382 if(bUsingGuns[iSpecPlayer][wpnid]) {
3383 show_hudmessage(SpecID, "%s - %s^n%L", szSpecName, Rangs[Rang[iSpecPlayer]], LANG_PLAYER, "KILLS_SHOW", uWeaponKills[bUsingGuns[iSpecPlayer][wpnid]][iSpecPlayer], WeaponNames[bUsingGuns[iSpecPlayer][wpnid]]);
3384 }
3385 else {
3386 show_hudmessage(SpecID, "%s - %s", szSpecName, Rangs[Rang[iSpecPlayer]]);
3387 }
3388 }
3389 }
3390}
3391
3392public PlayerData(id)
3393{
3394 if(Loged[id])
3395 {
3396 new szText[256], wId = get_user_weapon(id, _, _);
3397 new iSpecPlayer = pev(id, PEV_SPEC_TARGET);
3398
3399 set_hudmessage(127, 255, 127, 0.02, 0.78, 0, 6.0, 1.0/* + 0.1, 0.0, 0.0, -1*/);
3400
3401 if(is_user_alive(iSpecPlayer) && !is_user_alive(id))
3402 {
3403 switch(g_bModeRanked[iSpecPlayer])
3404 {
3405 case true:
3406 {
3407 if(bUsingGuns[iSpecPlayer][wId])
3408 {
3409 formatex(szText, charsmax(szText), "Zaidejas: %s Rankas: %s Rezimas: Ranked %L %L", get_user_name_ex(iSpecPlayer), Rangs[Rang[iSpecPlayer]], LANG_PLAYER, "MRANG", Levels[Level[iSpecPlayer]], xp[iSpecPlayer], Needxp[Level[iSpecPlayer]], LANG_PLAYER, "KILLS_SHOW", WeaponNames[bUsingGuns[iSpecPlayer][wId]], uWeaponKills[bUsingGuns[iSpecPlayer][wId]][iSpecPlayer]);
3410 }
3411 else
3412 {
3413 formatex(szText, charsmax(szText), "Zaidejas: %s Rankas: %s Rezimas: Ranked %L", get_user_name_ex(iSpecPlayer), Rangs[Rang[iSpecPlayer]], LANG_PLAYER, "MRANG", Levels[Level[iSpecPlayer]], xp[iSpecPlayer], Needxp[Level[iSpecPlayer]]);
3414 }
3415 ShowSyncHudMsg(id, g_msgid_SyncHud, szText);
3416 }
3417 case false:
3418 {
3419 if(bUsingGuns[iSpecPlayer][wId])
3420 {
3421 formatex(szText, charsmax(szText), "Rankas: %s Rezimas: Casual %L %L", Rangs[Rang[iSpecPlayer]], LANG_PLAYER, "MRANG", Levels[Level[iSpecPlayer]], xp[iSpecPlayer], Needxp[Level[iSpecPlayer]], LANG_PLAYER, "KILLS_SHOW", WeaponNames[bUsingGuns[iSpecPlayer][wId]], uWeaponKills[bUsingGuns[iSpecPlayer][wId]][iSpecPlayer]);
3422 }
3423 else
3424 {
3425 formatex(szText, charsmax(szText), "Rankas: %s Rezimas: Casual %L", Rangs[Rang[iSpecPlayer]], LANG_PLAYER, "MRANG", Levels[Level[iSpecPlayer]], xp[iSpecPlayer], Needxp[Level[iSpecPlayer]]);
3426 }
3427 ShowSyncHudMsg(id, g_msgid_SyncHud, szText);
3428 }
3429 }
3430 }
3431 else if(is_user_alive(id))
3432 {
3433 switch(g_bModeRanked[id])
3434 {
3435 case true:
3436 {
3437 if(bUsingGuns[id][wId])
3438 {
3439 formatex(szText, charsmax(szText), "Rankas: %s Rezimas: Ranked %L %L", Rangs[Rang[id]], LANG_PLAYER, "MRANG", Levels[Level[id]], xp[id], Needxp[Level[id]], LANG_PLAYER, "KILLS_SHOW", WeaponNames[bUsingGuns[id][wId]], uWeaponKills[bUsingGuns[id][wId]][id]);
3440 }
3441 else
3442 {
3443 formatex(szText, charsmax(szText), "Rankas: %s Rezimas: Ranked %L", Rangs[Rang[id]], LANG_PLAYER, "MRANG", Levels[Level[id]], xp[id], Needxp[Level[id]]);
3444 }
3445 ShowSyncHudMsg(id, g_msgid_SyncHud, szText);
3446 }
3447 case false:
3448 {
3449 if(bUsingGuns[id][wId])
3450 {
3451 formatex(szText, charsmax(szText), "Rankas: %s Rezimas: Casual %L %L", Rangs[Rang[id]], LANG_PLAYER, "MRANG", Levels[Level[id]], xp[id], Needxp[Level[id]], LANG_PLAYER, "KILLS_SHOW", WeaponNames[bUsingGuns[id][wId]], uWeaponKills[bUsingGuns[id][wId]][id]);
3452 }
3453 else
3454 {
3455 formatex(szText, charsmax(szText), "Rankas: %s Rezimas: Casual %L", Rangs[Rang[id]], LANG_PLAYER, "MRANG", Levels[Level[id]], xp[id], Needxp[Level[id]]);
3456 }
3457 ShowSyncHudMsg(id, g_msgid_SyncHud, szText);
3458 }
3459 }
3460 }
3461 }
3462}
3463
3464stock drop_item(id, dropRate)
3465{
3466 if(dropRate >= random_num(0, 400) && get_playersnum() >= NEED_MIN_PLAYERS)
3467 {
3468 new groupname[33];
3469 get_user_clan(id, groupname, sizeof(groupname)-1);
3470 new rNum = random(CHEST_COUNT)+1;
3471
3472 new thing = random_num(1, 20)
3473
3474 if(thing < 18) {
3475 print_color(0, "%L", LANG_PLAYER, "FOUNDCHEST", Prefix, get_user_name_ex(id), chest_name(rNum));
3476 Chest[id][rNum]++;
3477 SaveChests(id);
3478
3479 new Players[32], Count;
3480 get_players(Players, Count, "ch")
3481
3482 for( new i = 1; i <= Count; i++ )
3483 {
3484 new igroupname[33];
3485 get_user_clan(i, igroupname, sizeof(igroupname)-1);
3486 if(equal(groupname, igroupname) && id != i && strlen(igroupname) > 1) {
3487 Chest[i][rNum]++;
3488 SaveChests(i);
3489 print_color(i, "!g%s - !yGavote !t%s !yskrynią iš komandos nario !g%s!y.", Prefix, chest_name(rNum), get_user_name_ex(id))
3490 }
3491 }
3492 }
3493 else {
3494 print_color(0, "%L", LANG_PLAYER, "FOUNDKEY", Prefix, get_user_name_ex(id), chest_name(rNum));
3495 cKey[id][rNum]++;
3496 SaveKeys(id);
3497
3498 new Players[32], Count;
3499 get_players(Players, Count, "ch")
3500
3501 for( new i = 1; i <= Count; i++ )
3502 {
3503 new igroupname[33];
3504 get_user_clan(i, igroupname, sizeof(igroupname)-1);
3505 if(equal(groupname, igroupname) && id != i && strlen(igroupname) > 1
3506 ) {
3507 cKey[i][rNum]++;
3508 SaveKeys(i);
3509
3510 print_color(i, "!g%s - !yGavote !t%s !yraktą iš komandos nario !g%s!y.", Prefix, chest_name(rNum), get_user_name_ex(id))
3511 }
3512 }
3513 }
3514 }
3515}
3516
3517stock get_access(id)
3518{
3519 if(get_user_flags(id) & ADMIN_BAN) {
3520 return 4;
3521 }
3522 else {
3523 return 5;
3524 }
3525}
3526
3527stock chest_name(iNum)
3528{
3529 new szReturn[126];
3530
3531 switch(iNum)
3532 {
3533 case 1: { formatex(szReturn, charsmax(szReturn), "Huntsman"); }
3534 case 2: { formatex(szReturn, charsmax(szReturn), "Breakout"); }
3535 case 3: { formatex(szReturn, charsmax(szReturn), "Falchion"); }
3536 case 4: { formatex(szReturn, charsmax(szReturn), "Bravo"); }
3537 case 5: { formatex(szReturn, charsmax(szReturn), "Phoenix"); }
3538 case 6: { formatex(szReturn, charsmax(szReturn), "Vanguard"); }
3539 case 7: { formatex(szReturn, charsmax(szReturn), "Shadow"); }
3540 }
3541
3542 return szReturn;
3543}
3544
3545stock screen_color(id)
3546{
3547 message_begin(MSG_ONE, g_msgid_ScreenFade, {0,0,0}, id);
3548 write_short(1<<10);
3549 write_short(1<<10);
3550 write_short(0x0000);
3551 write_byte(150);
3552 write_byte(150);
3553 write_byte(150);
3554 write_byte(50);
3555}
3556
3557stock ExplodeString(const string[], output[], olen = sizeof output)
3558{
3559 new len = strlen( string ); // We retrieve the length of the current string passed.
3560
3561 if ( !len ) { return 0; } // If the string is empty we stop there.
3562
3563 new i, c, j, count;
3564 new number[ 12 ];
3565
3566 do
3567 {
3568 while ( string[ i ] == ' ' ) i++; // One or more spaces can be used between 2 numbers, so we move forward until we find a number.
3569 while ( ( number[ j++ ] = c = string[ i++ ] ) && c != ' ' ) {} // We loop and save the number found until the next space found or end of string.
3570
3571 output[ count++ ] = str_to_num( number ); // We convert the number saved previously into a number and we stored in output at the slot count.
3572 j = 0;
3573 }
3574 while ( i < len && count < olen ); // We should looping while we have not cross the string length.
3575
3576 return count;
3577}
3578
3579stock get_user_name_ex(id)
3580{
3581 new szName[33];
3582 get_user_name(id, szName, charsmax(szName));
3583
3584 replace_all(szName, charsmax(szName), "'", "\'");
3585 replace_all(szName, charsmax(szName), "^"", "\^"");
3586 //replace_all(szName, charsmax(szName), ".", "");
3587
3588 return szName;
3589}
3590
3591stock print_color(const id, const input[], any:...)
3592{
3593 new Count = 1, Players[32];
3594 static Msg[191];
3595 vformat(Msg, 190, input, 3);
3596
3597 replace_all(Msg, 190, "!g", "^4");
3598 replace_all(Msg, 190, "!y", "^1");
3599 replace_all(Msg, 190, "!t", "^3");
3600
3601 if(id) Players[0] = id; else get_players(Players, Count, "ch");
3602 {
3603 for (new i = 0; i < Count; i++)
3604 {
3605 if (is_user_connected(Players[i]))
3606 {
3607 message_begin(MSG_ONE, get_user_msgid( "SayText" ), _, Players[i]);
3608 write_byte(Players[i]);
3609 write_string(Msg);
3610 message_end();
3611 }
3612 }
3613 }
3614 return PLUGIN_HANDLED;
3615}
3616
3617stock bool:ValidMdl(Mdl[]) {
3618 return (containi(Mdl, ".mdl") != -1) ? true : false;
3619}
3620
3621/*public UpdateStatusText(id)
3622{
3623 new szText[256], wId = get_user_weapon(id, _, _);
3624 if(bUsingGuns[id][wId])
3625 formatex(szText, charsmax(szText), "%L", LANG_PLAYER, "KILLS_SHOW", uWeaponKills[bUsingGuns[id][wId]][id], WeaponNames[bUsingGuns[id][wId]]);
3626 else
3627 formatex(szText, charsmax(szText), "%L", LANG_PLAYER, "BLANK");
3628
3629 set_hudmessage(255, 255, 255, 0.01, 0.92, 0, 6.0, 12.0, 0.1, 0.2, 78);
3630 ShowSyncHudMsg(id, g_msgid_SyncHud, szText);
3631}*/
3632
3633stock get_weapon_maxclip(wpnid = 0)
3634{
3635 for (new a = 0; a < sizeof (g_weapons); a++)
3636 if (wpnid == g_weapons[a])
3637 return g_max_clip[a];
3638
3639 return false;
3640}
3641
3642stock SetFullBpAmmo(id, iWeaponID)
3643{
3644 new iFullbpammo,iAmmoId;
3645
3646 for(new i = 1; i < AmmoIds; i++)
3647 {
3648 if(g_iAmmoWeaponSharedBitSum[i] & (1<<iWeaponID))
3649 {
3650 iAmmoId = i;
3651 iFullbpammo = g_iAmmoMax[i];
3652
3653 break;
3654 }
3655 }
3656
3657 if(!iAmmoId)
3658 return;
3659
3660 cs_set_user_bpammo(id, iWeaponID, iFullbpammo);
3661
3662 message_begin(MSG_ONE_UNRELIABLE, g_msgid_AmmoX, _, id);
3663 write_byte(iAmmoId);
3664 write_byte(iFullbpammo);
3665 message_end();
3666}
3667
3668stock has_user_weapon(id, iCswId, iSlot = 0)
3669{
3670 new iWeapon;
3671 if( !iSlot )
3672 {
3673 static const iWeaponsSlots[] = {
3674 -1,
3675 2, //CSW_P228
3676 -1,
3677 1, //CSW_SCOUT
3678 4, //CSW_HEGRENADE
3679 1, //CSW_XM1014
3680 5, //CSW_C4
3681 1, //CSW_MAC10
3682 1, //CSW_AUG
3683 4, //CSW_SMOKEGRENADE
3684 2, //CSW_ELITE
3685 2, //CSW_FIVESEVEN
3686 1, //CSW_UMP45
3687 1, //CSW_SG550
3688 1, //CSW_GALIL
3689 1, //CSW_FAMAS
3690 2, //CSW_USP
3691 2, //CSW_GLOCK18
3692 1, //CSW_AWP
3693 1, //CSW_MP5NAVY
3694 1, //CSW_M249
3695 1, //CSW_M3
3696 1, //CSW_M4A1
3697 1, //CSW_TMP
3698 1, //CSW_G3SG1
3699 4, //CSW_FLASHBANG
3700 2, //CSW_DEAGLE
3701 1, //CSW_SG552
3702 1, //CSW_AK47
3703 3, //CSW_KNIFE
3704 1 //CSW_P90
3705 };
3706 iSlot = iWeaponsSlots[iCswId];
3707 }
3708
3709 const XO_PLAYER = 5;
3710 const m_rgpPlayerItems_Slot0 = 367;
3711
3712 iWeapon = get_pdata_cbase(id, m_rgpPlayerItems_Slot0 + iSlot, XO_PLAYER);
3713
3714 const XO_WEAPON = 4;
3715 const m_pNext = 42;
3716 const m_iId = 43;
3717
3718 while( iWeapon > 0 )
3719 {
3720 if( get_pdata_int(iWeapon, m_iId, XO_WEAPON) == iCswId )
3721 return iWeapon;
3722
3723 iWeapon = get_pdata_cbase(iWeapon, m_pNext, XO_WEAPON);
3724 }
3725 return 0;
3726}
3727
3728public CheckIP( id )
3729{
3730 new Data[ 1 ];
3731 Data[ 0 ] = id;
3732
3733 new szTemp[ 128 ];
3734 format( szTemp, charsmax( szTemp ), "SELECT username, COUNT(ip) FROM %s WHERE `ip` = '%s'", TABLE_NAME, IpAddress[id] );
3735
3736 SQL_ThreadQuery( g_hTuple, "Totalips_QueryHandler", szTemp, Data, 1 );
3737}
3738
3739public Totalips_QueryHandler( FailState, Handle:Query, Error[ ], Errcode, Data[ ], DataSize )
3740{
3741 if( !SQL_IsFail( FailState, Errcode, Error ) )
3742 {
3743 new id;
3744 id = Data[0];
3745
3746 SQL_ReadResult(Query, 0, Username[id], 32);
3747 IpCreated[id] = SQL_ReadResult(Query, 1);
3748 }
3749}
3750
3751stock SaveRang(id)
3752{
3753 if(Loged[id] && gRegistered[id] && gCanSave)
3754 {
3755 new szQuery[1024];
3756 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `rang` = '%d' WHERE `username` = '%s';", TABLE_NAME, Rang[id], get_user_name_ex(id));
3757
3758 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
3759
3760 log_errors("[SAVE RANG] %s", szQuery);
3761 }
3762}
3763
3764stock SaveEurai(id)
3765{
3766 if(Loged[id] && gRegistered[id] && gCanSave)
3767 {
3768 new szQuery[1024];
3769 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `eurai` = '%.2f', `xp` = '%d', `level` = '%d' WHERE `username` = '%s';", TABLE_NAME, Eurai[id], xp[id], Level[id], get_user_name_ex(id));
3770 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
3771
3772 log_errors("[SAVE EURO] %s", szQuery);
3773 }
3774}
3775
3776stock SaveTime(id)
3777{
3778 if(Loged[id] && gRegistered[id] && gCanSave)
3779 {
3780 new szQuery[1024];
3781
3782 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `laikas` = '%d' WHERE `username` = '%s';", TABLE_NAME, PradinisLaikas[id], get_user_name_ex(id));
3783 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
3784
3785 log_errors("[SAVE TIME] %s", szQuery);
3786 }
3787}
3788
3789stock SaveChests(id)
3790{
3791 if(Loged[id] && gRegistered[id] && gCanSave)
3792 {
3793 new szQuery[1024], szChests[128];
3794 for(new i; i <= CHEST_COUNT; i++) { format(szChests, sizeof(szChests), "%s%d ", szChests, Chest[id][i]); }
3795
3796 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `chests` = '%s' WHERE `username` = '%s';", TABLE_NAME, szChests, get_user_name_ex(id));
3797 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
3798
3799 log_errors("[SAVE CHESTS] %s", szQuery);
3800 //log_errors("UPDATE `%s` SET `chests` = '%s' WHERE `username` = '%s';", TABLE_NAME, szChests, get_user_name_ex(id));
3801 }
3802}
3803
3804stock SaveKeys(id)
3805{
3806 if(Loged[id] && gRegistered[id] && gCanSave)
3807 {
3808 new szQuery[1024], szKeys[128];
3809 for(new i; i <= CHEST_COUNT; i++) { format(szKeys, sizeof(szKeys), "%s%d ", szKeys, cKey[id][i]); }
3810
3811 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `keys` = '%s' WHERE `username` = '%s';", TABLE_NAME, szKeys, get_user_name_ex(id));
3812 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
3813
3814 log_errors("[SAVE KEYS] %s", szQuery);
3815 //log_errors("UPDATE `%s` SET `keys` = '%s' WHERE `username` = '%s';", TABLE_NAME, szKeys, get_user_name_ex(id));
3816 }
3817}
3818
3819
3820stock SaveKills(id)
3821{
3822 if(Loged[id] && gRegistered[id] && gCanSave)
3823 {
3824 new szQuery[1024];
3825
3826 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `kills` = '%d', `mvp` = '%d', `skill` = '%.2f' WHERE `username` = '%s';", TABLE_NAME, Kills[id], SkillPoints[id], Skill[id], get_user_name_ex(id));
3827 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
3828
3829 log_errors("[SAVE KILLS] %s", szQuery);
3830 }
3831}
3832
3833stock GiveCredits(id)
3834{
3835 if(Loged[id] && gRegistered[id] && gCanSave)
3836 {
3837 new szQuery[1024];
3838
3839 formatex(szQuery, sizeof(szQuery), "UPDATE `web_users` SET `kreditai` = kreditai + 1 WHERE `username` = '%s';", get_user_name_ex(id));
3840 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
3841
3842 log_errors("[SAVE WARKILLS] %s", szQuery);
3843 }
3844}
3845
3846stock SaveDay(id)
3847{
3848 if(Loged[id] && gRegistered[id] && gCanSave)
3849 {
3850 new szQuery[1024];
3851
3852 formatex(szQuery, sizeof(szQuery), "UPDATE `%s` SET `day` = '%d' WHERE `username` = '%s';", TABLE_NAME, iDay[id], get_user_name_ex(id));
3853 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
3854
3855 log_errors("[SAVE DAY] %s", szQuery);
3856 }
3857}
3858
3859stock SaveGunsKills(id)
3860{
3861 if(Loged[id] && gRegistered[id] && gCanSave)
3862 {
3863 new szQuery[1024], szKSkins[1024];
3864
3865 for(new i; i < MAX; i++) { format(szKSkins, sizeof(szKSkins), "%s%d ", szKSkins, uWeaponKills[i][id]); }
3866
3867 formatex(szQuery, charsmax(szQuery), "UPDATE `%s` SET `skins_kills` = '%s' WHERE `username` = '%s';", TABLE_NAME, szKSkins, get_user_name_ex(id));
3868 SQL_ThreadQuery(g_hTuple, "QuerySetData", szQuery);
3869
3870 log_errors("[SAVE GUNS KILLS] %s", szQuery);
3871 }
3872}
3873
3874stock log_errors(const szText[], any:...)
3875{
3876 static szMessage[256];
3877 vformat(szMessage, 256, szText, 2);
3878
3879 log_to_file(g_logfile, szMessage);
3880
3881 return PLUGIN_HANDLED;
3882}
3883
3884public native_invite_status(id)
3885{
3886 return TurnInvite[id];
3887}
3888
3889public native_get_user_pass(id)
3890{
3891 return Pass[id];
3892}
3893
3894public native_get_user_points(id)
3895{
3896 return SkillPoints[id];
3897}
3898
3899public native_set_user_points(id, amount)
3900{
3901 SkillPoints[id] = amount;
3902 SaveKills(id);
3903}
3904
3905public native_is_user_loged(id)
3906{
3907 if(Loged[id])
3908 {
3909 return 1;
3910 }
3911 else {
3912 return 0;
3913 }
3914}
3915
3916public native_get_user_xp(id)
3917{
3918 return xp[id];
3919}
3920
3921public native_set_user_xp(id, amount)
3922{
3923 xp[id] = amount;
3924 SaveEurai(id);
3925}
3926
3927public native_get_user_warkill(id)
3928{
3929 return WarKills[id];
3930}
3931
3932public native_set_user_warkill(id, amount)
3933{
3934 WarKills[id] = amount;
3935 SaveKills(id);
3936}
3937
3938/*public native_get_user_mkey(id)
3939{
3940 return cKey[id][12];
3941}
3942
3943public native_set_user_mkey(id, amount)
3944{
3945 cKey[id][11] = amount;
3946 SaveKeys(id);
3947}
3948
3949public native_get_user_mchest(id)
3950{
3951 return Chest[id][11];
3952}
3953
3954public native_set_user_mchest(id, amount)
3955{
3956 Chest[id][11] = amount;
3957 SaveChests(id);
3958}
3959
3960public native_get_user_mskin(id) {
3961 new chancee;
3962
3963 switch(random(3)) {
3964 case 0: {
3965 chancee = 100
3966 }
3967 case 1: {
3968 chancee = 25;
3969 }
3970 case 2: {
3971 chancee = 5;
3972 }
3973 case 3: {
3974 chancee = 1;
3975 }
3976 }
3977 new chestNr = 11;
3978 new skinsCnt = chestsChance[chestNr][chancee];
3979 new skinNum = random(skinsCnt);
3980 mSkinId = chestsList[chestNr][chancee][skinNum];
3981
3982 return uWeapon[mSkinId][id];
3983}*/
3984
3985public Float:native_get_user_skill(id) {
3986 return Skill[id];
3987}
3988
3989public Float:native_set_user_skill(id, Float:amount)
3990{
3991 Skill[id] = amount;
3992 SaveKills(id);
3993}
3994
3995public native_set_user_mskin(id, amount) {
3996 uWeapon[mSkinId][id] = amount;
3997 UpdateData(id);
3998}
3999
4000public native_get_user_rkey(id)
4001{
4002 return cKey[id][rItem];
4003}
4004
4005public native_set_user_rkey(id, amount)
4006{
4007 cKey[id][rItem] = amount;
4008 SaveKeys(id);
4009}
4010
4011public native_get_user_rchest(id)
4012{
4013 return Chest[id][rItem];
4014}
4015
4016public native_set_user_rchest(id, amount)
4017{
4018 Chest[id][rItem] = amount;
4019 SaveChests(id);
4020}
4021
4022public maxpl(id) {
4023 print_color(id, "%d %d", get_maxplayers(), MAX_PLAYERS)
4024}
4025
4026public Float:native_get_user_euro(id)
4027{
4028 return Eurai[id];
4029}
4030
4031public Float:native_set_user_euro(id, Float:amount)
4032{
4033 Eurai[id] = amount;
4034 SaveEurai(id);
4035}