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