· 10 years ago · Aug 23, 2016, 06:46 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
2233 case 0: cmd_checkpoint(id), KzPlayerMenu(id);
2234
2235 case 1: cmd_gocheck(id), KzPlayerMenu(id);
2236
2237 case 2: KzPlayerMenu(id)
2238
2239 case 3:
2240 {
2241 new g_bhop = get_pcvar_num(g_kz_bhop)
2242 new g_bunny = g_iBunnyHop[id]
2243 switch(g_bhop)
2244 {
2245 case 1:
2246 {
2247 switch(g_bunny)
2248 {
2249 case 0: g_iBunnyHop[id] = 1
2250
2251 case 1: g_iBunnyHop[id] = 0
2252
2253 }
2254 }
2255 case 2:
2256 {
2257 switch(g_bunny)
2258 {
2259 case 0: g_iBunnyHop[id] = 1
2260
2261 case 1: g_iBunnyHop[id] = 2
2262
2263 case 2: g_iBunnyHop[id] = 0
2264
2265 }
2266 }
2267 }
2268 KzPlayerMenu(id)
2269 }
2270 case 4:
2271 {
2272 g_bShowTimer[id] = !g_bShowTimer[id]
2273 KzPlayerMenu(id)
2274 }
2275 case 5: cmd_scout(id)
2276
2277 case 6: cmd_usp(id)
2278
2279 case 7: cmd_restart(id)
2280
2281 case 8: cmd_reset(id)
2282
2283 }
2284}
2285
2286public KzAdminMenuShow(id, lvl, cid)
2287{
2288 if(cmd_access(id, lvl, cid, 1))
2289 KzAdminMenu(id)
2290 return PLUGIN_HANDLED
2291}
2292
2293public KzAdminMenu(id)
2294{
2295 new menu[512], szcheckpoints[32], szgodmode[32], szautojoin[32], szscout[32], szadminglow[32], sznoblock[32], sztransparency[32], szcheatdetect[32], szbhop[32]
2296
2297 new g_checkpoints = get_pcvar_num(g_kz_checkpoints)
2298 switch(g_checkpoints)
2299 {
2300 case 0: formatex(szcheckpoints,31,"%L", id, "PKU_AM_CP_OFF")
2301
2302 case 1: formatex(szcheckpoints,31,"%L", id, "PKU_AM_CP_ON")
2303
2304 }
2305 new g_godmode = get_pcvar_num(g_kz_godmode)
2306 switch(g_godmode)
2307 {
2308 case 0: formatex(szgodmode,31,"%L", id, "PKU_AM_GODMODE_OFF")
2309
2310 case 1: formatex(szgodmode,31,"%L", id, "PKU_AM_GODMODE_ON")
2311
2312 }
2313 new g_autojoin = get_pcvar_num(g_kz_autojoin)
2314 switch(g_autojoin)
2315 {
2316 case 0: formatex(szautojoin,31,"%L", id, "PKU_AM_AUTOJOIN_OFF")
2317
2318 case 1: formatex(szautojoin,31,"%L", id, "PKU_AM_AUTOJOIN_ON")
2319
2320 }
2321 new g_scout = get_pcvar_num(g_kz_scout)
2322 switch(g_scout)
2323 {
2324 case 0: formatex(szscout,31,"%L", id, "PKU_AM_SCOUT_OFF")
2325
2326 case 1: formatex(szscout,31,"%L", id, "PKU_AM_SCOUT_ON")
2327
2328 }
2329 new g_adminglow = get_pcvar_num(g_kz_adminglow)
2330 switch(g_adminglow)
2331 {
2332 case 0: formatex(szadminglow,31,"%L", id, "PKU_AM_GLOW_OFF")
2333
2334 case 1: formatex(szadminglow,31,"%L", id, "PKU_AM_GLOW_ON")
2335
2336 }
2337 new g_semiclip = get_pcvar_num(g_kz_semiclip)
2338 switch(g_semiclip)
2339 {
2340 case 0: formatex(sznoblock,31,"%L", id, "PKU_AM_SEMI_OFF")
2341
2342 case 1: formatex(sznoblock,31,"%L", id, "PKU_AM_SEMI_ON")
2343
2344 }
2345 new g_bhop = get_pcvar_num(g_kz_bhop)
2346 switch(g_bhop)
2347 {
2348 case 0: formatex(szbhop,31,"%L", id, "PKU_AM_BHOP")
2349
2350 case 1: formatex(szbhop,31,"%L", id, "PKU_AM_BHOP_NOSLOW")
2351
2352 case 2: formatex(szbhop,31,"%L", id, "PKU_AM_BHOP_AUTO")
2353
2354 }
2355 new g_transparency = get_pcvar_num(g_kz_transparency)
2356 switch(g_transparency)
2357 {
2358 case 0: formatex(sztransparency,31,"%L", id, "PKU_AM_TRANS_OFF")
2359
2360 case 1: formatex(sztransparency,31,"%L", id, "PKU_AM_TRANS_ON")
2361
2362 }
2363 new g_cheatdetect = get_pcvar_num(g_kz_cheatdetect)
2364 switch(g_cheatdetect)
2365 {
2366 case 0: formatex(szcheatdetect,31,"%L", id, "PKU_AM_CHEATD_OFF")
2367
2368 case 1: formatex(szcheatdetect,31,"%L", id, "PKU_AM_CHEATD_ON")
2369
2370 }
2371 formatex(menu,512,"%L", id, "PKU_AM_MENU",szcheckpoints,szgodmode,szautojoin,szscout,szadminglow,sznoblock,szbhop,sztransparency,szcheatdetect)
2372 show_menu(id,MENU_KEYS_ADMIN,menu, -1, "ProKreedz Ultimativ v2.4 - Adminmenu")
2373}
2374
2375public AdminMenuHandler(id,key)
2376{
2377 switch(key)
2378 {
2379 case 0:
2380 {
2381 new g_checkpoints = get_pcvar_num(g_kz_checkpoints)
2382 switch(g_checkpoints)
2383 {
2384 case 0:
2385 {
2386 set_pcvar_num(g_kz_checkpoints, 1)
2387 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CP_ENABLED")
2388 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CP_INFO")
2389 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CP_GO_INFO")
2390 }
2391 case 1:
2392 {
2393 set_pcvar_num(g_kz_checkpoints, 0)
2394 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CP_DISABLED")
2395 }
2396 }
2397 KzAdminMenu(id)
2398 }
2399 case 1:
2400 {
2401 new g_godmode = get_pcvar_num(g_kz_godmode)
2402 switch(g_godmode)
2403 {
2404 case 0:
2405 {
2406 set_pcvar_num(g_kz_godmode, 1)
2407 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_GODMODE_ENABLED")
2408
2409 for(new i = 1; i <= g_iMaxPlayers; i++)
2410 {
2411 if(is_plr_connected[i] && !is_plr_bot[i])
2412 set_pev(i, pev_takedamage, 0.0)
2413 }
2414 }
2415 case 1:
2416 {
2417 set_pcvar_num(g_kz_godmode, 0)
2418 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_GODMODE_DISABLED")
2419
2420 for(new i = 1; i <= g_iMaxPlayers; i++)
2421 {
2422 if(is_plr_connected[i] && !is_plr_bot[i])
2423 set_pev(i, pev_takedamage, 2.0)
2424 }
2425 }
2426 }
2427 KzAdminMenu(id)
2428 }
2429 case 2:
2430 {
2431 new g_autojoin = get_pcvar_num(g_kz_autojoin)
2432 switch(g_autojoin)
2433 {
2434 case 0:
2435 {
2436 set_pcvar_num(g_kz_autojoin, 1)
2437 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_AUTOJOIN_ENABLED")
2438 }
2439 case 1:
2440 {
2441 set_pcvar_num(g_kz_autojoin, 0)
2442 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_AUTOJOIN_DISABLED")
2443 }
2444 }
2445 KzAdminMenu(id)
2446 }
2447 case 3:
2448 {
2449 new g_scout = get_pcvar_num(g_kz_scout)
2450 switch(g_scout)
2451 {
2452 case 0:
2453 {
2454 set_pcvar_num(g_kz_scout, 1)
2455 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_SCOUT_ENABLED")
2456 }
2457 case 1:
2458 {
2459 set_pcvar_num(g_kz_scout, 0)
2460 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_SCOUT_DISABLED")
2461 }
2462 }
2463 KzAdminMenu(id)
2464 }
2465 case 4:
2466 {
2467 new g_adminglow = get_pcvar_num(g_kz_adminglow)
2468 switch(g_adminglow)
2469 {
2470 case 0:
2471 {
2472 set_pcvar_num(g_kz_adminglow, 1)
2473 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_ADMINGLOW_ENABLED")
2474
2475 for(new i = 1; i <= g_iMaxPlayers; i++)
2476 {
2477 if(is_plr_connected[i] && g_bPlayerIsAdmin[i])
2478 AdminGlow(i)
2479 }
2480 }
2481 case 1:
2482 {
2483 set_pcvar_num(g_kz_adminglow, 0)
2484 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_ADMINGLOW_DISABLED")
2485
2486 for(new i = 1; i <= g_iMaxPlayers; i++)
2487 {
2488 if(is_plr_connected[i] && g_bPlayerIsAdmin[i])
2489 AdminGlow(i)
2490 }
2491 }
2492 }
2493 KzAdminMenu(id)
2494 }
2495 case 5:
2496 {
2497 new g_semiclip = get_pcvar_num(g_kz_semiclip)
2498 switch(g_semiclip)
2499 {
2500 case 0:
2501 {
2502 set_pcvar_num(g_kz_semiclip, 1)
2503 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_SEMICLIP_ENABLED")
2504 }
2505 case 1:
2506 {
2507 set_pcvar_num(g_kz_semiclip, 0)
2508 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_SEMICLIP_DISABLED")
2509 }
2510 }
2511 KzAdminMenu(id)
2512 }
2513 case 6:
2514 {
2515 new g_bhop = get_pcvar_num(g_kz_bhop)
2516 switch(g_bhop)
2517 {
2518 case 0:
2519 {
2520 set_pcvar_num(g_kz_bhop, 1)
2521 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_BHOP_NOSLOW_DOWN")
2522 }
2523 case 1:
2524 {
2525 set_pcvar_num(g_kz_bhop, 2)
2526 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_BHOP_AUTOMATIC")
2527 }
2528 case 2:
2529 {
2530 set_pcvar_num(g_kz_bhop, 0)
2531 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_BHOP_DISABLED")
2532 }
2533 }
2534 KzAdminMenu(id)
2535 }
2536 case 7:
2537 {
2538 new g_transparency = get_pcvar_num(g_kz_transparency)
2539 switch(g_transparency)
2540 {
2541 case 0:
2542 {
2543 set_pcvar_num(g_kz_transparency, 1)
2544 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_TRANSPARENCY_ENABLED")
2545 }
2546 case 1:
2547 {
2548 set_pcvar_num(g_kz_transparency, 0)
2549 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_TRANSPARENCY_DISABLED")
2550 }
2551 }
2552 KzAdminMenu(id)
2553 }
2554 case 8:
2555 {
2556 new g_cheatdetect = get_pcvar_num(g_kz_cheatdetect)
2557 switch(g_cheatdetect)
2558 {
2559 case 0:
2560 {
2561 set_pcvar_num(g_kz_cheatdetect, 1)
2562 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CHEATD_ENABLED")
2563 }
2564 case 1:
2565 {
2566 set_pcvar_num(g_kz_cheatdetect, 0)
2567 kz_colorchat(0, green, "%L", LANG_PLAYER , "PKU_CHEATD_DISABLED")
2568 }
2569 }
2570 KzAdminMenu(id)
2571 }
2572 case 9: show_menu(id,0,"")
2573
2574 }
2575}
2576
2577#if defined USING_SQL
2578public check_pro15(iPlayer)
2579{
2580 check_top15(iPlayer, true)
2581}
2582
2583public show_pro15(iPlayer)
2584{
2585 return show_top15(iPlayer, true)
2586}
2587#else
2588public check_pro15(id)
2589{
2590 new name[32], authid[32]
2591 get_user_name(id, name, 31)
2592 get_user_authid(id, authid ,31)
2593
2594 new bool:is_plr_pro15
2595 is_plr_pro15 = false
2596
2597 for(new i = 0; i < 15; i++)
2598 {
2599 if(equali(pro15_authid[i], authid))
2600 {
2601 is_plr_pro15 = true
2602 }
2603 }
2604 new Float:kzTime, Float:FailTime, Float:BestTime, Float:OldTime
2605 for(new i = 0; i < 15; i++)
2606 {
2607 kzTime = get_gametime() - g_iPlayerTime[id] + g_iPlayerPauseTime[id]
2608 FailTime = kzTime - pro15_times[i]
2609 BestTime = pro15_times[i] - kzTime
2610 OldTime = pro15_times[i]
2611
2612 if(kzTime < pro15_times[i])
2613 {
2614 new pos = i
2615 while(!equal(pro15_authid[pos], authid) && pos < 15)
2616 {
2617 pos++
2618 }
2619 for(new j = pos; j > i; j--)
2620 {
2621 formatex(pro15_authid[j], 31, pro15_authid[j-1])
2622 formatex(pro15_names[j], 31, pro15_names[j-1])
2623 pro15_times[j] = pro15_times[j-1]
2624 pro15_cp[j] = pro15_cp[j-1]
2625 pro15_gocp[j] = pro15_gocp[j-1]
2626 }
2627 formatex(pro15_authid[i], 31, authid)
2628 formatex(pro15_names[i], 31, name)
2629 pro15_times[i] = kzTime
2630 pro15_cp[i] = g_iCheckpointNum[id]
2631 pro15_gocp[i] = g_iGoCheckNum[id]
2632
2633 save_pro15()
2634
2635 if(is_plr_pro15)
2636 {
2637 if(kzTime < OldTime)
2638 {
2639 new imin, Float:isec
2640 imin = floatround(BestTime, floatround_floor)/60
2641 isec = BestTime - (60*imin)
2642 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_TOP15_NPBT", name, imin, isec < 10 ? "0" : "", isec)
2643
2644 if((i + 1) == 1)
2645 {
2646 client_cmd(0, "spk woop")
2647 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_PRO15_LEET", name)
2648 }
2649 else
2650 {
2651 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_PRO15_RANK", name, (i+1))
2652 }
2653 }
2654 }
2655 else
2656 {
2657 if((i + 1) == 1)
2658 {
2659 client_cmd(0, "spk woop")
2660 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_PRO15_LEET", name)
2661 }
2662 else
2663 {
2664 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_PRO15_RANK", name, (i+1))
2665 }
2666 }
2667 return
2668 }
2669 if(equali(pro15_authid[i], authid))
2670 {
2671 if(kzTime > OldTime)
2672 {
2673 new imin, Float:isec
2674 imin = floatround(FailTime , floatround_floor)/60
2675 isec = FailTime - (60*imin)
2676 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_TOP15_FAIL", name, imin, isec < 10 ? "0" : "", isec)
2677 return
2678 }
2679 }
2680 }
2681}
2682
2683public save_pro15()
2684{
2685 new profile[128]
2686 formatex(profile, 127, "%s/pro_%s.cfg", KZ_TOP15_DIR, g_szMapName)
2687
2688 if(file_exists(profile))
2689 {
2690 delete_file(profile)
2691 }
2692
2693 new Data[256]
2694 new f = fopen(profile, "at")
2695
2696 for(new i = 0; i < 15; i++)
2697 {
2698 formatex(Data, 255, "^"%.5f^" ^"%s^" ^"%s^" ^"%d^" ^"%d^"^n", pro15_times[i], pro15_authid[i], pro15_names[i], pro15_cp[i], pro15_gocp[i])
2699 fputs(f, Data)
2700 }
2701 fclose(f)
2702}
2703
2704public read_pro15()
2705{
2706 new profile[128], prodata[256]
2707 formatex(profile, 127, "%s/pro_%s.cfg", KZ_TOP15_DIR, g_szMapName)
2708
2709 new f = fopen(profile, "rt")
2710 new i = 0
2711 while(!feof(f) && i < 16)
2712 {
2713 fgets(f, prodata, 255)
2714 new ReadKzTime[25], ReadChecks[5], ReadGoChecks[5]
2715 parse(prodata, ReadKzTime, 24, pro15_authid[i], 31, pro15_names[i], 31, ReadChecks, 4, ReadGoChecks, 4)
2716 pro15_times[i] = str_to_float(ReadKzTime)
2717 pro15_cp[i] = str_to_num(ReadChecks)
2718 pro15_gocp[i] = str_to_num(ReadGoChecks)
2719 i++;
2720 }
2721 fclose(f)
2722}
2723
2724public show_pro15(id)
2725{
2726 new buffer[2048], name[32]
2727 new len = formatex(buffer, sizeof buffer -1,"<body bgcolor=#94AEC6><table width=100%% cellpadding=2 cellspacing=0 border=0>")
2728 len += formatex(buffer[len], sizeof buffer -1 -len,"%L", id, "PKU_TOP15_MOTD")
2729
2730 new iMaxColors = sizeof(g_iTopColors)
2731
2732 for(new i = 0; i < 15; ++i)
2733 {
2734 if(pro15_times[i] > 9999999.0)
2735 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), "", "", "", "")
2736 else
2737 {
2738 name = pro15_names[i]
2739 new Float:kzTime, imin, Float:isec
2740 kzTime = pro15_times[i]
2741 imin = floatround(kzTime , floatround_floor)/60
2742 isec = kzTime - (60*imin)
2743
2744 while (containi(name, "<") != -1)
2745 replace(name, 63, "<", "<")
2746 while (containi(name, ">") != -1)
2747 replace(name, 63, ">", ">")
2748
2749 if( i < iMaxColors )
2750 {
2751 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])
2752 }
2753 else
2754 {
2755 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])
2756 }
2757 }
2758 }
2759 len += formatex(buffer[len], sizeof buffer -1 -len, "</table></body>")
2760
2761 show_motd(id, buffer, "ProKreedz Pro15")
2762 return PLUGIN_HANDLED
2763}
2764#endif
2765
2766#if defined USING_SQL
2767public check_nub15(iPlayer)
2768{
2769 check_top15(iPlayer, false)
2770}
2771
2772public show_nub15(iPlayer)
2773{
2774 return show_top15(iPlayer, false)
2775}
2776#else
2777public check_nub15(id)
2778{
2779 new name[32], authid[32]
2780 get_user_name(id, name, 31)
2781 get_user_authid(id, authid ,31)
2782
2783 new bool:is_plr_nub15
2784 is_plr_nub15 = false
2785
2786 for(new i = 0; i < 15; i++)
2787 {
2788 if(equali(nub15_authid[i], authid))
2789 {
2790 is_plr_nub15 = true
2791 }
2792 }
2793 new Float:kzTime, Float:FailTime, Float:BestTime, Float:OldTime
2794 for(new i = 0; i < 15; i++)
2795 {
2796 kzTime = get_gametime() - g_iPlayerTime[id] + g_iPlayerPauseTime[id]
2797 FailTime = kzTime - nub15_times[i]
2798 BestTime = nub15_times[i] - kzTime
2799 OldTime = nub15_times[i]
2800
2801 if(kzTime < nub15_times[i])
2802 {
2803 new pos = i
2804 while(!equal(nub15_authid[pos], authid) && pos < 15)
2805 {
2806 pos++
2807 }
2808 for(new j = pos; j > i; j--)
2809 {
2810 formatex(nub15_authid[j], 31, nub15_authid[j-1])
2811 formatex(nub15_names[j], 31, nub15_names[j-1])
2812 nub15_times[j] = nub15_times[j-1]
2813 nub15_cp[j] = nub15_cp[j-1]
2814 nub15_gocp[j] = nub15_gocp[j-1]
2815 }
2816 formatex(nub15_authid[i], 31, authid)
2817 formatex(nub15_names[i], 31, name)
2818 nub15_times[i] = kzTime
2819 nub15_cp[i] = g_iCheckpointNum[id]
2820 nub15_gocp[i] = g_iGoCheckNum[id]
2821
2822 save_nub15()
2823
2824 if(is_plr_nub15)
2825 {
2826 if(kzTime < OldTime)
2827 {
2828 new imin, Float:isec
2829 imin = floatround(BestTime, floatround_floor)/60
2830 isec = BestTime - (60*imin)
2831 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_TOP15_NPBT", name, imin, isec < 10 ? "0" : "", isec)
2832
2833 if((i + 1) == 1)
2834 {
2835 client_cmd(0, "spk woop")
2836 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_NUB15_LEET", name)
2837 }
2838 else
2839 {
2840 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_NUB15_RANK", name, (i+1))
2841 }
2842 }
2843 }
2844 else
2845 {
2846 if((i + 1) == 1)
2847 {
2848 client_cmd(0, "spk woop")
2849 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_NUB15_LEET", name)
2850 }
2851 else
2852 {
2853 kz_colorchat(0, green, "%L", LANG_PLAYER,"PKU_NUB15_RANK", name, (i+1))
2854 }
2855 }
2856 return
2857 }
2858 if(equali(nub15_authid[i], authid))
2859 {
2860 if(kzTime > OldTime)
2861 {
2862 new imin, Float:isec
2863 imin = floatround(FailTime , floatround_floor)/60
2864 isec = FailTime - (60*imin)
2865 kz_colorchat(0, green, "%L", LANG_PLAYER,"PKU_TOP15_FAIL", name, imin, isec < 10 ? "0" : "", isec)
2866 return
2867 }
2868 }
2869 }
2870}
2871
2872public save_nub15()
2873{
2874 new nubfile[128]
2875 formatex(nubfile, 127, "%s/nub_%s.cfg", KZ_TOP15_DIR, g_szMapName)
2876
2877 if(file_exists(nubfile))
2878 {
2879 delete_file(nubfile)
2880 }
2881
2882 new Data[256]
2883 new f = fopen(nubfile, "at")
2884
2885 for(new i = 0; i < 15; i++)
2886 {
2887 formatex(Data, 255, "^"%.5f^" ^"%s^" ^"%s^" ^"%d^" ^"%d^"^n", nub15_times[i], nub15_authid[i], nub15_names[i], nub15_cp[i], nub15_gocp[i])
2888 fputs(f, Data)
2889 }
2890 fclose(f)
2891}
2892
2893public read_nub15()
2894{
2895 new nubfile[128], nubdata[256]
2896 formatex(nubfile, 127, "%s/nub_%s.cfg", KZ_TOP15_DIR, g_szMapName)
2897
2898 new f = fopen(nubfile, "rt")
2899 new i = 0
2900 while(!feof(f) && i < 16)
2901 {
2902 fgets(f, nubdata, 255)
2903 new ReadKzTime[25], ReadChecks[5], ReadGoChecks[5]
2904 parse(nubdata, ReadKzTime, 24, nub15_authid[i], 31, nub15_names[i], 31, ReadChecks, 4, ReadGoChecks, 4)
2905 nub15_times[i] = str_to_float(ReadKzTime)
2906 nub15_cp[i] = str_to_num(ReadChecks)
2907 nub15_gocp[i] = str_to_num(ReadGoChecks)
2908 i++;
2909 }
2910 fclose(f)
2911}
2912
2913public show_nub15(id)
2914{
2915 new buffer[2048], name[32]
2916 new len = formatex(buffer, sizeof buffer -1,"<body bgcolor=#94AEC6><table width=100%% cellpadding=2 cellspacing=0 border=0>")
2917 len += formatex(buffer[len], sizeof buffer -1 -len,"%L", id, "PKU_TOP15_MOTD")
2918
2919 new iMaxColors = sizeof(g_iTopColors)
2920
2921 for(new i = 0; i < 15; ++i)
2922 {
2923 if(nub15_times[i] > 9999999.0)
2924 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), "", "", "", "")
2925 else
2926 {
2927 name = nub15_names[i]
2928 new Float:kzTime, imin, Float:isec
2929 kzTime = nub15_times[i]
2930 imin = floatround(kzTime , floatround_floor)/60
2931 isec = kzTime - (60*imin)
2932
2933 while (containi(name, "<") != -1)
2934 replace(name, 63, "<", "<")
2935 while (containi(name, ">") != -1)
2936 replace(name, 63, ">", ">")
2937
2938 if( i < iMaxColors )
2939 {
2940 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])
2941 }
2942 else
2943 {
2944 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])
2945 }
2946 }
2947 }
2948 len += formatex(buffer[len], sizeof buffer -1 -len, "</table></body>")
2949
2950 show_motd(id, buffer, "ProKreedz Nub15")
2951 return PLUGIN_HANDLED
2952}
2953#endif
2954
2955#if defined USING_SQL
2956public check_top15(iPlayer, bool:bPro)
2957{
2958 if(g_hSqlTuple == Empty_Handle)
2959 {
2960 return
2961 }
2962
2963 new iError, szError[128]
2964 new Handle:hDb = SQL_Connect(g_hSqlTuple, iError, szError, charsmax(szError))
2965
2966 if(hDb == Empty_Handle)
2967 {
2968 log_amx("Failed connecting to database (%i): %s", iError, szError)
2969 return
2970 }
2971
2972 new szName[32], szAuthID[35]
2973 get_user_name(iPlayer, szName ,charsmax(szName))
2974 get_user_authid(iPlayer, szAuthID, charsmax(szAuthID))
2975
2976 new Float:flTime = get_gametime() - g_iPlayerTime[iPlayer] + g_iPlayerPauseTime[iPlayer]
2977
2978 new iTopPos = 0;
2979
2980 new Handle:hQuery = SQL_PrepareQuery(hDb, "SELECT * FROM kz_%s15 WHERE map = ^"%s^" ORDER BY time LIMIT 15;", bPro ? "pro" : "nub", g_szMapName)
2981
2982 if(!SQL_Execute(hQuery))
2983 {
2984 SQL_QueryError(hQuery, szError, charsmax(szError))
2985 log_amx("Error on query selecting %s15: %s", bPro ? "pro" : "nub", szError)
2986 }
2987 else if(SQL_NumResults(hQuery))
2988 {
2989 new iFieldSteamID = SQL_FieldNameToNum(hQuery, "steamid")
2990 new iPos = 1, szDbAuthID[35]
2991
2992 while(SQL_MoreResults(hQuery))
2993 {
2994 SQL_ReadResult(hQuery, iFieldSteamID, szDbAuthID, charsmax(szDbAuthID))
2995
2996 if(equal(szAuthID, szDbAuthID))
2997 {
2998 iTopPos = iPos
2999 break
3000 }
3001
3002 iPos++;
3003
3004 SQL_NextRow(hQuery)
3005 }
3006
3007 SQL_Rewind(hQuery)
3008
3009 iPos = 1
3010 new iFieldTime = SQL_FieldNameToNum(hQuery, "time")
3011 new Float:flDbTime
3012
3013 while(SQL_MoreResults(hQuery))
3014 {
3015 SQL_ReadResult(hQuery, iFieldTime, flDbTime)
3016
3017 if(flTime < flDbTime)
3018 {
3019 if(iTopPos)
3020 {
3021 new Float:flTimeDiff = flDbTime - flTime
3022 new iMinutes = floatround(flTimeDiff, floatround_floor) / 60
3023 flTimeDiff -= (iMinutes * 60)
3024
3025 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_TOP15_NPBT", szName, iMinutes, flTimeDiff < 10 ? "0" : "", flTimeDiff)
3026 }
3027
3028 if(iPos == 1)
3029 {
3030 client_cmd(0, "spk woop" )
3031 kz_colorchat(0, green, "%L", LANG_PLAYER, bPro ? "PKU_PRO15_LEET" : "PKU_NUB15_LEET", szName)
3032 }
3033 else
3034 {
3035 kz_colorchat(0, green, "%L", LANG_PLAYER, bPro ? "PKU_PRO15_RANK" : "PKU_NUB15_RANK", szName, iPos)
3036 }
3037
3038 break
3039 }
3040 if(iTopPos == iPos)
3041 {
3042 if(flTime > flDbTime)
3043 {
3044 new Float:flTimeDiff = flTime - flDbTime
3045 new iMinutes = floatround(flTimeDiff, floatround_floor) / 60
3046 flTimeDiff -= (iMinutes * 60)
3047
3048 kz_colorchat(0, green, "%L", LANG_PLAYER, "PKU_TOP15_FAIL", szName, iMinutes, flTimeDiff < 10 ? "0" : "", flTimeDiff)
3049 }
3050
3051 break
3052 }
3053
3054 iPos++;
3055
3056 SQL_NextRow(hQuery)
3057 }
3058 }
3059
3060 SQL_FreeHandle(hQuery)
3061
3062 hQuery = SQL_PrepareQuery(hDb, "SELECT time FROM kz_%s15 WHERE steamid = ^"%s^" AND map = ^"%s^";", bPro ? "pro" : "nub", szAuthID, g_szMapName)
3063
3064 if( !SQL_Execute(hQuery))
3065 {
3066 SQL_QueryError(hQuery, szError, charsmax(szError))
3067 log_amx("Error on query selecting player %s time: %s", bPro ? "pro" : "nub", szError)
3068 }
3069 else
3070 {
3071 new bool:bUpdate = true
3072
3073 if(SQL_NumResults(hQuery))
3074 {
3075 new Float:flDbTime
3076 SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "time"), flDbTime)
3077
3078 if(flDbTime < flTime)
3079 {
3080 bUpdate = false
3081 }
3082 }
3083
3084 if(bUpdate)
3085 {
3086 SQL_FreeHandle(hQuery)
3087
3088 hQuery = SQL_PrepareQuery(hDb, "REPLACE INTO kz_%s15 (name, steamid, map, time, cp, gc) VALUES (^"%s^", ^"%s^", ^"%s^", %f, %i, %i);",
3089 bPro ? "pro" : "nub", szName, szAuthID, g_szMapName, flTime, g_iCheckpointNum[iPlayer], g_iGoCheckNum[iPlayer])
3090
3091 if(!SQL_Execute(hQuery))
3092 {
3093 SQL_QueryError(hQuery, szError, charsmax( szError))
3094 log_amx("Error on query saving player %s time: %s", bPro ? "pro" : "nub", szError)
3095 }
3096 }
3097 }
3098
3099 SQL_FreeHandle(hQuery)
3100
3101 SQL_FreeHandle(hDb)
3102}
3103
3104public show_top15(iPlayer, bool:bPro)
3105{
3106 new szURL[128]
3107 get_pcvar_string(g_kz_weburl, szURL, charsmax(szURL))
3108
3109 new iLen = strlen(szURL)
3110 formatex(szURL[iLen], charsmax(szURL) - iLen, "?map=%s&pro=%i&a=%i", g_szMapName, bPro, random(15000))
3111
3112 show_motd(iPlayer, szURL, bPro ? "ProKreedz Pro15" : "ProKreedz Nub15")
3113
3114 return PLUGIN_HANDLED
3115}
3116#endif
3117
3118kz_create_healer() {
3119 new iEntHealer, Float:fHealthValue = (get_pcvar_float(g_kz_autoheal_hp)*2.0)
3120 if(fHealthValue < 2.0)
3121 fHealthValue = 20.0
3122 iEntHealer = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString , "trigger_hurt"))
3123 dllfunc(DLLFunc_Spawn, iEntHealer)
3124 engfunc(EngFunc_SetSize, iEntHealer, Float:{-8192.0, -8192.0, -8192.0} , Float:{8192.0, 8192.0, 8192.0})
3125 set_pev(iEntHealer, pev_spawnflags, SF_TRIGGER_HURT_CLIENTONLYTOUCH)
3126 set_pev(iEntHealer, pev_dmg, -1.0 * fHealthValue)
3127}
3128
3129kz_colorchat(id, color:type, const msg[], {Float,Sql,Result,_}:...) {
3130
3131 static message[256], pkmsg[180], changed[8], argscount,j
3132 argscount = numargs()
3133
3134 switch(type)
3135 {
3136 case normal: message[0] = 0x01
3137
3138 case green: message[0] = 0x04
3139
3140 default: message[0] = 0x03
3141
3142 }
3143 new pktag[32]
3144 get_pcvar_string(g_kz_tag, pktag, 31)
3145
3146 if(id)
3147 {
3148 if(is_plr_connected[id])
3149 {
3150 vformat(pkmsg, 179, msg, 4)
3151 formatex(message[1], 255, "%s %s", pktag, pkmsg)
3152 message[192] = '^0'
3153
3154 replace_all(message, 191, "!g", "^x04")
3155 replace_all(message, 191, "!n", "^x01")
3156 replace_all(message, 191, "!t", "^x03")
3157 kz_print_msg(id, message)
3158 }
3159 }
3160 else
3161 {
3162 for(new i = 1; i <= g_iMaxPlayers; i++)
3163 {
3164 if(is_plr_connected[i])
3165 {
3166 new changedcount = 0
3167
3168 for(j = 2; j < argscount; j++)
3169 {
3170 if(getarg(j) == LANG_PLAYER)
3171 {
3172 setarg(j, 0, i);
3173 changed[changedcount++] = j;
3174 }
3175 }
3176 vformat(pkmsg, 179, msg, 4)
3177 formatex(message[1], 255, "%s %s", pktag, pkmsg)
3178 message[192] = '^0'
3179
3180 replace_all(message, 191, "!g", "^x04")
3181 replace_all(message, 191, "!n", "^x01")
3182 replace_all(message, 191, "!t", "^x03")
3183 kz_print_msg(i, message)
3184
3185 for(j = 0; j < changedcount; j++)
3186 {
3187 setarg(changed[j], 0, LANG_PLAYER)
3188 }
3189 }
3190 }
3191 }
3192}
3193
3194stock kz_print_msg(id, const msg[])
3195{
3196 message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
3197 write_byte(id)
3198 write_string(msg)
3199 message_end()
3200}
3201
3202stock set_user_duck(id)
3203{
3204 set_pev(id, pev_flags, pev(id, pev_flags) | FL_DUCKING)
3205 engfunc( EngFunc_SetSize, id, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX)
3206}
3207
3208stock set_user_scoreattrib(id, attrib = 0)
3209{
3210 message_begin(MSG_BROADCAST, g_ScoreAttrib, _, 0)
3211 write_byte(id)
3212 write_byte(attrib)
3213 message_end()
3214}
3215
3216stock set_user_teaminfo(id, teamstatus[])
3217{
3218 emessage_begin(MSG_BROADCAST, g_TeamInfo)
3219 ewrite_byte(id)
3220 ewrite_string(teamstatus)
3221 emessage_end()
3222}
3223
3224stock fm_set_plr_model(id, const Model[])
3225{
3226 copy(g_iPlayerModel[id], charsmax(g_iPlayerModel[]), Model)
3227 fm_set_admin_vipmodel(id, g_iPlayerModel[id])
3228}
3229
3230stock fm_set_admin_vipmodel(id, const model[])
3231{
3232 set_pev(id, pev_rendermode, kRenderTransTexture)
3233 set_pev(id, pev_renderamt, 1.0)
3234
3235 static modelpath[100]
3236 formatex(modelpath, 99, "models/player/%s/%s.mdl", model, model)
3237
3238 if(!pev_valid(g_iEntPlayerModel[id]))
3239 {
3240 g_iEntPlayerModel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
3241
3242 if (!pev_valid(g_iEntPlayerModel[id])) return
3243
3244 set_pev(g_iEntPlayerModel[id], pev_classname, "ent_playermodel")
3245 set_pev(g_iEntPlayerModel[id], pev_movetype, MOVETYPE_FOLLOW)
3246 set_pev(g_iEntPlayerModel[id], pev_aiment, id)
3247 set_pev(g_iEntPlayerModel[id], pev_owner, id)
3248 }
3249 engfunc(EngFunc_SetModel, g_iEntPlayerModel[id], modelpath)
3250}
3251
3252stock fm_set_admin_weaponmodel(id)
3253{
3254 static model[100]
3255 pev(id, pev_weaponmodel2, model, 99)
3256
3257 if(!pev_valid(g_iEntWeaponModel[id]))
3258 {
3259 g_iEntWeaponModel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
3260
3261 if (!pev_valid(g_iEntWeaponModel[id])) return
3262
3263 set_pev(g_iEntWeaponModel[id], pev_classname, "ent_weaponmodel")
3264 set_pev(g_iEntWeaponModel[id], pev_movetype, MOVETYPE_FOLLOW)
3265 set_pev(g_iEntWeaponModel[id], pev_aiment, id)
3266 set_pev(g_iEntWeaponModel[id], pev_owner, id)
3267 }
3268 engfunc(EngFunc_SetModel, g_iEntWeaponModel[id], model)
3269}
3270
3271stock fm_remove_model_ents(id)
3272{
3273 set_pev(id, pev_rendermode, kRenderNormal)
3274
3275 if(pev_valid(g_iEntPlayerModel[id]))
3276 {
3277 engfunc(EngFunc_RemoveEntity, g_iEntPlayerModel[id])
3278 g_iEntPlayerModel[id] = 0
3279 }
3280 if(pev_valid(g_iEntWeaponModel[id]))
3281 {
3282 engfunc(EngFunc_RemoveEntity, g_iEntWeaponModel[id])
3283 g_iEntWeaponModel[id] = 0
3284 }
3285}
3286
3287stock ham_strip_weapon(id,weapon[])
3288{
3289 if(!equal(weapon,"weapon_",7)) return 0
3290
3291 new wId = get_weaponid(weapon)
3292 if(!wId) return 0
3293
3294 new wEnt
3295 while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
3296 if(!wEnt) return 0
3297
3298 if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)
3299
3300 if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
3301 ExecuteHamB(Ham_Item_Kill,wEnt)
3302
3303 set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))
3304
3305 return 1
3306}
3307
3308stock kz_set_health(id)
3309{
3310 new Float:fHealth = 255.0
3311 if(pev(id, pev_health) < fHealth)
3312 {
3313 set_pev(id, pev_health, fHealth)
3314 set_pev(id, pev_max_health, fHealth)
3315 }
3316}
3317
3318stock kz_set_weapons(id)
3319{
3320 if(!is_plr_bot[id])
3321 {
3322 strip_user_weapons(id)
3323 give_item(id, "weapon_knife")
3324 give_item(id, "weapon_usp")
3325 if(g_bHasScout[id])
3326 give_item(id, "weapon_scout")
3327 g_bWeapons[id] = false
3328 }
3329}
3330
3331stock kz_team_join(id, MenuMsgid, Team[], Class[])
3332{
3333 static jointeam[] = "jointeam"
3334 if (Class[0] == '0' )
3335 {
3336 engclient_cmd(id, jointeam, Team)
3337 return
3338 }
3339 static MsgBlock, joinclass[] = "joinclass"
3340 MsgBlock = get_msg_block(MenuMsgid)
3341 set_msg_block(MenuMsgid, BLOCK_SET)
3342 engclient_cmd(id, jointeam, Team)
3343 engclient_cmd(id, joinclass, Class)
3344 set_msg_block(MenuMsgid, MsgBlock)
3345}
3346
3347stock kz_set_autojoin_task(id, MenuMsgid)
3348{
3349 static ParamMenuMsgid[2]
3350 ParamMenuMsgid[0] = MenuMsgid
3351 set_task(0.1, "PlayerTeamJoin", id + TASK_AUTOJOIN, ParamMenuMsgid, sizeof ParamMenuMsgid)
3352}
3353
3354stock bool:ShouldAutoJoin(id)
3355{
3356 return (!get_user_team(id) && !task_exists(id + TASK_AUTOJOIN))
3357}
3358
3359stock kz_callfunc(id, function[], plugin[], onoff[])
3360{
3361 if(callfunc_begin(function, plugin) == 1)
3362 {
3363 callfunc_push_int(id)
3364 callfunc_push_str(onoff)
3365 callfunc_end()
3366 }
3367}
3368
3369stock kz_make_lgt(id, Float:origin[3], Red, Green, Blue)
3370{
3371 message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id)
3372 write_byte(TE_DLIGHT)
3373 engfunc(EngFunc_WriteCoord, origin[0])
3374 engfunc(EngFunc_WriteCoord, origin[1])
3375 engfunc(EngFunc_WriteCoord, origin[2])
3376 write_byte(get_pcvar_num(g_kz_nvg_radius))
3377 write_byte(Red)
3378 write_byte(Green)
3379 write_byte(Blue)
3380 write_byte(2)
3381 write_byte(0)
3382 message_end()
3383}
3384
3385stock kz_make_nvg(id)
3386{
3387 new r, g, b
3388 GetCvarColor(g_kz_nvg_color, r, g, b)
3389
3390 message_begin( MSG_ONE_UNRELIABLE, g_ScreenFade, _, id)
3391 write_short(1<<0)
3392 write_short(1<<0)
3393 write_short(0x0004)
3394 write_byte(r)
3395 write_byte(g)
3396 write_byte(b)
3397 write_byte(50)
3398 message_end()
3399
3400 set_task(0.1, "kz_set_nvg", id + TASK_NVG, _, _, "b")
3401}
3402
3403stock kz_remove_nvg(id)
3404{
3405 message_begin( MSG_ONE_UNRELIABLE, g_ScreenFade, _, id)
3406 write_short(0)
3407 write_short(0)
3408 write_short(0x0000)
3409 write_byte(0)
3410 write_byte(0)
3411 write_byte(0)
3412 write_byte(0)
3413 message_end()
3414
3415 remove_task(id + TASK_NVG)
3416 g_bPlayerNvgUse[id] = false
3417}
3418
3419stock kz_set_nvg_msg(id, bool:toggle)
3420{
3421 message_begin(MSG_ONE_UNRELIABLE, g_NVGToggle, _, id)
3422 write_byte(toggle)
3423 message_end()
3424}
3425
3426stock kz_register_saycmd(const saycommand[], const function[], flags)
3427{
3428 new temp[64]
3429 formatex(temp, 63, "say /%s", saycommand)
3430 register_clcmd(temp, function, flags)
3431 formatex(temp, 63, "say .%s", saycommand)
3432 register_clcmd(temp, function, flags)
3433 formatex(temp, 63, "say_team /%s", saycommand)
3434 register_clcmd(temp, function, flags)
3435 formatex(temp, 63, "say_team .%s", saycommand)
3436 register_clcmd(temp, function, flags)
3437}
3438
3439kz_make_config(const sConfig[]) {
3440
3441 new f = fopen(sConfig, "wt")
3442
3443 new sCvarSrting[32]
3444
3445 fprintf(f, "// %s %s by %s - Cvars Config ^n^n", PLUGIN, VERSION, AUTHOR)
3446
3447 fprintf(f, "// Game Description^n")
3448 fprintf(f, "// 0 - Disabled^n")
3449 fprintf(f, "// 1 - Enabled^n")
3450 fprintf(f, "//^n")
3451 fprintf(f, "// Default: 1^n")
3452 fprintf(f, "kz_modname_enable %i^n^n", get_pcvar_num(g_kz_modname_enable))
3453
3454 fprintf(f, "// Recommend to set this Cvars via Admin Menu^n")
3455 fprintf(f, "// Type /amenu in chat to open the Admin Menu^n")
3456 fprintf(f, "// kz_checkpoints %i^n", get_pcvar_num(g_kz_checkpoints))
3457 fprintf(f, "// kz_godmode %i^n", get_pcvar_num(g_kz_godmode))
3458 fprintf(f, "// kz_autojoin %i^n", get_pcvar_num(g_kz_autojoin))
3459 fprintf(f, "// kz_scout %i^n", get_pcvar_num(g_kz_scout))
3460 fprintf(f, "// kz_adminglow %i^n", get_pcvar_num(g_kz_adminglow))
3461 fprintf(f, "// kz_semiclip %i^n", get_pcvar_num(g_kz_semiclip))
3462 fprintf(f, "// kz_bhop %i^n", get_pcvar_num(g_kz_bhop))
3463 fprintf(f, "// kz_transparency %i^n", get_pcvar_num(g_kz_transparency))
3464 fprintf(f, "// kz_cheatdetect %i^n^n", get_pcvar_num(g_kz_cheatdetect))
3465
3466 fprintf(f, "// Set how many Checkpoint are allowed to use for^n")
3467 fprintf(f, "// pro climber to get on Pro15 rank^n")
3468 fprintf(f, "// 0 - Only climber with No Checks get on Pro15 rank^n")
3469 fprintf(f, "//^n")
3470 fprintf(f, "// Default: 10000^n")
3471 fprintf(f, "kz_maxpro_cp %i^n^n", get_pcvar_num(g_kz_maxpro_cp))
3472
3473 fprintf(f, "// Set Player Individually Auto-Start-Position^n")
3474 fprintf(f, "// 0 - Disabled^n")
3475 fprintf(f, "// 1 - Enabled^n")
3476 fprintf(f, "//^n")
3477 fprintf(f, "// Default: 1^n")
3478 fprintf(f, "kz_autostart %i^n^n", get_pcvar_num(g_kz_autostart))
3479
3480 fprintf(f, "// Allows started Player to pause his time^n")
3481 fprintf(f, "// 0 - Disabled^n")
3482 fprintf(f, "// 1 - Enabled^n")
3483 fprintf(f, "//^n")
3484 fprintf(f, "// Default: 1^n")
3485 fprintf(f, "kz_pause %i^n^n", get_pcvar_num(g_kz_pause))
3486
3487 fprintf(f, "// Allows Player to join team Spectator^n")
3488 fprintf(f, "// 0 - Disabled^n")
3489 fprintf(f, "// 1 - Enabled^n")
3490 fprintf(f, "//^n")
3491 fprintf(f, "// Default: 1^n")
3492 fprintf(f, "kz_spec %i^n^n", get_pcvar_num(g_kz_spec))
3493
3494 fprintf(f, "// Kz Start and Finish sounds^n")
3495 fprintf(f, "// 0 - Disabled^n")
3496 fprintf(f, "// 1 - Start & Finish sound Enabled^n")
3497 fprintf(f, "// 2 - Only Start sound Enabled^n")
3498 fprintf(f, "// 3 - Only Finish sound Enabled^n")
3499 fprintf(f, "//^n")
3500 fprintf(f, "// Default: 1^n")
3501 fprintf(f, "kz_sounds %i^n^n", get_pcvar_num(g_kz_sounds))
3502
3503 fprintf(f, "// Set Admin Model^n")
3504 fprintf(f, "// 0 - Sas Model^n")
3505 fprintf(f, "// 1 - Vip Model and Scoreboard Attribute Vip^n")
3506 fprintf(f, "// 2 - Arctic Model and Scoreboard Attribute Vip^n")
3507 fprintf(f, "//^n")
3508 fprintf(f, "// Default: 1^n")
3509 fprintf(f, "kz_vip %i^n^n", get_pcvar_num(g_kz_vip))
3510
3511 fprintf(f, "// Kz Startmoney^n")
3512 fprintf(f, "//^n")
3513 fprintf(f, "// Default: 1337^n")
3514 fprintf(f, "kz_money %i^n^n", get_pcvar_num(g_kz_money))
3515
3516 fprintf(f, "// Player self kill command^n")
3517 fprintf(f, "// 0 - Self kill allowed^n")
3518 fprintf(f, "// 1 - Self kill not allowed^n")
3519 fprintf(f, "//^n")
3520 fprintf(f, "// Default: 1^n")
3521 fprintf(f, "kz_nokill %i^n^n", get_pcvar_num(g_kz_nokill))
3522
3523 fprintf(f, "// Help Motd with all kz commands^n")
3524 fprintf(f, "// 0 - Disabled^n")
3525 fprintf(f, "// 1 - Enabled^n")
3526 fprintf(f, "//^n")
3527 fprintf(f, "// Default: 1^n")
3528 fprintf(f, "kz_help %i^n^n", get_pcvar_num(g_kz_help))
3529
3530 fprintf(f, "// Create Kz Bot^n")
3531 fprintf(f, "// 0 - Disabled^n")
3532 fprintf(f, "// 1 - Enabled^n")
3533 fprintf(f, "//^n")
3534 fprintf(f, "// Default: 1^n")
3535 fprintf(f, "kz_bot %i^n^n", get_pcvar_num(g_kz_bot))
3536
3537 fprintf(f, "// Kz Bot Name^n")
3538 fprintf(f, "//^n")
3539 fprintf(f, "// Default: ProKreedz Ultimativ v2.4^n")
3540 get_pcvar_string(g_kz_botname, sCvarSrting, 31)
3541 fprintf(f, "kz_botname ^"%s^"^n^n", sCvarSrting)
3542
3543 fprintf(f, "// Player rewards Hook and Jetpack^n")
3544 fprintf(f, "// 0 - Disabled^n")
3545 fprintf(f, "// 1 - Enabled^n")
3546 fprintf(f, "//^n")
3547 fprintf(f, "// Default: 1^n")
3548 fprintf(f, "kz_prize %i^n^n", get_pcvar_num(g_kz_prize))
3549
3550 fprintf(f, "// Info Msgs about receiving rewards^n")
3551 fprintf(f, "//^n")
3552 fprintf(f, "// Default: 60^n")
3553 fprintf(f, "kz_advert_time %i^n^n", get_pcvar_num(g_kz_advert_time))
3554
3555 fprintf(f, "// Door sounds^n")
3556 fprintf(f, "// 0 - Enabled^n")
3557 fprintf(f, "// 1 - Disabled^n")
3558 fprintf(f, "//^n")
3559 fprintf(f, "// Default: 1^n")
3560 fprintf(f, "kz_doorsound %i^n^n", get_pcvar_num(g_kz_doorsound))
3561
3562 fprintf(f, "// Pain sounds^n")
3563 fprintf(f, "// 0 - Enabled^n")
3564 fprintf(f, "// 1 - Disabled^n")
3565 fprintf(f, "//^n")
3566 fprintf(f, "// Default: 1^n")
3567 fprintf(f, "kz_painsound %i^n^n", get_pcvar_num(g_kz_painsound))
3568
3569 fprintf(f, "// Water sounds^n")
3570 fprintf(f, "// 0 - Enabled^n")
3571 fprintf(f, "// 1 - Disabled^n")
3572 fprintf(f, "//^n")
3573 fprintf(f, "// Default: 1^n")
3574 fprintf(f, "kz_watersound %i^n^n", get_pcvar_num(g_kz_watersound))
3575
3576 fprintf(f, "// Kz chat prefix^n")
3577 fprintf(f, "//^n")
3578 fprintf(f, "// Default: [ProKreedz]^n")
3579 get_pcvar_string(g_kz_tag, sCvarSrting, 31)
3580 fprintf(f, "kz_tag ^"%s^"^n^n", sCvarSrting)
3581
3582 fprintf(f, "// Player Autohealing^n")
3583 fprintf(f, "// 0 - Disabled^n")
3584 fprintf(f, "// 1 - Enabled^n")
3585 fprintf(f, "//^n")
3586 fprintf(f, "// Default: 1^n")
3587 fprintf(f, "kz_autoheal %i^n^n", get_pcvar_num(g_kz_autoheal))
3588
3589 fprintf(f, "// Set HP Amount for Autohealing^n")
3590 fprintf(f, "//^n")
3591 fprintf(f, "// Default: 50^n")
3592 fprintf(f, "kz_autoheal_hp %i^n^n", get_pcvar_num(g_kz_autoheal_hp))
3593
3594 fprintf(f, "// Give player all weapons^n")
3595 fprintf(f, "// 0 - Disabled^n")
3596 fprintf(f, "// 1 - Enabled^n")
3597 fprintf(f, "//^n")
3598 fprintf(f, "// Default: 1^n")
3599 fprintf(f, "kz_weapons %i^n^n", get_pcvar_num(g_kz_weapons))
3600
3601 fprintf(f, "// Show maxspeed of weapons^n")
3602 fprintf(f, "// 0 - Disabled^n")
3603 fprintf(f, "// 1 - Enabled^n")
3604 fprintf(f, "//^n")
3605 fprintf(f, "// Default: 1^n")
3606 fprintf(f, "kz_weaponspeed %i^n^n", get_pcvar_num(g_kz_weaponspeed))
3607
3608 fprintf(f, "// Set the color of weaponspeed Msg^n")
3609 fprintf(f, "//^n")
3610 fprintf(f, "// Default: 0 255 255^n")
3611 get_pcvar_string(g_kz_weaponspeed_color, sCvarSrting, 31)
3612 fprintf(f, "kz_weaponspeed_color ^"%s^"^n^n", sCvarSrting)
3613
3614 fprintf(f, "// Set the position of weaponspeed Msg^n")
3615 fprintf(f, "//^n")
3616 fprintf(f, "// Default: 0.35 0.75^n")
3617 get_pcvar_string(g_kz_weaponspeed_xypos, sCvarSrting, 31)
3618 fprintf(f, "kz_weaponspeed_xypos ^"%s^"^n^n", sCvarSrting)
3619
3620 fprintf(f, "// Show Player Keys^n")
3621 fprintf(f, "// 0 - Disabled^n")
3622 fprintf(f, "// 1 - Enabled^n")
3623 fprintf(f, "//^n")
3624 fprintf(f, "// Default: 1^n")
3625 fprintf(f, "kz_showkeys %i^n^n", get_pcvar_num(g_kz_showkeys))
3626
3627 fprintf(f, "// Set the color of showkeys Msg^n")
3628 fprintf(f, "//^n")
3629 fprintf(f, "// Default: 0 255 255^n")
3630 get_pcvar_string(g_kz_showkeys_color, sCvarSrting, 31)
3631 fprintf(f, "kz_showkeys_color ^"%s^"^n^n", sCvarSrting)
3632
3633 fprintf(f, "// Set the position of showkeys Msg^n")
3634 fprintf(f, "//^n")
3635 fprintf(f, "// Default: -1.0 -0.40^n")
3636 get_pcvar_string(g_kz_showkeys_xypos, sCvarSrting, 31)
3637 fprintf(f, "kz_showkeys_xypos ^"%s^"^n^n", sCvarSrting)
3638
3639 fprintf(f, "// Kz Custom Nightvision^n")
3640 fprintf(f, "// 0 - Disabled^n")
3641 fprintf(f, "// 1 - Enabled^n")
3642 fprintf(f, "//^n")
3643 fprintf(f, "// Default: 1^n")
3644 fprintf(f, "kz_nvg_enabled %i^n^n", get_pcvar_num(g_kz_nvg_enabled))
3645
3646 fprintf(f, "// Kz Custom Nightvision Radius^n")
3647 fprintf(f, "//^n")
3648 fprintf(f, "// Default: 70^n")
3649 fprintf(f, "kz_nvg_radius %i^n^n", get_pcvar_num(g_kz_nvg_radius))
3650
3651 fprintf(f, "// Set the color of custom Nvg^n")
3652 fprintf(f, "//^n")
3653 fprintf(f, "// Default: 0 255 255^n")
3654 get_pcvar_string(g_kz_nvg_color, sCvarSrting, 31)
3655 fprintf(f, "kz_nvg_color ^"%s^"^n^n", sCvarSrting)
3656
3657 fprintf(f, "// Set the color of Palyer time Msg^n")
3658 fprintf(f, "//^n")
3659 fprintf(f, "// Default: 0 255 255^n")
3660 get_pcvar_string(g_kz_time_color, sCvarSrting, 31)
3661 fprintf(f, "kz_time_color ^"%s^"^n^n", sCvarSrting)
3662
3663 fprintf(f, "// Set the color of pause and spec Msg^n")
3664 fprintf(f, "//^n")
3665 fprintf(f, "// Default: 255 0 0^n")
3666 get_pcvar_string(g_kz_status_color, sCvarSrting, 31)
3667 fprintf(f, "kz_status_color ^"%s^"^n^n", sCvarSrting)
3668
3669 fprintf(f, "// Set the color of Health Msg^n")
3670 fprintf(f, "// Health Msg will be shown when Health is greater 255 HP^n")
3671 fprintf(f, "//^n")
3672 fprintf(f, "// Default: 255 50 0^n")
3673 get_pcvar_string(g_kz_showhealth_color, sCvarSrting, 31)
3674 fprintf(f, "kz_showhealth_color ^"%s^"^n^n", sCvarSrting)
3675
3676 fprintf(f, "// Set the positionof Health Msg^n")
3677 fprintf(f, "//^n")
3678 fprintf(f, "// Default: -1.0 0.9^n")
3679 get_pcvar_string(g_kz_showhealth_xypos, sCvarSrting, 31)
3680 fprintf(f, "kz_showhealth_xypos ^"%s^"^n^n", sCvarSrting)
3681
3682 fprintf(f, "// StatusText Types^n")
3683 fprintf(f, "// 0 - Show Hud Msg as Staustext - (Show only player name)^n")
3684 fprintf(f, "// 1 - Show Original Staustext - (Show only player name)^n")
3685 fprintf(f, "//^n")
3686 fprintf(f, "// Default: 1^n")
3687 fprintf(f, "kz_statustext %i^n^n", get_pcvar_num(g_kz_statustext))
3688
3689 fprintf(f, "// Set the color of Statustext Msg^n")
3690 fprintf(f, "//^n")
3691 fprintf(f, "// Default: 255 255 0^n")
3692 get_pcvar_string(g_kz_statustext_color, sCvarSrting, 31)
3693 fprintf(f, "kz_statustext_color ^"%s^"^n^n", sCvarSrting)
3694
3695 fprintf(f, "// Set the position of Statustext Msg^n")
3696 fprintf(f, "//^n")
3697 fprintf(f, "// Default: -1.0 0.52^n")
3698 get_pcvar_string(g_kz_statustext_xypos, sCvarSrting, 31)
3699 fprintf(f, "kz_statustext_xypos ^"%s^"^n^n", sCvarSrting)
3700
3701 fclose(f)
3702
3703 server_cmd("exec %s", sConfig)
3704 server_exec()
3705}