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