Перешел на ReHLDS
сборка 48/1.1.2.7/Stdio 1029 secure
ReGameDLL не ставил (с ним сразу крашится сервер)
Так Же перешел на Reamxmodx v7
Лог:
- Код: Выделить всё
[AMXX] Displaying debug trace (plugin "prokreedz.amxx", version "unknown")
[AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
[AMXX] [0] prokreedz.sma::kz_hud_message (line 1512)
[AMXX] [1] prokreedz.sma::curweapon (line 633)
строчка
- Код: Выделить всё
1511 set_hudmessage(str_to_num®, str_to_num(g), str_to_num(b), -1.0, 0.90, 0, 0.0, 2.0, 0.0, 1.0, -1);
1512 ShowSyncHudMsg(id, hud_message, msg);
- Код: Выделить всё
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <colorchat>
#include <fakemeta>
#include <hamsandwich>
#define KZ_LEVEL ADMIN_KICK
#define MAX_ENTITYS 900+15*32
#define SCOREATTRIB_NONE 0
#define SCOREATTRIB_DEAD ( 1 << 0 )
#define SCOREATTRIB_BOMB ( 1 << 1 )
#define SCOREATTRIB_VIP ( 1 << 2 )
#if cellbits == 32
#define OFFSET_BUYZONE 235
#else
#define OFFSET_BUYZONE 268
#endif
new g_iPlayers[32], g_iNum, g_iPlayer
new const g_szAliveFlags[] = "a"
#define RefreshPlayersList() get_players(g_iPlayers, g_iNum, g_szAliveFlags)
new const FL_ONGROUND2 = ( FL_ONGROUND | FL_PARTIALGROUND | FL_INWATER | FL_CONVEYOR | FL_FLOAT )
new const KZ_TOP15_DIR[] = "addons/amxmodx/configs/kz/top15"
new const KZ_DIR[] = "addons/amxmodx/configs/kz"
new const KZ_STARTFILE[] = "start.ini"
new const KZ_STARTFILE_TEMP[] = "temp_start.ini"
new Float:Pro_Times[24]
new Pro_AuthIDS[24][32]
new Pro_Names[24][32]
new Pro_Date[24][32]
new Float:Noob_Tiempos[24]
new Noob_AuthIDS[24][32]
new Noob_Names[24][32]
new Noob_Date[24][32]
new Noob_CheckPoints[24]
new Noob_GoChecks[24]
new Float:Checkpoints[33][2][3]
new Float:timer_time[33]
new Float:g_pausetime[33]
new Float:antihookcheat[33]
new Float:SpecLoc[33][3]
new Float:PauseOrigin[33][3]
new Float:SavedStart[33][3]
new hookorigin[33][3]
new Float:DefaultStartPos[3]
new bool:g_bCpAlternate[33]
new bool:timer_started[33]
new bool:IsPaused[33]
new bool:firstspawn[33]
new bool:canusehook[33]
new bool:ishooked[33]
new bool:NightVisionUse[33]
new bool:HealsOnMap
new bool:gViewInvisible[33]
new bool:gMarkedInvisible[33] = { true, ...};
new bool:gWaterInvisible[33]
new bool:gWaterEntity[MAX_ENTITYS]
new bool:gWaterFound
new bool:DefaultStart
new bool:AutoStart[33]
new Trie:g_tStarts
new Trie:g_tStops;
new checknumbers[33]
new gochecknumbers[33]
new g_WeaponUsed[33]
new ShowTime[33]
new kz_checkpoints
new kz_godmode
new kz_cheatdetect
new kz_spawn_mainmenu
new kz_show_timer
new kz_chatorhud
new kz_hud_color
new hud_message
new kz_other_weapons
new kz_maxspeedmsg
new kz_drop_weapons
new kz_remove_drops
new kz_strip_other_weapons
new kz_reload_weapons
new kz_use_radio
new kz_hook_prize
new kz_hook_sound
new kz_hook_speed
new kz_pause
new kz_nvg
new kz_nvg_colors
new kz_vip
new kz_respawn_ct
new kz_semiclip
new kz_spec_saves
new kz_save_autostart
new kz_showtime_start
new MaxPlayers
new const other_top_weapons[8] =
{
CSW_SCOUT, CSW_P90, CSW_FAMAS, CSW_SG552,
CSW_M4A1, CSW_M249, CSW_AK47, CSW_AWP
}
// Sprites
new Sbeam = 0
// ================================================================================
=================
public plugin_init()
{
register_plugin("ProKreedz","2.0y","p4ddY & Diggz & nucLeaR")
kz_checkpoints = register_cvar("kz_checkpoints","1")
kz_godmode = register_cvar("kz_godmode","1")
kz_cheatdetect = register_cvar("kz_cheatdetect","1")
kz_spawn_mainmenu = register_cvar("kz_spawn_mainmenu", "1")
kz_show_timer = register_cvar("kz_show_timer", "1")
kz_chatorhud = register_cvar("kz_chatorhud", "2")
kz_hud_color = register_cvar("kz_hud_color", "87 221 12")
kz_other_weapons = register_cvar("kz_other_weapons","1")
kz_drop_weapons = register_cvar("kz_drop_weapons", "0")
kz_remove_drops = register_cvar("kz_remove_drops", "1")
kz_strip_other_weapons = register_cvar("kz_strip_other_weapons", "1")
kz_reload_weapons = register_cvar("kz_reload_weapons", "0")
kz_maxspeedmsg = register_cvar("kz_maxspeedmsg","1")
kz_hook_prize = register_cvar("kz_hook_prize","1")
kz_hook_sound = register_cvar("kz_hook_sound","1")
kz_hook_speed = register_cvar("kz_hook_speed", "300.0")
kz_use_radio = register_cvar("kz_use_radio", "0")
kz_pause = register_cvar("kz_pause", "1")
kz_nvg = register_cvar("kz_nvg","1")
kz_nvg_colors = register_cvar("kz_nvg_colors","5 0 255")
kz_vip = register_cvar("kz_vip","1")
kz_respawn_ct = register_cvar("kz_respawn_ct", "1")
kz_semiclip = register_cvar("kz_semiclip", "1")
kz_spec_saves = register_cvar("kz_spec_saves", "1")
kz_save_autostart = register_cvar("kz_save_autostart", "1")
kz_showtime_start = register_cvar("kz_showtime_start", "2")
register_clcmd("say .kreedz","kz_menu")
register_clcmd("say /kreedz","kz_menu")
register_clcmd("say .menu","kz_menu")
register_clcmd("say /menu","kz_menu")
register_clcmd("say /timer", "ShowTimer_Menu" )
register_clcmd( "say_team /timer", "ShowTimer_Menu" );
register_clcmd("say /showtimer", "ShowTimer_Menu")
register_clcmd("cp","CheckPoint")
register_clcmd("/cp","CheckPoint")
register_clcmd(".cp","CheckPoint")
register_clcmd("say /cp","CheckPoint")
register_clcmd("say /checkpoint","CheckPoint")
register_clcmd("tp","GoCheck")
register_clcmd("/tp","GoCheck")
register_clcmd(".tp","GoCheck")
register_clcmd("say /tp", "GoCheck")
register_clcmd("say /teleport", "GoCheck")
register_clcmd("gc","GoCheck")
register_clcmd("/gc","GoCheck")
register_clcmd(".gc","GoCheck")
register_clcmd("say /gc", "GoCheck")
register_clcmd("say /gocheck", "GoCheck")
register_clcmd("stuck","Stuck")
register_clcmd("/stuck","Stuck")
register_clcmd(".stuck", "Stuck")
register_clcmd("say .stuck","Stuck")
register_clcmd("say /stuck","Stuck")
register_clcmd("say .reset","reset_checkpoints")
register_clcmd("say /reset","reset_checkpoints")
register_clcmd("say .noclip","noclip")
register_clcmd("say /noclip","noclip")
register_clcmd("say /nc","noclip")
register_clcmd("say /spec","ct")
register_clcmd("say /ct","ct")
register_clcmd("say /pause", "Pause")
register_clcmd("say /invis", "InvisMenu")
register_clcmd("say /winvis", "cmdWaterInvisible")
register_clcmd("say /pinvis", "cmdInvisible")
register_concmd("kz_hook","give_hook", KZ_LEVEL, "<name|#userid|steamid|@ALL> <on/off>")
register_concmd("nightvision","ToggleNVG")
register_clcmd("say .top15","top15menu")
register_clcmd("say /top15","top15menu")
register_clcmd("say .top10","top15menu")
register_clcmd("say /top10","top15menu")
register_clcmd("say .noob10","NoobTop_show")
register_clcmd("say /noob10","NoobTop_show")
register_clcmd("say .noob15","NoobTop_show")
register_clcmd("say /noob15","NoobTop_show")
register_clcmd("say .nub10","NoobTop_show")
register_clcmd("say /nub10","NoobTop_show")
register_clcmd("say .nub15","NoobTop_show")
register_clcmd("say /nub15","NoobTop_show")
register_clcmd("say .pro10","ProTop_show")
register_clcmd("say /pro10","ProTop_show")
register_clcmd("say .pro15","ProTop_show")
register_clcmd("say /pro15","ProTop_show")
register_clcmd("say /weapons","weapons")
register_clcmd("say /scout", "cmdScout")
register_clcmd("say /usp", "cmdUsp")
register_clcmd("say /knife", "cmdUsp")
register_clcmd("say /start", "goStart");
register_clcmd("/start", "goStart");
register_clcmd("say /respawn", "goStart");
register_clcmd("/respawn", "goStart");
register_clcmd("say /setstart", "setStart", KZ_LEVEL, "")
register_clcmd("+hook","hook_on",KZ_LEVEL)
register_clcmd("-hook","hook_off",KZ_LEVEL)
register_event("ResetHUD","resethud","be")
register_event("CurWeapon","curweapon","be")
register_event( "StatusValue", "EventStatusValue", "b", "1>0", "2>0" );
register_forward(FM_StartFrame, "fw_StartFrame")
register_forward(FM_AddToFullPack, "FM_client_AddToFullPack_Post", 1)
RegisterHam( Ham_Player_PreThink, "player", "Ham_CBasePlayer_PreThink_Post", 1)
RegisterHam( Ham_Use, "func_button", "fwdUse", 0)
RegisterHam( Ham_Killed, "player", "Ham_CBasePlayer_Killed_Post", 1)
RegisterHam( Ham_Spawn, "weaponbox", "FwdSpawnWeaponbox", 1 )
RegisterHam( Ham_Spawn, "player", "FwdHamPlayerSpawn", 1 )
RegisterHam( Ham_Touch, "weaponbox", "GroundWeapon_Touch")
register_message( get_user_msgid( "ScoreAttrib" ), "MessageScoreAttrib" )
register_message( get_user_msgid( "StatusIcon" ), "msgStatusIcon" );
hud_message = CreateHudSyncObj()
MaxPlayers = get_maxplayers()
set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET)
set_task(0.5,"timer_task",2000,"",0,"ab")
if( !dir_exists(KZ_DIR) )
mkdir(KZ_DIR)
if( !dir_exists(KZ_TOP15_DIR) )
mkdir(KZ_TOP15_DIR)
new kreedz_cfg[128]
formatex(kreedz_cfg,128,"%s/kreedz.cfg",KZ_DIR)
if( file_exists( kreedz_cfg ) )
{
server_exec()
server_cmd("exec %s",kreedz_cfg)
}
g_tStarts = TrieCreate( )
g_tStops = TrieCreate( )
new const szStarts[ ][ ] =
{
"counter_start", "clockstartbutton", "firsttimerelay", "but_start", "counter_start_button",
"multi_start", "timer_startbutton", "start_timer_emi", "gogogo"
}
new const szStops[ ][ ] =
{
"counter_off", "clockstopbutton", "clockstop", "but_stop", "counter_stop_button",
"multi_stop", "stop_counter", "m_counter_end_emi"
}
for( new i = 0; i < sizeof szStarts; i++ )
TrieSetCell( g_tStarts, szStarts[ i ], 1 )
for( new i = 0; i < sizeof szStops; i++ )
TrieSetCell( g_tStops, szStops[ i ], 1 )
}
public plugin_end( )
{
TrieDestroy( g_tStarts )
TrieDestroy( g_tStops )
}
public plugin_precache()
{
RegisterHam( Ham_Spawn, "func_door", "FwdHamDoorSpawn", 1 )
precache_sound("weapons/xbow_hit2.wav")
Sbeam = precache_model("sprites/laserbeam.spr")
}
public plugin_cfg()
{
for (new i = 0 ; i < 15; ++i)
{
Pro_Times[i] = 999999999.00000;
Noob_Tiempos[i] = 999999999.00000;
}
read_pro15()
read_Noob15()
new startcheck[100], data[256], mapname[64], map[64], x[13], y[13], z[13];
get_mapname( mapname, 63)
formatex(startcheck, 99, "%s/%s", KZ_DIR, KZ_STARTFILE)
new f = fopen(startcheck, "rt" )
while( !feof( f ) )
{
fgets( f, data, sizeof data - 1 )
parse( data, map, 63, x, 12, y, 12, z, 12)
if( equali( map, mapname ) )
{
DefaultStartPos[0] = str_to_float(x)
DefaultStartPos[1] = str_to_float(y)
DefaultStartPos[2] = str_to_float(z)
DefaultStart = true
break;
}
}
fclose(f)
new ent = -1;
while( ( ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "func_water") ) != 0 )
{
if( !gWaterFound )
{
gWaterFound = true;
}
gWaterEntity[ent] = true;
}
ent = -1;
while( ( ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "func_illusionary") ) != 0 )
{
if( pev( ent, pev_skin ) == CONTENTS_WATER )
{
if( !gWaterFound )
{
gWaterFound = true;
}
gWaterEntity[ent] = true;
}
}
ent = -1;
while( ( ent = engfunc(EngFunc_FindEntityByString, ent, "classname", "func_conveyor") ) != 0 )
{
if( pev( ent, pev_spawnflags ) == 3 )
{
if( !gWaterFound )
{
gWaterFound = true;
}
gWaterEntity[ent] = true;
}
}
}
// ================================================================================
=================
// Global Functions
// ================================================================================
=================
public Pause(id)
{
if (get_pcvar_num(kz_pause) == 0)
{
kz_hud_message(id, "Пауза недоступна")
return PLUGIN_HANDLED
}
if(! timer_started[id])
{
kz_hud_message(id, "Таймер недоступен")
return PLUGIN_HANDLED
}
if(! is_user_alive(id) )
{
kz_hud_message(id, "Вы мертвы")
return PLUGIN_HANDLED
}
if( ( pev( id, pev_flags ) & FL_ONGROUND2 ) )
{
if(!IsPaused[id])
{
g_pausetime[id] = thetime() - timer_time[id]
timer_time[id] = 0.0
IsPaused[id] = true
kz_hud_message(id, "Таймер приостановлен")
set_pev(id, pev_flags, pev(id, pev_flags) | FL_FROZEN)
pev(id, pev_origin, PauseOrigin[id])
}
else
{
timer_time[id] = thetime() - g_pausetime[id] + timer_time[id]
IsPaused[id] = false
kz_hud_message(id, "Таймер возобновлен")
set_pev(id, pev_flags, pev(id, pev_flags) & ~FL_FROZEN)
}
}
else
kz_hud_message(id, "Вы должны быть на поверхности")
return PLUGIN_HANDLED
}
public timer_task()
{
for(new i=1;i<=MaxPlayers;i++)
{
if ( get_pcvar_num(kz_show_timer) == 1 )
{
if (is_user_alive(i))
{
if( is_user_connected(i) && timer_started[i])
{
new Float:kreedztime = thetime() - (IsPaused[i] ? thetime() - g_pausetime[i] : timer_time[i])
if( ShowTime[i] == 1 )
{
new colors[12], r[4], g[4], b[4];
new imin = floatround(kreedztime / 60.0,floatround_floor)
new isec = floatround(kreedztime - imin * 60.0,floatround_floor)
get_pcvar_string(kz_hud_color, colors, 11)
parse(colors, r, 3, g, 3, b, 4)
set_hudmessage(str_to_num®, str_to_num(g), str_to_num(b), 0.40, 0.10, 0, 0.0, 1.0, 0.0, 0.0, 1)
show_hudmessage(i, "Время: %02d:%02d | С.: %d | П.: %d ",imin, isec,checknumbers[i], gochecknumbers[i])
}
else
if( ShowTime[i] == 2 )
{
kz_showtime_roundtime(i, floatround(kreedztime))
}
}
}
else
{
new specmode = pev(i, pev_iuser1)
if(specmode == 2 || specmode == 4)
{
new target = pev(i, pev_iuser2)
if(target != i)
if(is_user_alive(target) && timer_started[target])
{
new name[32], colors[12], r[4], g[4], b[4];
get_user_name (target, name, 31)
new Float:kreedztime = thetime() - (IsPaused[target] ? thetime() - g_pausetime[target] : timer_time[target])
new imin = floatround(kreedztime / 60.0,floatround_floor)
new isec = floatround(kreedztime - imin * 60.0,floatround_floor)
get_pcvar_string(kz_hud_color, colors, 11)
parse(colors, r, 3, g, 3, b, 4)
set_hudmessage(str_to_num®, str_to_num(g), str_to_num(b), 0.40, 0.10, 0, 0.0, 1.0, 0.0, 0.0, 1)
show_hudmessage(i, "Время: %02d:%02d | C.: %d | П.: %d %s ",imin, isec, checknumbers[target], gochecknumbers[target], IsPaused[target] ? "| *Paused*" : "")
}
}
}
}
}
}
// ============================ Block Commands ================================
public client_command(id)
{
static szCmd[13]
read_argv(0, szCmd, 12)
static const commands_block[][] =
{
"radio1", "radio2", "radio3",
"coverme", "takepoint", "holdpos",
"regroup", "followme", "takingfire",
"go", "fallback", "sticktog",
"getinpos", "stormfront", "report",
"roger", "enemyspot", "needbackup",
"sectorclear", "inposition", "reportingin",
"getout", "negative", "enemydown",
"chooseteam", "jointeam 1"
}
static const drop_weapons[][] =
{
"drop"
}
if (get_pcvar_num(kz_use_radio) == 0)
for ( new i = 0 ; i < sizeof( commands_block ) ; i++ )
{
if(equal(szCmd, commands_block[i]))
return PLUGIN_HANDLED;
}
else
return PLUGIN_CONTINUE
if (get_pcvar_num(kz_drop_weapons) == 0)
for ( new i = 0 ; i < sizeof( drop_weapons ) ; i++ )
{
if(equal(szCmd, drop_weapons[i]))
return PLUGIN_HANDLED
}
else
return PLUGIN_CONTINUE
return PLUGIN_CONTINUE
}
public msgStatusIcon( const iMsgId, const iMsgDest, const iPlayer )
{
static szMsg[ 8 ];
get_msg_arg_string( 2, szMsg, 7 );
if( equal( szMsg, "buyzone" ) )
{
set_pdata_int( iPlayer, OFFSET_BUYZONE, get_pdata_int( iPlayer, OFFSET_BUYZONE ) & ~( 1<<0 ) )
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public CmdRespawn(id)
{
if ( get_user_team(id) == 3 )
return PLUGIN_HANDLED
else
ExecuteHamB(Ham_CS_RoundRespawn, id)
return PLUGIN_HANDLED
}
public ct(id)
{
new CsTeams:team = cs_get_user_team(id)
if (team == CS_TEAM_CT)
{
if( !( pev( id, pev_flags ) & FL_ONGROUND2 ) && timer_started[id] )
return PLUGIN_HANDLED
if (get_pcvar_num(kz_spec_saves) == 1)
{
pev(id, pev_origin, SpecLoc[id])
if ( timer_started[id] )
{
if ( IsPaused[id] )
Pause(id)
g_pausetime[id] = thetime() - timer_time[id]
timer_time[id] = 0.0
ColorChat(id, GREEN, "[XJ]^x01 Таймер приостановлен.")
}
}
if(gViewInvisible[id])
gViewInvisible[id] = false
cs_set_user_team(id,CS_TEAM_SPECTATOR)
set_pev(id, pev_solid, SOLID_NOT)
set_pev(id, pev_movetype, MOVETYPE_FLY)
set_pev(id, pev_effects, EF_NODRAW)
set_pev(id, pev_deadflag, DEAD_DEAD)
}
else
{
cs_set_user_team(id,CS_TEAM_CT)
set_pev(id, pev_effects, 0)
set_pev(id, pev_movetype, MOVETYPE_WALK)
set_pev(id, pev_deadflag, DEAD_NO)
set_pev(id, pev_takedamage, DAMAGE_AIM)
CmdRespawn(id)
fm_give_item(id,"weapon_knife")
fm_give_item(id,"weapon_usp")
fm_give_item(id,"weapon_usp")
fm_give_item(id,"weapon_usp")
if (get_pcvar_num(kz_spec_saves) == 1)
{
set_pev(id, pev_origin, SpecLoc[id])
if ( timer_started [id] )
timer_time[id] = thetime() - g_pausetime[id] + timer_time[id]
}
}
return PLUGIN_HANDLED
}
//=================== Weapons ==============
public curweapon(id)
{
new WeaponNum = read_data(2)
new WeaponActive = read_data(1)
if ((WeaponNum != g_WeaponUsed[id]) && WeaponActive) // if weapon has changed and its the active weapon continue
{
g_WeaponUsed[id] = WeaponNum
if(get_pcvar_num(kz_maxspeedmsg) == 1)
{
new clip, ammo, speed
switch(get_user_weapon(id,clip,ammo))
{
case CSW_SCOUT: speed = 260
case CSW_C4, CSW_P228, CSW_MAC10, CSW_MP5NAVY, CSW_USP, CSW_TMP, CSW_FLASHBANG, CSW_DEAGLE, CSW_GLOCK18, CSW_SMOKEGRENADE, CSW_ELITE, CSW_FIVESEVEN, CSW_UMP45, CSW_HEGRENADE, CSW_KNIFE: speed = 250
case CSW_P90: speed = 245
case CSW_XM1014, CSW_AUG, CSW_GALIL, CSW_FAMAS: speed = 240
case CSW_SG552: speed = 235
case CSW_M3, CSW_M4A1: speed= 230
case CSW_AK47: speed = 221
case CSW_M249: speed = 220
case CSW_G3SG1, CSW_SG550, CSW_AWP: speed = 210
}
kz_hud_message(id,"Скорость с этим оружием %d u/s",speed)
}
}
return PLUGIN_HANDLED
}
public weapons(id)
{
if (!timer_started[id])
{
if(get_pcvar_num(kz_other_weapons) == 1)
{
if(is_user_alive(id))
{
new bool:weaponsgiven
if(!user_has_weapon(id,CSW_KNIFE))
fm_give_item(id,"weapon_knife")
if(!user_has_weapon(id,CSW_USP)) {
fm_give_item(id,"weapon_usp")
}
if(!user_has_weapon(id,CSW_SCOUT)) {
fm_give_item(id, "weapon_scout")
weaponsgiven = true
}
if(!user_has_weapon(id,CSW_P90)) {
fm_give_item(id, "weapon_p90")
weaponsgiven = true
}
if(!user_has_weapon(id,CSW_FAMAS)) {
fm_give_item(id, "weapon_famas")
weaponsgiven = true
}
if(!user_has_weapon(id,CSW_SG552)) {
fm_give_item(id, "weapon_sg552")
weaponsgiven = true
}
if(!user_has_weapon(id,CSW_M4A1)) {
fm_give_item(id, "weapon_m4a1")
weaponsgiven = true
}
if(!user_has_weapon(id,CSW_M249)) {
fm_give_item(id, "weapon_m249")
weaponsgiven = true
}
if(!user_has_weapon(id,CSW_AK47)) {
fm_give_item(id, "weapon_ak47")
weaponsgiven = true
}
if(!user_has_weapon(id,CSW_AWP)) {
fm_give_item(id, "weapon_awp")
weaponsgiven = true
}
if(weaponsgiven)
kz_hud_message(id, "Вам дали оружия с разной скоростью")
}
else
kz_hud_message(id, "Вы мертвы")
}
else
kz_hud_message(id, "Разное оружие недоступно")
}
else
kz_hud_message(id, "Недоступно во время прохождения.Напиши /reset в чате")
return PLUGIN_HANDLED
}
// ========================= Scout =======================
public cmdScout(id)
{
fm_give_item(id,"weapon_scout")
return PLUGIN_HANDLED
}
public cmdUsp(id)
{
fm_give_item(id,"weapon_usp")
fm_give_item(id,"weapon_knife")
return PLUGIN_HANDLED
}
// ========================== Start location =================
public goStart(id)
{
if( !is_user_alive( id ) )
{
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Вы мертвы")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Вы мертвы")
return PLUGIN_HANDLED
}
if (IsPaused[id])
{
kz_hud_message(id, "Недоступно во время паузы")
return PLUGIN_HANDLED
}
if(get_pcvar_num(kz_save_autostart) == 1 && AutoStart [id] )
{
set_pev(id, pev_velocity, Float:{0.0, 0.0, 0.0})
set_pev( id, pev_flags, pev(id, pev_flags) | FL_DUCKING )
set_pev(id, pev_origin, SavedStart [id] )
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Вы перемещены на старт.")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Вы перемещены на старт")
}
else if ( DefaultStart )
{
set_pev(id, pev_velocity, Float:{0.0, 0.0, 0.0})
set_pev(id, pev_origin, DefaultStartPos)
}
else
{
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 На этой карте нет старта")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "На этой карте нет старта")
CmdRespawn(id)
}
return PLUGIN_HANDLED
}
public setStart(id)
{
if (! (get_user_flags( id ) & KZ_LEVEL ))
{
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 У вас нет прав")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, " У вас нет прав")
return PLUGIN_HANDLED
}
new Float:origin[3], mapname[64]
get_mapname(mapname, 63)
pev(id, pev_origin, origin)
kz_set_start(mapname, origin)
AutoStart[id] = false;
ColorChat(id, GREEN, "[XJ]^x01 Нажмите старт на этой карте.")
return PLUGIN_HANDLED
}
// ========= Respawn CT if dies ========
public Ham_CBasePlayer_Killed_Post(id)
{
if(get_pcvar_num(kz_respawn_ct) == 1)
{
if( get_pdata_int(id, 114) == 2 )
{
set_pev(id, pev_deadflag, DEAD_RESPAWNABLE)
fm_set_user_deaths(id, 0)
fm_set_user_frags(id, 0)
}
}
}
// ============================= NightVision ================================================
public ToggleNVG(id)
{
if(get_pcvar_num(kz_nvg) == 0)
return PLUGIN_CONTINUE;
if ( NightVisionUse[id] || !is_user_alive(id) )
StopNVG(id)
else
StartNVG(id)
return PLUGIN_HANDLED;
}
public StartNVG(id)
{
emit_sound(id,CHAN_ITEM,"items/nvg_on.wav",1.0,ATTN_NORM,0,PITCH_NORM)
set_task(0.1,"RunNVG",id+111111,_,_,"b")
NightVisionUse[id] = true;
return PLUGIN_HANDLED
}
public StopNVG(id)
{
emit_sound(id,CHAN_ITEM,"items/nvg_off.wav",1.0,ATTN_NORM,0,PITCH_NORM)
remove_task(id+111111)
NightVisionUse[id] = false;
return PLUGIN_HANDLED;
}
public RunNVG(taskid)
{
new id = taskid - 111111
if (!is_user_alive(id)) return
new origin[3]
get_user_origin(id,origin,3)
new color[17];
get_pcvar_string(kz_nvg_colors,color,16);
new iRed[5], iGreen[7], iBlue[5]
parse(color,iRed,4,iGreen ,6,iBlue,4)
message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id)
write_byte(TE_DLIGHT)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_byte(80)
write_byte(str_to_num(iRed))
write_byte(str_to_num(iGreen))
write_byte(str_to_num(iBlue))
write_byte(2)
write_byte(0)
message_end()
}
// ============================ Hook ==============================================================
public give_hook(id)
{
if (!( get_user_flags( id ) & KZ_LEVEL ))
return PLUGIN_HANDLED
new szarg1[32], szarg2[8], bool:mode
read_argv(1,szarg1,32)
read_argv(2,szarg2,32)
if(equal(szarg2,"on"))
mode = true
if(equal(szarg1,"@ALL"))
{
for(new i=1;i<=MaxPlayers;i++)
{
if(is_user_connected(i) && is_user_alive(i))
{
canusehook[i] = mode
if(mode)
{
ColorChat(i, GREEN, "[XJ]^x01 Веревка доступна, используйте bind с +hook ")
}
}
}
}
else
{
new pid = find_player("bl",szarg1);
if(pid > 0)
{
canusehook[pid] = mode
if(mode)
{
ColorChat(pid, GREEN, "[XJ]^x01 Веревка доступна, используйте bind с +hook")
}
}
}
return PLUGIN_HANDLED
}
// ================================================================================
=================
public hook_on(id)
{
if( !canusehook[id] && !( get_user_flags( id ) & KZ_LEVEL ) || !is_user_alive(id) )
return PLUGIN_HANDLED
if (IsPaused[id])
{
kz_hud_message(id, "Недоступно во время паузы")
return PLUGIN_HANDLED
}
detect_cheat(id,"Hook")
get_user_origin(id,hookorigin[id],3)
ishooked[id] = true
antihookcheat[id] = thetime()
if (get_pcvar_num(kz_hook_sound) == 1)
emit_sound(id,CHAN_STATIC,"weapons/xbow_hit2.wav",1.0,ATTN_NORM,0,PITCH_NORM)
set_task(0.1,"hook_task",id,"",0,"ab")
hook_task(id)
return PLUGIN_HANDLED
}
// ================================================================================
=================
public hook_off(id)
{
remove_hook(id)
return PLUGIN_HANDLED
}
// ================================================================================
=================
public hook_task(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
remove_hook(id)
remove_beam(id)
draw_hook(id)
new origin[3], Float:velocity[3]
get_user_origin(id,origin)
new distance = get_distance(hookorigin[id],origin)
velocity[0] = (hookorigin[id][0] - origin[0]) * (2.0 * get_pcvar_num(kz_hook_speed) / distance)
velocity[1] = (hookorigin[id][1] - origin[1]) * (2.0 * get_pcvar_num(kz_hook_speed) / distance)
velocity[2] = (hookorigin[id][2] - origin[2]) * (2.0 * get_pcvar_num(kz_hook_speed) / distance)
set_pev(id,pev_velocity,velocity)
}
// ================================================================================
=================
public draw_hook(id)
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(1) // TE_BEAMENTPOINT
write_short(id) // entid
write_coord(hookorigin[id][0]) // origin
write_coord(hookorigin[id][1]) // origin
write_coord(hookorigin[id][2]) // origin
write_short(Sbeam) // sprite index
write_byte(0) // start frame
write_byte(0) // framerate
write_byte(random_num(1,100)) // life
write_byte(random_num(1,20)) // width
write_byte(random_num(1,0)) // noise
write_byte(random_num(1,255)) // r
write_byte(random_num(1,255)) // g
write_byte(random_num(1,255)) // b
write_byte(random_num(1,500)) // brightness
write_byte(random_num(1,200)) // speed
message_end()
}
public remove_hook(id)
{
if(task_exists(id))
remove_task(id)
remove_beam(id)
ishooked[id] = false
}
public remove_beam(id)
{
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(99) // TE_KILLBEAM
write_short(id)
message_end()
}
public EventStatusValue( const id )
{
new szMessage[ 34 ], Target, aux
get_user_aiming(id, Target, aux)
formatex( szMessage, 33, "1 %s: %%p2", get_user_flags( Target ) & KZ_LEVEL ? "VIP" : "Player" )
message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "StatusText" ) , _, id )
write_byte( 0 )
write_string( szMessage )
message_end( )
}
//============================ VIP In ScoreBoard =================================================
public MessageScoreAttrib( iMsgID, iDest, iReceiver )
{
if( get_pcvar_num(kz_vip) )
{
new iPlayer = get_msg_arg_int( 1 )
if( is_user_connected( iPlayer ) && ( get_user_flags( iPlayer ) & KZ_LEVEL ) )
{
set_msg_arg_int( 2, ARG_BYTE, is_user_alive( iPlayer ) ? SCOREATTRIB_VIP : SCOREATTRIB_DEAD );
}
}
}
// ================================================================================
=================
public detect_cheat(id,reason[]) // I saw this feature in kz_multiplugin :o
{
if(timer_started[id] && get_pcvar_num(kz_cheatdetect) == 1)
{
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 %s обнаружен. Таймер обнуляется",reason)
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "%s обнаружен. Таймер обнуляется",reason)
timer_started[id] = false
}
}
// ================================================================================
=================
// Cmds
// ================================================================================
=================
public CheckPoint(id)
{
if(get_pcvar_num(kz_checkpoints) == 1)
{
if( !is_user_alive( id ) )
{
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01Вы мертвы")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Вы мертвы")
return PLUGIN_HANDLED
}
if( !( pev( id, pev_flags ) & FL_ONGROUND2 ) )
{
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Недоступно в полете")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Недоступно в полете")
return PLUGIN_HANDLED
}
if( IsPaused[id] )
{
if (get_pcvar_num(kz_chatorhud) == 1 )
ColorChat(id, GREEN, "[XJ]^x01 Недоступно во время пауза")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Недоступно во время пауза")
return PLUGIN_HANDLED
}
pev(id, pev_origin, Checkpoints[id][g_bCpAlternate[id] ? 1 : 0])
g_bCpAlternate[id] = !g_bCpAlternate[id]
checknumbers[id]++
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Сохранение #%d создано",checknumbers[id])
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Сохранение #%d",checknumbers[id])
}
else
{
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Сохранение недоступно")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, " Сохранение недоступно")
}
return PLUGIN_HANDLED
}
public GoCheck(id)
{
if( !is_user_alive( id ) )
{
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Вы мертвы.")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Вы мертвы")
return PLUGIN_HANDLED
}
if( checknumbers[id] == 0 )
{
if (get_pcvar_num(kz_chatorhud) == 1 )
ColorChat(id, GREEN, "[XJ]^x01 У вас нет сохранений")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "У вас нет сохранений")
return PLUGIN_HANDLED
}
if( IsPaused[id] )
{
if (get_pcvar_num(kz_chatorhud) == 1 )
ColorChat(id, GREEN, "[XJ]^x01 Недоступно во время пауза")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Недоступно во время пауза")
return PLUGIN_HANDLED
}
set_pev( id, pev_velocity, Float:{0.0, 0.0, 0.0} );
set_pev( id, pev_flags, pev(id, pev_flags) | FL_DUCKING );
set_pev( id, pev_fuser2, 0.0 );
engfunc( EngFunc_SetSize, id, {-16.0, -16.0, -18.0 }, { 16.0, 16.0, 18.0 } );
set_pev(id, pev_origin, Checkpoints[ id ][ !g_bCpAlternate[id] ] )
gochecknumbers[id]++
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Перемещение #%d",gochecknumbers[id])
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Перемещение #%d",gochecknumbers[id])
return PLUGIN_HANDLED
}
public Stuck(id)
{
if( !is_user_alive( id ) )
{
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Вы мертвы")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Вы мертвы")
return PLUGIN_HANDLED
}
if( checknumbers[id] < 2 )
{
if (get_pcvar_num(kz_chatorhud) == 1 )
ColorChat(id, GREEN, "[XJ]^x01 У вас нет сохранений")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "У вас нет сохранений")
return PLUGIN_HANDLED
}
set_pev( id, pev_velocity, Float:{0.0, 0.0, 0.0} );
set_pev( id, pev_flags, pev(id, pev_flags) | FL_DUCKING );
set_pev( id, pev_fuser2, 0.0 );
engfunc( EngFunc_SetSize, id, {-16.0, -16.0, -18.0 }, { 16.0, 16.0, 18.0 } );
set_pev(id, pev_origin, Checkpoints[id][g_bCpAlternate[id]] )
g_bCpAlternate[id] = !g_bCpAlternate[id];
gochecknumbers[id]++
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Перемещение #%d",gochecknumbers[id])
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Перемещение #%d",gochecknumbers[id])
return PLUGIN_HANDLED;
}
// ================================================================================
=================
public reset_checkpoints(id)
{
checknumbers[id] = 0
gochecknumbers[id] = 0
timer_started[id] = false
timer_time[id] = 0.0
if (get_pcvar_num(kz_show_timer) == 1 && ShowTime[id] == 2)
kz_showtime_roundtime(id, 0)
return PLUGIN_HANDLED
}
//===== Invis =======
public cmdInvisible(id)
{
if(!gViewInvisible[id])
{
gViewInvisible[id] = true
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Игроки ^x03 не отображаются^x01")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Игроки не отображаются")
}
else
{
gViewInvisible[id] = false
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Игроки^x03 отображаюся^x01")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Игроки отображаюся")
}
return PLUGIN_HANDLED
}
public cmdWaterInvisible(id)
{
if( gWaterFound )
{
if(!gWaterInvisible[id])
{
gWaterInvisible[id] = true
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Вода^x03 не отображается^x01")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Вода не отображается")
}
else
{
gWaterInvisible[id] = false
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Вода^x03 отображается^x01")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "Вода отображается")
}
}
else
{
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 На карте нет воды.")
else if (get_pcvar_num(kz_chatorhud) == 2)
kz_hud_message(id, "На карте нет воды")
}
return PLUGIN_HANDLED
}
public FM_client_AddToFullPack_Post(es, e, ent, host, hostflags, player, pSet)
{
if( player )
{
if (get_pcvar_num(kz_semiclip) == 1)
{
if ( host != ent && get_orig_retval() && is_user_alive(host) )
{
set_es(es, ES_Solid, SOLID_NOT)
set_es(es, ES_RenderMode, kRenderTransAlpha)
set_es(es, ES_RenderAmt, 85)
}
}
if(gMarkedInvisible[ent] && gViewInvisible[host])
{
set_es(es, ES_RenderMode, kRenderTransTexture)
set_es(es, ES_RenderAmt, 0)
set_es(es, ES_Origin, { 999999999.0, 999999999.0, 999999999.0 } )
}
}
else if( gWaterInvisible[host] && gWaterEntity[ent] )
{
set_es(es, ES_Effects, get_es( es, ES_Effects ) | EF_NODRAW )
}
if( get_pcvar_num(kz_godmode) == 1 )
fm_set_user_godmode(host,1)
else
fm_set_user_godmode(host,0)
return FMRES_IGNORED
}
public Ham_CBasePlayer_PreThink_Post(id)
{
if( !is_user_alive(id) )
{
return
}
RefreshPlayersList()
if (get_pcvar_num(kz_semiclip) == 1)
{
for(new i = 0; i<g_iNum; i++)
{
g_iPlayer = g_iPlayers[i]
if( id != g_iPlayer )
{
set_pev(g_iPlayer, pev_solid, SOLID_NOT)
}
}
}
}
public client_PostThink(id)
{
if( !is_user_alive(id) )
return
RefreshPlayersList()
if (get_pcvar_num(kz_semiclip) == 1)
for(new i = 0; i<g_iNum; i++)
{
g_iPlayer = g_iPlayers[i]
if( g_iPlayer != id )
set_pev(g_iPlayer, pev_solid, SOLID_SLIDEBOX)
}
}
//================================================================================
=================
public noclip(id)
{
if(read_argc() == 1 || read_argc() == 2)
{
fm_set_user_noclip(id,fm_get_user_noclip(id) == 1 ? 0 : 1)
if(fm_get_user_noclip(id) == 1)
detect_cheat(id,"Noclip")
}
return PLUGIN_HANDLED
}
// ================================================================================
=================
stock kz_set_start(const map[], Float:origin[3])
{
new realfile[128], tempfile[128], formatorigin[50]
formatex(realfile, 127, "%s/%s", KZ_DIR, KZ_STARTFILE)
formatex(tempfile, 127, "%s/%s", KZ_DIR, KZ_STARTFILE_TEMP)
formatex(formatorigin, 49, "%f %f %f", origin[0], origin[1], origin[2])
DefaultStartPos = origin
DefaultStart = true
new file = fopen(tempfile, "wt")
new vault = fopen(realfile, "rt")
new data[128], key[64]
new bool:replaced = false
while( !feof(vault) )
{
fgets(vault, data, 127)
parse(data, key, 63)
if( equal(key, map) && !replaced )
{
fprintf(file, "%s %s^n", map, formatorigin)
replaced = true
}
else
{
fputs(file, data)
}
}
if( !replaced )
{
fprintf(file, "%s %s^n", map, formatorigin)
}
fclose(file)
fclose(vault)
delete_file(realfile)
while( !rename_file(tempfile, realfile, 1) ) {}
}
stock _fm_set_entity_flags(index, flag, onoff)
{
new flags = pev(index, pev_flags)
if ((flags & flag) > 0)
return onoff == 1 ? 2 : 1 + 0 * set_pev(index, pev_flags, flags - flag)
else
return onoff == 0 ? 2 : 1 + 0 * set_pev(index, pev_flags, flags + flag)
return 0
}
stock fm_set_user_deaths(index, deaths)
{
set_pdata_int(index, 444, deaths, 5)
}
stock Float:thetime()
{
return get_gametime()
}
stock fm_set_user_frags(index, frags)
{
set_pev ( index, pev_frags, float(frags) )
return 1
}
stock fm_give_item(index, const item[])
{
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0;
new ent = fm_create_entity(item);
if (!pev_valid(ent))
return 0;
new Float:origin[3];
pev(index, pev_origin, origin);
set_pev(ent, pev_origin, origin);
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, ent);
new save = pev(ent, pev_solid);
dllfunc(DLLFunc_Touch, ent, index);
if (pev(ent, pev_solid) != save)
return ent;
engfunc(EngFunc_RemoveEntity, ent);
return -1;
}
stock fm_create_entity(const classname[])
return engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, classname))
stock fm_strip_user_weapons(index)
{
new ent = fm_create_entity("player_weaponstrip");
if( !pev_valid(ent) )
return 0;
set_pev(ent, pev_owner, index)
dllfunc(DLLFunc_Spawn, ent);
dllfunc(DLLFunc_Use, ent, index);
engfunc(EngFunc_RemoveEntity, ent);
return 1;
}
stock fm_set_user_godmode(index, godmode = 0)
{
set_pev(index, pev_takedamage, godmode == 1 ? 0.0 : 2.0)
return 1;
}
stock fm_set_user_noclip(index, noclip = 0)
{
set_pev(index, pev_movetype, noclip == 1 ? MOVETYPE_NOCLIP : MOVETYPE_WALK);
return 1;
}
stock fm_get_user_noclip(index)
{
return (pev(index, pev_movetype) == MOVETYPE_NOCLIP )
}
stock kz_showtime_roundtime(id, time)
{
if( is_user_connected(id) )
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid( "RoundTime" ), _, id);
write_short(time + 1);
message_end();
}
}
stock kz_hud_message(id, const message[], {Float,Sql,Result,_}:...)
{
static msg[192], colors[12], r[4], g[4], b[4];
vformat(msg, 191, message, 3);
get_pcvar_string(kz_hud_color, colors, 11)
parse(colors, r, 3, g, 3, b, 4)
set_hudmessage(str_to_num®, str_to_num(g), str_to_num(b), -1.0, 0.90, 0, 0.0, 2.0, 0.0, 1.0, -1);
ShowSyncHudMsg(id, hud_message, msg);
}
public FwdSpawnWeaponbox( iEntity )
{
if(get_pcvar_num(kz_remove_drops) == 1)
{
set_pev( iEntity, pev_flags, FL_KILLME )
dllfunc( DLLFunc_Think, iEntity )
}
return HAM_IGNORED
}
public FwdHamDoorSpawn( iEntity )
{
static const szNull[ ] = "common/null.wav";
new Float:flDamage;
pev( iEntity, pev_dmg, flDamage );
if( flDamage < -999.0 ) {
set_pev( iEntity, pev_noise1, szNull );
set_pev( iEntity, pev_noise2, szNull );
set_pev( iEntity, pev_noise3, szNull );
if( !HealsOnMap )
HealsOnMap = true
}
}
public FwdHamPlayerSpawn( id )
{
if( !is_user_alive( id ) )
return;
if( HealsOnMap )
set_pev( id, pev_health, 50175.0 )
if( IsPaused[id] )
{
set_pev(id, pev_flags, pev(id, pev_flags) | FL_FROZEN)
set_pev(id, pev_origin, PauseOrigin[id])
}
}
public GroundWeapon_Touch(iWeapon, id)
{
if( is_user_alive(id) && timer_started[id] )
return HAM_SUPERCEDE
return HAM_IGNORED
}
// ================================================================================
=================
// Events / Forwards
// ================================================================================
=================
public resethud(id)
{
if( !user_has_weapon(id,CSW_KNIFE) )
fm_give_item( id,"weapon_knife" )
if(firstspawn[id])
{
ColorChat(id, GREEN, "[XJ]^x01 Приветствуем вас на нашем ^x03 KZ Server^x01")
ColorChat(id, GREEN, "[XJ]^x01 На этом сервере установлен ^x03 Prokreedz mod^x01")
if(get_pcvar_num(kz_checkpoints) == 0)
ColorChat(id, GREEN, "[XJ]^x01 Сохранение недоступно")
if(get_pcvar_num(kz_spawn_mainmenu) == 1)
kz_menu (id)
}
firstspawn[id] = false
return HAM_IGNORED
}
//================================================================================
=================
public client_disconnect(id)
{
checknumbers[id] = 0
gochecknumbers[id] = 0
antihookcheat[id] = 0.0
timer_started[id] = false
ShowTime[id] = get_pcvar_num(kz_showtime_start)
firstspawn[id] = true
NightVisionUse[id] = false
IsPaused[id] = false
remove_hook(id)
}
public client_putinserver(id)
{
checknumbers[id] = 0
gochecknumbers[id] = 0
antihookcheat[id] = 0.0
timer_started[id] = false
ShowTime[id] = get_pcvar_num(kz_showtime_start)
firstspawn[id] = true
NightVisionUse[id] = false
IsPaused[id] = false
remove_hook(id)
}
// ================================================================================
=================
// Menu
// ================================================================================
=================
public kz_menu(id)
{
new menu = menu_create("\yГлавное меню\w", "MenuHandler")
menu_setprop(menu, MPROP_PERPAGE, 0)
new msgcheck[64], msggocheck[64], msgpause[64]
formatex(msgcheck, 63, "Сохранение - \y#%i", checknumbers[id])
formatex(msggocheck, 63, "Перемещение - \y#%i", gochecknumbers[id])
formatex(msgpause, 63, "Пауза - %s^n", IsPaused[id] ? "\yВкл." : "\rВыкл." )
menu_additem( menu, msgcheck, "1" )
menu_additem( menu, msggocheck, "2" )
menu_additem( menu, "Top 15^n", "3")
menu_additem( menu, "На старт", "4")
menu_additem( menu, "Таймер меню", "5" )
menu_additem( menu, msgpause, "6" )
menu_additem( menu, "Меню отображений", "7" )
menu_additem( menu, "В наблюдение", "8" )
menu_additem( menu, "Рестарт^n", "9")
menu_additem( menu, "Выход", "*" )
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public MenuHandler(id , menu, item)
{
if( item == MENU_EXIT ) {
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], name[32]
new access, callback
menu_item_getinfo(menu, item, access, data, 5, _, _, callback)
new key = str_to_num(data)
get_user_name(id, name, 31)
switch(key) {
case 1:{
CheckPoint(id)
kz_menu(id)
}
case 2:{
GoCheck(id)
kz_menu(id)
}
case 3:{
top15menu(id)
}
case 4:{
goStart(id)
kz_menu(id)
}
case 5:{
ShowTimer_Menu(id)
}
case 6:{
Pause(id)
kz_menu(id)
}
case 7:{
InvisMenu(id)
}
case 8:{
ct(id)
}
case 9:{
reset_checkpoints(id)
kz_menu(id)
}
case '*':{
}
}
return PLUGIN_HANDLED
}
public InvisMenu(id)
{
new menu = menu_create("\yМеню отображений\w", "InvisMenuHandler")
new msginvis[64], msgwaterinvis[64]
formatex(msginvis, 63, "Игроки - %s", gViewInvisible[id] ? "\yВкл." : "\rВыкл." )
formatex(msgwaterinvis, 63, "Вода - %s^n^n", gWaterInvisible[id] ? "\yВкл." : "\rВыкл." )
menu_additem( menu, msginvis, "1" )
menu_additem( menu, msgwaterinvis, "2" )
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public InvisMenuHandler (id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6]
new access, callback
menu_item_getinfo(menu, item, access, data, 5, _, _, callback)
new key = str_to_num(data)
switch(key)
{
case 1:
{
cmdInvisible(id)
InvisMenu(id)
}
case 2:
{
cmdWaterInvisible(id)
InvisMenu(id)
}
case 9:
{
show_menu(id,0,"")
}
}
return PLUGIN_HANDLED
}
public ShowTimer_Menu(id)
{
if (get_pcvar_num(kz_show_timer) == 0 )
{
kz_hud_message(id, "Показ таймера недоступен")
return PLUGIN_HANDLED
}
else
{
new menu = menu_create("\yТаймер меню\w", "TimerHandler")
new roundtimer[64], hudtimer[64], notimer[64];
formatex(roundtimer, 63, "Round таймер %s", ShowTime[id] == 2 ? "\y x" : "" )
formatex(hudtimer, 63, "HUD таймер %s", ShowTime[id] == 1 ? "\y x" : "" )
formatex(notimer, 63, "Без таймера %s^n", ShowTime[id] == 0 ? "\y x" : "" )
menu_additem( menu, roundtimer, "1" )
menu_additem( menu, hudtimer, "2" )
menu_additem( menu, notimer, "3" )
menu_additem( menu, "Главное меню", "4" )
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public TimerHandler (id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6]
new access, callback
menu_item_getinfo(menu, item, access, data, 5, _, _, callback)
new key = str_to_num(data)
switch(key)
{
case 1:
{
ShowTime[id]= 2
ShowTimer_Menu(id)
}
case 2:
{
ShowTime[id]= 1
ShowTimer_Menu(id)
if (timer_started[id])
kz_showtime_roundtime(id, 0)
}
case 3:
{
ShowTime[id]= 0
ShowTimer_Menu(id)
if (timer_started[id])
kz_showtime_roundtime(id, 0)
}
case 4:
{
kz_menu(id)
}
case 9:
{
show_menu(id,0,"")
}
}
return PLUGIN_HANDLED
}
public top15menu(id)
{
new menu = menu_create("\r\yTop15 \w", "top15handler")
menu_additem(menu, "\wPro 15", "1", 0)
menu_additem(menu, "\wNoob 15^n^n", "2", 0)
menu_additem(menu, "\wГлавное меню", "5", 0)
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public top15handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], iName[64]
new iaccess, callback
menu_item_getinfo(menu, item, iaccess, data,5, iName, 63, callback)
new key = str_to_num(data);
switch(key)
{
case 1:
{
ProTop_show(id)
}
case 2:
{
NoobTop_show(id)
}
case 5:
{
kz_menu(id)
}
case 9:
{
show_menu(id,0,"")
}
}
return PLUGIN_HANDLED;
}
// ================================================================================
=================
//
// Timersystem
// ================================================================================
=================
public fwdUse(ent, id)
{
if( !ent || id > 32 )
{
return HAM_IGNORED;
}
if( !is_user_alive(id) )
{
return HAM_IGNORED;
}
new name[32]
get_user_name(id, name, 31)
new szTarget[ 32 ];
pev(ent, pev_target, szTarget, 31);
if( TrieKeyExists( g_tStarts, szTarget ) )
{
if ( thetime() - antihookcheat[id] < 3.0 )
{
kz_hud_message( id, "Вы можете использовать веревку спустя 3 секунды" );
return PLUGIN_HANDLED
}
if ( reset_checkpoints(id) && !timer_started[id] )
{
start_climb(id)
if(get_pcvar_num(kz_strip_other_weapons) == 1)
for(new i = 0; i < 8; i++)
if( user_has_weapon(id, other_top_weapons[i]) )
{
fm_strip_user_weapons(id)
fm_give_item(id,"weapon_knife")
fm_give_item(id,"weapon_usp")
set_pdata_int(id, 382, 24, 5)
}
if( pev(id, pev_health) < 100 )
set_pev(id, pev_health, 100.0)
pev(id, pev_origin, SavedStart[id])
if(get_pcvar_num(kz_save_autostart) == 1)
AutoStart[id] = true;
if( !DefaultStart )
{
new mapname[64]
get_mapname( mapname, 63)
kz_set_start(mapname, SavedStart[id])
ColorChat(id, GREEN, "[XJ]^x01 Найдена стартовая точка.")
}
remove_hook(id)
}
}
if( TrieKeyExists( g_tStops, szTarget ) )
{
if( timer_started[id] )
{
finish_climb(id)
if(get_pcvar_num(kz_hook_prize) == 1 && !canusehook[id])
{
canusehook[id] = true
ColorChat(id, GREEN, "[XJ]^x01 Веревка доступна, используйте bind с +hook")
}
}
else
kz_hud_message(id, "Вы должны нажать кнопку старта")
}
return HAM_IGNORED
}
public start_climb(id)
{
if (get_pcvar_num(kz_chatorhud) == 1)
ColorChat(id, GREEN, "[XJ]^x01 Таймер включен.")
else
kz_hud_message(id, "Таймер включен")
if (get_pcvar_num(kz_reload_weapons) == 1)
{
fm_strip_user_weapons(id)
fm_give_item(id,"weapon_knife")
fm_give_item(id,"weapon_usp")
}
if (ShowTime[id] == 2)
kz_showtime_roundtime(id, 0)
set_pev(id, pev_gravity, 1.0);
set_pev(id, pev_movetype, MOVETYPE_WALK)
reset_checkpoints(id)
IsPaused[id] = false
timer_started[id] = true
timer_time[id] = thetime()
}
public finish_climb(id)
{
if (!is_user_alive (id))
{
return;
}
new Float: time
time = thetime() - timer_time[id]
show_finish_message(id, time)
timer_started[id] = false
if (gochecknumbers[id] == 0 && !user_has_weapon(id,CSW_SCOUT) )
ProTop_update(id, time)
if (gochecknumbers[id] > 0 || user_has_weapon(id,CSW_SCOUT) )
NoobTop_update(id, time, checknumbers[id], gochecknumbers[id])
}
public show_finish_message(id, Float:kreedztime)
{
new name[32]
new imin,isec,ims
get_user_name(id, name, 31)
kreedztime = thetime() - timer_time[id]
imin = floatround(kreedztime / 60.0, floatround_floor)
isec = floatround(kreedztime - imin * 60.0,floatround_floor)
ims = floatround( ( kreedztime - ( imin * 60.0 + isec ) ) * 100.0, floatround_floor )
ColorChat(0, GREEN, "[XJ]^x01^x03 %s^x01 закончил карту за^x04 %02i:%02i.%02i ^x01(%d С:%d, %d П:%d) %s!",name,imin,isec,ims,checknumbers[id],checknumbers[id] == 1 ? "" : "s",gochecknumbers[id],gochecknumbers[id] == 1 ? "" : "s", user_has_weapon(id,CSW_SCOUT) ? "^x03using scout": "")
}
//==========================================================
public ProTop_update(id, Float:time)
{
new authid[32], name[32], thetime[32];
get_user_name(id, name, 31);
get_user_authid(id, authid, 31);
get_time(" %d/%m/%Y ", thetime, 31);
new bool:Is_in_pro15
Is_in_pro15 = false
for(new i = 0; i < 15; i++)
{
if( equali(Pro_AuthIDS[i], authid) )
{
Is_in_pro15 = true
}
}
for (new i = 0; i < 15; i++)
{
new Float:protiempo = Pro_Times[i]
if( time < Pro_Times[i])
{
new pos = i
while( !equal(Pro_AuthIDS[pos], authid) && pos < 15 )
{
pos++;
}
for (new j = pos; j > i; j--)
{
formatex(Pro_AuthIDS[j], 31, Pro_AuthIDS[j-1]);
formatex(Pro_Names[j], 31, Pro_Names[j-1]);
formatex(Pro_Date[j], 31, Pro_Date[j-1])
Pro_Times[j] = Pro_Times[j-1];
}
formatex(Pro_AuthIDS[i], 31, authid);
formatex(Pro_Names[i], 31, name);
formatex(Pro_Date[i], 31, thetime)
Pro_Times[i] = time
//No olvidarse !! Aca poner para que lo Grabe :D
save_pro15()
if( Is_in_pro15 )
{
if( time < protiempo )
{
if( (i + 1) == 1)
{
client_cmd(0, "spk woop");
ColorChat(0, GREEN, "[XJ]^x01^x03 %s^x01 сейчас^x03 первый^x01 в ^x04Pro 15^x01" , name);
}
else
{
client_cmd(0, "spk buttons/bell1");
ColorChat(0, GREEN, "[XJ]^x01^x03 %s^x01сейчас на^x03 %d^x01 месте в ^x04Pro 15^x01" , name , (i+1));
}
}
}
else
{
if( (i + 1) == 1)
{
client_cmd(0, "spk woop");
ColorChat(0, GREEN, "[XJ]^x01^x03 %s^x01 сейчас^x03 первый^x01 в ^x04Pro 15^x01" , name);
}
else
{
client_cmd(0, "spk buttons/bell1");
ColorChat(0, GREEN, "[XJ]^x01^x03 %s^x01 сейчас на^x03 %d^x01 месте в ^x04Pro 15^x01" , name , (i+1));
}
}
return;
}
if( equali(Pro_AuthIDS[i], authid) )
{
if( time > protiempo )
{
return;
}
}
}
}
public save_pro15()
{
new mapname[33], profile[128]
get_mapname(mapname, 32)
formatex(profile, 127, "%s/pro_%s.cfg", KZ_TOP15_DIR, mapname)
if( file_exists(profile) )
{
delete_file(profile)
}
new Data[256];
new f = fopen(profile, "at")
for(new i = 0; i < 15; i++)
{
formatex(Data, 255, "^"%.2f^" ^"%s^" ^"%s^" ^"%s^"^n", Pro_Times[i], Pro_AuthIDS[i], Pro_Names[i], Pro_Date[i])
fputs(f, Data)
}
fclose(f);
}
public read_pro15()
{
new mapname[33], profile[128], prodata[256]
get_mapname(mapname, 32)
formatex(profile, 127, "%s/pro_%s.cfg", KZ_TOP15_DIR, mapname)
new f = fopen(profile, "rt" )
new i = 0
while( !feof(f) && i < 16)
{
fgets(f, prodata, 255)
new totime[25]
parse(prodata, totime, 24, Pro_AuthIDS[i], 31, Pro_Names[i], 31, Pro_Date[i], 31)
Pro_Times[i] = str_to_float(totime)
i++;
}
fclose(f)
}
//================================================================================
==================
public NoobTop_update(id, Float:time, checkpoints, gochecks)
{
new authid[32], name[32], thetime[32];
get_user_name(id, name, 31);
get_user_authid(id, authid, 31);
get_time(" %d/%m/%Y ", thetime, 31);
new bool:Is_in_noob15
Is_in_noob15 = false
for(new i = 0; i < 15; i++)
{
if( equali(Noob_AuthIDS[i], authid) )
{
Is_in_noob15 = true
}
}
for (new i = 0; i < 15; i++)
{
new Float:noobtiempo = Noob_Tiempos[i]
if( time < Noob_Tiempos[i])
{
new pos = i
while( !equal(Noob_AuthIDS[pos], authid) && pos < 15 )
{
pos++;
}
for (new j = pos; j > i; j--)
{
formatex(Noob_AuthIDS[j], 31, Noob_AuthIDS[j-1]);
formatex(Noob_Names[j], 31, Noob_Names[j-1]);
formatex(Noob_Date[j], 31, Noob_Date[j-1])
Noob_Tiempos[j] = Noob_Tiempos[j-1]
Noob_CheckPoints[j] = Noob_CheckPoints[j-1]
Noob_GoChecks[j] = Noob_GoChecks[j-1]
}
formatex(Noob_AuthIDS[i], 31, authid);
formatex(Noob_Names[i], 31, name);
formatex(Noob_Date[i], 31, thetime)
Noob_Tiempos[i] = time
Noob_CheckPoints[i] = checkpoints
Noob_GoChecks[i] = gochecks
save_Noob15()
if( Is_in_noob15 )
{
if( time < noobtiempo )
{
if( (i + 1) == 1)
{
client_cmd(0, "spk woop")
ColorChat(0, GREEN, "[XJ]^x01^x03 %s^x01 сейчас^x03 первый^x01 в ^x04Noob 15^x01" , name);
}
else
{
client_cmd(0, "spk buttons/bell1")
ColorChat(0, GREEN, "[XJ]^x01^x03 %s^x01 сейчас на^x03 %d^x01 месте в ^x04Noob 15^x01" , name , (i+1));
}
}
}
else
{
if( (i + 1) == 1)
{
client_cmd(0, "spk woop");
ColorChat(0, GREEN, "[XJ]^x01^x03 %s^x01 сейчас^x03 первый^x01 в ^x04Noob 15^x01" , name);
}
else
{
client_cmd(0, "spk buttons/bell1");
ColorChat(0, GREEN, "[XJ]^x01^x03 %s^x01 сейчас на^x03 %d^x01 месте в ^x04Noob 15^x01" , name , (i+1));
}
}
return;
}
if( equali(Noob_AuthIDS[i], authid) )
{
if( time > noobtiempo )
{
return;
}
}
}
}
public save_Noob15()
{
new mapname[33], profile[128]
get_mapname(mapname, 32)
formatex(profile, 127, "%s/Noob_%s.cfg", KZ_TOP15_DIR, mapname)
if( file_exists(profile) )
{
delete_file(profile)
}
new Data[256];
new f = fopen(profile, "at")
for(new i = 0; i < 15; i++)
{
formatex(Data, 255, "^"%.2f^" ^"%s^" ^"%s^" ^"%i^" ^"%i^" ^"%s^" ^n", Noob_Tiempos[i], Noob_AuthIDS[i], Noob_Names[i],Noob_CheckPoints[i], Noob_GoChecks[i],Noob_Date[i])
fputs(f, Data)
}
fclose(f);
}
public read_Noob15()
{
new mapname[33], profile[128], prodata[256]
get_mapname(mapname, 32)
formatex(profile, 127, "%s/Noob_%s.cfg", KZ_TOP15_DIR, mapname)
new f = fopen(profile, "rt" )
new i = 0
while( !feof(f) && i < 16)
{
fgets(f, prodata, 255)
new totime[25], checks[5], gochecks[5]
parse(prodata, totime, 24, Noob_AuthIDS[i], 31, Noob_Names[i], 31, checks, 4, gochecks, 4, Noob_Date[i], 31)
Noob_Tiempos[i] = str_to_float(totime)
Noob_CheckPoints[i] = str_to_num(checks)
Noob_GoChecks[i] = str_to_num(gochecks)
i++;
}
fclose(f)
}
//================================================================================
==================
public ProTop_show(id)
{
new buffer[2048], len, name[32]
len = formatex(buffer, 2047, "<meta charset=UTF-8><meta charset=UTF-8><body bgcolor=#000000><table width=100%% cellpadding=2 cellspacing=0 border=0>")
len += formatex(buffer[len], 2047-len, "<tr align=center bgcolor=#52697B><th width=5%%> # <th width=30%% align=left> Jumper <th width=25%%> Время <th width=20%%> Дата ")
for (new i = 0; i < 15; i++)
{
name = Pro_Names[i]
if( Pro_Times[i] > 9999999.0 )
{
len += formatex(buffer[len], 2047-len, "<tr align=center%s><td> %d <td align=left> %s <td> %s <td> %s", ((i%2)==0) ? " bgcolor=#FFFFFF" : " bgcolor=#A8A8A8", (i+1), "", "", "")
}
else
{
new minutos, Float:segundos
minutos = floatround(Pro_Times[i], floatround_floor)/60
segundos = Pro_Times[i] - (60*minutos)
len += formatex(buffer[len], 2047-len, "<tr align=center%s><td> %d <td align=left> %s <td> %02d:%s%.2f <td> %s", ((i%2)==0) ? " bgcolor=#FFFFFF" : " bgcolor=#A8A8A8", (i+1), Pro_Names[i], minutos, segundos < 10 ? "0" : "", segundos, Pro_Date[i])
}
}
len += formatex(buffer[len], 2047-len, "</table></body>")
show_motd(id, buffer, "Pro15 Jumpers")
return PLUGIN_HANDLED
}
public NoobTop_show(id)
{
new buffer[2048], name[32], len
len = formatex(buffer, 2047, "<meta charset=UTF-8><meta charset=UTF-8><body bgcolor=#000000><table width=100%% cellpadding=2 cellspacing=0 border=0>")
len += formatex(buffer[len], 2047-len, "<tr align=center bgcolor=#52697B><th width=5%%> # <th width=25%% align=left> Jumper <th width=20%%> Время <th width=15%%> Сохранений <th width=15%%> Перемещений <th width=20%%> Дата ")
for (new i = 0; i < 15; i++)
{
if( Noob_Tiempos[i] > 9999999.0 )
{
len += formatex(buffer[len], 2047-len, "<tr align=center%s><td> %d <td align=left> %s <td> %s <td> %s <td> %s <td> %s", ((i%2)==0) ? " bgcolor=#FFFFFF" : " bgcolor=#A8A8A8", (i+1), "", "", "", "", "")
}
else
{
name = Noob_Names[i]
new minutos, Float:segundos
minutos = floatround(Noob_Tiempos[i], floatround_floor)/60
segundos = Noob_Tiempos[i] - (60*minutos)
len += formatex(buffer[len], 2047-len, "<tr align=center%s><td> %d <td align=left> %s <td> %02d:%s%.2f <td> %d <td> %d <td> %s", ((i%2)==0) ? " bgcolor=#FFFFFF" : " bgcolor=#A8A8A8", (i+1), Noob_Names[i], minutos, segundos < 10 ? "0" : "", segundos, Noob_CheckPoints[i], Noob_GoChecks[i], Noob_Date[i])
}
}
len += formatex(buffer[len], 2047-len, "</table></body>")
show_motd(id, buffer, "Noob15 Jumpers")
return PLUGIN_HANDLED
}
// You reached the end of file
// This plugin was made by p4ddY :)
// This plugin was edited by nucLeaR
// Version 2.0y