· 10 years ago · Aug 23, 2016, 05:44 AM
1/* Plugin generated by AMXX-Studio */
2
3// uncomment this line for top15 sql database saving
4//#define USING_SQL
5
6// uncomment this line for recieving grenades on cmd /weapons
7//#define GIVE_GRENADES
8
9#include <amxmodx>
10#include <amxmisc>
11#include <cstrike>
12#include <fakemeta>
13#include <hamsandwich>
14#include <engine>
15#include <fun>
16
17#if defined USING_SQL
18#include <sqlx>
19#endif
20
21#define PLUGIN "ProKreedz Ultimativ"
22#define VERSION "v2.4"
23#define AUTHOR "vato loco [GE-S]"
24#define PLUGIN_CVAR "prokreedz_ultimativ"
25
26#define PLUGIN_HOOK "PK_Hook_v2.4.amxx"
27#define PLUGIN_JETPACK "PK_Jetpack_v2.4.amxx"
28#define KZ_HOOK "kz_prize_hook"
29#define KZ_JETPACK "kz_prize_jetpack"
30#define KZ_HOOK_OFF "HookOff"
31#define KZ_JET_OFF "JetPackOff"
32
33#define KZ_ACCESS ADMIN_KICK
34#define KZ_ADMIN_MENU ADMIN_RCON
35#define CP_MAX_PRO get_pcvar_num(g_kz_maxpro_cp)
36#define CP_DISTANCE 35.0
37#define DISTANCE 120
38#define M_RADIOS_LEFT 192
39
40#define TASK_INFO 12222
41#define TASK_RESPAWN 13333
42#define TASK_AUTOJOIN 14444
43#define TASK_ADMINGLOW 15555
44#define TASK_CREATEBOT 16666
45#define TASK_FUNCTIONS 17777
46#define TASK_NVG 18888
47
48#define MENU_KEYS MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
49#define MENU_KEYS_ADMIN MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
50
51// Kz ColorChat
52enum color {
53 normal = 1, // clients scr_concolor cvar color
54 green, // Green Color
55 team // Red, grey, blue
56}
57
58#if !defined USING_SQL
59new const g_iTopColors[][] = {
60 "#ff0000",
61 "#07fcff",
62 "#fff007"
63}
64#endif
65
66#if !defined GIVE_GRENADES
67new const SKIP_WEAPONS = (1<<CSW_HEGRENADE) | (1<<CSW_FLASHBANG) | (1<<CSW_SMOKEGRENADE)
68#endif
69
70new const SayCmdsClient[][64] = {
71 "menu","KzPlayerMenu","usp", "cmd_usp","scout", "cmd_scout","spawn","cmd_restart",
72 "respawn","cmd_restart","start","cmd_restart","restart","cmd_restart","reset","cmd_reset",
73 "checkpoint","cmd_checkpoint","cp","cmd_checkpoint","check","cmd_checkpoint",
74 "gocheck","cmd_gocheck","gc","cmd_gocheck","tp","cmd_gocheck",
75 "stuck","cmd_stuck","unstuck","cmd_stuck","showkeys", "cmd_showplayerkeys",
76 "spec","cmd_spec","unspec","cmd_spec","pause","cmd_pause","unpause","cmd_pause","help", "cmd_help",
77 "top10","cmd_top15","top15","cmd_top15","nub10","show_nub15","nub15","show_nub15",
78 "pro10","show_pro15","pro15","show_pro15","weapons", "cmd_weapons", "drop", "cmd_drop"
79}
80
81new const SayCmdsAdmin[][64] = {
82 "amenu","KzAdminMenuShow", "adminmenu","KzAdminMenuShow",
83 "setstart","cmd_admin_setstart", "delstart","cmd_admin_delstart"
84}
85
86new const g_start_sounds[][] = {
87 "barney/beertopside",
88 "scientist/c3a2_sci_portopen",
89 "barney/c1a2_ba_climb"
90}
91
92new const g_block_commands[][] = {
93 "chooseteam", "buy", "buyammo1", "buyammo2", "buyequip",
94 "cl_autobuy", "cl_rebuy", "cl_setautobuy", "cl_setrebuy"
95}
96
97new const g_radio_commands[][] = {"radio1", "radio2", "radio3"}
98
99new const KZ_PROKREEDZ_DIR[] = "addons/amxmodx/configs/prokreedz"
100new const KZ_TOP15_DIR[] = "addons/amxmodx/configs/prokreedz/kz_top15"
101new const KZ_START_DIR[] = "addons/amxmodx/configs/prokreedz/kz_start"
102new const KZ_CONFIG[] = "prokreedz/ProKreedz.cfg"
103
104new const Float:VEC_DUCK_HULL_MIN[3] = {-16.0, -16.0, -18.0}
105new const Float:VEC_DUCK_HULL_MAX[3] = {16.0, 16.0, 18.0}
106
107#if defined USING_SQL
108new Handle:g_hSqlTuple
109#else
110new pro15_names[24][32], pro15_authid[24][32], Float:pro15_times[24], pro15_cp[24], pro15_gocp[24]
111new nub15_names[24][32], nub15_authid[24][32], Float:nub15_times[24], nub15_cp[24], nub15_gocp[24]
112#endif
113
114new Float:g_fStartPosition[3]
115new bool:g_bStartPos
116new g_StartFile[128]
117
118new Float:g_fPlayerStartPosition[33][3]
119new bool:g_bStartPosition[33]
120
121new Float:g_fCheckpoints[33][3]
122new Float: g_fCheckStuck[33][3]
123new bool:g_bPlayerUsedStuck[33]
124new g_iCheckpointNum[33]
125new g_iGoCheckNum[33]
126
127new is_plr_alive[33]
128new is_plr_bot[33]
129new is_plr_connected[33]
130
131new bool:g_bFirstSpawn[33]
132new bool:g_bHasScout[33]
133new bool:g_bShowTimer[33]
134new bool:g_bNoclip[33]
135new g_iBunnyHop[33]
136new g_iPlayerKeys[33]
137new bool:g_bShowKeys[33]
138new Float:fShowKeyTime
139new plr_key[33][64]
140new bool:g_bPlayerNvgUse[33]
141new bool:g_bWeapons[33]
142new g_iPlayerName[33][32]
143new g_iTarget[33]
144
145new Float:g_iPlayerTime[33]
146new bool:g_bPlayerStart[33]
147new Float:g_iPlayerPauseTime[33]
148new g_bPlayerPaused[33]
149new g_bPlayerSpec[33]
150new Float:g_fSpecPosition[33][3]
151new Float:g_iPlayerHealth[33]
152
153new g_iPlayerModel[33][32]
154new g_iEntPlayerModel[33]
155new g_iEntWeaponModel[33]
156new g_bPlayerIsAdmin[33]
157
158new g_szMapName[64]
159
160new g_kz_modname_enable
161new g_kz_checkpoints
162new g_kz_semiclip
163new g_kz_transparency
164new g_kz_scout
165new g_kz_pause
166new g_kz_spec
167new g_kz_sounds
168new g_kz_vip
169new g_kz_adminglow
170new g_kz_money
171new g_kz_autojoin
172new g_kz_bhop
173new g_kz_cheatdetect
174new g_kz_godmode
175new g_kz_nokill
176new g_kz_help
177new g_kz_bot
178new g_kz_prize
179new g_kz_doorsound
180new g_kz_painsound
181new g_kz_watersound
182new g_kz_botname
183new g_kz_tag
184new g_kz_advert_time
185new g_kz_autoheal
186new g_kz_autoheal_hp
187new g_kz_weaponspeed
188new g_kz_weaponspeed_color
189new g_kz_weaponspeed_xypos
190new g_kz_showkeys
191new g_kz_showkeys_color
192new g_kz_showkeys_xypos
193new g_kz_nvg_enabled
194new g_kz_nvg_radius
195new g_kz_nvg_color
196new g_kz_time_color
197new g_kz_status_color
198new g_kz_showhealth_color
199new g_kz_showhealth_xypos
200new g_kz_maxpro_cp
201new g_kz_weapons
202new g_kz_autostart
203new g_kz_statustext
204new g_kz_statustext_color
205new g_kz_statustext_xypos
206#if defined USING_SQL
207new g_kz_sql_host
208new g_kz_sql_user
209new g_kz_sql_pass
210new g_kz_sql_db
211new g_kz_weburl
212#endif
213
214new g_mp_fiendlyfire
215new g_mp_autoteambalance
216new g_mp_limitteams
217new g_mp_freezetime
218new g_mp_autokick
219new g_mp_flashlight
220new g_sv_airaccelerate
221new g_sv_gravity
222
223new g_SyncTimer
224new g_SyncWeapon
225new g_SyncShowKeys
226new g_SyncShowHealth
227new g_SyncStatusText
228
229new g_SayText
230new g_ScoreAttrib
231new g_TeamInfo
232new g_StatusValue
233new g_StatusText
234new g_Money
235new g_ClCorpse
236new g_ShowMenu
237new g_VguiMenu
238new g_RoundTime
239new g_ScreenFade
240new g_NVGToggle
241new g_Health
242new g_StatusIcon
243
244new Trie:g_tStartTargets
245new Trie:g_tFinishTargets
246new Trie:g_tRemoveEntities
247new Trie:g_tWeaponCommands
248new Trie:g_tdoorSnd
249new Trie:g_tpainSnd
250new Trie:g_twaterSnd
251
252new g_iMaxPlayers
253
254public plugin_init()
255{
256 register_plugin(PLUGIN, VERSION, AUTHOR)
257 register_cvar(PLUGIN_CVAR, VERSION, FCVAR_SERVER|FCVAR_SPONLY, 0.0)
258 register_dictionary("prokreedz_v2.4.txt")
259 register_menucmd(register_menuid("ProKreedz Ultimativ v2.4 - Adminmenu"),MENU_KEYS_ADMIN,"AdminMenuHandler")
260 register_menucmd(register_menuid("ProKreedz v2.4 - Playermenu"),MENU_KEYS,"PlayerMenuHandler")
261
262 RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1)
263 RegisterHam(Ham_Killed, "player", "fw_PlayerKilled", 1)
264 RegisterHam(Ham_Player_PreThink, "player", "fw_PreThink_Post", 1)
265 RegisterHam(Ham_Use, "func_button", "fw_UseButton", 0)
266 RegisterHam(Ham_Spawn, "weaponbox", "fw_Weaponbox", 1)
267 RegisterHam(Ham_Player_Jump, "player", "fw_PlayerJump")
268
269 register_forward(FM_Think,"fw_ThinkEntity")
270 register_forward(FM_EmitSound, "fw_EmitSound")
271 register_forward(FM_ClientKill,"fw_ClientKill")
272 register_forward(FM_StartFrame, "fw_StartFrame")
273 register_forward(FM_AddToFullPack, "fw_AddToFullPack_Post", 1)
274
275 register_event("CurWeapon", "ev_CheckWeapon", "be", "1=1")
276 register_event("Health", "ev_Health", "be", "1>0")
277
278 register_clcmd("nightvision","cmd_toggle_nvg")
279 register_clcmd("kz_noclip","cmd_admin_noclip", KZ_ACCESS, "<name|#userid|steamid|@ALL> <on/off>")
280 register_clcmd("kz_gravity", "cmd_admin_gravity", KZ_ACCESS, "<name|#userid|steamid|@ALL> <gravity>")
281
282 new i
283 kz_register_saycmd("noclip", "cmd_admin_noclip", KZ_ACCESS)
284 for(i = 0; i < sizeof(SayCmdsAdmin); i = i+2)
285 kz_register_saycmd(SayCmdsAdmin[i], SayCmdsAdmin[i+1], KZ_ADMIN_MENU)
286
287 for(i = 0; i < sizeof(SayCmdsClient); i = i+2)
288 kz_register_saycmd(SayCmdsClient[i], SayCmdsClient[i+1], 0)
289
290 g_kz_modname_enable = register_cvar("kz_modname_enable","1")
291 g_kz_checkpoints = register_cvar("kz_checkpoints","1")
292 g_kz_semiclip = register_cvar("kz_semiclip","1")
293 g_kz_transparency = register_cvar("kz_transparency","1")
294 g_kz_scout = register_cvar("kz_scout","1")
295 g_kz_pause = register_cvar("kz_pause","1")
296 g_kz_spec = register_cvar("kz_spec","1")
297 g_kz_sounds = register_cvar("kz_sounds","1")
298 g_kz_vip = register_cvar("kz_vip","1")
299 g_kz_adminglow = register_cvar("kz_adminglow","1")
300 g_kz_money = register_cvar("kz_money","1337")
301 g_kz_autojoin = register_cvar("kz_autojoin","1")
302 g_kz_bhop = register_cvar("kz_bhop","1")
303 g_kz_cheatdetect = register_cvar("kz_cheatdetect","1")
304 g_kz_godmode = register_cvar("kz_godmode","1")
305 g_kz_nokill = register_cvar("kz_nokill","1")
306 g_kz_help = register_cvar("kz_help","1")
307 g_kz_bot = register_cvar("kz_bot","1")
308 g_kz_prize = register_cvar("kz_prize","1")
309 g_kz_doorsound = register_cvar("kz_doorsound","1")
310 g_kz_painsound = register_cvar("kz_painsound","1")
311 g_kz_watersound = register_cvar("kz_watersound","1")
312 g_kz_botname = register_cvar("kz_botname", "ProKreedz Ultimativ v2.4")
313 g_kz_tag = register_cvar("kz_tag", "[ProKreedz]")
314 g_kz_advert_time = register_cvar("kz_advert_time","60")
315 g_kz_autoheal = register_cvar("kz_autoheal", "1")
316 g_kz_autoheal_hp = register_cvar("kz_autoheal_hp", "50")
317 g_kz_weapons = register_cvar("kz_weapons","1")
318 g_kz_weaponspeed = register_cvar("kz_weaponspeed","1")
319 g_kz_weaponspeed_color = register_cvar("kz_weaponspeed_color","0 255 255")
320 g_kz_weaponspeed_xypos = register_cvar("kz_weaponspeed_xypos","0.35 0.75")
321 g_kz_showkeys = register_cvar("kz_showkeys","1")
322 g_kz_showkeys_color = register_cvar("kz_showkeys_color","0 255 255")
323 g_kz_showkeys_xypos = register_cvar("kz_showkeys_xypos","-1.0 -0.40")
324 g_kz_nvg_enabled = register_cvar("kz_nvg_enabled","1")
325 g_kz_nvg_radius = register_cvar("kz_nvg_radius","70")
326 g_kz_nvg_color = register_cvar("kz_nvg_color","0 255 255")
327 g_kz_time_color = register_cvar("kz_time_color","0 255 255")
328 g_kz_status_color = register_cvar("kz_status_color","255 0 0")
329 g_kz_showhealth_color = register_cvar("kz_showhealth_color", "255 50 0")
330 g_kz_showhealth_xypos = register_cvar("kz_showhealth_xypos ", "-1.0 0.9")
331 g_kz_maxpro_cp = register_cvar("kz_maxpro_cp","10000")
332 g_kz_autostart = register_cvar("kz_autostart","1")
333 g_kz_statustext = register_cvar("kz_statustext","1")
334 g_kz_statustext_color = register_cvar("kz_statustext_color","255 255 0")
335 g_kz_statustext_xypos = register_cvar("kz_statustext_xypos","-1.0 0.52")
336#if defined USING_SQL
337 g_kz_sql_host = register_cvar("kz_sql_host", "")
338 g_kz_sql_user = register_cvar("kz_sql_user", "")
339 g_kz_sql_pass = register_cvar("kz_sql_pass", "", FCVAR_PROTECTED)
340 g_kz_sql_db = register_cvar("kz_sql_db", "")
341 g_kz_weburl = register_cvar("kz_weburl", "http://your.domain.com/path/to/top15.php")
342#else
343 register_cvar("kz_sql_host", "")
344 register_cvar("kz_sql_user", "")
345 register_cvar("kz_sql_pass", "", FCVAR_PROTECTED)
346 register_cvar("kz_sql_db", "")
347 register_cvar("kz_weburl", "")
348#endif
349
350 g_mp_fiendlyfire = get_cvar_pointer("mp_friendlyfire")
351 g_mp_autoteambalance = get_cvar_pointer("mp_autoteambalance")
352 g_mp_limitteams = get_cvar_pointer("mp_limitteams")
353 g_mp_freezetime = get_cvar_pointer("mp_freezetime")
354 g_mp_autokick = get_cvar_pointer("mp_autokick")
355 g_mp_flashlight = get_cvar_pointer("mp_flashlight")
356 g_sv_airaccelerate = get_cvar_pointer("sv_airaccelerate")
357 g_sv_gravity = get_cvar_pointer("sv_gravity")
358
359 set_pcvar_num(g_mp_fiendlyfire, 0)
360 set_pcvar_num(g_mp_autoteambalance, 0)
361 set_pcvar_num(g_mp_limitteams, 0)
362 set_pcvar_num(g_mp_freezetime, 0)
363 set_pcvar_num(g_mp_autokick, 0)
364 set_pcvar_num(g_mp_flashlight, 1)
365 set_pcvar_num(g_sv_airaccelerate, 10)
366
367 g_Health = get_user_msgid("Health")
368 g_ScreenFade = get_user_msgid("ScreenFade")
369 g_NVGToggle = get_user_msgid("NVGToggle")
370 g_SayText = get_user_msgid("SayText")
371 g_ScoreAttrib = get_user_msgid("ScoreAttrib")
372 g_TeamInfo = get_user_msgid("TeamInfo")
373 g_StatusValue = get_user_msgid("StatusValue")
374 g_StatusText = get_user_msgid("StatusText")
375 g_Money = get_user_msgid("Money")
376 g_ClCorpse = get_user_msgid("ClCorpse")
377 g_ShowMenu = get_user_msgid("ShowMenu")
378 g_VguiMenu = get_user_msgid("VGUIMenu")
379 g_RoundTime = get_user_msgid("RoundTime")
380 g_StatusIcon = get_user_msgid("StatusIcon")
381 register_message(g_Health, "MsgHealth")
382 register_message(g_Money, "MsgMoney")
383 register_message(g_ClCorpse, "MsgClCorpse")
384 register_message(g_ShowMenu, "MsgShowMenu")
385 register_message(g_VguiMenu, "MsgVguiMenu")
386 register_message(g_RoundTime,"MsgRoundTime")
387 register_message(g_StatusIcon , "MsgStatusIcon")
388 register_message(g_StatusValue , "MsgStatusValue")
389 set_msg_block(g_ClCorpse, BLOCK_SET)
390 set_msg_block(g_StatusText, BLOCK_SET)
391
392 new iEnt
393 iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString , "info_target"))
394 set_pev(iEnt, pev_classname, "kz_time_think")
395 set_pev(iEnt, pev_nextthink, get_gametime() + 1.0)
396
397 iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString , "info_target"))
398 set_pev(iEnt, pev_classname, "kz_player_statustext")
399 set_pev(iEnt, pev_nextthink, get_gametime() + 1.0)
400
401 set_task(5.0, "kz_CreateBot", TASK_CREATEBOT, _, _, "b")
402 set_task(1.0, "kz_Functions", TASK_FUNCTIONS, _, _, "b")
403
404 g_SyncTimer = CreateHudSyncObj()
405 g_SyncWeapon = CreateHudSyncObj()
406 g_SyncShowKeys = CreateHudSyncObj()
407 g_SyncShowHealth = CreateHudSyncObj()
408 g_SyncStatusText = CreateHudSyncObj()
409
410 new const g_iStartTargets[][] = {
411 "counter_start","clockstartbutton",
412 "firsttimerelay","but_start",
413 "counter_start_button","multi_start",
414 "timer_startbutton","start_timer_emi",
415 "gogogo"
416 }
417 g_tStartTargets = TrieCreate()
418 for(i = 0; i < sizeof(g_iStartTargets); i++)
419 {
420 TrieSetCell(g_tStartTargets, g_iStartTargets[i], i)
421 }
422 new const g_iFinishTargets[][] = {
423 "counter_off","clockstopbutton",
424 "clockstop","but_stop",
425 "counter_stop_button","multi_stop",
426 "stop_counter","m_counter_end_emi"
427 }
428 g_tFinishTargets = TrieCreate()
429 for(i = 0; i < sizeof(g_iFinishTargets); i++)
430 {
431 TrieSetCell(g_tFinishTargets, g_iFinishTargets[i], i)
432 }
433 new const g_iWeaponCommands[][] = {
434 "usp", "glock", "deagle", "p228", "elites",
435 "fn57", "m3", "xm1014", "mp5", "tmp", "p90",
436 "mac10", "ump45", "ak47", "galil", "famas",
437 "sg552", "m4a1", "aug", "scout", "awp", "g3sg1",
438 "sg550", "m249", "vest", "vesthelm", "flash",
439 "hegren", "sgren", "defuser", "nvgs", "shield",
440 "primammo", "secammo", "km45", "9x19mm", "nighthawk",
441 "228compact", "fiveseven", "12gauge", "autoshotgun",
442 "mp", "c90", "cv47", "defender", "clarion", "krieg552",
443 "bullpup", "magnum", "d3au1", "krieg550"
444 }
445 g_tWeaponCommands = TrieCreate()
446 for(i = 0; i < sizeof(g_iWeaponCommands); i++)
447 {
448 TrieSetCell(g_tWeaponCommands, g_iWeaponCommands[i], i)
449 }
450 new const g_doorSnd[][] = {
451 "doors/doorstop1.wav",
452 "doors/doorstop2.wav",
453 "doors/doorstop3.wav"
454 }
455 g_tdoorSnd = TrieCreate()
456 for(i = 0; i < sizeof(g_doorSnd); i++)
457 {
458 TrieSetCell(g_tdoorSnd, g_doorSnd[i], i)
459 }
460 new const g_painSnd[][] = {
461 "player/pl_pain2.wav", "player/pl_pain3.wav",
462 "player/pl_pain4.wav", "player/pl_pain5.wav",
463 "player/pl_pain6.wav", "player/pl_pain7.wav",
464 "player/bhit_kevlar-1.wav", "player/bhit_flesh-1.wav",
465 "player/bhit_flesh-2.wav", "player/bhit_flesh-3.wav"
466 }
467 g_tpainSnd = TrieCreate()
468 for(i = 0; i < sizeof(g_painSnd); i++)
469 {
470 TrieSetCell(g_tpainSnd, g_painSnd[i], i)
471 }
472 new const g_waterSnd[][] = {
473 "player/pl_swim1.wav", "player/pl_swim2.wav",
474 "player/pl_swim3.wav", "player/pl_swim4.wav",
475 "player/waterrun.wav"
476 }
477 g_twaterSnd = TrieCreate()
478 for(i = 0; i < sizeof(g_waterSnd); i++)
479 {
480 TrieSetCell(g_twaterSnd, g_waterSnd[i], i)
481 }
482 get_mapname(g_szMapName, charsmax(g_szMapName))
483 strtolower(g_szMapName)
484
485 g_iMaxPlayers = get_maxplayers()
486}
487
488public plugin_cfg()
489{
490 new KzConfig[64], KzCfg[128]
491 get_configsdir(KzConfig, 63)
492 format(KzCfg, 127, "%s/%s", KzConfig, KZ_CONFIG)
493
494 if(file_exists(KzCfg))
495 {
496 server_cmd("exec %s", KzCfg)
497 server_exec()
498 }
499 else
500 {
501 kz_make_config(KzCfg)
502 }
503
504 if(!dir_exists(KZ_START_DIR))
505 {
506 mkdir(KZ_START_DIR)
507 }
508 format(g_StartFile, 127, "%s/%s.txt", KZ_START_DIR, g_szMapName)
509
510 if(file_exists(g_StartFile))
511 {
512 g_bStartPos = true
513
514 new Data[64], x[13], y[13], z[13]
515 new f = fopen(g_StartFile, "rt")
516
517 while(!feof(f))
518 {
519 fgets(f, Data, 63)
520 parse(Data, x, 12, y, 12, z, 12)
521
522 g_fStartPosition[0] = str_to_float(x)
523 g_fStartPosition[1] = str_to_float(y)
524 g_fStartPosition[2] = str_to_float(z)
525 }
526 fclose(f)
527 }
528 else
529 {
530 g_bStartPos = false
531 }
532 if(get_pcvar_num(g_kz_prize))
533 set_task(get_pcvar_float(g_kz_advert_time),"Hook")
534
535 if(get_pcvar_num(g_kz_autoheal))
536 kz_create_healer()
537
538 if(get_pcvar_num(g_kz_modname_enable))
539 register_forward(FM_GetGameDescription, "fw_GameDescription")
540
541 for(new i = 0; i < sizeof(g_radio_commands); i++)
542 register_clcmd(g_radio_commands[i], "BlockCommands")
543
544 for(new i = 0; i < sizeof(g_block_commands) ; i++)
545 register_clcmd(g_block_commands[i], "BlockCommands")
546
547#if defined USING_SQL
548 new szHost[64], szUser[64], szPass[64], szDb[64]
549 get_pcvar_string(g_kz_sql_host, szHost, charsmax(szHost))
550 get_pcvar_string(g_kz_sql_user, szUser, charsmax(szUser))
551 get_pcvar_string(g_kz_sql_pass, szPass, charsmax(szPass))
552 get_pcvar_string(g_kz_sql_db, szDb, charsmax(szDb))
553
554 g_hSqlTuple = SQL_MakeDbTuple(szHost, szUser, szPass, szDb)
555
556 if(g_hSqlTuple == Empty_Handle)
557 {
558 log_amx("Failed to connect to SQL database. Please check login info.")
559 }
560 else
561 {
562 SQL_ThreadQuery(g_hSqlTuple, "QueryCreateTable", "CREATE TABLE IF NOT EXISTS kz_pro15 (name VARCHAR(32) NOT NULL, steamid VARCHAR(35) NOT NULL, map VARCHAR(64) NOT NULL, time DOUBLE NOT NULL, cp INT NOT NULL, gc INT NOT NULL, PRIMARY KEY (steamid, map));");
563 SQL_ThreadQuery(g_hSqlTuple, "QueryCreateTable", "CREATE TABLE IF NOT EXISTS kz_nub15 (name VARCHAR(32) NOT NULL, steamid VARCHAR(35) NOT NULL, map VARCHAR(64) NOT NULL, time DOUBLE NOT NULL, cp INT NOT NULL, gc INT NOT NULL, PRIMARY KEY (steamid, map));");
564 }
565#else
566 for(new i = 0 ; i < 15; ++i)
567 {
568 pro15_times[i] = 999999999.00000
569 nub15_times[i] = 999999999.00000
570 }
571 read_pro15()
572 read_nub15()
573#endif
574}
575
576#if defined USING_SQL
577public QueryCreateTable(iFailState, Handle:hQuery, szError[], iError, iData[], iDataSize, Float:flQueueTime)
578{
579 switch(iFailState)
580 {
581 case TQUERY_CONNECT_FAILED:
582 {
583 log_amx("Failed to connect to database (%i): %s", iError, szError)
584 }
585 case TQUERY_QUERY_FAILED:
586 {
587 log_amx("Error on query for QueryCreateTable() (%i): %s", iError, szError)
588 }
589 default: {
590 // successfully created tables
591 }
592 }
593}
594#endif
595
596public plugin_precache()
597{
598 register_forward(FM_Spawn, "fw_Spawn", 0)
599 set_pev(0, pev_speed, 8192.0)
600
601 new const g_iRemoveEntities[][] = {
602 "func_bomb_target", "info_bomb_target",
603 "hostage_entity", "monster_scientist",
604 "func_hostage_rescue", "info_hostage_rescue",
605 "info_vip_start", "func_vip_safetyzone",
606 "func_escapezone","armoury_entity",
607 "game_player_equip", "player_weaponstrip",
608 "info_deathmatch_start"
609 }
610 g_tRemoveEntities = TrieCreate()
611 for(new i = 0; i < sizeof(g_iRemoveEntities); i++)
612 {
613 TrieSetCell(g_tRemoveEntities, g_iRemoveEntities[i], i)
614 }
615 if(!dir_exists(KZ_PROKREEDZ_DIR))
616 mkdir(KZ_PROKREEDZ_DIR)
617
618 if(!dir_exists(KZ_TOP15_DIR))
619 mkdir(KZ_TOP15_DIR)
620}
621
622public plugin_end()
623{
624 TrieDestroy(g_tStartTargets)
625 TrieDestroy(g_tFinishTargets)
626 TrieDestroy(g_tWeaponCommands)
627}
628
629public client_connect(id)
630{
631 g_iCheckpointNum[id] = 0
632 g_iGoCheckNum[id] = 0
633 g_bPlayerSpec[id] = false
634 g_bPlayerPaused[id] = false
635 g_iPlayerPauseTime[id] = 0.0
636 g_iPlayerTime[id] = 0.0
637 g_bPlayerStart[id] = false
638 g_bFirstSpawn[id] = true
639 g_bHasScout[id] = false
640 g_iBunnyHop[id] = 0
641 g_bShowTimer[id] = true
642 g_bPlayerIsAdmin[id] = false
643 g_bStartPosition[id] = false
644 g_iTarget[id] = 0
645 get_user_name(id, g_iPlayerName[id], 31)
646}
647
648public client_putinserver(id)
649{
650 is_plr_connected[id] = true
651
652 if(!is_user_bot(id))
653 {
654 if(get_user_flags(id) & KZ_ACCESS)
655 {
656 g_bPlayerIsAdmin[id] = true
657 }
658 }
659 else
660 {
661 is_plr_bot[id] = true
662 }
663}
664
665public client_disconnect(id)
666{
667 if(g_bPlayerIsAdmin[id])
668 fm_remove_model_ents(id)
669 g_bPlayerSpec[id] = false
670 is_plr_alive[id] = false
671 is_plr_bot[id] = false
672 is_plr_connected[id] = false
673}
674
675public client_infochanged(id)
676{
677 get_user_info(id, "name", g_iPlayerName[id], 31)
678}
679
680public ev_CheckWeapon(id)
681{
682 static weapon_used[33]
683
684 static weapon_active, weapon_num
685 weapon_active = read_data(1)
686 weapon_num = read_data(2)
687
688 if(!g_bHasScout[id] && !g_bWeapons[id] && is_plr_alive[id])
689 {
690 if(weapon_num == CSW_SCOUT)
691 {
692 ham_strip_weapon(id, "weapon_scout")
693 }
694 }
695 if((weapon_num != weapon_used[id]) && weapon_active && get_pcvar_num(g_kz_weaponspeed))
696 {
697 weapon_used[id] = weapon_num
698
699 static Float:maxspeed, r, g, b, Float:x, Float:y
700 pev(id, pev_maxspeed, maxspeed)
701
702 if(maxspeed < 0.0)
703 maxspeed = 250.0
704
705 GetCvarPosition(g_kz_weaponspeed_xypos, x, y)
706 GetCvarColor(g_kz_weaponspeed_color, r, g, b)
707 set_hudmessage(r, g, b, x, y, _, _, 1.0, _, _, 2)
708 ShowSyncHudMsg(id, g_SyncWeapon, "%L", id, "PKU_WEAPON_SPEED", floatround( maxspeed, floatround_floor))
709 }
710 if(g_bPlayerIsAdmin[id])
711 {
712 fm_set_admin_weaponmodel(id)
713 }
714}
715
716public ev_Health(id)
717{
718 if(!get_pcvar_num(g_kz_godmode))
719 {
720 new Float:fHealth
721 pev(id, pev_health, fHealth)
722 if(fHealth > 255.0)
723 {
724 static r, g, b, Float:x, Float:y
725 GetCvarPosition(g_kz_showhealth_xypos, x, y)
726 GetCvarColor(g_kz_showhealth_color, r, g, b)
727 set_hudmessage(r, g, b, x, y, 0, _, 2.0, _, _, 2)
728 ShowSyncHudMsg(id, g_SyncShowHealth, "HP: %d", floatround(fHealth))
729 }
730 }
731}
732
733public cmd_help(id)
734{
735 if(get_pcvar_num(g_kz_help))
736 {
737 static MOTD[2048], MLTITEL[24], Pos
738
739 formatex(MLTITEL,23,"%L", id, "PKU_IMOTD_HELP_TITEL")
740
741 Pos = formatex(MOTD,sizeof MOTD - 1,"<style type=^"text/css^"><!--.h1 { color:#228B22;font-weight:bold;};.h2 { color:#FFFFFF; font-weight:bold; };font-family: Times New Roman}--></style><body bgcolor=^"#000000^"><table width=^"100%%^" border=^"0^">")
742 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_HELP_MENU")
743 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /menu")
744 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_SCOUT")
745 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /scout")
746 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_USP")
747 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /usp")
748 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_TOP15")
749 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /nub15")
750 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /pro15")
751 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_CHECKPOINT")
752 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /checkpoint")
753 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /cp")
754 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_GOCHECK")
755 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /gocheck")
756 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /tp")
757 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_STUCK")
758 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /stuck")
759 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /unstuck")
760 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_START")
761 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /start")
762 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /respawn")
763 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_RESET")
764 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /reset")
765 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_PAUSE")
766 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /pause")
767 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_SPEC")
768 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /spec")
769 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_SHOWKEYS")
770 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /showkeys")
771 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"%L", id, "PKU_IMOTD_WEAPONS")
772 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /weapons")
773 Pos += formatex(MOTD[Pos],sizeof MOTD - 1 - Pos,"<tr><td class=h2>say /drop")
774
775 show_motd(id,MOTD,MLTITEL)
776 }
777 return PLUGIN_CONTINUE
778}
779
780public cmd_top15(id)
781{
782 kz_colorchat(id, green,"^x03Top15: ^x01'^x04/pro15^x01'^x03 - ^x01'^x04/nub15^x01'")
783}
784
785public cmd_showplayerkeys(id)
786{
787 g_bShowKeys[id] = !g_bShowKeys[id]
788}
789
790public cmd_toggle_nvg(id)
791{
792 g_bPlayerNvgUse[id] = !g_bPlayerNvgUse[id]
793
794 if(get_pcvar_num(g_kz_nvg_enabled))
795 {
796 kz_set_nvg_msg(id, false)
797
798 if(g_bPlayerNvgUse[id])
799 kz_make_nvg(id)
800 else
801 kz_remove_nvg(id)
802 }
803 else
804 {
805 kz_set_nvg_msg(id, g_bPlayerNvgUse[id])
806 }
807 if(g_bPlayerNvgUse[id])
808 emit_sound(id, CHAN_ITEM, "items/nvg_on.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
809 else
810 emit_sound(id, CHAN_ITEM, "items/nvg_off.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
811
812 return PLUGIN_HANDLED
813}
814
815public cmd_restart(id)
816{
817 if(g_bPlayerPaused[id] || !is_plr_alive[id])
818 return PLUGIN_HANDLED
819
820 cmd_reset(id)
821 if(g_bStartPos)
822 {
823 PlayerSpawnPost(id)
824 set_pev(id, pev_velocity, Float:{0.0, 0.0, 0.0})
825 engfunc(EngFunc_SetOrigin, id, g_fStartPosition)
826 }
827 else
828 {
829 if(g_bStartPosition[id])
830 {
831 PlayerSpawnPost(id)
832 set_pev(id, pev_velocity, Float:{0.0, 0.0, 0.0})
833 engfunc(EngFunc_SetOrigin, id, g_fPlayerStartPosition[id])
834 }
835 else
836 ExecuteHamB(Ham_CS_RoundRespawn, id)
837 }
838 return PLUGIN_HANDLED
839}
840
841public cmd_reset(id)
842{
843 if(g_bPlayerPaused[id] || !is_plr_alive[id])
844 return PLUGIN_HANDLED
845
846 if(g_bPlayerStart[id])
847 kz_colorchat(id, green,"%L", id, "PKU_CMD_RESET")
848
849 g_iCheckpointNum[id] = 0
850 g_iGoCheckNum[id] = 0
851 g_iPlayerPauseTime[id] = 0.0
852 g_iPlayerTime[id] = 0.0
853 g_bPlayerStart[id] = false
854 set_pev(id, pev_frags, 0.0)
855 cs_set_user_deaths(id, 0)
856 return PLUGIN_HANDLED
857}
858
859public cmd_drop(id)
860{
861 if(is_plr_alive[id] && g_bWeapons[id] && !g_bPlayerPaused[id])
862 kz_set_weapons(id)
863}
864
865public cmd_weapons(id)
866{
867 if(!get_pcvar_num(g_kz_weapons))
868 return PLUGIN_HANDLED
869
870 if(is_plr_alive[id] && !g_bPlayerPaused[id])
871 {
872 new szWeaponName[20]
873 for(new iCswId = CSW_P228; iCswId <= CSW_P90; iCswId++)
874 {
875#if !defined GIVE_GRENADES
876 if(SKIP_WEAPONS & (1<<iCswId))
877 continue
878#endif
879 if(!user_has_weapon(id, iCswId) && get_weaponname(iCswId, szWeaponName, 19))
880 {
881 give_item(id, szWeaponName)
882 g_bWeapons[id] = true
883 DetectCheat(id,"Weapons")
884 }
885 }
886 }
887 return PLUGIN_HANDLED_MAIN
888}
889
890public cmd_scout(id)
891{
892 if(!get_pcvar_num(g_kz_scout))
893 {
894 kz_colorchat(id, green,"%L", id, "PKU_SCOUT_OFF")
895 return PLUGIN_HANDLED
896 }
897 if(!is_plr_alive[id])
898 return PLUGIN_HANDLED
899
900 if(!g_bHasScout[id])
901 {
902 if(g_iCheckpointNum[id] > CP_MAX_PRO || !g_bPlayerStart[id])
903 {
904 give_item(id,"weapon_scout")
905 g_bHasScout[id] = true
906 }
907 else
908 {
909 give_item(id,"weapon_scout")
910 g_bHasScout[id] = true
911 kz_colorchat(id, green,"%L", id, "PKU_PRO_OFF")
912 }
913 }
914 else
915 {
916 if(user_has_weapon(id, CSW_SCOUT))
917 {
918 g_bHasScout[id] = true
919 kz_colorchat(id, green,"%L", id, "PKU_SCOUT_HAS")
920 }
921 else
922 {
923 give_item(id,"weapon_scout")
924 g_bHasScout[id] = true
925 }
926 }
927 return PLUGIN_CONTINUE
928}
929
930public cmd_usp(id)
931{
932 if(!is_plr_alive[id])
933 return PLUGIN_HANDLED
934
935 if(user_has_weapon(id, CSW_USP))
936 {
937 kz_colorchat(id, green,"%L", id, "PKU_USP_HAS")
938 }
939 else
940 {
941 give_item(id,"weapon_usp")
942 }
943 return PLUGIN_CONTINUE
944}
945
946public cmd_pause(id)
947{
948 if(!get_pcvar_num(g_kz_pause))
949 {
950 kz_colorchat(id, green,"%L", id, "PKU_PAUSE_OFF")
951 return PLUGIN_HANDLED
952 }
953 if(g_bPlayerStart[id] && is_plr_alive[id])
954 {
955 if(!g_bPlayerPaused[id])
956 {
957 g_iPlayerPauseTime[id] += (get_gametime() - g_iPlayerTime[id])
958 g_bPlayerPaused[id] = true
959 g_iPlayerTime[id] = 0.0
960
961 set_pev(id, pev_flags, pev(id, pev_flags) | FL_FROZEN)
962 if(!get_pcvar_num(g_kz_semiclip))
963 {
964 set_pev(id, pev_solid, SOLID_NOT)
965 }
966 if(g_bPlayerIsAdmin[id])
967 {
968 set_pev(id, pev_rendermode, kRenderTransTexture)
969 set_pev(id, pev_renderamt, 0.0)
970 set_rendering(g_iEntPlayerModel[id], kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 40)
971 set_rendering(g_iEntWeaponModel[id], kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 40)
972 }
973 else
974 {
975 set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 40)
976 }
977 }
978 else
979 {
980 g_bPlayerPaused[id] = false
981 g_iPlayerTime[id] = get_gametime()
982
983 set_pev(id, pev_flags, pev(id, pev_flags) & ~FL_FROZEN)
984
985 if(!get_pcvar_num(g_kz_semiclip))
986 {
987 set_pev(id, pev_solid, SOLID_SLIDEBOX)
988 }
989 if(g_bPlayerIsAdmin[id])
990 {
991 set_rendering(g_iEntPlayerModel[id])
992 set_rendering(g_iEntWeaponModel[id])
993 if(get_pcvar_num(g_kz_adminglow))
994 set_task(1.5,"AdminGlow", id + TASK_ADMINGLOW)
995 }
996 else
997 {
998 set_rendering(id)
999 }
1000 }
1001 }
1002 else
1003 {
1004 kz_colorchat(id, green,"%L", id, "PKU_PAUSE_USE")
1005 }
1006 return PLUGIN_CONTINUE
1007}
1008
1009public cmd_spec(id)
1010{
1011 if(!get_pcvar_num(g_kz_spec))
1012 {
1013 kz_colorchat(id, green,"%L", id, "PKU_SPEC_OFF")
1014 return PLUGIN_HANDLED
1015 }
1016 if(is_plr_alive[id])
1017 {
1018 if (g_bPlayerStart[id])
1019 {
1020 if(!g_bPlayerPaused[id])
1021 {
1022 g_iPlayerPauseTime[id] += (get_gametime() - g_iPlayerTime[id])
1023 g_bPlayerPaused[id] = true
1024 g_iPlayerTime[id] = 0.0
1025 }
1026 }
1027 pev(id, pev_health, g_iPlayerHealth[id])
1028 pev(id, pev_origin, g_fSpecPosition[id])
1029 cs_set_user_team(id, CS_TEAM_SPECTATOR)
1030 set_pev(id, pev_solid, SOLID_NOT)
1031 set_pev(id, pev_movetype, MOVETYPE_FLY)
1032 set_pev(id, pev_effects, EF_NODRAW)
1033 set_pev(id, pev_deadflag, DEAD_DEAD)
1034 set_pev(id, pev_flags, pev(id, pev_flags) & ~FL_FROZEN)
1035 set_user_teaminfo(id, "SPECTATOR")
1036 is_plr_alive[id] = false
1037 g_bPlayerSpec[id] = true
1038 }
1039 else
1040 {
1041 if(g_bPlayerStart[id])
1042 {
1043 if(g_bPlayerPaused[id])
1044 {
1045 g_bPlayerPaused[id] = false
1046 g_iPlayerTime[id] = get_gametime()
1047 }
1048 }
1049 cs_set_user_team(id, CS_TEAM_CT)
1050 set_user_teaminfo(id, "CT")
1051 fw_PlayerKilled(id)
1052 }
1053 return PLUGIN_CONTINUE
1054}
1055
1056public cmd_checkpoint(id)
1057{
1058 if (!get_pcvar_num(g_kz_checkpoints))
1059 {
1060 kz_colorchat(id, green,"%L", id, "PKU_CP_OFF")
1061 return PLUGIN_HANDLED
1062 }
1063 if(!is_plr_alive[id] || g_bPlayerPaused[id])
1064 return PLUGIN_HANDLED
1065
1066 new Float:vVelocity[3]
1067 pev(id, pev_velocity, vVelocity)
1068
1069 if(vVelocity[2] != 0)
1070 {
1071 kz_colorchat(id, green,"%L", id, "PKU_CP_FALL")
1072 return PLUGIN_HANDLED
1073 }
1074 if(g_iCheckpointNum[id] == 0)
1075 {
1076 pev(id,pev_origin,g_fCheckpoints[id])
1077 }
1078 else
1079 {
1080 g_fCheckStuck[id] = g_fCheckpoints[id]
1081 pev(id,pev_origin,g_fCheckpoints[id])
1082 }
1083 g_iCheckpointNum[id]++
1084 kz_colorchat(id, green,"%L", id, "PKU_CP_CREATE")
1085
1086 if(g_bPlayerUsedStuck[id])
1087 g_bPlayerUsedStuck[id] = false
1088 if(g_iCheckpointNum[id] == CP_MAX_PRO + 1 && g_bPlayerStart[id] && !g_bHasScout[id])
1089 {
1090 kz_colorchat(id, green,"%L", id, "PKU_PRO_OFF")
1091 kz_colorchat(id, green,"%L", id, "PKU_CP_TO_MUCH")
1092 }
1093 return PLUGIN_HANDLED
1094}
1095
1096public cmd_gocheck(id)
1097{
1098 if (!get_pcvar_num(g_kz_checkpoints))
1099 {
1100 kz_colorchat(id, green,"%L", id, "PKU_CP_OFF")
1101 return PLUGIN_HANDLED
1102 }
1103 if(!is_plr_alive[id] || g_bPlayerPaused[id])
1104 return PLUGIN_HANDLED
1105
1106 if(g_iCheckpointNum[id] == 0)
1107 {
1108 kz_colorchat(id, green,"%L", id, "PKU_CP_NULL")
1109 return PLUGIN_HANDLED
1110 }
1111 if(!get_pcvar_num(g_kz_semiclip))
1112 {
1113 new Float:origin[3]
1114 for(new i = 1 ; i <= g_iMaxPlayers ; i++)
1115 {
1116 if(id != i && is_plr_connected[i] && is_plr_alive[id])
1117 {
1118 pev(i,pev_origin,origin)
1119 if(get_distance_f(g_fCheckpoints[id],origin) <= CP_DISTANCE)
1120 {
1121 kz_colorchat(id, green,"%L", id, "PKU_CP_BUSY")
1122 return PLUGIN_HANDLED
1123 }
1124 }
1125 }
1126 }
1127 engfunc(EngFunc_SetOrigin,id,g_fCheckpoints[id])
1128 set_pev(id,pev_velocity,Float:{0.0,0.0,0.0})
1129 set_user_duck(id)
1130 set_pev(id,pev_gravity,1.0)
1131 g_iGoCheckNum[id]++
1132
1133 return PLUGIN_HANDLED
1134}
1135
1136public cmd_stuck(id)
1137{
1138 if (!get_pcvar_num(g_kz_checkpoints) || !is_plr_alive[id] || g_bPlayerPaused[id])
1139 return PLUGIN_HANDLED
1140
1141 if(g_iCheckpointNum[id] > 1 && !g_bPlayerUsedStuck[id])
1142 {
1143 if(!get_pcvar_num(g_kz_semiclip))
1144 {
1145 new Float:origin[3]
1146 for(new i = 1 ; i <= g_iMaxPlayers ; i++)
1147 {
1148 if(id != i && is_plr_connected[i] && is_plr_alive[id])
1149 {
1150 pev(i,pev_origin,origin)
1151 if(get_distance_f(g_fCheckStuck[id],origin) <= CP_DISTANCE)
1152 {
1153 kz_colorchat(id, green,"%L", id, "PKU_CP_SOMEONE")
1154 return PLUGIN_HANDLED
1155 }
1156 }
1157 }
1158 }
1159 engfunc(EngFunc_SetOrigin,id,g_fCheckStuck[id])
1160 set_pev(id,pev_velocity,Float:{0.0,0.0,0.0})
1161 set_user_duck(id)
1162 set_pev(id,pev_gravity,1.0)
1163 g_iGoCheckNum[id]++
1164
1165 g_fCheckpoints[id] = g_fCheckStuck[id]
1166 g_bPlayerUsedStuck[id] = true
1167 }
1168 return PLUGIN_HANDLED
1169}
1170
1171public cmd_admin_setstart(id, lvl, cid)
1172{
1173 if(!cmd_access(id, lvl, cid, 1))
1174 return PLUGIN_HANDLED
1175
1176 if(is_plr_alive[id])
1177 {
1178 if(file_exists(g_StartFile))
1179 {
1180 delete_file(g_StartFile)
1181 }
1182 pev(id, pev_origin, g_fStartPosition)
1183 g_bStartPos = true
1184 kz_colorchat(id, green, "%L", id, "PKU_SET_START")
1185
1186 new Data[128]
1187 formatex(Data, 127, "%f %f %f", g_fStartPosition[0], g_fStartPosition[1], g_fStartPosition[2])
1188 write_file(g_StartFile, Data, 0)
1189 }
1190 else
1191 {
1192 kz_colorchat(id, green, "%L", id, "PKU_BE_ALIVE")
1193 }
1194 return PLUGIN_HANDLED
1195}
1196
1197public cmd_admin_delstart(id, lvl, cid)
1198{
1199 if(!cmd_access(id, lvl, cid, 1))
1200 return PLUGIN_HANDLED
1201
1202 if(file_exists(g_StartFile))
1203 {
1204 delete_file(g_StartFile)
1205 }
1206 g_bStartPos = false
1207 kz_colorchat(id, green, "%L", id, "PKU_DEL_START")
1208
1209 return PLUGIN_HANDLED
1210}
1211
1212public cmd_admin_noclip(id, lvl, cid)
1213{
1214 if(read_argc() == 1 || read_argc() == 2)
1215 {
1216 if(!cmd_access(id, lvl, cid, 1))
1217 {
1218 set_pev(id, pev_movetype, MOVETYPE_WALK)
1219 g_bNoclip[id] = false
1220 return PLUGIN_HANDLED
1221 }
1222 g_bNoclip[id] = !g_bNoclip[id]
1223 set_pev(id, pev_movetype, g_bNoclip[id] ? MOVETYPE_NOCLIP : MOVETYPE_WALK)
1224 if(g_bNoclip[id])
1225 DetectCheat(id,"Noclip")
1226 }
1227 else if(read_argc() == 3)
1228 {
1229 if(!cmd_access(id, lvl, cid, 3))
1230 return PLUGIN_HANDLED
1231
1232 new name[32], PkGiveNoclip[192]
1233 get_user_name(id,name,31)
1234
1235 new szarg1[32], szarg2[8], bool:mode
1236 read_argv(1,szarg1,31)
1237 read_argv(2,szarg2,7)
1238 if(equal(szarg2,"on"))
1239 mode = true
1240
1241 if(equal(szarg1,"@ALL"))
1242 {
1243 for(new i = 1; i <= g_iMaxPlayers; i++)
1244 {
1245 if(is_plr_alive[i])
1246 {
1247 g_bNoclip[i] = mode
1248 set_pev(i, pev_movetype, g_bNoclip[i] ? MOVETYPE_NOCLIP : MOVETYPE_WALK )
1249 formatex(PkGiveNoclip,191,"%L", i, g_bNoclip[i] ? "PKU_NOCLIP_AT_ALL" : "PKU_NOCLIP_TAKE_ALL")
1250 kz_colorchat(i, green,"%L", i, "PKU_NOCLIP_GIVE", name, PkGiveNoclip)
1251 if(g_bNoclip[i])
1252 {
1253 DetectCheat(i,"Noclip")
1254 kz_colorchat(i, green,"%L", i, "PKU_NOCLIP_REMOVE")
1255 }
1256 }
1257 }
1258 }
1259 else
1260 {
1261 new pid = cmd_target(id,szarg1,2)
1262 if(pid > 0)
1263 {
1264 g_bNoclip[pid] = mode
1265 set_pev(pid, pev_movetype, g_bNoclip[pid] ? MOVETYPE_NOCLIP : MOVETYPE_WALK )
1266 formatex(PkGiveNoclip,191,"%L", pid, g_bNoclip[pid] ? "PKU_NOCLIP_AT_TARGET" : "PKU_NOCLIP_TAKE_TARGET")
1267 kz_colorchat(pid, green,"%L", pid, "PKU_NOCLIP_GIVE", name, PkGiveNoclip)
1268 if(g_bNoclip[pid])
1269 {
1270 DetectCheat(pid,"Noclip")
1271 kz_colorchat(pid, green,"%L", pid, "PKU_NOCLIP_REMOVE")
1272 }
1273 }
1274 }
1275 }
1276 return PLUGIN_HANDLED
1277}
1278
1279public cmd_admin_gravity(id, lvl, cid)
1280{
1281 if(!cmd_access(id, lvl, cid, 3))
1282 return PLUGIN_HANDLED
1283
1284 new name[32]
1285 get_user_name(id,name,31)
1286
1287 new szarg1[32], szarg2[8], gravity, Float:fgravity
1288 read_argv(1,szarg1,31)
1289 read_argv(2,szarg2,7)
1290 gravity = str_to_num(szarg2)
1291 fgravity = gravity / float(get_pcvar_num(g_sv_gravity))
1292
1293 if(equal(szarg1,"@ALL"))
1294 {
1295 for(new i = 1; i <= g_iMaxPlayers; i++)
1296 {
1297 if(is_plr_connected[i])
1298 {
1299 set_pev(i, pev_gravity, fgravity)
1300 kz_colorchat(i, green,"%L", i, "PKU_GRAVITY_ALL", name, gravity)
1301 if(fgravity != 1.0)
1302 DetectCheat(i,"Gravity")
1303 }
1304 }
1305 }
1306 else
1307 {
1308 new pid = cmd_target(0, szarg1, 2)
1309 if(pid > 0)
1310 {
1311 set_pev(pid, pev_gravity, fgravity)
1312 kz_colorchat(pid, green,"%L", pid, "PKU_GRAVITY_TARGET", name, gravity)
1313 if(fgravity != 1.0)
1314 DetectCheat(pid,"Gravity")
1315 }
1316 }
1317 return PLUGIN_HANDLED
1318}
1319
1320public fw_PlayerKilled(id)
1321{
1322 if(pev_valid(g_iEntWeaponModel[id]))
1323 {
1324 engfunc(EngFunc_RemoveEntity, g_iEntWeaponModel[id])
1325 g_iEntWeaponModel[id] = 0
1326 }
1327 is_plr_alive[id] = false
1328 set_task(0.5,"PlayerRespawn", id + TASK_RESPAWN)
1329}
1330
1331public PlayerRespawn(id)
1332{
1333 id -= TASK_RESPAWN
1334 ExecuteHamB(Ham_CS_RoundRespawn, id)
1335}
1336
1337public fw_PlayerSpawn(id)
1338{
1339 if(!is_user_alive(id))
1340 return
1341
1342 is_plr_alive[id] = true
1343 PlayerSpawnPost(id)
1344 cs_set_user_nvg(id)
1345 set_pdata_int(id, M_RADIOS_LEFT, 0, 5)
1346
1347 if(!g_bPlayerSpec[id])
1348 {
1349 if(g_iCheckpointNum[id] > 0)
1350 {
1351 cmd_gocheck(id)
1352 }
1353 }
1354 else
1355 {
1356 set_pev(id, pev_origin, g_fSpecPosition[id])
1357 set_pev(id, pev_health, g_iPlayerHealth[id])
1358 set_user_duck(id)
1359 g_bPlayerSpec[id] = false
1360 }
1361 if(g_bPlayerIsAdmin[id])
1362 {
1363 new g_vip = get_pcvar_num(g_kz_vip)
1364 switch(g_vip)
1365 {
1366 case 0: fm_set_plr_model(id, "sas")
1367
1368 case 1:
1369 {
1370 fm_set_plr_model(id, "vip")
1371 set_user_scoreattrib(id, 4)
1372 }
1373 case 2:
1374 {
1375 fm_set_plr_model(id, "arctic")
1376 set_user_scoreattrib(id, 4)
1377 }
1378 }
1379 AdminGlow(id)
1380 }
1381 if(get_pcvar_num(g_kz_godmode))
1382 {
1383 set_pev(id, pev_takedamage, 0.0)
1384 }
1385 else
1386 {
1387 set_pev(id, pev_takedamage, 2.0)
1388 }
1389 if(g_bFirstSpawn[id])
1390 {
1391 if(get_pcvar_num(g_kz_help))
1392 set_task(10.0,"PlayerInfo",id + TASK_INFO)
1393 }
1394 g_bFirstSpawn[id] = false
1395}
1396
1397public PlayerSpawnPost(id)
1398{
1399 kz_set_weapons(id)
1400 kz_set_health(id)
1401
1402 if(get_pcvar_num(g_kz_nvg_enabled) && g_bPlayerNvgUse[id])
1403 {
1404 kz_remove_nvg(id)
1405 }
1406}
1407
1408public fw_UseButton(iEnt, id)
1409{
1410 if(!iEnt || id > 32)
1411 return HAM_IGNORED
1412
1413 if(!is_user_alive(id))
1414 return HAM_IGNORED
1415
1416 new target[32]
1417 pev(iEnt, pev_target, target, 31)
1418
1419 if(TrieKeyExists(g_tStartTargets, target))
1420 {
1421 if((pev(id, pev_movetype) == MOVETYPE_NOCLIP))
1422 {
1423 kz_colorchat(id, green,"%L", id, "PKU_NOCLIP_ON")
1424 kz_colorchat(id, green,"%L", id, "PKU_NOCLIP_REMOVE")
1425 return HAM_SUPERCEDE
1426 }
1427 g_bStartPosition[id] = false
1428 if(get_pcvar_num(g_kz_autostart) && !g_bStartPos)
1429 {
1430 pev(id, pev_origin, g_fPlayerStartPosition[id])
1431 g_bStartPosition[id] = true
1432 }
1433 cmd_reset(id)
1434 if(g_bWeapons[id])
1435 kz_set_weapons(id)
1436 set_pev(id, pev_gravity, 1.0)
1437 kz_set_health(id)
1438
1439 if(!g_bPlayerIsAdmin[id])
1440 {
1441 kz_callfunc(id, KZ_HOOK , PLUGIN_HOOK, "0")
1442 kz_callfunc(id, KZ_JETPACK , PLUGIN_JETPACK, "0")
1443 }
1444 kz_callfunc(id, KZ_HOOK_OFF , PLUGIN_HOOK, "")
1445 kz_callfunc(id, KZ_JET_OFF , PLUGIN_JETPACK, "")
1446
1447 if(user_has_weapon(id, CSW_SCOUT))
1448 {
1449 g_bHasScout[id] = true
1450 kz_colorchat(id, green,"%L", id, "PKU_START_AGAIN")
1451 }
1452 else
1453 {
1454 g_bHasScout[id] = false
1455 }
1456 g_bPlayerStart[id] = true
1457 g_iPlayerTime[id] = get_gametime()
1458 kz_colorchat(id, green,"%L", id, "PKU_TIMER_STARTED")
1459
1460 if(get_pcvar_num(g_kz_sounds) == 1 || get_pcvar_num(g_kz_sounds) == 2)
1461 client_cmd(id,"spk %s", g_start_sounds[random(sizeof(g_start_sounds))])
1462 }
1463 else if(TrieKeyExists(g_tFinishTargets, target))
1464 {
1465 if(g_bPlayerStart[id])
1466 {
1467 g_bPlayerStart[id] = false
1468 new Float:kreedztime, imin, Float:isec
1469 kreedztime = get_gametime() - g_iPlayerTime[id] + g_iPlayerPauseTime[id]
1470 imin = floatround(kreedztime , floatround_floor)/60
1471 isec = kreedztime - (60*imin)
1472
1473 new name[32]
1474 get_user_name(id, name, 31)
1475 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_FINISH", name, imin, isec < 10 ? "0" : "", isec, g_iCheckpointNum[id], g_iCheckpointNum[id] == 1 ? "" : "s", g_iGoCheckNum[id], g_iGoCheckNum[id] == 1 ? "" : "s")
1476
1477 if(get_pcvar_num(g_kz_sounds) == 1 || get_pcvar_num(g_kz_sounds) == 3)
1478 client_cmd(0, "spk vox/doop")
1479
1480 if(get_pcvar_num(g_kz_prize) && !g_bPlayerIsAdmin[id])
1481 {
1482 kz_callfunc(id, KZ_HOOK , PLUGIN_HOOK, "1")
1483 if(g_iCheckpointNum[id] == 0)
1484 kz_callfunc(id, KZ_JETPACK , PLUGIN_JETPACK, "1")
1485 }
1486 if(g_iCheckpointNum[id] > CP_MAX_PRO || g_bHasScout[id])
1487 {
1488 check_nub15(id)
1489 }
1490 else
1491 {
1492 check_pro15(id)
1493 }
1494 }
1495 }
1496 return HAM_IGNORED
1497}
1498
1499public fw_ThinkEntity(iEnt)
1500{
1501 if(pev_valid(iEnt))
1502 {
1503 static ClassName[32]
1504 pev(iEnt, pev_classname, ClassName, 31)
1505
1506 if(equal(ClassName, "kz_time_think"))
1507 {
1508 fw_TimeThink()
1509 set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
1510 }
1511 if(equal(ClassName, "kz_player_statustext"))
1512 {
1513 kz_PlayerStausText()
1514 set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
1515 }
1516 }
1517}
1518
1519public fw_TimeThink()
1520{
1521 static id, r, g, b
1522 for(id = 1; id <= g_iMaxPlayers; id++)
1523 {
1524 if(is_plr_connected[id] && is_plr_alive[id] && g_bPlayerStart[id] && !g_bPlayerPaused[id] && g_bShowTimer[id])
1525 {
1526 new Float:kreedztime, imin, Float:isec
1527 kreedztime = get_gametime() - g_iPlayerTime[id] + g_iPlayerPauseTime[id]
1528 imin = floatround(kreedztime , floatround_floor)/60
1529 isec = kreedztime - (60*imin)
1530 GetCvarColor(g_kz_time_color, r, g, b)
1531 set_hudmessage(r, g, b, 0.3, 0.0, _, _, 0.4, _, _, 1)
1532 ShowSyncHudMsg(id, g_SyncTimer, "%L", id, "PKU_TIMER",imin, isec < 10 ? "0" : "", isec, g_iCheckpointNum[id], g_iGoCheckNum[id])
1533 }
1534 }
1535 return PLUGIN_CONTINUE
1536}
1537
1538public kz_Functions()
1539{
1540 static id, r, g, b
1541 for(id = 1; id <= g_iMaxPlayers; id++)
1542 {
1543 if(is_plr_connected[id] && g_bPlayerStart[id] && g_bPlayerPaused[id])
1544 {
1545 GetCvarColor(g_kz_status_color, r, g, b)
1546 if(!g_bPlayerSpec[id])
1547 {
1548 set_hudmessage(r, g, b, -1.0, 0.40, _, _, 1.0, _, _, 1)
1549 ShowSyncHudMsg(id, g_SyncTimer, "%L", id, "PKU_PAUSE")
1550 }
1551 else
1552 {
1553 set_hudmessage(r, g, b, -1.0, 0.8, _, _, 1.0, _, _, 1)
1554 ShowSyncHudMsg(id, g_SyncTimer, "%L", id, "PKU_SPECTATOR_START")
1555 }
1556 }
1557 else if(is_plr_connected[id] && !g_bPlayerStart[id] && g_bPlayerSpec[id])
1558 {
1559 GetCvarColor(g_kz_status_color, r, g, b)
1560 set_hudmessage(r, g, b, -1.0, 0.8, _, _, 1.0, _, _, 1)
1561 ShowSyncHudMsg(id, g_SyncTimer, "%L", id, "PKU_SPECTATOR")
1562 }
1563 if(g_bPlayerIsAdmin[id] && is_plr_alive[id] && get_pcvar_num(g_kz_vip) != 0)
1564 {
1565 set_user_scoreattrib(id, 4)
1566 }
1567 }
1568 return PLUGIN_CONTINUE
1569}
1570
1571public kz_PlayerStausText()
1572{
1573 static id, target, iCvar
1574 iCvar = get_pcvar_num(g_kz_statustext)
1575
1576 for(id = 1; id <= g_iMaxPlayers; id++)
1577 {
1578 if(is_plr_alive[id] || g_iTarget[id] != 0)
1579 {
1580 target = g_iTarget[id]
1581
1582 switch(iCvar)
1583 {
1584 case 0:
1585 {
1586 static r, g, b, Float:x, Float:y
1587 GetCvarPosition(g_kz_statustext_xypos, x, y)
1588 GetCvarColor(g_kz_statustext_color, r, g, b)
1589 set_hudmessage(r, g, b, x, y, _, _, 5.0, _, _, -1)
1590 ShowSyncHudMsg(id, g_SyncStatusText, "%s", g_iPlayerName[target])
1591 }
1592 case 1:
1593 {
1594 static const szStatusText[] = "1 %p2"
1595 message_begin(MSG_ONE_UNRELIABLE, g_StatusText, _, id)
1596 write_byte(0)
1597 write_string(szStatusText)
1598 message_end()
1599 }
1600 }
1601 }
1602 else
1603 {
1604 if(!iCvar)
1605 ClearSyncHud(id, g_SyncStatusText)
1606 }
1607 }
1608}
1609
1610public kz_CreateBot()
1611{
1612 if(get_pcvar_num(g_kz_bot))
1613 {
1614 new players[32],cl
1615 get_players(players,cl,"ach")
1616 new id = find_player("i")
1617
1618 if(get_playersnum() < g_iMaxPlayers - 2 && !id)
1619 {
1620 new BotName[32]
1621 get_pcvar_string(g_kz_botname, BotName, 31)
1622 id = engfunc(EngFunc_CreateFakeClient, BotName)
1623
1624 if(pev_valid(id))
1625 {
1626 engfunc(EngFunc_FreeEntPrivateData, id)
1627 dllfunc(MetaFunc_CallGameEntity, "player", id)
1628 set_user_info(id, "rate", "3500")
1629 set_user_info(id, "cl_updaterate", "25")
1630 set_user_info(id, "cl_lw", "1")
1631 set_user_info(id, "cl_lc", "1")
1632 set_user_info(id, "cl_dlmax", "128")
1633 set_user_info(id, "cl_righthand", "1")
1634 set_user_info(id, "_vgui_menus", "0")
1635 set_user_info(id, "_ah", "0")
1636 set_user_info(id, "dm", "0")
1637 set_user_info(id, "tracker", "0")
1638 set_user_info(id, "friends", "0")
1639 set_user_info(id, "*bot", "1")
1640 set_pev(id, pev_flags, pev(id, pev_flags) | FL_FAKECLIENT)
1641 set_pev(id, pev_colormap, id)
1642
1643 new MsgBot[128]
1644 dllfunc(DLLFunc_ClientConnect, id, BotName, "127.0.0.1", MsgBot)
1645 dllfunc(DLLFunc_ClientPutInServer, id)
1646 cs_set_user_team(id, CS_TEAM_CT)
1647 dllfunc(DLLFunc_Spawn,id)
1648 }
1649 }
1650 else if(get_playersnum() == g_iMaxPlayers - 1 && id)
1651 {
1652 set_pev(id, pev_effects, (pev(id, pev_effects) | 1))
1653 server_cmd("kick #%d",get_user_userid(id))
1654 }
1655 else if(is_plr_bot[id] && id)
1656 {
1657 set_pev(id, pev_effects, (pev(id, pev_effects) | 128))
1658 set_pev(id, pev_solid, SOLID_NOT)
1659 set_pev(id, pev_takedamage, 0.0)
1660 engfunc(EngFunc_SetOrigin, id, Float:{999999,999999,999999})
1661 set_user_teaminfo(id, "SPECTATOR")
1662 }
1663 }
1664}
1665
1666public fw_PlayerJump(id)
1667{
1668 if(is_plr_alive[id])
1669 {
1670 if(get_pcvar_num(g_kz_bhop) != 0 && g_iBunnyHop[id] != 0)
1671 {
1672 set_pev(id, pev_fuser2, 0.0)
1673 DetectCheat(id,"BunnyHop")
1674 }
1675 if(get_pcvar_num(g_kz_bhop) == 2 && g_iBunnyHop[id] == 2)
1676 {
1677 static OldButtons
1678 OldButtons = pev(id, pev_oldbuttons)
1679 if(OldButtons & IN_JUMP)
1680 {
1681 static Flags
1682 Flags = pev(id, pev_flags)
1683 if(Flags & FL_ONGROUND && !(Flags & FL_WATERJUMP) && pev(id, pev_waterlevel) < 2)
1684 {
1685 static Float:vVelocity[3]
1686 pev(id, pev_velocity, vVelocity)
1687 vVelocity[2] += 250.0
1688 set_pev(id, pev_velocity, vVelocity)
1689 set_pev(id, pev_oldbuttons, OldButtons & ~IN_JUMP)
1690 set_pev(id, pev_gaitsequence, 6)
1691 }
1692 }
1693 }
1694 }
1695}
1696
1697public fw_Weaponbox(iEnt)
1698{
1699 set_pev(iEnt, pev_flags, FL_KILLME)
1700 dllfunc(DLLFunc_Think, iEnt)
1701 return HAM_IGNORED
1702}
1703
1704public fw_ClientKill(id)
1705{
1706 if(get_pcvar_num(g_kz_nokill))
1707 {
1708 console_print(id,"%L", id, "PKU_KILL_OFF")
1709 return FMRES_SUPERCEDE
1710 }
1711 return FMRES_IGNORED
1712}
1713
1714public fw_PreThink_Post(id)
1715{
1716 if(get_pcvar_num(g_kz_semiclip))
1717 {
1718 if(!is_plr_alive[id])
1719 return
1720
1721 static i
1722 for(i = 1; i <= g_iMaxPlayers; i++)
1723 {
1724 if(id != i)
1725 {
1726 if(is_plr_alive[i])
1727 set_pev(i, pev_solid, SOLID_NOT)
1728 }
1729 }
1730 }
1731}
1732
1733public client_PostThink(id)
1734{
1735 if(get_pcvar_num(g_kz_semiclip))
1736 {
1737 if(!is_plr_alive[id])
1738 return
1739
1740 static i
1741 for(i = 1; i <= g_iMaxPlayers; i++)
1742 {
1743 if(id != i)
1744 {
1745 if(is_plr_alive[i])
1746 set_pev(i, pev_solid, SOLID_SLIDEBOX)
1747 }
1748 }
1749 }
1750}
1751
1752public fw_AddToFullPack_Post(es, e, ent, host, hostflags, player, pSet)
1753{
1754 if(!get_orig_retval() || !is_plr_alive[host] && !g_bPlayerSpec[host] || !get_pcvar_num(g_kz_semiclip))
1755 {
1756 return FMRES_IGNORED
1757 }
1758
1759 if(player)
1760 {
1761 if(host != ent)
1762 {
1763 set_es(es, ES_Solid, SOLID_NOT)
1764
1765 if(get_pcvar_num(g_kz_transparency) && is_plr_connected[ent])
1766 {
1767 if(g_bPlayerIsAdmin[ent] || is_plr_bot[ent])
1768 {
1769 set_es(es, ES_RenderMode, kRenderTransTexture)
1770 set_es(es, ES_RenderAmt, 0)
1771 return FMRES_IGNORED
1772 }
1773 if(g_bPlayerPaused[ent])
1774 return FMRES_IGNORED
1775
1776 static Float:flDistance
1777 flDistance = entity_range(host, ent)
1778 if(flDistance < 512.0)
1779 {
1780 set_es(es, ES_RenderMode, kRenderTransAlpha)
1781 set_es(es, ES_RenderAmt, floatround(flDistance)/2)
1782 }
1783 }
1784 }
1785 }
1786 else
1787 {
1788 static owner ; owner = pev(ent, pev_owner)
1789 if((1 <= owner <= g_iMaxPlayers) && (ent == g_iEntPlayerModel[owner] || ent == g_iEntWeaponModel[owner]))
1790 {
1791 set_es(es, ES_Solid, SOLID_NOT)
1792
1793 if(get_pcvar_num(g_kz_transparency) && is_plr_connected[owner])
1794 {
1795 if(g_bPlayerPaused[owner])
1796 return FMRES_IGNORED
1797
1798 static Float:flDistance
1799 flDistance = entity_range(host, owner)
1800 if(flDistance < 512.0)
1801 {
1802 set_es(es, ES_RenderMode, kRenderTransAlpha)
1803 set_es(es, ES_RenderAmt, floatround(flDistance)/2)
1804 }
1805 }
1806 }
1807 }
1808 return FMRES_IGNORED
1809}
1810
1811public client_command(id)
1812{
1813 new sArg[13]
1814 read_argv(0, sArg, 12)
1815 strtolower(sArg)
1816
1817 if(TrieKeyExists(g_tWeaponCommands, sArg))
1818 {
1819 return PLUGIN_HANDLED
1820 }
1821 return PLUGIN_CONTINUE
1822}
1823
1824public fw_EmitSound(iEnt, channel, const sound[])
1825{
1826 if(TrieKeyExists(g_tdoorSnd, sound))
1827 {
1828 if(get_pcvar_num(g_kz_doorsound))
1829 return FMRES_SUPERCEDE
1830 }
1831 else if(TrieKeyExists(g_tpainSnd, sound))
1832 {
1833 if(get_pcvar_num(g_kz_painsound))
1834 return FMRES_SUPERCEDE
1835 }
1836 else if(TrieKeyExists(g_twaterSnd, sound))
1837 {
1838 if(get_pcvar_num(g_kz_watersound))
1839 return FMRES_SUPERCEDE
1840 }
1841 return FMRES_IGNORED
1842}
1843
1844public fw_Spawn(iEnt)
1845{
1846 if(!pev_valid(iEnt))
1847 {
1848 return FMRES_IGNORED
1849 }
1850 new ClassName[32]
1851 pev(iEnt, pev_classname, ClassName, 31)
1852
1853 if(TrieKeyExists(g_tRemoveEntities, ClassName))
1854 {
1855 engfunc(EngFunc_RemoveEntity, iEnt)
1856 return FMRES_SUPERCEDE
1857 }
1858 return FMRES_IGNORED
1859}
1860
1861public fw_GameDescription()
1862{
1863 forward_return(FMV_STRING, "Kreedz Drunks")
1864 return FMRES_SUPERCEDE
1865}
1866
1867public fw_StartFrame()
1868{
1869 if(!get_pcvar_num(g_kz_showkeys))
1870 return FMRES_IGNORED
1871
1872 static Float:fGameTime, Float:fDelay
1873 fGameTime = get_gametime()
1874 fDelay = 0.1
1875
1876 if((fShowKeyTime + fDelay) <= fGameTime)
1877 {
1878 kz_keyinfo()
1879 fShowKeyTime = fGameTime
1880 }
1881 static id
1882 for(id = 1; id <= g_iMaxPlayers; id++)
1883 {
1884 if(is_plr_alive[id])
1885 {
1886 new Button = pev(id, pev_button)
1887 if(Button & IN_FORWARD)
1888 g_iPlayerKeys[id] |= IN_FORWARD
1889 if(Button & IN_BACK)
1890 g_iPlayerKeys[id] |= IN_BACK
1891 if(Button & IN_MOVELEFT)
1892 g_iPlayerKeys[id] |= IN_MOVELEFT
1893 if(Button & IN_MOVERIGHT)
1894 g_iPlayerKeys[id] |= IN_MOVERIGHT
1895 if(Button & IN_DUCK)
1896 g_iPlayerKeys[id] |= IN_DUCK
1897 if(Button & IN_JUMP )
1898 g_iPlayerKeys[id] |= IN_JUMP
1899 }
1900 }
1901 return FMRES_IGNORED
1902}
1903
1904public kz_keyinfo()
1905{
1906 static id
1907 for(id = 1; id <= g_iMaxPlayers; id++)
1908 {
1909 if(is_plr_alive[id])
1910 {
1911 formatex(plr_key[id], 63, "%s^n %s %s %s %s ^n %s",
1912 g_iPlayerKeys[id] & IN_FORWARD ? "W" : " .",
1913 g_iPlayerKeys[id] & IN_MOVELEFT ? "A" : ".",
1914 g_iPlayerKeys[id] & IN_BACK ? "S" : ".",
1915 g_iPlayerKeys[id] & IN_MOVERIGHT ? "D" : ".",
1916 g_iPlayerKeys[id] & IN_DUCK ? "DUCK" : "- ",
1917 g_iPlayerKeys[id] & IN_JUMP ? "JUMP" : " . ")
1918
1919 g_iPlayerKeys[id] = 0
1920 }
1921 }
1922 static i, target
1923 for(i = 1; i <= g_iMaxPlayers; i++)
1924 {
1925 if(is_plr_alive[i])
1926 {
1927 if(g_bShowKeys[i])
1928 kz_showkeysmsg(i)
1929 }
1930 else
1931 {
1932 new specmode = pev(i, pev_iuser1)
1933 if(specmode == 2 || specmode == 4)
1934 {
1935 target = pev(i, pev_iuser2)
1936 if(target && target != i)
1937 kz_showkeysmsg(i)
1938
1939 }
1940 }
1941 }
1942 return PLUGIN_CONTINUE
1943}
1944
1945public kz_showkeysmsg(id)
1946{
1947 if(!id) return
1948
1949 new bool:g_bShowOwnKeys = false
1950
1951 if(is_plr_alive[id] && g_bShowKeys[id])
1952 g_bShowOwnKeys = true
1953
1954 new target
1955 if(g_bShowOwnKeys)
1956 target = id
1957 else
1958 {
1959 new specmode = pev(id, pev_iuser1)
1960 if(specmode == 2 || specmode == 4)
1961 {
1962 target = pev(id, pev_iuser2)
1963 }
1964 }
1965 if(!target)
1966 return
1967
1968 new Msg[256]
1969 formatex(Msg, 255, "%s", plr_key[target][0])
1970 static r, g, b, Float:x, Float:y
1971 GetCvarPosition(g_kz_showkeys_xypos, x, y)
1972 GetCvarColor(g_kz_showkeys_color, r, g, b)
1973 set_hudmessage(r, g, b, x, y, 0, _, 0.1, _, _, 3)
1974 ShowSyncHudMsg(id, g_SyncShowKeys, Msg)
1975}
1976
1977public DetectCheat(id, reason[])
1978{
1979 if(get_pcvar_num(g_kz_cheatdetect) && g_bPlayerStart[id])
1980 {
1981 kz_colorchat(id, green, "%L", id, "PKU_CHEAT_DETECTED", reason)
1982 g_bPlayerStart[id] = false
1983 }
1984}
1985
1986public AdminGlow(id)
1987{
1988 new pid = id < TASK_ADMINGLOW ? id : id - TASK_ADMINGLOW
1989 if(get_pcvar_num(g_kz_adminglow))
1990 {
1991 set_rendering(g_iEntPlayerModel[pid], kRenderFxGlowShell, random_num(0,255), random_num(0,255), random_num(0,255), kRenderNormal, 25)
1992 }
1993 else
1994 {
1995 set_rendering(g_iEntPlayerModel[pid])
1996 }
1997}
1998
1999public kz_set_nvg(id)
2000{
2001 id -= TASK_NVG
2002
2003 if(get_pcvar_num(g_kz_nvg_enabled))
2004 {
2005 if(!is_plr_alive[id])
2006 {
2007 kz_remove_nvg(id)
2008 return
2009 }
2010 static Float:fOrigin[3], r, g, b
2011
2012 pev(id, pev_origin, fOrigin)
2013 GetCvarColor(g_kz_nvg_color, r, g, b)
2014 kz_make_lgt(id, fOrigin, r, g, b)
2015 }
2016 else
2017 {
2018 kz_remove_nvg(id)
2019 }
2020}
2021
2022public GetCvarColor(cvar, &r, &g, &b)
2023{
2024 static colors[16], piece[5]
2025 get_pcvar_string(cvar, colors, 15)
2026
2027 strbreak(colors, piece, 4, colors, 15)
2028 r = str_to_num(piece)
2029
2030 strbreak(colors, piece, 4, colors, 15)
2031 g = str_to_num(piece)
2032 b = str_to_num(colors)
2033}
2034
2035public GetCvarPosition(cvar, &Float:x, &Float:y)
2036{
2037 static coords[16], piece[10]
2038 get_pcvar_string(cvar, coords, 15)
2039
2040 strbreak(coords, piece, 9, coords, 15)
2041 x = str_to_float(piece)
2042 y = str_to_float(coords)
2043}
2044
2045public PlayerInfo(id)
2046{
2047 id -= TASK_INFO
2048 kz_colorchat(id, green, "%L", id, "PKU_HELP")
2049}
2050
2051public BlockCommands(id)
2052{
2053 return PLUGIN_HANDLED
2054}
2055
2056public Hook()
2057{
2058 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_BEAT_MAP_A")
2059 set_task(get_pcvar_float(g_kz_advert_time),"JetPack")
2060}
2061
2062public JetPack()
2063{
2064 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_BEAT_MAP_B")
2065 set_task(get_pcvar_float(g_kz_advert_time),"Hook")
2066}
2067
2068public MsgHealth(Msgid, Dest, id)
2069{
2070 if(get_msg_arg_int(1) >= 255)
2071 {
2072 set_msg_arg_int(1, ARG_BYTE, 255)
2073 }
2074}
2075
2076public MsgStatusIcon(Msgid, Dest, id)
2077{
2078 new szBuyzoneIcon[8]
2079 get_msg_arg_string(2, szBuyzoneIcon, 7)
2080
2081 if(equal(szBuyzoneIcon, "buyzone"))
2082 {
2083 return PLUGIN_HANDLED
2084 }
2085 return PLUGIN_CONTINUE
2086}
2087
2088public MsgStatusValue(Msgid, Dest, id)
2089{
2090 if(get_msg_arg_int(1) == 2)
2091 {
2092 g_iTarget[id] = get_msg_arg_int(2)
2093 }
2094}
2095
2096public MsgClCorpse()
2097{
2098 static id ; id = get_msg_arg_int(12)
2099
2100 if(g_bPlayerIsAdmin[id] && is_plr_alive[id])
2101 {
2102 set_msg_arg_string(1, g_iPlayerModel[id])
2103 }
2104}
2105
2106public MsgRoundTime(Msgid, Dest, id)
2107{
2108 set_msg_arg_int(1, ARG_SHORT, 0)
2109}
2110
2111public MsgMoney(Msgid, Dest, id)
2112{
2113 new iMoney = get_pcvar_num(g_kz_money)
2114 set_msg_arg_int(1, ARG_LONG, iMoney)
2115 set_pdata_int(id, 115, 0)
2116}
2117
2118public MsgShowMenu(Msgid, Dest, id)
2119{
2120 static iTeamSelect[] = "#Team_Select"
2121 static sMenuCode[sizeof iTeamSelect]
2122 get_msg_arg_string(4, sMenuCode, sizeof sMenuCode - 1)
2123
2124 if(equal(sMenuCode, iTeamSelect))
2125 {
2126 if(ShouldAutoJoin(id))
2127 {
2128 kz_set_autojoin_task(id, Msgid)
2129 return PLUGIN_HANDLED
2130 }
2131 }
2132 return PLUGIN_CONTINUE
2133}
2134
2135public MsgVguiMenu(Msgid, Dest, id)
2136{
2137 if (get_msg_arg_int(1) != 2 || !ShouldAutoJoin(id))
2138 return PLUGIN_CONTINUE
2139
2140 kz_set_autojoin_task(id, Msgid)
2141 return PLUGIN_HANDLED
2142}
2143
2144public PlayerTeamJoin(MenuMsgid[], id)
2145{
2146 id -= TASK_AUTOJOIN
2147
2148 if(get_user_team(id))
2149 return
2150
2151 static g_autojoin ; g_autojoin = get_pcvar_num(g_kz_autojoin)
2152 switch(g_autojoin)
2153 {
2154 case 0:
2155 {
2156 static Team[] = "2", Class[] = "0"
2157 kz_team_join(id, MenuMsgid[0], Team, Class)
2158 }
2159 case 1:
2160 {
2161 static Team[] = "2", Class[] = "5"
2162 kz_team_join(id, MenuMsgid[0], Team, Class)
2163 }
2164 }
2165}
2166
2167public KzPlayerMenu(id)
2168{
2169 new menu[512], szbhop[64], sznoblock[64], szscout[64], szshowtime[64]
2170
2171 new g_smiclip = get_pcvar_num(g_kz_semiclip)
2172 switch(g_smiclip)
2173 {
2174 case 0: formatex(sznoblock,63,"%L", id, "PKU_PM_SEMI_OFF")
2175
2176 case 1: formatex(sznoblock,63,"%L", id, "PKU_PM_SEMI_ON")
2177
2178 }
2179 new g_bhop = get_pcvar_num(g_kz_bhop)
2180 new g_bunny = g_iBunnyHop[id]
2181 switch(g_bhop)
2182 {
2183 case 0: formatex(szbhop,63,"%L", id, "PKU_PM_BHOP_OFF")
2184
2185 case 1:
2186 {
2187 switch(g_bunny)
2188 {
2189 case 0: formatex(szbhop,63,"%L", id, "PKU_PM_BHOP")
2190
2191 case 1: formatex(szbhop,63,"%L", id, "PKU_PM_BHOP_NOSLOW")
2192
2193 }
2194 }
2195 case 2:
2196 {
2197 switch(g_bunny)
2198 {
2199 case 0: formatex(szbhop,63,"%L", id, "PKU_PM_BHOP")
2200
2201 case 1: formatex(szbhop,63,"%L", id, "PKU_PM_BHOP_NOSLOW")
2202
2203 case 2: formatex(szbhop,63,"%L", id, "PKU_PM_BHOP_AUTO")
2204
2205 }
2206 }
2207 }
2208 new g_showtime = g_bShowTimer[id]
2209 switch(g_showtime)
2210 {
2211 case false: formatex(szshowtime,63,"%L", id, "PKU_PM_SHOWTIMER_OFF")
2212
2213 case true: formatex(szshowtime,63,"%L", id, "PKU_PM_SHOWTIMER_ON")
2214
2215 }
2216 new g_scout = get_pcvar_num(g_kz_scout)
2217 switch(g_scout)
2218 {
2219 case 0: formatex(szscout,63,"%L", id, "PKU_PM_SCOUT_OFF")
2220
2221 case 1: formatex(szscout,63,"%L", id, "PKU_PM_SCOUT_ON")
2222
2223 }
2224 formatex(menu,512,"%L", id, "PKU_PM_MENU",sznoblock, szbhop, szshowtime, szscout)
2225 show_menu(id,MENU_KEYS,menu, -1, "ProKreedz v2.4 - Playermenu")
2226}
2227
2228public PlayerMenuHandler(id,key)
2229{
2230 switch(key)
2231 {
2232 case 0: KzPlayerMenu(id)
2233
2234 case 1:
2235 {
2236 new g_bhop = get_pcvar_num(g_kz_bhop)
2237 new g_bunny = g_iBunnyHop[id]
2238 switch(g_bhop)
2239 {
2240 case 1:
2241 {
2242 switch(g_bunny)
2243 {
2244 case 0: g_iBunnyHop[id] = 1
2245
2246 case 1: g_iBunnyHop[id] = 0
2247
2248 }
2249 }
2250 case 2:
2251 {
2252 switch(g_bunny)
2253 {
2254 case 0: g_iBunnyHop[id] = 1
2255
2256 case 1: g_iBunnyHop[id] = 2
2257
2258 case 2: g_iBunnyHop[id] = 0
2259
2260 }
2261 }
2262 }
2263 KzPlayerMenu(id)
2264 }
2265 case 2:
2266 {
2267 g_bShowTimer[id] = !g_bShowTimer[id]
2268 KzPlayerMenu(id)
2269 }
2270 case 3: cmd_scout(id)
2271
2272 case 4: cmd_usp(id)
2273
2274 case 5: cmd_restart(id)
2275
2276 case 6: cmd_reset(id)
2277
2278 case 7: cmd_checkpoint(id)
2279
2280 case 8: cmd_gocheck(id)
2281
2282 case 9: show_menu(id,0,"")
2283
2284 }
2285}
2286
2287public KzAdminMenuShow(id, lvl, cid)
2288{
2289 if(cmd_access(id, lvl, cid, 1))
2290 KzAdminMenu(id)
2291 return PLUGIN_HANDLED
2292}
2293
2294public KzAdminMenu(id)
2295{
2296 new menu[512], szcheckpoints[32], szgodmode[32], szautojoin[32], szscout[32], szadminglow[32], sznoblock[32], sztransparency[32], szcheatdetect[32], szbhop[32]
2297
2298 new g_checkpoints = get_pcvar_num(g_kz_checkpoints)
2299 switch(g_checkpoints)
2300 {
2301 case 0: formatex(szcheckpoints,31,"%L", id, "PKU_AM_CP_OFF")
2302
2303 case 1: formatex(szcheckpoints,31,"%L", id, "PKU_AM_CP_ON")
2304
2305 }
2306 new g_godmode = get_pcvar_num(g_kz_godmode)
2307 switch(g_godmode)
2308 {
2309 case 0: formatex(szgodmode,31,"%L", id, "PKU_AM_GODMODE_OFF")
2310
2311 case 1: formatex(szgodmode,31,"%L", id, "PKU_AM_GODMODE_ON")
2312
2313 }
2314 new g_autojoin = get_pcvar_num(g_kz_autojoin)
2315 switch(g_autojoin)
2316 {
2317 case 0: formatex(szautojoin,31,"%L", id, "PKU_AM_AUTOJOIN_OFF")
2318
2319 case 1: formatex(szautojoin,31,"%L", id, "PKU_AM_AUTOJOIN_ON")
2320
2321 }
2322 new g_scout = get_pcvar_num(g_kz_scout)
2323 switch(g_scout)
2324 {
2325 case 0: formatex(szscout,31,"%L", id, "PKU_AM_SCOUT_OFF")
2326
2327 case 1: formatex(szscout,31,"%L", id, "PKU_AM_SCOUT_ON")
2328
2329 }
2330 new g_adminglow = get_pcvar_num(g_kz_adminglow)
2331 switch(g_adminglow)
2332 {
2333 case 0: formatex(szadminglow,31,"%L", id, "PKU_AM_GLOW_OFF")
2334
2335 case 1: formatex(szadminglow,31,"%L", id, "PKU_AM_GLOW_ON")
2336
2337 }
2338 new g_semiclip = get_pcvar_num(g_kz_semiclip)
2339 switch(g_semiclip)
2340 {
2341 case 0: formatex(sznoblock,31,"%L", id, "PKU_AM_SEMI_OFF")
2342
2343 case 1: formatex(sznoblock,31,"%L", id, "PKU_AM_SEMI_ON")
2344
2345 }
2346 new g_bhop = get_pcvar_num(g_kz_bhop)
2347 switch(g_bhop)
2348 {
2349 case 0: formatex(szbhop,31,"%L", id, "PKU_AM_BHOP")
2350
2351 case 1: formatex(szbhop,31,"%L", id, "PKU_AM_BHOP_NOSLOW")
2352
2353 case 2: formatex(szbhop,31,"%L", id, "PKU_AM_BHOP_AUTO")
2354
2355 }
2356 new g_transparency = get_pcvar_num(g_kz_transparency)
2357 switch(g_transparency)
2358 {
2359 case 0: formatex(sztransparency,31,"%L", id, "PKU_AM_TRANS_OFF")
2360
2361 case 1: formatex(sztransparency,31,"%L", id, "PKU_AM_TRANS_ON")
2362
2363 }
2364 new g_cheatdetect = get_pcvar_num(g_kz_cheatdetect)
2365 switch(g_cheatdetect)
2366 {
2367 case 0: formatex(szcheatdetect,31,"%L", id, "PKU_AM_CHEATD_OFF")
2368
2369 case 1: formatex(szcheatdetect,31,"%L", id, "PKU_AM_CHEATD_ON")
2370
2371 }
2372 formatex(menu,512,"%L", id, "PKU_AM_MENU",szcheckpoints,szgodmode,szautojoin,szscout,szadminglow,sznoblock,szbhop,sztransparency,szcheatdetect)
2373 show_menu(id,MENU_KEYS_ADMIN,menu, -1, "ProKreedz Ultimativ v2.4 - Adminmenu")
2374}
2375
2376public AdminMenuHandler(id,key)
2377{
2378 switch(key)
2379 {
2380 case 0:
2381 {
2382 new g_checkpoints = get_pcvar_num(g_kz_checkpoints)
2383 switch(g_checkpoints)
2384 {
2385 case 0:
2386 {
2387 set_pcvar_num(g_kz_checkpoints, 1)
2388 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CP_ENABLED")
2389 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CP_INFO")
2390 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CP_GO_INFO")
2391 }
2392 case 1:
2393 {
2394 set_pcvar_num(g_kz_checkpoints, 0)
2395 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CP_DISABLED")
2396 }
2397 }
2398 KzAdminMenu(id)
2399 }
2400 case 1:
2401 {
2402 new g_godmode = get_pcvar_num(g_kz_godmode)
2403 switch(g_godmode)
2404 {
2405 case 0:
2406 {
2407 set_pcvar_num(g_kz_godmode, 1)
2408 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_GODMODE_ENABLED")
2409
2410 for(new i = 1; i <= g_iMaxPlayers; i++)
2411 {
2412 if(is_plr_connected[i] && !is_plr_bot[i])
2413 set_pev(i, pev_takedamage, 0.0)
2414 }
2415 }
2416 case 1:
2417 {
2418 set_pcvar_num(g_kz_godmode, 0)
2419 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_GODMODE_DISABLED")
2420
2421 for(new i = 1; i <= g_iMaxPlayers; i++)
2422 {
2423 if(is_plr_connected[i] && !is_plr_bot[i])
2424 set_pev(i, pev_takedamage, 2.0)
2425 }
2426 }
2427 }
2428 KzAdminMenu(id)
2429 }
2430 case 2:
2431 {
2432 new g_autojoin = get_pcvar_num(g_kz_autojoin)
2433 switch(g_autojoin)
2434 {
2435 case 0:
2436 {
2437 set_pcvar_num(g_kz_autojoin, 1)
2438 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_AUTOJOIN_ENABLED")
2439 }
2440 case 1:
2441 {
2442 set_pcvar_num(g_kz_autojoin, 0)
2443 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_AUTOJOIN_DISABLED")
2444 }
2445 }
2446 KzAdminMenu(id)
2447 }
2448 case 3:
2449 {
2450 new g_scout = get_pcvar_num(g_kz_scout)
2451 switch(g_scout)
2452 {
2453 case 0:
2454 {
2455 set_pcvar_num(g_kz_scout, 1)
2456 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_SCOUT_ENABLED")
2457 }
2458 case 1:
2459 {
2460 set_pcvar_num(g_kz_scout, 0)
2461 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_SCOUT_DISABLED")
2462 }
2463 }
2464 KzAdminMenu(id)
2465 }
2466 case 4:
2467 {
2468 new g_adminglow = get_pcvar_num(g_kz_adminglow)
2469 switch(g_adminglow)
2470 {
2471 case 0:
2472 {
2473 set_pcvar_num(g_kz_adminglow, 1)
2474 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_ADMINGLOW_ENABLED")
2475
2476 for(new i = 1; i <= g_iMaxPlayers; i++)
2477 {
2478 if(is_plr_connected[i] && g_bPlayerIsAdmin[i])
2479 AdminGlow(i)
2480 }
2481 }
2482 case 1:
2483 {
2484 set_pcvar_num(g_kz_adminglow, 0)
2485 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_ADMINGLOW_DISABLED")
2486
2487 for(new i = 1; i <= g_iMaxPlayers; i++)
2488 {
2489 if(is_plr_connected[i] && g_bPlayerIsAdmin[i])
2490 AdminGlow(i)
2491 }
2492 }
2493 }
2494 KzAdminMenu(id)
2495 }
2496 case 5:
2497 {
2498 new g_semiclip = get_pcvar_num(g_kz_semiclip)
2499 switch(g_semiclip)
2500 {
2501 case 0:
2502 {
2503 set_pcvar_num(g_kz_semiclip, 1)
2504 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_SEMICLIP_ENABLED")
2505 }
2506 case 1:
2507 {
2508 set_pcvar_num(g_kz_semiclip, 0)
2509 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_SEMICLIP_DISABLED")
2510 }
2511 }
2512 KzAdminMenu(id)
2513 }
2514 case 6:
2515 {
2516 new g_bhop = get_pcvar_num(g_kz_bhop)
2517 switch(g_bhop)
2518 {
2519 case 0:
2520 {
2521 set_pcvar_num(g_kz_bhop, 1)
2522 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_BHOP_NOSLOW_DOWN")
2523 }
2524 case 1:
2525 {
2526 set_pcvar_num(g_kz_bhop, 2)
2527 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_BHOP_AUTOMATIC")
2528 }
2529 case 2:
2530 {
2531 set_pcvar_num(g_kz_bhop, 0)
2532 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_BHOP_DISABLED")
2533 }
2534 }
2535 KzAdminMenu(id)
2536 }
2537 case 7:
2538 {
2539 new g_transparency = get_pcvar_num(g_kz_transparency)
2540 switch(g_transparency)
2541 {
2542 case 0:
2543 {
2544 set_pcvar_num(g_kz_transparency, 1)
2545 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_TRANSPARENCY_ENABLED")
2546 }
2547 case 1:
2548 {
2549 set_pcvar_num(g_kz_transparency, 0)
2550 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_TRANSPARENCY_DISABLED")
2551 }
2552 }
2553 KzAdminMenu(id)
2554 }
2555 case 8:
2556 {
2557 new g_cheatdetect = get_pcvar_num(g_kz_cheatdetect)
2558 switch(g_cheatdetect)
2559 {
2560 case 0:
2561 {
2562 set_pcvar_num(g_kz_cheatdetect, 1)
2563 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CHEATD_ENABLED")
2564 }
2565 case 1:
2566 {
2567 set_pcvar_num(g_kz_cheatdetect, 0)
2568 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CHEATD_DISABLED")
2569 }
2570 }
2571 KzAdminMenu(id)
2572 }
2573 case 9: show_menu(id,0,"")
2574
2575 }
2576}
2577
2578#if defined USING_SQL
2579public check_pro15(iPlayer)
2580{
2581 check_top15(iPlayer, true)
2582}
2583
2584public show_pro15(iPlayer)
2585{
2586 return show_top15(iPlayer, true)
2587}
2588#else
2589public check_pro15(id)
2590{
2591 new name[32], authid[32]
2592 get_user_name(id, name, 31)
2593 get_user_authid(id, authid ,31)
2594
2595 new bool:is_plr_pro15
2596 is_plr_pro15 = false
2597
2598 for(new i = 0; i < 15; i++)
2599 {
2600 if(equali(pro15_authid[i], authid))
2601 {
2602 is_plr_pro15 = true
2603 }
2604 }
2605 new Float:kzTime, Float:FailTime, Float:BestTime, Float:OldTime
2606 for(new i = 0; i < 15; i++)
2607 {
2608 kzTime = get_gametime() - g_iPlayerTime[id] + g_iPlayerPauseTime[id]
2609 FailTime = kzTime - pro15_times[i]
2610 BestTime = pro15_times[i] - kzTime
2611 OldTime = pro15_times[i]
2612
2613 if(kzTime < pro15_times[i])
2614 {
2615 new pos = i
2616 while(!equal(pro15_authid[pos], authid) && pos < 15)
2617 {
2618 pos++
2619 }
2620 for(new j = pos; j > i; j--)
2621 {
2622 formatex(pro15_authid[j], 31, pro15_authid[j-1])
2623 formatex(pro15_names[j], 31, pro15_names[j-1])
2624 pro15_times[j] = pro15_times[j-1]
2625 pro15_cp[j] = pro15_cp[j-1]
2626 pro15_gocp[j] = pro15_gocp[j-1]
2627 }
2628 formatex(pro15_authid[i], 31, authid)
2629 formatex(pro15_names[i], 31, name)
2630 pro15_times[i] = kzTime
2631 pro15_cp[i] = g_iCheckpointNum[id]
2632 pro15_gocp[i] = g_iGoCheckNum[id]
2633
2634 save_pro15()
2635
2636 if(is_plr_pro15)
2637 {
2638 if(kzTime < OldTime)
2639 {
2640 new imin, Float:isec
2641 imin = floatround(BestTime, floatround_floor)/60
2642 isec = BestTime - (60*imin)
2643 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_TOP15_NPBT", name, imin, isec < 10 ? "0" : "", isec)
2644
2645 if((i + 1) == 1)
2646 {
2647 client_cmd(0, "spk woop")
2648 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_PRO15_LEET", name)
2649 }
2650 else
2651 {
2652 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_PRO15_RANK", name, (i+1))
2653 }
2654 }
2655 }
2656 else
2657 {
2658 if((i + 1) == 1)
2659 {
2660 client_cmd(0, "spk woop")
2661 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_PRO15_LEET", name)
2662 }
2663 else
2664 {
2665 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_PRO15_RANK", name, (i+1))
2666 }
2667 }
2668 return
2669 }
2670 if(equali(pro15_authid[i], authid))
2671 {
2672 if(kzTime > OldTime)
2673 {
2674 new imin, Float:isec
2675 imin = floatround(FailTime , floatround_floor)/60
2676 isec = FailTime - (60*imin)
2677 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_TOP15_FAIL", name, imin, isec < 10 ? "0" : "", isec)
2678 return
2679 }
2680 }
2681 }
2682}
2683
2684public save_pro15()
2685{
2686 new profile[128]
2687 formatex(profile, 127, "%s/pro_%s.cfg", KZ_TOP15_DIR, g_szMapName)
2688
2689 if(file_exists(profile))
2690 {
2691 delete_file(profile)
2692 }
2693
2694 new Data[256]
2695 new f = fopen(profile, "at")
2696
2697 for(new i = 0; i < 15; i++)
2698 {
2699 formatex(Data, 255, "^"%.5f^" ^"%s^" ^"%s^" ^"%d^" ^"%d^"^n", pro15_times[i], pro15_authid[i], pro15_names[i], pro15_cp[i], pro15_gocp[i])
2700 fputs(f, Data)
2701 }
2702 fclose(f)
2703}
2704
2705public read_pro15()
2706{
2707 new profile[128], prodata[256]
2708 formatex(profile, 127, "%s/pro_%s.cfg", KZ_TOP15_DIR, g_szMapName)
2709
2710 new f = fopen(profile, "rt")
2711 new i = 0
2712 while(!feof(f) && i < 16)
2713 {
2714 fgets(f, prodata, 255)
2715 new ReadKzTime[25], ReadChecks[5], ReadGoChecks[5]
2716 parse(prodata, ReadKzTime, 24, pro15_authid[i], 31, pro15_names[i], 31, ReadChecks, 4, ReadGoChecks, 4)
2717 pro15_times[i] = str_to_float(ReadKzTime)
2718 pro15_cp[i] = str_to_num(ReadChecks)
2719 pro15_gocp[i] = str_to_num(ReadGoChecks)
2720 i++;
2721 }
2722 fclose(f)
2723}
2724
2725public show_pro15(id)
2726{
2727 new buffer[2048], name[32]
2728 new len = formatex(buffer, sizeof buffer -1,"<body bgcolor=#94AEC6><table width=100%% cellpadding=2 cellspacing=0 border=0>")
2729 len += formatex(buffer[len], sizeof buffer -1 -len,"%L", id, "PKU_TOP15_MOTD")
2730
2731 new iMaxColors = sizeof(g_iTopColors)
2732
2733 for(new i = 0; i < 15; ++i)
2734 {
2735 if(pro15_times[i] > 9999999.0)
2736 len += formatex(buffer[len], sizeof buffer -1 -len, "<tr align=center %s><td>%d<td align=left>%s<td>%s<td>%s<td>%s", ((i%2)==0) ? "" : "bgcolor=#B0C4DE", (i + 1), "", "", "", "")
2737 else
2738 {
2739 name = pro15_names[i]
2740 new Float:kzTime, imin, Float:isec
2741 kzTime = pro15_times[i]
2742 imin = floatround(kzTime , floatround_floor)/60
2743 isec = kzTime - (60*imin)
2744
2745 while (containi(name, "<") != -1)
2746 replace(name, 63, "<", "<")
2747 while (containi(name, ">") != -1)
2748 replace(name, 63, ">", ">")
2749
2750 if( i < iMaxColors )
2751 {
2752 len += formatex(buffer[len], sizeof buffer -1 -len, "<tr align=center bgcolor=%s><td>%d<td align=left>%s<td>%02d:%s%.2f<td>%d<td>%d", g_iTopColors[i], (i + 1), pro15_names[i], imin, isec < 10 ? "0" : "", isec, pro15_cp[i], pro15_gocp[i])
2753 }
2754 else
2755 {
2756 len += formatex(buffer[len], sizeof buffer -1 -len, "<tr align=center %s><td>%d<td align=left>%s<td>%02d:%s%.2f<td>%d<td>%d", ((i%2)==0) ? "" : "bgcolor=#B0C4DE", (i + 1), pro15_names[i], imin, isec < 10 ? "0" : "", isec, pro15_cp[i], pro15_gocp[i])
2757 }
2758 }
2759 }
2760 len += formatex(buffer[len], sizeof buffer -1 -len, "</table></body>")
2761
2762 show_motd(id, buffer, "ProKreedz Pro15")
2763 return PLUGIN_HANDLED
2764}
2765#endif
2766
2767#if defined USING_SQL
2768public check_nub15(iPlayer)
2769{
2770 check_top15(iPlayer, false)
2771}
2772
2773public show_nub15(iPlayer)
2774{
2775 return show_top15(iPlayer, false)
2776}
2777#else
2778public check_nub15(id)
2779{
2780 new name[32], authid[32]
2781 get_user_name(id, name, 31)
2782 get_user_authid(id, authid ,31)
2783
2784 new bool:is_plr_nub15
2785 is_plr_nub15 = false
2786
2787 for(new i = 0; i < 15; i++)
2788 {
2789 if(equali(nub15_authid[i], authid))
2790 {
2791 is_plr_nub15 = true
2792 }
2793 }
2794 new Float:kzTime, Float:FailTime, Float:BestTime, Float:OldTime
2795 for(new i = 0; i < 15; i++)
2796 {
2797 kzTime = get_gametime() - g_iPlayerTime[id] + g_iPlayerPauseTime[id]
2798 FailTime = kzTime - nub15_times[i]
2799 BestTime = nub15_times[i] - kzTime
2800 OldTime = nub15_times[i]
2801
2802 if(kzTime < nub15_times[i])
2803 {
2804 new pos = i
2805 while(!equal(nub15_authid[pos], authid) && pos < 15)
2806 {
2807 pos++
2808 }
2809 for(new j = pos; j > i; j--)
2810 {
2811 formatex(nub15_authid[j], 31, nub15_authid[j-1])
2812 formatex(nub15_names[j], 31, nub15_names[j-1])
2813 nub15_times[j] = nub15_times[j-1]
2814 nub15_cp[j] = nub15_cp[j-1]
2815 nub15_gocp[j] = nub15_gocp[j-1]
2816 }
2817 formatex(nub15_authid[i], 31, authid)
2818 formatex(nub15_names[i], 31, name)
2819 nub15_times[i] = kzTime
2820 nub15_cp[i] = g_iCheckpointNum[id]
2821 nub15_gocp[i] = g_iGoCheckNum[id]
2822
2823 save_nub15()
2824
2825 if(is_plr_nub15)
2826 {
2827 if(kzTime < OldTime)
2828 {
2829 new imin, Float:isec
2830 imin = floatround(BestTime, floatround_floor)/60
2831 isec = BestTime - (60*imin)
2832 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_TOP15_NPBT", name, imin, isec < 10 ? "0" : "", isec)
2833
2834 if((i + 1) == 1)
2835 {
2836 client_cmd(0, "spk woop")
2837 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_NUB15_LEET", name)
2838 }
2839 else
2840 {
2841 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_NUB15_RANK", name, (i+1))
2842 }
2843 }
2844 }
2845 else
2846 {
2847 if((i + 1) == 1)
2848 {
2849 client_cmd(0, "spk woop")
2850 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_NUB15_LEET", name)
2851 }
2852 else
2853 {
2854 kz_colorchat(0, green, "%L", LANG_PLAYER,"PKU_NUB15_RANK", name, (i+1))
2855 }
2856 }
2857 return
2858 }
2859 if(equali(nub15_authid[i], authid))
2860 {
2861 if(kzTime > OldTime)
2862 {
2863 new imin, Float:isec
2864 imin = floatround(FailTime , floatround_floor)/60
2865 isec = FailTime - (60*imin)
2866 kz_colorchat(0, green, "%L", LANG_PLAYER,"PKU_TOP15_FAIL", name, imin, isec < 10 ? "0" : "", isec)
2867 return
2868 }
2869 }
2870 }
2871}
2872
2873public save_nub15()
2874{
2875 new nubfile[128]
2876 formatex(nubfile, 127, "%s/nub_%s.cfg", KZ_TOP15_DIR, g_szMapName)
2877
2878 if(file_exists(nubfile))
2879 {
2880 delete_file(nubfile)
2881 }
2882
2883 new Data[256]
2884 new f = fopen(nubfile, "at")
2885
2886 for(new i = 0; i < 15; i++)
2887 {
2888 formatex(Data, 255, "^"%.5f^" ^"%s^" ^"%s^" ^"%d^" ^"%d^"^n", nub15_times[i], nub15_authid[i], nub15_names[i], nub15_cp[i], nub15_gocp[i])
2889 fputs(f, Data)
2890 }
2891 fclose(f)
2892}
2893
2894public read_nub15()
2895{
2896 new nubfile[128], nubdata[256]
2897 formatex(nubfile, 127, "%s/nub_%s.cfg", KZ_TOP15_DIR, g_szMapName)
2898
2899 new f = fopen(nubfile, "rt")
2900 new i = 0
2901 while(!feof(f) && i < 16)
2902 {
2903 fgets(f, nubdata, 255)
2904 new ReadKzTime[25], ReadChecks[5], ReadGoChecks[5]
2905 parse(nubdata, ReadKzTime, 24, nub15_authid[i], 31, nub15_names[i], 31, ReadChecks, 4, ReadGoChecks, 4)
2906 nub15_times[i] = str_to_float(ReadKzTime)
2907 nub15_cp[i] = str_to_num(ReadChecks)
2908 nub15_gocp[i] = str_to_num(ReadGoChecks)
2909 i++;
2910 }
2911 fclose(f)
2912}
2913
2914public show_nub15(id)
2915{
2916 new buffer[2048], name[32]
2917 new len = formatex(buffer, sizeof buffer -1,"<body bgcolor=#94AEC6><table width=100%% cellpadding=2 cellspacing=0 border=0>")
2918 len += formatex(buffer[len], sizeof buffer -1 -len,"%L", id, "PKU_TOP15_MOTD")
2919
2920 new iMaxColors = sizeof(g_iTopColors)
2921
2922 for(new i = 0; i < 15; ++i)
2923 {
2924 if(nub15_times[i] > 9999999.0)
2925 len += formatex(buffer[len], sizeof buffer -1 -len, "<tr align=center %s><td>%d<td align=left>%s<td>%s<td>%s<td>%s", ((i%2)==0) ? "" : "bgcolor=#B0C4DE", (i + 1), "", "", "", "")
2926 else
2927 {
2928 name = nub15_names[i]
2929 new Float:kzTime, imin, Float:isec
2930 kzTime = nub15_times[i]
2931 imin = floatround(kzTime , floatround_floor)/60
2932 isec = kzTime - (60*imin)
2933
2934 while (containi(name, "<") != -1)
2935 replace(name, 63, "<", "<")
2936 while (containi(name, ">") != -1)
2937 replace(name, 63, ">", ">")
2938
2939 if( i < iMaxColors )
2940 {
2941 len += formatex(buffer[len], sizeof buffer -1 -len, "<tr align=center bgcolor=%s><td>%d<td align=left>%s<td>%02d:%s%.2f<td>%d<td>%d", g_iTopColors[i], (i + 1), nub15_names[i], imin, isec < 10 ? "0" : "", isec, nub15_cp[i], nub15_gocp[i])
2942 }
2943 else
2944 {
2945 len += formatex(buffer[len], sizeof buffer -1 -len, "<tr align=center %s><td>%d<td align=left>%s<td>%02d:%s%.2f<td>%d<td>%d", ((i%2)==0) ? "" : "bgcolor=#B0C4DE", (i + 1), nub15_names[i], imin, isec < 10 ? "0" : "", isec, nub15_cp[i], nub15_gocp[i])
2946 }
2947 }
2948 }
2949 len += formatex(buffer[len], sizeof buffer -1 -len, "</table></body>")
2950
2951 show_motd(id, buffer, "ProKreedz Nub15")
2952 return PLUGIN_HANDLED
2953}
2954#endif
2955
2956#if defined USING_SQL
2957public check_top15(iPlayer, bool:bPro)
2958{
2959 if(g_hSqlTuple == Empty_Handle)
2960 {
2961 return
2962 }
2963
2964 new iError, szError[128]
2965 new Handle:hDb = SQL_Connect(g_hSqlTuple, iError, szError, charsmax(szError))
2966
2967 if(hDb == Empty_Handle)
2968 {
2969 log_amx("Failed connecting to database (%i): %s", iError, szError)
2970 return
2971 }
2972
2973 new szName[32], szAuthID[35]
2974 get_user_name(iPlayer, szName ,charsmax(szName))
2975 get_user_authid(iPlayer, szAuthID, charsmax(szAuthID))
2976
2977 new Float:flTime = get_gametime() - g_iPlayerTime[iPlayer] + g_iPlayerPauseTime[iPlayer]
2978
2979 new iTopPos = 0;
2980
2981 new Handle:hQuery = SQL_PrepareQuery(hDb, "SELECT * FROM kz_%s15 WHERE map = ^"%s^" ORDER BY time LIMIT 15;", bPro ? "pro" : "nub", g_szMapName)
2982
2983 if(!SQL_Execute(hQuery))
2984 {
2985 SQL_QueryError(hQuery, szError, charsmax(szError))
2986 log_amx("Error on query selecting %s15: %s", bPro ? "pro" : "nub", szError)
2987 }
2988 else if(SQL_NumResults(hQuery))
2989 {
2990 new iFieldSteamID = SQL_FieldNameToNum(hQuery, "steamid")
2991 new iPos = 1, szDbAuthID[35]
2992
2993 while(SQL_MoreResults(hQuery))
2994 {
2995 SQL_ReadResult(hQuery, iFieldSteamID, szDbAuthID, charsmax(szDbAuthID))
2996
2997 if(equal(szAuthID, szDbAuthID))
2998 {
2999 iTopPos = iPos
3000 break
3001 }
3002
3003 iPos++;
3004
3005 SQL_NextRow(hQuery)
3006 }
3007
3008 SQL_Rewind(hQuery)
3009
3010 iPos = 1
3011 new iFieldTime = SQL_FieldNameToNum(hQuery, "time")
3012 new Float:flDbTime
3013
3014 while(SQL_MoreResults(hQuery))
3015 {
3016 SQL_ReadResult(hQuery, iFieldTime, flDbTime)
3017
3018 if(flTime < flDbTime)
3019 {
3020 if(iTopPos)
3021 {
3022 new Float:flTimeDiff = flDbTime - flTime
3023 new iMinutes = floatround(flTimeDiff, floatround_floor) / 60
3024 flTimeDiff -= (iMinutes * 60)
3025
3026 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_TOP15_NPBT", szName, iMinutes, flTimeDiff < 10 ? "0" : "", flTimeDiff)
3027 }
3028
3029 if(iPos == 1)
3030 {
3031 client_cmd(0, "spk woop" )
3032 kz_colorchat(0, green, "%L", LANG_PLAYER, bPro ? "PKU_PRO15_LEET" : "PKU_NUB15_LEET", szName)
3033 }
3034 else
3035 {
3036 kz_colorchat(0, green, "%L", LANG_PLAYER, bPro ? "PKU_PRO15_RANK" : "PKU_NUB15_RANK", szName, iPos)
3037 }
3038
3039 break
3040 }
3041 if(iTopPos == iPos)
3042 {
3043 if(flTime > flDbTime)
3044 {
3045 new Float:flTimeDiff = flTime - flDbTime
3046 new iMinutes = floatround(flTimeDiff, floatround_floor) / 60
3047 flTimeDiff -= (iMinutes * 60)
3048
3049 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_TOP15_FAIL", szName, iMinutes, flTimeDiff < 10 ? "0" : "", flTimeDiff)
3050 }
3051
3052 break
3053 }
3054
3055 iPos++;
3056
3057 SQL_NextRow(hQuery)
3058 }
3059 }
3060
3061 SQL_FreeHandle(hQuery)
3062
3063 hQuery = SQL_PrepareQuery(hDb, "SELECT time FROM kz_%s15 WHERE steamid = ^"%s^" AND map = ^"%s^";", bPro ? "pro" : "nub", szAuthID, g_szMapName)
3064
3065 if( !SQL_Execute(hQuery))
3066 {
3067 SQL_QueryError(hQuery, szError, charsmax(szError))
3068 log_amx("Error on query selecting player %s time: %s", bPro ? "pro" : "nub", szError)
3069 }
3070 else
3071 {
3072 new bool:bUpdate = true
3073
3074 if(SQL_NumResults(hQuery))
3075 {
3076 new Float:flDbTime
3077 SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "time"), flDbTime)
3078
3079 if(flDbTime < flTime)
3080 {
3081 bUpdate = false
3082 }
3083 }
3084
3085 if(bUpdate)
3086 {
3087 SQL_FreeHandle(hQuery)
3088
3089 hQuery = SQL_PrepareQuery(hDb, "REPLACE INTO kz_%s15 (name, steamid, map, time, cp, gc) VALUES (^"%s^", ^"%s^", ^"%s^", %f, %i, %i);",
3090 bPro ? "pro" : "nub", szName, szAuthID, g_szMapName, flTime, g_iCheckpointNum[iPlayer], g_iGoCheckNum[iPlayer])
3091
3092 if(!SQL_Execute(hQuery))
3093 {
3094 SQL_QueryError(hQuery, szError, charsmax( szError))
3095 log_amx("Error on query saving player %s time: %s", bPro ? "pro" : "nub", szError)
3096 }
3097 }
3098 }
3099
3100 SQL_FreeHandle(hQuery)
3101
3102 SQL_FreeHandle(hDb)
3103}
3104
3105public show_top15(iPlayer, bool:bPro)
3106{
3107 new szURL[128]
3108 get_pcvar_string(g_kz_weburl, szURL, charsmax(szURL))
3109
3110 new iLen = strlen(szURL)
3111 formatex(szURL[iLen], charsmax(szURL) - iLen, "?map=%s&pro=%i&a=%i", g_szMapName, bPro, random(15000))
3112
3113 show_motd(iPlayer, szURL, bPro ? "ProKreedz Pro15" : "ProKreedz Nub15")
3114
3115 return PLUGIN_HANDLED
3116}
3117#endif
3118
3119kz_create_healer() {
3120 new iEntHealer, Float:fHealthValue = (get_pcvar_float(g_kz_autoheal_hp)*2.0)
3121 if(fHealthValue < 2.0)
3122 fHealthValue = 20.0
3123 iEntHealer = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString , "trigger_hurt"))
3124 dllfunc(DLLFunc_Spawn, iEntHealer)
3125 engfunc(EngFunc_SetSize, iEntHealer, Float:{-8192.0, -8192.0, -8192.0} , Float:{8192.0, 8192.0, 8192.0})
3126 set_pev(iEntHealer, pev_spawnflags, SF_TRIGGER_HURT_CLIENTONLYTOUCH)
3127 set_pev(iEntHealer, pev_dmg, -1.0 * fHealthValue)
3128}
3129
3130kz_colorchat(id, color:type, const msg[], {Float,Sql,Result,_}:...) {
3131
3132 static message[256], pkmsg[180], changed[8], argscount,j
3133 argscount = numargs()
3134
3135 switch(type)
3136 {
3137 case normal: message[0] = 0x01
3138
3139 case green: message[0] = 0x04
3140
3141 default: message[0] = 0x03
3142
3143 }
3144 new pktag[32]
3145 get_pcvar_string(g_kz_tag, pktag, 31)
3146
3147 if(id)
3148 {
3149 if(is_plr_connected[id])
3150 {
3151 vformat(pkmsg, 179, msg, 4)
3152 formatex(message[1], 255, "%s %s", pktag, pkmsg)
3153 message[192] = '^0'
3154
3155 replace_all(message, 191, "!g", "^x04")
3156 replace_all(message, 191, "!n", "^x01")
3157 replace_all(message, 191, "!t", "^x03")
3158 kz_print_msg(id, message)
3159 }
3160 }
3161 else
3162 {
3163 for(new i = 1; i <= g_iMaxPlayers; i++)
3164 {
3165 if(is_plr_connected[i])
3166 {
3167 new changedcount = 0
3168
3169 for(j = 2; j < argscount; j++)
3170 {
3171 if(getarg(j) == LANG_PLAYER)
3172 {
3173 setarg(j, 0, i);
3174 changed[changedcount++] = j;
3175 }
3176 }
3177 vformat(pkmsg, 179, msg, 4)
3178 formatex(message[1], 255, "%s %s", pktag, pkmsg)
3179 message[192] = '^0'
3180
3181 replace_all(message, 191, "!g", "^x04")
3182 replace_all(message, 191, "!n", "^x01")
3183 replace_all(message, 191, "!t", "^x03")
3184 kz_print_msg(i, message)
3185
3186 for(j = 0; j < changedcount; j++)
3187 {
3188 setarg(changed[j], 0, LANG_PLAYER)
3189 }
3190 }
3191 }
3192 }
3193}
3194
3195stock kz_print_msg(id, const msg[])
3196{
3197 message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
3198 write_byte(id)
3199 write_string(msg)
3200 message_end()
3201}
3202
3203stock set_user_duck(id)
3204{
3205 set_pev(id, pev_flags, pev(id, pev_flags) | FL_DUCKING)
3206 engfunc( EngFunc_SetSize, id, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX)
3207}
3208
3209stock set_user_scoreattrib(id, attrib = 0)
3210{
3211 message_begin(MSG_BROADCAST, g_ScoreAttrib, _, 0)
3212 write_byte(id)
3213 write_byte(attrib)
3214 message_end()
3215}
3216
3217stock set_user_teaminfo(id, teamstatus[])
3218{
3219 emessage_begin(MSG_BROADCAST, g_TeamInfo)
3220 ewrite_byte(id)
3221 ewrite_string(teamstatus)
3222 emessage_end()
3223}
3224
3225stock fm_set_plr_model(id, const Model[])
3226{
3227 copy(g_iPlayerModel[id], charsmax(g_iPlayerModel[]), Model)
3228 fm_set_admin_vipmodel(id, g_iPlayerModel[id])
3229}
3230
3231stock fm_set_admin_vipmodel(id, const model[])
3232{
3233 set_pev(id, pev_rendermode, kRenderTransTexture)
3234 set_pev(id, pev_renderamt, 1.0)
3235
3236 static modelpath[100]
3237 formatex(modelpath, 99, "models/player/%s/%s.mdl", model, model)
3238
3239 if(!pev_valid(g_iEntPlayerModel[id]))
3240 {
3241 g_iEntPlayerModel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
3242
3243 if (!pev_valid(g_iEntPlayerModel[id])) return
3244
3245 set_pev(g_iEntPlayerModel[id], pev_classname, "ent_playermodel")
3246 set_pev(g_iEntPlayerModel[id], pev_movetype, MOVETYPE_FOLLOW)
3247 set_pev(g_iEntPlayerModel[id], pev_aiment, id)
3248 set_pev(g_iEntPlayerModel[id], pev_owner, id)
3249 }
3250 engfunc(EngFunc_SetModel, g_iEntPlayerModel[id], modelpath)
3251}
3252
3253stock fm_set_admin_weaponmodel(id)
3254{
3255 static model[100]
3256 pev(id, pev_weaponmodel2, model, 99)
3257
3258 if(!pev_valid(g_iEntWeaponModel[id]))
3259 {
3260 g_iEntWeaponModel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
3261
3262 if (!pev_valid(g_iEntWeaponModel[id])) return
3263
3264 set_pev(g_iEntWeaponModel[id], pev_classname, "ent_weaponmodel")
3265 set_pev(g_iEntWeaponModel[id], pev_movetype, MOVETYPE_FOLLOW)
3266 set_pev(g_iEntWeaponModel[id], pev_aiment, id)
3267 set_pev(g_iEntWeaponModel[id], pev_owner, id)
3268 }
3269 engfunc(EngFunc_SetModel, g_iEntWeaponModel[id], model)
3270}
3271
3272stock fm_remove_model_ents(id)
3273{
3274 set_pev(id, pev_rendermode, kRenderNormal)
3275
3276 if(pev_valid(g_iEntPlayerModel[id]))
3277 {
3278 engfunc(EngFunc_RemoveEntity, g_iEntPlayerModel[id])
3279 g_iEntPlayerModel[id] = 0
3280 }
3281 if(pev_valid(g_iEntWeaponModel[id]))
3282 {
3283 engfunc(EngFunc_RemoveEntity, g_iEntWeaponModel[id])
3284 g_iEntWeaponModel[id] = 0
3285 }
3286}
3287
3288stock ham_strip_weapon(id,weapon[])
3289{
3290 if(!equal(weapon,"weapon_",7)) return 0
3291
3292 new wId = get_weaponid(weapon)
3293 if(!wId) return 0
3294
3295 new wEnt
3296 while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
3297 if(!wEnt) return 0
3298
3299 if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)
3300
3301 if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
3302 ExecuteHamB(Ham_Item_Kill,wEnt)
3303
3304 set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))
3305
3306 return 1
3307}
3308
3309stock kz_set_health(id)
3310{
3311 new Float:fHealth = 255.0
3312 if(pev(id, pev_health) < fHealth)
3313 {
3314 set_pev(id, pev_health, fHealth)
3315 set_pev(id, pev_max_health, fHealth)
3316 }
3317}
3318
3319stock kz_set_weapons(id)
3320{
3321 if(!is_plr_bot[id])
3322 {
3323 strip_user_weapons(id)
3324 give_item(id, "weapon_knife")
3325 give_item(id, "weapon_usp")
3326 if(g_bHasScout[id])
3327 give_item(id, "weapon_scout")
3328 g_bWeapons[id] = false
3329 }
3330}
3331
3332stock kz_team_join(id, MenuMsgid, Team[], Class[])
3333{
3334 static jointeam[] = "jointeam"
3335 if (Class[0] == '0' )
3336 {
3337 engclient_cmd(id, jointeam, Team)
3338 return
3339 }
3340 static MsgBlock, joinclass[] = "joinclass"
3341 MsgBlock = get_msg_block(MenuMsgid)
3342 set_msg_block(MenuMsgid, BLOCK_SET)
3343 engclient_cmd(id, jointeam, Team)
3344 engclient_cmd(id, joinclass, Class)
3345 set_msg_block(MenuMsgid, MsgBlock)
3346}
3347
3348stock kz_set_autojoin_task(id, MenuMsgid)
3349{
3350 static ParamMenuMsgid[2]
3351 ParamMenuMsgid[0] = MenuMsgid
3352 set_task(0.1, "PlayerTeamJoin", id + TASK_AUTOJOIN, ParamMenuMsgid, sizeof ParamMenuMsgid)
3353}
3354
3355stock bool:ShouldAutoJoin(id)
3356{
3357 return (!get_user_team(id) && !task_exists(id + TASK_AUTOJOIN))
3358}
3359
3360stock kz_callfunc(id, function[], plugin[], onoff[])
3361{
3362 if(callfunc_begin(function, plugin) == 1)
3363 {
3364 callfunc_push_int(id)
3365 callfunc_push_str(onoff)
3366 callfunc_end()
3367 }
3368}
3369
3370stock kz_make_lgt(id, Float:origin[3], Red, Green, Blue)
3371{
3372 message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id)
3373 write_byte(TE_DLIGHT)
3374 engfunc(EngFunc_WriteCoord, origin[0])
3375 engfunc(EngFunc_WriteCoord, origin[1])
3376 engfunc(EngFunc_WriteCoord, origin[2])
3377 write_byte(get_pcvar_num(g_kz_nvg_radius))
3378 write_byte(Red)
3379 write_byte(Green)
3380 write_byte(Blue)
3381 write_byte(2)
3382 write_byte(0)
3383 message_end()
3384}
3385
3386stock kz_make_nvg(id)
3387{
3388 new r, g, b
3389 GetCvarColor(g_kz_nvg_color, r, g, b)
3390
3391 message_begin( MSG_ONE_UNRELIABLE, g_ScreenFade, _, id)
3392 write_short(1<<0)
3393 write_short(1<<0)
3394 write_short(0x0004)
3395 write_byte(r)
3396 write_byte(g)
3397 write_byte(b)
3398 write_byte(50)
3399 message_end()
3400
3401 set_task(0.1, "kz_set_nvg", id + TASK_NVG, _, _, "b")
3402}
3403
3404stock kz_remove_nvg(id)
3405{
3406 message_begin( MSG_ONE_UNRELIABLE, g_ScreenFade, _, id)
3407 write_short(0)
3408 write_short(0)
3409 write_short(0x0000)
3410 write_byte(0)
3411 write_byte(0)
3412 write_byte(0)
3413 write_byte(0)
3414 message_end()
3415
3416 remove_task(id + TASK_NVG)
3417 g_bPlayerNvgUse[id] = false
3418}
3419
3420stock kz_set_nvg_msg(id, bool:toggle)
3421{
3422 message_begin(MSG_ONE_UNRELIABLE, g_NVGToggle, _, id)
3423 write_byte(toggle)
3424 message_end()
3425}
3426
3427stock kz_register_saycmd(const saycommand[], const function[], flags)
3428{
3429 new temp[64]
3430 formatex(temp, 63, "say /%s", saycommand)
3431 register_clcmd(temp, function, flags)
3432 formatex(temp, 63, "say .%s", saycommand)
3433 register_clcmd(temp, function, flags)
3434 formatex(temp, 63, "say_team /%s", saycommand)
3435 register_clcmd(temp, function, flags)
3436 formatex(temp, 63, "say_team .%s", saycommand)
3437 register_clcmd(temp, function, flags)
3438}
3439
3440kz_make_config(const sConfig[]) {
3441
3442 new f = fopen(sConfig, "wt")
3443
3444 new sCvarSrting[32]
3445
3446 fprintf(f, "// %s %s by %s - Cvars Config ^n^n", PLUGIN, VERSION, AUTHOR)
3447
3448 fprintf(f, "// Game Description^n")
3449 fprintf(f, "// 0 - Disabled^n")
3450 fprintf(f, "// 1 - Enabled^n")
3451 fprintf(f, "//^n")
3452 fprintf(f, "// Default: 1^n")
3453 fprintf(f, "kz_modname_enable %i^n^n", get_pcvar_num(g_kz_modname_enable))
3454
3455 fprintf(f, "// Recommend to set this Cvars via Admin Menu^n")
3456 fprintf(f, "// Type /amenu in chat to open the Admin Menu^n")
3457 fprintf(f, "// kz_checkpoints %i^n", get_pcvar_num(g_kz_checkpoints))
3458 fprintf(f, "// kz_godmode %i^n", get_pcvar_num(g_kz_godmode))
3459 fprintf(f, "// kz_autojoin %i^n", get_pcvar_num(g_kz_autojoin))
3460 fprintf(f, "// kz_scout %i^n", get_pcvar_num(g_kz_scout))
3461 fprintf(f, "// kz_adminglow %i^n", get_pcvar_num(g_kz_adminglow))
3462 fprintf(f, "// kz_semiclip %i^n", get_pcvar_num(g_kz_semiclip))
3463 fprintf(f, "// kz_bhop %i^n", get_pcvar_num(g_kz_bhop))
3464 fprintf(f, "// kz_transparency %i^n", get_pcvar_num(g_kz_transparency))
3465 fprintf(f, "// kz_cheatdetect %i^n^n", get_pcvar_num(g_kz_cheatdetect))
3466
3467 fprintf(f, "// Set how many Checkpoint are allowed to use for^n")
3468 fprintf(f, "// pro climber to get on Pro15 rank^n")
3469 fprintf(f, "// 0 - Only climber with No Checks get on Pro15 rank^n")
3470 fprintf(f, "//^n")
3471 fprintf(f, "// Default: 10000^n")
3472 fprintf(f, "kz_maxpro_cp %i^n^n", get_pcvar_num(g_kz_maxpro_cp))
3473
3474 fprintf(f, "// Set Player Individually Auto-Start-Position^n")
3475 fprintf(f, "// 0 - Disabled^n")
3476 fprintf(f, "// 1 - Enabled^n")
3477 fprintf(f, "//^n")
3478 fprintf(f, "// Default: 1^n")
3479 fprintf(f, "kz_autostart %i^n^n", get_pcvar_num(g_kz_autostart))
3480
3481 fprintf(f, "// Allows started Player to pause his time^n")
3482 fprintf(f, "// 0 - Disabled^n")
3483 fprintf(f, "// 1 - Enabled^n")
3484 fprintf(f, "//^n")
3485 fprintf(f, "// Default: 1^n")
3486 fprintf(f, "kz_pause %i^n^n", get_pcvar_num(g_kz_pause))
3487
3488 fprintf(f, "// Allows Player to join team Spectator^n")
3489 fprintf(f, "// 0 - Disabled^n")
3490 fprintf(f, "// 1 - Enabled^n")
3491 fprintf(f, "//^n")
3492 fprintf(f, "// Default: 1^n")
3493 fprintf(f, "kz_spec %i^n^n", get_pcvar_num(g_kz_spec))
3494
3495 fprintf(f, "// Kz Start and Finish sounds^n")
3496 fprintf(f, "// 0 - Disabled^n")
3497 fprintf(f, "// 1 - Start & Finish sound Enabled^n")
3498 fprintf(f, "// 2 - Only Start sound Enabled^n")
3499 fprintf(f, "// 3 - Only Finish sound Enabled^n")
3500 fprintf(f, "//^n")
3501 fprintf(f, "// Default: 1^n")
3502 fprintf(f, "kz_sounds %i^n^n", get_pcvar_num(g_kz_sounds))
3503
3504 fprintf(f, "// Set Admin Model^n")
3505 fprintf(f, "// 0 - Sas Model^n")
3506 fprintf(f, "// 1 - Vip Model and Scoreboard Attribute Vip^n")
3507 fprintf(f, "// 2 - Arctic Model and Scoreboard Attribute Vip^n")
3508 fprintf(f, "//^n")
3509 fprintf(f, "// Default: 1^n")
3510 fprintf(f, "kz_vip %i^n^n", get_pcvar_num(g_kz_vip))
3511
3512 fprintf(f, "// Kz Startmoney^n")
3513 fprintf(f, "//^n")
3514 fprintf(f, "// Default: 1337^n")
3515 fprintf(f, "kz_money %i^n^n", get_pcvar_num(g_kz_money))
3516
3517 fprintf(f, "// Player self kill command^n")
3518 fprintf(f, "// 0 - Self kill allowed^n")
3519 fprintf(f, "// 1 - Self kill not allowed^n")
3520 fprintf(f, "//^n")
3521 fprintf(f, "// Default: 1^n")
3522 fprintf(f, "kz_nokill %i^n^n", get_pcvar_num(g_kz_nokill))
3523
3524 fprintf(f, "// Help Motd with all kz commands^n")
3525 fprintf(f, "// 0 - Disabled^n")
3526 fprintf(f, "// 1 - Enabled^n")
3527 fprintf(f, "//^n")
3528 fprintf(f, "// Default: 1^n")
3529 fprintf(f, "kz_help %i^n^n", get_pcvar_num(g_kz_help))
3530
3531 fprintf(f, "// Create Kz Bot^n")
3532 fprintf(f, "// 0 - Disabled^n")
3533 fprintf(f, "// 1 - Enabled^n")
3534 fprintf(f, "//^n")
3535 fprintf(f, "// Default: 1^n")
3536 fprintf(f, "kz_bot %i^n^n", get_pcvar_num(g_kz_bot))
3537
3538 fprintf(f, "// Kz Bot Name^n")
3539 fprintf(f, "//^n")
3540 fprintf(f, "// Default: ProKreedz Ultimativ v2.4^n")
3541 get_pcvar_string(g_kz_botname, sCvarSrting, 31)
3542 fprintf(f, "kz_botname ^"%s^"^n^n", sCvarSrting)
3543
3544 fprintf(f, "// Player rewards Hook and Jetpack^n")
3545 fprintf(f, "// 0 - Disabled^n")
3546 fprintf(f, "// 1 - Enabled^n")
3547 fprintf(f, "//^n")
3548 fprintf(f, "// Default: 1^n")
3549 fprintf(f, "kz_prize %i^n^n", get_pcvar_num(g_kz_prize))
3550
3551 fprintf(f, "// Info Msgs about receiving rewards^n")
3552 fprintf(f, "//^n")
3553 fprintf(f, "// Default: 60^n")
3554 fprintf(f, "kz_advert_time %i^n^n", get_pcvar_num(g_kz_advert_time))
3555
3556 fprintf(f, "// Door sounds^n")
3557 fprintf(f, "// 0 - Enabled^n")
3558 fprintf(f, "// 1 - Disabled^n")
3559 fprintf(f, "//^n")
3560 fprintf(f, "// Default: 1^n")
3561 fprintf(f, "kz_doorsound %i^n^n", get_pcvar_num(g_kz_doorsound))
3562
3563 fprintf(f, "// Pain sounds^n")
3564 fprintf(f, "// 0 - Enabled^n")
3565 fprintf(f, "// 1 - Disabled^n")
3566 fprintf(f, "//^n")
3567 fprintf(f, "// Default: 1^n")
3568 fprintf(f, "kz_painsound %i^n^n", get_pcvar_num(g_kz_painsound))
3569
3570 fprintf(f, "// Water sounds^n")
3571 fprintf(f, "// 0 - Enabled^n")
3572 fprintf(f, "// 1 - Disabled^n")
3573 fprintf(f, "//^n")
3574 fprintf(f, "// Default: 1^n")
3575 fprintf(f, "kz_watersound %i^n^n", get_pcvar_num(g_kz_watersound))
3576
3577 fprintf(f, "// Kz chat prefix^n")
3578 fprintf(f, "//^n")
3579 fprintf(f, "// Default: [ProKreedz]^n")
3580 get_pcvar_string(g_kz_tag, sCvarSrting, 31)
3581 fprintf(f, "kz_tag ^"%s^"^n^n", sCvarSrting)
3582
3583 fprintf(f, "// Player Autohealing^n")
3584 fprintf(f, "// 0 - Disabled^n")
3585 fprintf(f, "// 1 - Enabled^n")
3586 fprintf(f, "//^n")
3587 fprintf(f, "// Default: 1^n")
3588 fprintf(f, "kz_autoheal %i^n^n", get_pcvar_num(g_kz_autoheal))
3589
3590 fprintf(f, "// Set HP Amount for Autohealing^n")
3591 fprintf(f, "//^n")
3592 fprintf(f, "// Default: 50^n")
3593 fprintf(f, "kz_autoheal_hp %i^n^n", get_pcvar_num(g_kz_autoheal_hp))
3594
3595 fprintf(f, "// Give player all weapons^n")
3596 fprintf(f, "// 0 - Disabled^n")
3597 fprintf(f, "// 1 - Enabled^n")
3598 fprintf(f, "//^n")
3599 fprintf(f, "// Default: 1^n")
3600 fprintf(f, "kz_weapons %i^n^n", get_pcvar_num(g_kz_weapons))
3601
3602 fprintf(f, "// Show maxspeed of weapons^n")
3603 fprintf(f, "// 0 - Disabled^n")
3604 fprintf(f, "// 1 - Enabled^n")
3605 fprintf(f, "//^n")
3606 fprintf(f, "// Default: 1^n")
3607 fprintf(f, "kz_weaponspeed %i^n^n", get_pcvar_num(g_kz_weaponspeed))
3608
3609 fprintf(f, "// Set the color of weaponspeed Msg^n")
3610 fprintf(f, "//^n")
3611 fprintf(f, "// Default: 0 255 255^n")
3612 get_pcvar_string(g_kz_weaponspeed_color, sCvarSrting, 31)
3613 fprintf(f, "kz_weaponspeed_color ^"%s^"^n^n", sCvarSrting)
3614
3615 fprintf(f, "// Set the position of weaponspeed Msg^n")
3616 fprintf(f, "//^n")
3617 fprintf(f, "// Default: 0.35 0.75^n")
3618 get_pcvar_string(g_kz_weaponspeed_xypos, sCvarSrting, 31)
3619 fprintf(f, "kz_weaponspeed_xypos ^"%s^"^n^n", sCvarSrting)
3620
3621 fprintf(f, "// Show Player Keys^n")
3622 fprintf(f, "// 0 - Disabled^n")
3623 fprintf(f, "// 1 - Enabled^n")
3624 fprintf(f, "//^n")
3625 fprintf(f, "// Default: 1^n")
3626 fprintf(f, "kz_showkeys %i^n^n", get_pcvar_num(g_kz_showkeys))
3627
3628 fprintf(f, "// Set the color of showkeys Msg^n")
3629 fprintf(f, "//^n")
3630 fprintf(f, "// Default: 0 255 255^n")
3631 get_pcvar_string(g_kz_showkeys_color, sCvarSrting, 31)
3632 fprintf(f, "kz_showkeys_color ^"%s^"^n^n", sCvarSrting)
3633
3634 fprintf(f, "// Set the position of showkeys Msg^n")
3635 fprintf(f, "//^n")
3636 fprintf(f, "// Default: -1.0 -0.40^n")
3637 get_pcvar_string(g_kz_showkeys_xypos, sCvarSrting, 31)
3638 fprintf(f, "kz_showkeys_xypos ^"%s^"^n^n", sCvarSrting)
3639
3640 fprintf(f, "// Kz Custom Nightvision^n")
3641 fprintf(f, "// 0 - Disabled^n")
3642 fprintf(f, "// 1 - Enabled^n")
3643 fprintf(f, "//^n")
3644 fprintf(f, "// Default: 1^n")
3645 fprintf(f, "kz_nvg_enabled %i^n^n", get_pcvar_num(g_kz_nvg_enabled))
3646
3647 fprintf(f, "// Kz Custom Nightvision Radius^n")
3648 fprintf(f, "//^n")
3649 fprintf(f, "// Default: 70^n")
3650 fprintf(f, "kz_nvg_radius %i^n^n", get_pcvar_num(g_kz_nvg_radius))
3651
3652 fprintf(f, "// Set the color of custom Nvg^n")
3653 fprintf(f, "//^n")
3654 fprintf(f, "// Default: 0 255 255^n")
3655 get_pcvar_string(g_kz_nvg_color, sCvarSrting, 31)
3656 fprintf(f, "kz_nvg_color ^"%s^"^n^n", sCvarSrting)
3657
3658 fprintf(f, "// Set the color of Palyer time Msg^n")
3659 fprintf(f, "//^n")
3660 fprintf(f, "// Default: 0 255 255^n")
3661 get_pcvar_string(g_kz_time_color, sCvarSrting, 31)
3662 fprintf(f, "kz_time_color ^"%s^"^n^n", sCvarSrting)
3663
3664 fprintf(f, "// Set the color of pause and spec Msg^n")
3665 fprintf(f, "//^n")
3666 fprintf(f, "// Default: 255 0 0^n")
3667 get_pcvar_string(g_kz_status_color, sCvarSrting, 31)
3668 fprintf(f, "kz_status_color ^"%s^"^n^n", sCvarSrting)
3669
3670 fprintf(f, "// Set the color of Health Msg^n")
3671 fprintf(f, "// Health Msg will be shown when Health is greater 255 HP^n")
3672 fprintf(f, "//^n")
3673 fprintf(f, "// Default: 255 50 0^n")
3674 get_pcvar_string(g_kz_showhealth_color, sCvarSrting, 31)
3675 fprintf(f, "kz_showhealth_color ^"%s^"^n^n", sCvarSrting)
3676
3677 fprintf(f, "// Set the positionof Health Msg^n")
3678 fprintf(f, "//^n")
3679 fprintf(f, "// Default: -1.0 0.9^n")
3680 get_pcvar_string(g_kz_showhealth_xypos, sCvarSrting, 31)
3681 fprintf(f, "kz_showhealth_xypos ^"%s^"^n^n", sCvarSrting)
3682
3683 fprintf(f, "// StatusText Types^n")
3684 fprintf(f, "// 0 - Show Hud Msg as Staustext - (Show only player name)^n")
3685 fprintf(f, "// 1 - Show Original Staustext - (Show only player name)^n")
3686 fprintf(f, "//^n")
3687 fprintf(f, "// Default: 1^n")
3688 fprintf(f, "kz_statustext %i^n^n", get_pcvar_num(g_kz_statustext))
3689
3690 fprintf(f, "// Set the color of Statustext Msg^n")
3691 fprintf(f, "//^n")
3692 fprintf(f, "// Default: 255 255 0^n")
3693 get_pcvar_string(g_kz_statustext_color, sCvarSrting, 31)
3694 fprintf(f, "kz_statustext_color ^"%s^"^n^n", sCvarSrting)
3695
3696 fprintf(f, "// Set the position of Statustext Msg^n")
3697 fprintf(f, "//^n")
3698 fprintf(f, "// Default: -1.0 0.52^n")
3699 get_pcvar_string(g_kz_statustext_xypos, sCvarSrting, 31)
3700 fprintf(f, "kz_statustext_xypos ^"%s^"^n^n", sCvarSrting)
3701
3702 fclose(f)
3703
3704 server_cmd("exec %s", sConfig)
3705 server_exec()
3706}