· 8 years ago · Apr 25, 2018, 05:18 PM
1#include <amxmodx>
2#include <amxmisc>
3#include <amxconst>
4#include <nvault>
5#include <fakemeta_util>
6#include <hamsandwich>
7#include <zombieplague>
8#include <sqlx>
9#include <cstrike>
10
11#define PLUGIN "[ZP] Server Addon: LevelUp System SQL"
12#define VERSION "SQL"
13#define AUTHOR "Re.Act!ve and remade Nitroniks"
14#define ACCES ADMIN_CVAR
15#pragma tabsize 0
16new g_cvar_reconnect_time
17static g_SqlTable[32];
18new Handle:g_Sql,Handle:g_StdTupleLevel;
19
20new lova[32]
21new SayText
22new g_level[32], g_frags_level, g_ScreenFade, g_MaxPlayers,g_uid[32]
23new g_level_max, g_give_ammo, g_level_info, g_player_name, g_h_damage
24new g_h_health, g_h_speed, g_z_damage, h_health[32], h_speed[32], h_damage[32], z_damage[32], level_exp[32], kolikojos_exp[32] , kolikot_exp[32],g_change_name
25new g_level_exp[32], g_Players, g_hud_color, red, green, blue, nameid[32]
26new bool:g_bonus[32], g_trime[33], g_name[32]
27new sound_level_up[] = { "misc/zp_level_up.wav"}
28new sound_health[] = { "items/medshot4.wav" }
29// Zombie Classes MUST be registered on plugin_precache
30
31public plugin_natives()
32{
33
34 register_native("koji_lvl", "native_koji_lvl", 1)
35 register_native("koliko_exp", "native_koliko_exp", 1)
36 register_native("kolikot_exp", "native_kolikot_exp", 1)
37 register_native("kolikojos_exp", "native_kolikojos_exp", 1)
38}
39
40public plugin_precache()
41{
42 //precache_sound( sound_level_up )
43 //precache_sound( sound_health )
44}
45
46public plugin_init()
47{
48 g_frags_level = register_cvar("zp_level_frags", "40") // áúþûьúþ ôþñðòøтÑÂÑ ÑÂúÑÂÿы ôûѠÿþûучõýøѠÑÂûõô. урþòýÑÂ
49 g_level_max = register_cvar("zp_level_max", "20") // ÜðúÑÂøüðûьýыù ûõòõû
50
51 g_hud_color = register_cvar("zp_level_hud_type", "1") // 1 - Öõûтыù, 2 - àðýôþüýþ úðöôую ÑÂõúуýôу 3 - 1 рð÷ рðýôþüýþ
52 g_level_info = register_cvar("zp_level_info", "1") // ßþúð÷ыòðть øýфу þ øóрþúõ, úþóôð òы òòþôøтõ ò чðт info <nick>
53
54
55
56 register_clcmd("zp_levelexp","expa_give", ADMIN_CVAR, "use to give Exp")
57 register_clcmd("zp_level_is","level_give", ADMIN_CVAR, "use to give Level")
58 SayText = get_user_msgid("SayText")
59 g_Players = get_maxplayers();
60 register_dictionary("zp_level_system_xp.txt")
61 register_event("StatusValue","show_status","be","1=2","2!0")
62 register_event("StatusValue","hide_status","be","1=1","2=0")
63 g_ScreenFade = get_user_msgid( "ScreenFade" )
64 register_plugin(PLUGIN, VERSION, AUTHOR)
65
66 RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
67
68 g_MaxPlayers = get_maxplayers();
69
70 register_event("TextMsg", "event_game_restart", "a", "2=#Game_will_restart_in")
71 register_event("TextMsg", "event_game_restartt", "a", "2=#Game_Commencing")
72 //RegisterHam(Ham_CS_RoundRespawn,"player","fw_spawn",1)
73 RegisterHam(Ham_Spawn,"player","fw_spawn",1)
74
75 g_cvar_reconnect_time = register_cvar("zp_level_sql_reconnect_time", "30");
76 register_srvcmd("zp_level_connect", "DataBase_Connect");
77 register_cvar("zp_level_sql_host", "98.47.215.149");
78 register_cvar("zp_level_sql_user", "busa");
79 register_cvar("zp_level_sql_pass", "");
80 register_cvar("zp_level_sql_dbb", "hlstats");
81 register_cvar("zp_level_sql_type", "mysql");
82 register_cvar("zp_level_sql_tablee", "hlstats_Players");
83
84
85
86 server_cmd("zp_level_connect");
87}
88
89public dsadsa(id)
90{
91 cs_set_user_money(id, lova[id])
92
93 return PLUGIN_CONTINUE
94}
95
96public event_game_restart()
97{
98 for (new id = 1; id <= 32; id++)
99 {
100 if (!is_user_bot(id) && is_user_connected(id))
101 {
102 set_task(1.0,"dsadsa",id)
103 }
104 }
105}
106new dasdasq = 0
107public event_game_restartt()
108{
109 dasdasq = 1
110
111 return PLUGIN_HANDLED
112}
113
114public fw_spawn(id)
115{
116 if ( is_user_connected( id ) && dasdasq == 1)
117 {
118 cs_set_user_money( id, lova[id] )
119 set_task(3.0,"lol",id)
120 }
121
122 return PLUGIN_HANDLED
123}
124
125public lol(id)
126{
127 dasdasq = 0
128
129 return PLUGIN_HANDLED
130}
131public DataBase_Connect() {
132 new host[64], user[32], pass[32], db[128];
133 new get_type[12], set_type[12];
134 new error[128], errno;
135
136 get_cvar_string("zp_level_sql_host", host, 63);
137 get_cvar_string("zp_level_sql_user", user, 31);
138 get_cvar_string("zp_level_sql_pass", pass, 31);
139 get_cvar_string("zp_level_sql_type", set_type, 11);
140 get_cvar_string("zp_level_sql_dbb", db, 127);
141 get_cvar_string("zp_level_sql_tablee", g_SqlTable, 31);
142
143 SQL_GetAffinity(get_type, 12);
144
145 if (!equali(get_type, set_type)) {
146 if (!SQL_SetAffinity(set_type)) {
147 log_amx("Failed to set affinity from %s to %s.", get_type, set_type);
148 }
149 }
150
151 g_StdTupleLevel = SQL_MakeDbTuple(host, user, pass, db);
152
153 g_Sql = SQL_Connect(g_StdTupleLevel, errno, error, 127);
154
155 if (g_Sql == Empty_Handle) {
156 server_print("SQL error: can't connect: '%s'", error);
157
158 if(get_pcvar_float(g_cvar_reconnect_time) > 0.0) set_task(get_pcvar_float(g_cvar_reconnect_time), "DataBase_Connect");
159
160 return ;
161 }
162
163 SQL_GetAffinity(get_type, 12);
164
165 if (equali(get_type, "sqlite") && !sqlite_TableExists(g_Sql, g_SqlTable)) {
166 SQL_QueryAndIgnore(g_Sql, "CREATE TABLE %s ( steam_id VARCHAR(36) NOT NULL DEFAULT 0 PRIMARY KEY, g_level INT(10) NOT NULL DEFAULT 0, level_exp INT(10) NOT NULL DEFAULT 0);",g_SqlTable);
167 }
168 else if (equali(get_type, "mysql")) {
169 SQL_QueryAndIgnore(g_Sql,"CREATE TABLE IF NOT EXISTS `%s` (steam_id VARCHAR(36) NOT NULL PRIMARY KEY, g_level INT(10) UNSIGNED NOT NULL DEFAULT 0, level_exp INT(10) UNSIGNED NOT NULL DEFAULT 0 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", g_SqlTable);
170 }
171
172 LoadLevelCurrentPlayers();
173
174 server_print("connected to: '%s://%s:****@%s/%s/%s'", get_type, user, host, db, g_SqlTable);
175}
176
177public LoadLevelCurrentPlayers() {
178 for(new id=1;id<=g_MaxPlayers;id++) {
179 if(is_user_connected(id)) {
180 LoadClient(id);
181 }
182 }
183}
184
185public SaveClient(id)
186{
187 if (g_Sql == Empty_Handle || g_StdTupleLevel == Empty_Handle) return ;
188
189 new szAuth[32];
190 //GetAuthId(id,szAuth,sizeof(szAuth)-1);
191
192 get_user_authid(id, szAuth, sizeof(szAuth) - 1);
193 replace(szAuth, 31, "STEAM_0:", "");
194 replace(szAuth, 31, "STEAM_1:", "");
195
196 new szQuery[256];
197
198 new Handle:Query = SQL_PrepareQuery(g_Sql, "SELECT * FROM `hlstats_Players` WHERE (`playerId` = '%d')",g_uid[id])
199 SQL_Execute(Query)
200 if(SQL_NumResults(Query))
201 {
202 //new fdsfs = cs_get_user_money(id)
203 formatex( szQuery, charsmax( szQuery ), "UPDATE hlstats_Players SET g_level = '%d', level_exp = '%d', kolikot_exp = '%d' WHERE playerId='%d'", g_level[id], level_exp[id], kolikot_exp[id], g_uid[id]);
204 //fdsfs = 0
205 }
206 /*else
207 {
208 formatex(szQuery, charsmax(szQuery),"INSERT INTO %s (steam_id,g_level,level_exp,kolikot_exp) VALUES('%s', '%d','%d', '%d');",g_SqlTable, szAuth, g_level[id], level_exp[id], kolikot_exp[id]);
209 }*/
210
211 SQL_ThreadQuery(g_StdTupleLevel, "SaveClient_QueryHandler", szQuery);
212}
213
214public SaveClient_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, iData[], iSize, Float:fQueueTime)
215{
216 if(iFailState != TQUERY_SUCCESS) log_amx("SaveClient_QueryHandler(): SQL Error #%d - %s", iErrnum, szError);
217}
218
219#define column(%1) SQL_FieldNameToNum(Query, %1)
220public LoadClient(id)
221{
222 if (g_Sql == Empty_Handle || g_StdTupleLevel == Empty_Handle) return ;
223
224 new szAuth[32];
225 get_user_authid(id, szAuth, sizeof(szAuth) - 1);
226 replace(szAuth, 31, "STEAM_0:", "");
227 replace(szAuth, 31, "STEAM_1:", "");
228 new szQuery[512];
229 new szQuery2[256];
230
231 new Handle:Query = SQL_PrepareQuery(g_Sql, "SELECT playerId FROM `hlstats_PlayerUniqueIds` WHERE (`uniqueId` = '%s')",szAuth)
232 SQL_Execute(Query)
233 new szData2[2];
234 szData2[0] = id;
235
236
237 if(SQL_NumResults(Query))
238 {
239 g_uid[id] = SQL_ReadResult(Query, column("playerId"))
240 formatex(szQuery, charsmax(szQuery),"SELECT g_level,level_exp,kolikot_exp,lova FROM hlstats_Players WHERE playerId='%d';", g_uid[id]);
241
242 new szData[2];
243 szData[0] = id;
244
245 SQL_ThreadQuery(g_StdTupleLevel, "LoadClient_QueryHandler", szQuery, szData, strlen(szData));
246 }
247 else
248 {
249 new Handle:szQuery2 = SQL_PrepareQuery(g_Sql, "INSERT INTO hlstats_PlayerUniqueIds (uniqueId,game) VALUES('%s', 'cstrike');",szAuth);
250 SQL_Execute(szQuery2)
251
252 /*new Handle:Query2 = SQL_PrepareQuery(g_Sql, "INSERT INTO hlstats_Players (playerId,g_level,level_exp,kolikot_exp,lova) VALUES('LAST_INSERT_ID()','1','0', '8', '5000');");
253 SQL_Execute(Query2)*/
254 set_task(0.5, "LoadClient",id)
255 //LoadClient(id)
256 }
257
258 return
259
260
261}
262
263public LoadClient_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, szData[], iSize, Float:fQueueTime)
264{
265 if(iFailState != TQUERY_SUCCESS) {
266 log_amx("LoadClient_QueryHandler(): SQL Error #%d - %s", iErrnum, szError);
267 return ;
268 }
269
270 new name[32];
271 new id = szData[0];
272 get_user_name(id,name,sizeof(name)-1);
273
274 if(SQL_NumResults(hQuery))
275 {
276 g_level[id] = SQL_ReadResult(hQuery, 0)
277 level_exp[id] = SQL_ReadResult(hQuery, 1)
278 kolikot_exp[id] = SQL_ReadResult(hQuery, 2)
279 lova[id] = SQL_ReadResult(hQuery, 3)
280 dsadsa(id)
281 }
282 else
283 {
284 g_level[id] = 1
285 level_exp[id] = 0
286 kolikot_exp[id] = 8
287 lova[id] = 5000
288 dsadsa(id)
289 }
290 //set_task(1.0, "level_status", id, _, _, "b")
291}
292
293public plugin_end() {
294 if(g_Sql != Empty_Handle) SQL_FreeHandle(g_Sql);
295 if(g_StdTupleLevel != Empty_Handle) SQL_FreeHandle(g_StdTupleLevel);
296}
297
298// Native: native_koji_lvl
299public native_koji_lvl(id)
300{
301 if (!is_user_connected(id))
302 {
303 log_error(AMX_ERR_NATIVE, "[EXP] Invalid Player (%d)", id)
304 return -1
305 }
306 return g_level[id]
307}
308
309// Native: native_koliko_exp
310public native_koliko_exp(id)
311{
312 if (!is_user_connected(id))
313 {
314 log_error(AMX_ERR_NATIVE, "[EXP] Invalid Player (%d)", id)
315 return -1
316 }
317 return level_exp[id]
318}
319
320// Native: native_kolikot_exp
321public native_kolikot_exp(id)
322{
323 if (!is_user_connected(id))
324 {
325 log_error(AMX_ERR_NATIVE, "[EXP] Invalid Player (%d)", id)
326 return -1
327 }
328 return kolikot_exp[id]
329}
330
331// Native: native_kolikojos_exp
332public native_kolikojos_exp(id)
333{
334 if (!is_user_connected(id))
335 {
336 log_error(AMX_ERR_NATIVE, "[EXP] Invalid Player (%d)", id)
337 return -1
338 }
339 new koliko
340 koliko = racunica(level_exp[id],kolikot_exp[id])
341
342 return koliko
343}
344
345public expa_give(id, level, cid)
346{
347 if (!cmd_access(id, level, cid, 2))
348 {
349 console_print(id, "ã òðѠýõт ôþÑÂтуÿð ú úþüðýôõ")
350 return PLUGIN_HANDLED
351 }
352 new target[32]
353 new count[32]
354
355 read_argv(1,target,31)
356 read_argv(2,count,31)
357 new target_id, name[32], nameid[32]
358 target_id = find_player("bl", target)
359 get_user_name(target_id, name, sizeof name - 1)
360 get_user_name(id, nameid, sizeof nameid - 1)
361 if(!target_id)
362 {
363 console_print(id, "Can't find that player")
364 return PLUGIN_HANDLED
365 }
366 if(read_argc() != 3)
367 return PLUGIN_HANDLED
368
369 if(str_to_num(count) < (g_level_exp[target_id] - level_exp[target_id]) )
370 {
371 if(str_to_num(count) == 0)
372 console_print(id, "Exp Player %s in %i / %i", name, level_exp[target_id], g_level_exp[target_id])
373 else
374 {
375 console_print(id, "Player %s gives for %i exp, Her Maximum %i", name, str_to_num(count), g_level_exp[target_id])
376 level_exp[target_id] = level_exp[target_id] + str_to_num(count);
377 }
378
379 }
380 else
381 {
382 console_print(id, "Maximum Exp in player %i", g_level_exp[target_id])
383 }
384 SaveClient(id);
385 return PLUGIN_HANDLED
386}
387
388public level_give(id, level, cid)
389{
390 if (!cmd_access(id, level, cid, 2))
391 {
392 console_print(id, "ã òðѠýõт ôþÑÂтуÿð ú úþüðýôõ")
393 return PLUGIN_HANDLED
394 }
395 new target[32]
396 new count[32]
397
398 read_argv(1,target,31)
399 read_argv(2,count,31)
400 new target_id, name[32], level_id
401 level_id = str_to_num(count);
402 target_id = find_player("bl", target)
403 get_user_name(target_id, name, sizeof name - 1)
404 if(!target_id)
405 {
406 console_print(id, "Can't find that player")
407 return PLUGIN_HANDLED
408 }
409 if(read_argc() != 3)
410 return PLUGIN_HANDLED
411
412 if( ((g_level[target_id] + level_id) <=get_pcvar_num(g_level_max)) && (level_id != 0) && ((g_level[target_id] + level_id) > 0 ) )
413 {
414 if(level_id > 0)
415 {
416 g_level[target_id] = g_level[target_id] + level_id;
417 level_exp[target_id] = 0;
418 message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, target_id)
419 write_short(1<<12) // duration
420 write_short(1) // hold time
421 write_short(0x0000) // fade type
422 write_byte(1) // red
423 write_byte(200) // green
424 write_byte(0) // blue
425 write_byte(205) // alpha
426 message_end()
427 emit_sound(target_id, CHAN_STREAM, sound_level_up, 1.0, ATTN_NORM, 0, PITCH_HIGH )
428 }
429 else
430 {
431 g_level[target_id] = g_level[target_id] + level_id;
432 level_exp[target_id] = 0;
433 message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, target_id)
434 write_short(1<<12) // duration
435 write_short(1) // hold time
436 write_short(0x0000) // fade type
437 write_byte(200) // red
438 write_byte(40) // green
439 write_byte(0) // blue
440 write_byte(205) // alpha
441 message_end()
442 }
443 console_print(id, "Player %s gives add %i level", name, level_id)
444 }
445 else
446 console_print(id, "Operation Invalid")
447 SaveClient(id);
448 return PLUGIN_HANDLED
449}
450
451
452public client_putinserver(id)
453{
454 if(!is_user_bot(id) )
455 {
456 LoadClient(id);
457
458 if( g_level[id] == 0) g_level[id] = 1;
459 //if( kolikojos_exp[id] == 0) kolikojos_exp[id] = 0;
460 if( level_exp[id] == 0) level_exp[id] = 0;
461 if( kolikot_exp[id] == 0) kolikot_exp[id] = 8;
462
463 //g_level_exp[id]=g_level[id] * get_pcvar_num(g_frags_level);
464 }
465 red = random_num(10, 200)
466 green = random_num(10, 200)
467 blue = random_num(10, 200)
468}
469
470public client_disconnect(id)
471{
472 SaveClient(id);
473}
474
475public hide_status(id)
476{
477 set_hudmessage(0,0,0,0.0,0.0,0, 0.0, 0.01, 0.0, 0.0, 4)
478 show_hudmessage(id,"")
479}
480
481public show_status(id)
482{
483 new name[32],pid = read_data(2)
484 get_user_name(pid,name,31)
485 if (!zp_get_user_zombie(pid) && !zp_get_user_zombie(id) )
486 {
487 set_hudmessage(0,0,255,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, 4)
488 show_hudmessage(id,"%L", LANG_PLAYER, "PLAYER_NAME_H", name, g_level[pid], get_user_health(pid),get_user_armor(pid),zp_get_user_ammo_packs(pid))
489 }
490 if(zp_get_user_zombie(id) && zp_get_user_zombie(pid) )
491 {
492 set_hudmessage(255,0,0,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, 4)
493 show_hudmessage(id,"%L", LANG_PLAYER, "PLAYER_NAME_Z", name, g_level[pid], get_user_health(pid), zp_get_user_ammo_packs(pid))
494 }
495}
496
497new g_Query[3024]
498public zp_user_infected_post(id, infector, nemesis)
499{
500 if (g_Sql == Empty_Handle || g_StdTupleLevel == Empty_Handle) return ;
501
502
503 if (zp_get_user_first_zombie(id) && !nemesis)
504 {
505 format(g_Query, charsmax(g_Query), "UPDATE `hlstats_Players` SET `first_zombie` = `first_zombie` + 1,`infected` = `infected` + 1 WHERE `playerId`=%d", g_uid[id])
506 SQL_ThreadQuery(g_StdTupleLevel, "threadQueryHandler", g_Query)
507 }
508 else if (infector)
509 {
510 if (g_uid[id])
511 {
512 format(g_Query, charsmax(g_Query), "UPDATE `hlstats_Players` SET `infected` = `infected` + 1 WHERE `playerId`=%d", g_uid[id])
513 SQL_ThreadQuery(g_StdTupleLevel, "threadQueryHandler", g_Query)
514 }
515
516 if (g_uid[infector])
517 {
518 format(g_Query, charsmax(g_Query), "UPDATE `hlstats_Players` SET `infect` = `infect` + 1 WHERE `playerId`=%d", g_uid[infector])
519 SQL_ThreadQuery(g_StdTupleLevel, "threadQueryHandler", g_Query)
520 }
521 }
522
523 if (zp_get_user_nemesis(id))
524 {
525 format(g_Query, charsmax(g_Query), "UPDATE `hlstats_Players` SET `nemesis` = `nemesis` + 1 WHERE `playerId`=%d", g_uid[id])
526 SQL_ThreadQuery(g_StdTupleLevel, "threadQueryHandler", g_Query)
527 }
528
529
530}
531
532public zp_user_humanized_post(id, survivor)
533{
534 if (survivor && g_uid[id])
535 {
536 format(g_Query, charsmax(g_Query), "UPDATE `hlstats_Players` SET `survivor` = `survivor` + 1 WHERE `playerId`=%d", g_uid[id])
537 SQL_ThreadQuery(g_StdTupleLevel, "threadQueryHandler", g_Query)
538 }
539
540}
541
542public threadQueryHandler(FailState, Handle:Query, error[], err, data[], size, Float:querytime)
543{
544 if(FailState != TQUERY_SUCCESS)
545 {
546 log_amx("[ZP] Stats: sql error: %d (%s)", err, error)
547 return
548 }
549
550}
551new const g_types[][]={"first_zombie", "infect", "zombiekills", "humankills", "nemkills", "survkills", "suicide"}
552
553public fw_PlayerKilled(victim, attacker, shouldgib)
554{
555 if( is_user_alive(attacker) && is_user_connected(attacker))
556 {
557 if(g_level[attacker] == get_pcvar_num(g_level_max))
558 {
559 //ChatColor(attacker, "!g[LEVEL]!y %L", LANG_PLAYER, "LEVEL_MAX", g_level[attacker] )
560 return PLUGIN_HANDLED
561 }
562 else if (zp_get_user_nemesis(victim))
563 {
564 level_exp[attacker] = level_exp[attacker] + 10
565 SaveClient(attacker)
566 message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, attacker)
567 write_short(1<<12) // duration
568 write_short(1) // hold time
569 write_short(0x0000) // fade type
570 write_byte(255) // red
571 write_byte(0) // green
572 write_byte(0) // blue
573 write_byte(205) // alpha
574 message_end()
575 set_task(0.5, "provjeri_level",attacker)
576 }
577 else if (zp_get_user_zombie(victim))
578 {
579
580 level_exp[attacker] = level_exp[attacker] + 1
581 SaveClient(attacker)
582 message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, attacker)
583 write_short(1<<12) // duration
584 write_short(1) // hold time
585 write_short(0x0000) // fade type
586 write_byte(0) // red
587 write_byte(0) // green
588 write_byte(255) // blue
589 write_byte(205) // alpha
590 message_end()
591 set_task(0.5, "provjeri_level",attacker)
592 }
593 }
594
595 new type
596
597 if (zp_get_user_zombie(attacker))
598 {
599 if (zp_get_user_survivor(victim))
600 {
601 format(g_Query, charsmax(g_Query), "UPDATE `hlstats_Players` SET `survkills` = `survkills` + 1 WHERE `playerId`=%d", g_uid[attacker])
602 SQL_ThreadQuery(g_StdTupleLevel, "threadQueryHandler", g_Query)
603 }
604 else if (!zp_get_user_zombie(victim) && !zp_get_user_survivor(victim))
605 {
606 format(g_Query, charsmax(g_Query), "UPDATE `hlstats_Players` SET `humankills` = `humankills` + 1 WHERE `playerId`=%d", g_uid[attacker])
607 SQL_ThreadQuery(g_StdTupleLevel, "threadQueryHandler", g_Query)
608 }
609 }
610 else if (!zp_get_user_zombie(attacker))
611 {
612 if (zp_get_user_nemesis(victim))
613 {
614 format(g_Query, charsmax(g_Query), "UPDATE `hlstats_Players` SET `nemkills` = `nemkills` + 1 WHERE `playerId`=%d", g_uid[attacker])
615 SQL_ThreadQuery(g_StdTupleLevel, "threadQueryHandler", g_Query)
616 }
617 else if (zp_get_user_zombie(victim) && !zp_get_user_nemesis(victim))
618 {
619 format(g_Query, charsmax(g_Query), "UPDATE `hlstats_Players` SET `zombiekills` = `zombiekills` + 1 WHERE `playerId`=%d", g_uid[attacker])
620 SQL_ThreadQuery(g_StdTupleLevel, "threadQueryHandler", g_Query)
621 }
622 }
623
624
625}
626
627public provjeri_level(attacker)
628{
629 if( is_user_alive(attacker) && g_level[attacker] == g_level[attacker] && level_exp[attacker] > kolikot_exp[attacker] - 1)
630 {
631 g_level[attacker] = g_level[attacker] + 1;
632
633 if( g_level[attacker] == 2 )
634 {
635 kolikot_exp[attacker] = kolikot_exp[attacker] + kolikot_exp[attacker] + 3;
636 }
637 else
638 {
639 kolikot_exp[attacker] = kolikot_exp[attacker] * 2 - g_level[attacker];
640 }
641 message_begin(MSG_ONE_UNRELIABLE, g_ScreenFade, _, attacker)
642 write_short(1<<12) // duration
643 write_short(1) // hold time
644 write_short(0x0000) // fade type
645 write_byte(1) // red
646 write_byte(200) // green
647 write_byte(0) // blue
648 write_byte(205) // alpha
649 message_end()
650 SaveClient(attacker);
651 }
652}
653
654public racunica(iznos,ukupno)
655{
656 new count1
657 count1 = abs(iznos - ukupno);
658 //new count = format($count1, 0);
659 return count1
660}
661
662SafeSql(Buffer[]="", BufferSize=0) {
663 replace_all(Buffer, BufferSize, "\", "\\");
664 replace_all(Buffer, BufferSize, "'", "\'");
665}
666
667GetAuthId(id,Buffer[]="", BufferSize=0) {
668 get_user_name(id,Buffer,BufferSize);
669}