Проблем - Host errorbad server message

Въпроси и проблеми свързани с AMXModX.
Аватар
jumby1990
Извън линия
Потребител
Потребител
Мнения: 128
Регистриран на: 10 Фев 2019, 18:02
Местоположение: varna
Се отблагодари: 8 пъти
Получена благодарност: 4 пъти
Обратна връзка:

Проблем - Host errorbad server message

Мнение от jumby1990 » 30 Ное 2019, 14:48

Здравейте от известно време почна да ми прави тоя проблем когато играем в сървъра не веднага след известно време изхвърля всички от сървъра изписва това - Host_Error: CL_ParseServerMessage: Bad server message.

Сминих платформата с най-новата HLDS 7561 , сложих последния amx mod x 1.10.0 , прегледах подробно всеки 1 плугин който съм добавял.
Ако някой има решение на проблема моля да сподели благодаря !

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Проблем - Host errorbad server message

Мнение от OciXCrom » 30 Ное 2019, 14:55

Чети описанията на разделите и гледай къде си пускаш темите!

Как точно си "прегледал" плъгините? Ако не вземеш да ги спираш 1 по 1 докато проблемът не спре, надали ще разбереш от къде идва проблемът. Вероятно е от някой плъгин който ползва message_begin.

Аватар
jumby1990
Извън линия
Потребител
Потребител
Мнения: 128
Регистриран на: 10 Фев 2019, 18:02
Местоположение: varna
Се отблагодари: 8 пъти
Получена благодарност: 4 пъти
Обратна връзка:

Проблем - Host errorbad server message

Мнение от jumby1990 » 30 Ное 2019, 15:06

съжелявам ако съм объркал раздела , добре ще прегледам по обстойно благодаря.

Аватар
jumby1990
Извън линия
Потребител
Потребител
Мнения: 128
Регистриран на: 10 Фев 2019, 18:02
Местоположение: varna
Се отблагодари: 8 пъти
Получена благодарност: 4 пъти
Обратна връзка:

Проблем - Host errorbad server message

Мнение от jumby1990 » 15 Дек 2019, 16:12

проблема идва от самия hns плугин дето ползвам според мене понеже махнах всички други плугини оставих само него , влязохме да поиграем малко с приятел и има няма , 5-10 минути пак изхвърля всички от сървъра на веднъж имали начин тая команда където си я посочил да се замени със друга или някакъв плугин да препоръчаш да сложа да не прави така че не е приятно, благодаря.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Проблем - Host errorbad server message

Мнение от OciXCrom » 15 Дек 2019, 16:32

Качи .sma файла да видим какъв е проблемът. Няма как да се оправи с друг плъгин.

Аватар
jumby1990
Извън линия
Потребител
Потребител
Мнения: 128
Регистриран на: 10 Фев 2019, 18:02
Местоположение: varna
Се отблагодари: 8 пъти
Получена благодарност: 4 пъти
Обратна връзка:

hns help - Host errorbad server message

Мнение от jumby1990 » 15 Дек 2019, 17:00

това плугина който използвам, където изхвърля играчите от сървъра
Прикачени файлове
hns.sma
(73.14 KiB) Свалено 129 пъти
hns.sma
(73.14 KiB) Свалено 129 пъти
Последно промяна от OciXCrom на 15 Дек 2019, 17:02, променено общо 2 пъти.
Причина: Защо аджеба нова тема?...

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Проблем - Host errorbad server message

Мнение от OciXCrom » 19 Дек 2019, 16:39

Добавих логове преди всяка message_begin функция. Погледни в логовете какво точно ще изпише в момента когато изхвърля играчите, за да знаем къде точно да търсим проблема.

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#if AMXX_VERSION_NUM < 183
	#include <dhudmessage>
#endif
#include <colorchat>
#include <hamsandwich>
#include <fakemeta_util>
#include <fakemeta>
#include <fun>
#include <engine>
#include <sockets>
#include <player_settings_saver>
#include <csx>
#include <xs>

#define PLUGIN "hns"
#define VERSION "1.0"
#define AUTHOR "jumby"

#define TASK_ROUNDTIME 8888
#define SAFETRANSFERTASK 7832
#define MAX_PLAYERS 32
#define hns_ACESS ADMIN_LEVEL_H // flag "t"
#define m_bJustConnected 480
#define SETTING_KNIFES "KNIFE"
#define SETTING_EMITSOUND "EMITSOUND"
#define SECURE_NAME_LEN 31 * 2 + 1 // Twice as long as name (31 * 2 + zero terminator) in case all 31 characters are insecure

#define AUTO_TEAM_JOIN_DELAY 0.1
#define TEAM_SELECT_VGUI_MENU_ID 2
#define TIME 15
#define TASK_MENUCLOSE 9001
#define TASK_PLAYERSLIST 9002
#define ROUNDENDTASK 10003
#define cs_get_user_team(%1)    get_pdata_int(%1, 114)
#define CS_TEAM_T      1

static const knifemodel[] = "models/v_knife.mdl"
new const snd_denyselect[] = "common/wpn_denyselect.wav";
new const g_szUseSound[] = "buttons/blip1.wav";
new const hns_tag[7] = "HNS"
new alloc_KnifeModel;
new plrTeam[MAX_PLAYERS+1]
new iCurrentSW
new Float:g_flRoundTime
new Float:flSidesTime[2];
new Float:PlayNoPlay[33];
new Float:gCheckpoints[MAX_PLAYERS+1][2][3];
new g_Captime;
new g_pRoundTime;
new g_bShowSpeed[33 char];
new g_CurrentMode
new g_iScore[2]
new g_iSecondHalf
new g_iMaxPlayers
new g_hnsostageEnt, g_iRegisterSpawn
new g_msgScreenFade;
new g_msg_showtimer
new g_msg_roundtime
new CaptainSide;
new Captain1;
new Captain2;
new CaptainWinner;
new current_mode;
new gmsgMoney;
new hookorigin[32][3]
new Sbeam = 0
new SyncHud[2]
new CsTeams:hTeam[MAX_PLAYERS+1];
new cvarTeam[2]
new cvarMaxRounds
new cvarFlashNum
new cvarSmokeNum
new cvarSemiclip
new cvarDefaultMode
new HandleThrowType[33]
new hDeath[MAX_PLAYERS+1];
new Frags[33], Deaths[33], RestartGame
new Float:RestartTime
new HamHook:PlayerSpawn
new msgcvar_method
new Text_Msg, WinningTeam
new Trie: tc
new g_pcvarHealth
new amx_gamename;

new iFwd_MixFinished

new const g_szDefaultEntities[][] = {
    "func_hostage_rescue",
    "info_hostage_rescue",
    "func_bomb_target",
    "info_bomb_target",
    "hostage_entity",
    "info_vip_start",
    "func_vip_safetyzone",
    "func_escapezone",
    "armoury_entity",
    "monster_scentist"
}

new const GrenadeClassNames[][] =
{
"weapon_flashbang",
"weapon_hegrenade",
"weapon_smokegrenade"
}

new const Float:VelocityMultiplier[] =
{
1.0,
0.5,
0.7
}

new bool:hns_hooked[32]
new bool:SoundFx;
new bool:Survival
new bool:GameStarted;
new bool:plrSolid[MAX_PLAYERS+1]
new bool:plrRestore[MAX_PLAYERS+1]
new bool:gOnOff[33];
new bool:g_bFreezePeriod
new bool:g_bCheckpointAlternate[MAX_PLAYERS+1];
new bool:ishooked[MAX_PLAYERS+1];
new bool:plr_noplay[MAX_PLAYERS+1];
new bool:g_Spec[MAX_PLAYERS+1];
new bool:g_bSurvived[33];

new g_iMsgId_StatusText;
new g_iMsgId_StatusValue;

new bool:g_bShowPlayerNames[33];

const m_flReleaseThrow = 31;
const m_flTimeWeaponIdle = 48;
const m_rgAmmoFlashBang = 387;
const FLASHBANG_DRAW = 3;
const EXTRAOFFSET_WEAPONS = 4;
const m_pPlayer = 41;
const m_flNextPrimaryAttack = 46;
const m_flNextSecondaryAttack = 47;
const m_pActiveItem = 373;
const m_pPlayer  = 41;
const XoCGrenade = 4;

enum // StatusValue flags for first argument
{
    SV_FLAG_TEAMMATE = 1,
    SV_FLAG_PLAYERID,
    SV_FLAG_PLAYERHP
};

enum // StatusValue values for the SV_FLAG_TEAMMATE flag
{
    SV_TEAMVALUE_FRIEND = 1,
    SV_TEAMVALUE_ENEMY,
    SV_TEAMVALUE_HOSTAGE
};

enum
{
e_gTraining = 0,
e_gPaused,
e_gKnife,
e_gCaptain,
e_gMix,
e_gPub
}

enum
{
regular,
slower,
medium
}

enum
{
mode_mr,
mode_timebased
}

public native_get_mode(param)
{
return g_CurrentMode;
}

public plugin_precache()
{
engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_buyzone"));
g_iRegisterSpawn = register_forward(FM_Spawn, "fwdSpawn", 1)
precache_sound( g_szUseSound );
Sbeam = precache_model("sprites/laserbeam.spr");
}

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
g_pRoundTime    =   get_cvar_pointer( "mp_roundtime" );
iFwd_MixFinished = CreateMultiForward("MixFinished_Fwd", ET_IGNORE);

amx_gamename = register_cvar( "amx_gamename", "Skill - Boost" );
register_forward( FM_GetGameDescription, "GameDesc" );

g_pcvarHealth = register_cvar("hns_starthp", "100")
RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
g_Captime = register_cvar( "hns_wintime", "15");
register_concmd("say /pub", "hns_pub", hns_ACESS)
register_concmd("say /def", "hns_pub_off", hns_ACESS)

register_concmd("say /skill", "hns_skill", hns_ACESS )
register_concmd("say /boost", "hns_boost", hns_ACESS )
register_concmd("say /mr5", "hns_mr5", hns_ACESS )
register_concmd("say /mr7", "hns_mr7", hns_ACESS )
register_concmd("say /mr9", "hns_mr9", hns_ACESS )

register_clcmd( "say /rr", "CmdRestartRound",  hns_ACESS )
register_clcmd( "say /swap", "hns_swap_teams",  hns_ACESS)

register_clcmd("+hook","hns_hook_on")
register_clcmd("-hook","hns_hook_off")

register_clcmd ( "say /knife", "cmdShowKnife");
register_clcmd ( "say /showknife", "cmdShowKnife");
register_clcmd ( "say /hideknife", "cmdShowKnife");

register_clcmd( "say /pause", "hns_startpause", hns_ACESS );
register_clcmd( "say /live", "hns_unpause", hns_ACESS );

register_clcmd( "chooseteam", "BlockCmd" ); /* block cmd case team completed */
register_clcmd( "jointeam", "BlockCmd" );
register_clcmd( "joinclass", "BlockCmd" );

fnRegisterSayCmd("timer", "timermod", "hns_timer", hns_ACESS, "Timer mode");
fnRegisterSayCmd("normal", "normalmod", "hns_normal", hns_ACESS, "Normal mode");
fnRegisterSayCmd("sp", "specall", "hns_transfer_spec", hns_ACESS, "Spec Transfer")
fnRegisterSayCmd("tt", "ttall", "hns_transfer_tt", hns_ACESS, "TT Transfer")
fnRegisterSayCmd("ct", "ctall", "hns_transfer_ct", hns_ACESS, "CT Transfer")
fnRegisterSayCmd("score", "s", "Score", 0, "Starts Round")
fnRegisterSayCmd("startmix", "start", "cmdStartRound", hns_ACESS, "Starts Round");
fnRegisterSayCmd("kr", "kf", "cmdKnifeRound", hns_ACESS, "Knife Round");
fnRegisterSayCmd("captain", "cap", "CaptainCmd", hns_ACESS, "Captain Mode");
fnRegisterSayCmd("stopcaptain", "stopcap", "StopCaptainCmd", hns_ACESS, "Captain Mode");
fnRegisterSayCmd("stop", "stop", "cmdStop", hns_ACESS, "Stop Current Mode");
fnRegisterSayCmd("live", "unpause", "hns_unpause", hns_ACESS, "UnPause");
fnRegisterSayCmd("checkpoint", "cp", "cmdCheckpoint", 0, "Save checkpoint");
fnRegisterSayCmd("gocheck", "gc", "cmdGoCheck", 0, "Go to checkpoint");
fnRegisterSayCmd("teleport", "tp", "cmdGoCheck", 0, "Go to checkpoint");
fnRegisterSayCmd("pick", "pick", "captain_menu", 0, "Pick player");
fnRegisterSayCmd("np", "noplay", "CmdNoPlay", 0, "No play")
fnRegisterSayCmd("ip", "play", "CmdPlay", 0, "Play play")
fnRegisterSayCmd( "back", "spec", "team_spec", 0, "Spec/Back player");

alloc_KnifeModel     = engfunc(EngFunc_AllocString, knifemodel)

cvarTeam[0]          = register_cvar("hns_team1", "CT", FCVAR_ARCHIVE|FCVAR_SERVER)
cvarTeam[1]          = register_cvar("hns_team2", "TT", FCVAR_ARCHIVE|FCVAR_SERVER)
cvarFlashNum         = register_cvar("hns_flash", "2", FCVAR_ARCHIVE|FCVAR_SERVER)
cvarSmokeNum         = register_cvar("hns_smoke", "1", FCVAR_ARCHIVE|FCVAR_SERVER)
cvarMaxRounds        = register_cvar("hns_rounds", "6", FCVAR_ARCHIVE|FCVAR_SERVER)
cvarSemiclip         = register_cvar("hns_semiclip", "0", FCVAR_ARCHIVE|FCVAR_SERVER)
cvarDefaultMode      = register_cvar("hns_defaultmode", "0", FCVAR_ARCHIVE|FCVAR_SERVER)

register_event("CurWeapon", "eCurWeapon", "be", "1!0")
register_event("SendAudio","eEndRound","a","2=%!MRAD_terwin","2=%!MRAD_ctwin")
register_event("HLTV", "ePreFT", "a", "1=0", "2=0")
register_event("ResetHUD","EventResetHUD","b")
register_event("TextMsg", "RoundRestart", "a", "2&#Game_w")
register_event("HLTV", "NewRound", "a", "1=0", "2=0")
register_event("DeathMsg", "event_DeathMsg", "a");
register_event("HLTV", "event_NewRound", "a", "1=0", "2=0");
PlayerSpawn = RegisterHam(Ham_Spawn, "player", "FwPlayerSpawn", 1)
register_logevent("ePostFT", 2, "0=World triggered", "1=Round_Start")

RegisterHam( Ham_Weapon_RetireWeapon, "weapon_flashbang", "fwd_FlashBangRetireWeapon_Pre", 0 );
RegisterHam( Ham_Spawn, "player", "CBasePlayer_Spawn_Post", true)
RegisterHam( Ham_Item_Deploy, "weapon_knife", "FwdDeployKnife", 1 )
RegisterHam( Ham_Weapon_PrimaryAttack, "weapon_knife", "FwdKnifePrim" );
register_forward( FM_EmitSound, "fwd_EmitSound_Pre", 0 );

register_clcmd( "say /name", "ShowPlayerNames" );
register_clcmd( "say /names", "ShowPlayerNames" );

g_iMsgId_StatusText = get_user_msgid( "StatusText" );
g_iMsgId_StatusValue = get_user_msgid( "StatusValue" );
set_msg_block( g_iMsgId_StatusValue, BLOCK_SET );
server_cmd("mp_playerid 2");

unregister_forward(FM_Spawn, g_iRegisterSpawn, 1)
register_forward(FM_PlayerPreThink, "preThink")
register_forward(FM_PlayerPostThink, "postThink")

register_forward(FM_AddToFullPack, "addToFullPack", 1)

msgcvar_method = register_cvar("msg_method", "0") // 0 = Print_Center | 1 = HUD

tc = TrieCreate()
TrieSetCell(tc, "%!MRAD_terwin"     , register_cvar("msg_t_win" , "Hiders Own!"))
TrieSetCell(tc, "%!MRAD_ctwin"      , register_cvar("msg_ct_win"    , "Seekers Win!"))
TrieSetCell(tc, "%!MRAD_rounddraw"  , register_cvar("msg_rounddraw" , "No One Owned This Round!"))

register_message(get_user_msgid("SendAudio"), "Messages_Audio")
Text_Msg = get_user_msgid("TextMsg")

g_msg_showtimer = get_user_msgid("ShowTimer")
g_msg_roundtime = get_user_msgid("RoundTime")

g_iMaxPlayers = get_maxplayers()
SyncHud[0] = CreateHudSyncObj()
SyncHud[1] = CreateHudSyncObj()

register_message( get_user_msgid( "ShowMenu" ), "message_show_menu" );
register_message( get_user_msgid( "VGUIMenu" ), "message_vgui_menu" );

g_msgScreenFade = get_user_msgid("ScreenFade");
register_message( g_msgScreenFade, "msg_ScreenFade" );
register_message( get_user_msgid( "TextMsg" ), "msgTextMsg" );

set_msg_block(get_user_msgid("HudTextArgs"),BLOCK_SET);

register_mode();
ePreFT();
PrepareMode(e_gPub);

set_msg_block(gmsgMoney = get_user_msgid("Money"), BLOCK_SET);
set_task(0.1, "ShowSpeedAsMoney", 15671983, .flags="b");

for(new i; i < sizeof GrenadeClassNames; i++)
{
RegisterHam(Ham_Weapon_SecondaryAttack, GrenadeClassNames[i], "CBasePlayerWpn_SecondaryAttack", false)
}

if(!(get_pcvar_num(cvarDefaultMode)))
{
current_mode = mode_timebased
}
else
{
current_mode = mode_mr
}
}

public ClCmd_Speed(id)
{
g_bShowSpeed{id} = !g_bShowSpeed{id};
}

public ShowSpeedAsMoney()
{
if(Survival)
{
static players[32], num, id
get_players(players, num, "a");
for(--num; num>=0; num--)
{
id = players[num];
if( g_bShowSpeed{id} )
{
log_amx("[CRXLOG] gmsgMoney @ 361")
message_begin(MSG_ONE, gmsgMoney, .player=id);
write_long( floatround((get_pcvar_float(g_Captime)*60.0)-flSidesTime[iCurrentSW], floatround_floor) );
write_byte(0);
message_end();
}
}
}
}

public BlockCmd(id)
{
if ( g_CurrentMode != e_gTraining )
{
return(PLUGIN_HANDLED);
}
return(PLUGIN_CONTINUE);
}

public hns_timer(id)
{
if(!(get_user_flags(id) & hns_ACESS))
return PLUGIN_HANDLED;

if(g_CurrentMode == e_gTraining)
{
new sz_name[64]; get_user_name(id, sz_name, 63);
ColorChat(0, RED, "^1[^4%s^1] ^3%s^1 Changed Mode To ^4Timer Mode^1.", hns_tag, sz_name)
current_mode = mode_timebased
set_pcvar_num(cvarDefaultMode, 0);
}
else
{
ColorChat(id, RED, "^1[^4%s^1] ^3Mode ^1Cannot Be Changed ^4During Game^1.", hns_tag);
}

return PLUGIN_CONTINUE;
}

public hns_normal(id)
{
if(!(get_user_flags(id) & hns_ACESS))
return PLUGIN_HANDLED;

if(g_CurrentMode == e_gTraining)
{
new sz_name[64]; get_user_name(id, sz_name, 63);
ColorChat(0, RED, "^1[^4%s^1] ^3%s^1 Changed Mode To ^4Rounds ^1(^3MR^1).", hns_tag, sz_name)
current_mode = mode_mr
set_pcvar_num(cvarDefaultMode, 1);
}
else
{
ColorChat(id, RED, "^1[^4%s^1] ^3Mode ^1Cannot Be Changed ^4During Game^1.", hns_tag);
}

return PLUGIN_CONTINUE;
}

public CmdNoPlay(id)
{
if(get_gametime() > PlayNoPlay[id])
if(!plr_noplay[id])
{
PlayNoPlay[id] = get_gametime()+60.0;
plr_noplay[id] = true;
new sz_name[64]; get_user_name(id, sz_name, 63);
ColorChat(0, RED, "^1[^4%s^1] ^3%s^1 Will ^3Not Play^1. (^3/np^1)", hns_tag, sz_name)
}
}

public CmdPlay(id)
{
if(get_gametime() > PlayNoPlay[id])
if(plr_noplay[id])
{
PlayNoPlay[id] = get_gametime()+60.0;
plr_noplay[id] = false;
new sz_name[64]; get_user_name(id, sz_name, 63);
ColorChat(0, RED, "^1[^4%s^1] ^3%s^1 Will ^4Play^1.", hns_tag, sz_name);
}
}

public msg_ScreenFade( iMsgId, iMsgDest, id )
{
if(is_user_connected(id))
{
if( get_msg_arg_int( 4 ) == 255 && get_msg_arg_int( 5 ) == 255 && get_msg_arg_int( 6 ) == 255)
{
if((cs_get_user_team(id) == CS_TEAM_T) || (cs_get_user_team(id) == CS_TEAM_SPECTATOR))
{
return PLUGIN_HANDLED;
}
}
}
return PLUGIN_CONTINUE;
}

public msgTextMsg( const MsgId, const MsgDest, const MsgEntity )
{
static szMessage[ 9 ];
get_msg_arg_string( 2, szMessage, 8 );

if( szMessage[ 1 ] == 'C' ) // #CTs_Win
{
for( new i = 1; i <= 32; i++ )
{
    if( g_Spec[i] )
    {
        if( hTeam[i] == CS_TEAM_CT ) hTeam[i] = CS_TEAM_T;
        else hTeam[i] = CS_TEAM_CT;
    }
}
}
}

public fwdSpawn(entid) {
static szClassName[32];
if(pev_valid(entid))
{
pev(entid, pev_classname, szClassName, 31);
if(equal(szClassName, "func_buyzone")) engfunc(EngFunc_RemoveEntity, entid);

for(new i = 0; i < sizeof g_szDefaultEntities; i++)
{
    if(equal(szClassName, g_szDefaultEntities[i]))
    {
        engfunc(EngFunc_RemoveEntity, entid);
        break;
    }
}
}
}

public register_mode()
{
g_hnsostageEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "hostage_entity"));
set_pev(g_hnsostageEnt, pev_origin, Float:{ 0.0, 0.0, -55000.0 });
set_pev(g_hnsostageEnt, pev_size, Float:{ -1.0, -1.0, -1.0 }, Float:{ 1.0, 1.0, 1.0 });
dllfunc(DLLFunc_Spawn, g_hnsostageEnt);
}

public hns_hud_paused()
{
if(g_CurrentMode == e_gPaused)
{
Task_Hud(0, 1.0, 1, 0, 64, 39, 0.4, "GAME PAUSED");
}
}

public hns_startpause(id, level, cid)
{
if(cmd_access(id, level, cid, 1) && g_CurrentMode == e_gMix && g_CurrentMode != e_gPaused)
{
g_CurrentMode = e_gPaused

if(current_mode != mode_mr)
{
    if(GameStarted)
    {
        flSidesTime[iCurrentSW] -= g_flRoundTime;
        new szName[64]
        get_user_name(id, szName, 63)
        server_cmd("amxx unpause uq_jumpstats_v2.51.amxx")
        server_cmd("amxx unpause uq_jumpstats_tops.amxx")
        server_cmd("sv_restart 1")
        Survival = false;
        GameStarted = false;
    }
    else
    {
        client_print(id, print_chat, "[%s] Game Not Started Or Already Paused (use /unpause)", hns_tag);
    }
}

set_task(0.5, "hns_hud_paused", _, _, _, "b")
server_cmd("sv_restart 1")
}
return PLUGIN_HANDLED
}

public hns_unpause(id, level, cid)
{
if(cmd_access(id, level, cid, 1) && g_CurrentMode == e_gPaused)
{
g_CurrentMode = e_gMix
if(current_mode != mode_mr)
GameStarted = true;

Task_Hud(0, 2.0, 1, 255, 153, 0, 3.0, "GAME UNPAUSED");

server_cmd("amxx pause uq_jumpstats_v2.51.amxx")
server_cmd("amxx pause uq_jumpstats_tops.amxx")

server_cmd("sv_restart 3")
remove_hook(id)
}
return PLUGIN_HANDLED
}

public hns_swap_teams(id,level,cid) {
if(!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED

SwitchTeams()
server_cmd("sv_restart 1")

return PLUGIN_HANDLED
}

public CmdRestartRound(id, level, cid) {
    if(!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED
    RestartRound();

    return PLUGIN_HANDLED
}

public hns_pub(id, level, cid) {
    if(!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED

    new hns_name[32]
    get_user_name(id, hns_name, 31)

    if(g_CurrentMode != e_gPub)
    {
        if(g_CurrentMode != e_gMix && g_CurrentMode != e_gKnife)
        {
            PrepareMode(e_gPub);
            ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Activated ^4Public^1.", hns_tag, hns_name)
        }
    } else
    ColorChat(id, RED, "^1[^4%s^1] ^3%s ^1Public HNS Mode Is ^4On^1.", hns_tag, hns_name)

    remove_hook(id)

    return PLUGIN_HANDLED
}

public hns_pub_off(id, level, cid) {
    if(!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED

    new hns_name[32]
    get_user_name(id, hns_name, 31)

    if(g_CurrentMode == e_gPub)
    {
        if(g_CurrentMode != e_gMix && g_CurrentMode != e_gKnife)
        {
            PrepareMode(e_gTraining);
            ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Activated ^4Training^1.", hns_tag, hns_name)
        }
    } else
    ColorChat(id, RED, "^1[^4%s^1] ^3%s ^1Training Is ^4Running^1.", hns_tag, hns_name)

    remove_hook(id)

    return PLUGIN_HANDLED
}

public hns_transfer_spec(id)
{
    if(!(get_user_flags(id) & hns_ACESS))
        return PLUGIN_HANDLED

    new hns_name[32]
    get_user_name(id, hns_name, 31)
    ColorChat( 0, RED,"^1[^4%s^1] ^3%s ^1Transfered All Players To ^4SPEC", hns_tag, hns_name )
    safe_transfer( CS_TEAM_SPECTATOR );
    return PLUGIN_HANDLED
}

public hns_transfer_tt(id)
{
    if(!(get_user_flags(id) & hns_ACESS))
        return PLUGIN_HANDLED

    new hns_name[32]
    get_user_name(id, hns_name, 31)
    ColorChat( 0, RED,"^1[^4%s^1] ^3%s ^1Transfered All Players To ^4TT's", hns_tag, hns_name )
    new Players[32], Num; get_players(Players, Num, "h")
    safe_transfer( CS_TEAM_T );
    return PLUGIN_HANDLED
}

public hns_transfer_ct(id)
{
    if(!(get_user_flags(id) & hns_ACESS))
        return PLUGIN_HANDLED

    new hns_name[32]
    get_user_name(id, hns_name, 31)
    ColorChat( 0, RED,"^1[^4%s^1] ^3%s ^1Transfered All Players To ^4CT's", hns_tag, hns_name )
    new Players[32], Num; get_players(Players, Num, "h")
    safe_transfer( CS_TEAM_CT );
    return PLUGIN_HANDLED
}

public hns_skill(id,level,cid) {
    if(!cmd_access(id, level, cid, 1 )) return PLUGIN_HANDLED
    new hns_name[32]
    get_user_name(id,hns_name, 31)
    server_cmd("hns_semiclip 0")
    server_cmd("hns_flash 2")
    server_cmd("mp_freezetime 6")
    ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Activated ^4Skill", hns_tag, hns_name)

    return PLUGIN_HANDLED
}

public hns_boost(id,level,cid) {
    if(!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED
    new hns_name[32]
    get_user_name(id,hns_name, 31)
    LoadMapCFG();
    server_cmd("hns_semiclip 1")
    server_cmd("hns_flash 2")
    server_cmd("mp_freezetime 16")
    ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Activated ^4Boost", hns_tag, hns_name)

    return PLUGIN_HANDLED
}

public hns_mr5(id,level,cid) {
    if(!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED
    new hns_name[32]
    get_user_name(id,hns_name, 31)
    ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Activated [^4Win Round ^1-^3 5^1]", hns_tag, hns_name)

    set_pcvar_num(cvarMaxRounds, 4);

    return PLUGIN_HANDLED;
}

public hns_mr7(id,level,cid) {
    if(!cmd_access(id, level, cid, 1 ) ) return PLUGIN_HANDLED
    new hns_name[32]
    get_user_name(id,hns_name, 31)
    ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1^1Activated [^4Win Round ^1-^3 7^1]", hns_tag, hns_name)

    set_pcvar_num(cvarMaxRounds, 6);

    return PLUGIN_HANDLED
}

public hns_mr9(id,level,cid)
{
    if(!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED
    new hns_name[32]
    get_user_name(id,hns_name, 31)
    ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1^1Activated [^4Win Round ^1-^3 9^1]", hns_tag, hns_name)

    set_pcvar_num(cvarMaxRounds, 8);

    return PLUGIN_HANDLED
}

public change_setting_value ( id, const setting[], const value[] )
{
    if ( !strcmp ( setting, SETTING_KNIFES ) )
        gOnOff[id] = bool:str_to_num ( value )
}

public cmdShowKnife(id)
{
    gOnOff[id] = gOnOff[id] ? false : true
    set_setting_bool ( id, SETTING_KNIFES, gOnOff[id] )
    ColorChat(id, RED, "^1[^4%s^1] Knife Is Now Set %sVisible", hns_tag, gOnOff[id] ? "^3In" : "^4" );

    if( !is_user_alive( id ) )
        return PLUGIN_HANDLED;

    if( get_user_weapon( id ) == CSW_KNIFE  )
    {
        if( gOnOff[id] )
            set_pev( id, pev_viewmodel, 0 );
        else
        {
            new weapon = get_pdata_cbase( id, m_pActiveItem, 5 );
            if( weapon != -1 )
                ExecuteHamB( Ham_Item_Deploy, weapon );
        }
    }

    return PLUGIN_CONTINUE;

}

public ShowTimers(id)
{
    if(GameStarted)
    {
        new TimeToWin[2][24]
        new szTeam[2][64]
        fnConvertTime( (get_pcvar_float(g_Captime)*60.0)-flSidesTime[iCurrentSW], TimeToWin[0], 23 );
        get_pcvar_string(cvarTeam[iCurrentSW], szTeam[0], 63)
        fnConvertTime( (get_pcvar_float(g_Captime)*60.0)-flSidesTime[!iCurrentSW], TimeToWin[1], 23 );
        get_pcvar_string(cvarTeam[!iCurrentSW], szTeam[1], 63)
        if(!iCurrentSW)
            ColorChat(0, RED,   "^1[^4%s^1] ^3TT ^1[^4%s^1] ^3vs ^1[^4%s^1] ^3CT ",hns_tag, TimeToWin[iCurrentSW], TimeToWin[!iCurrentSW])
        else
            ColorChat(0, RED,   "^1[^4%s^1] ^3TT ^1[^4%s^1] ^3vs ^1[^4%s^1] ^3CT ",hns_tag, TimeToWin[!iCurrentSW], TimeToWin[iCurrentSW])
    }
    else
    {
        ColorChat(id, RED,  "^1[^4%s^1] ^3Game ^1Is Not Started ^4Atm.", hns_tag)
    }
}

public client_putinserver(id)
{
    gOnOff[id] = get_setting_bool ( id, SETTING_KNIFES, false )
    return PLUGIN_HANDLED;
}

public hns_hook_on(id)
{
    if ( g_CurrentMode > e_gPaused )
        return PLUGIN_HANDLED

    if( !is_user_alive(id) )
        return PLUGIN_HANDLED

    get_user_origin(id,hookorigin[id],3)
    hns_hooked[id] = true
    set_task(0.1,"hns_hook_task",id+9999,"",0,"ab")
    hns_hook_task(id+9999)

    return PLUGIN_HANDLED
}

public is_hooked(id)
{
    return hns_hooked[id]
}

public hns_hook_off(id)
{
    remove_hook(id)

    return PLUGIN_HANDLED
}

public hns_hook_task(id)
{
    id -= 9999;
    if(!is_user_connected(id) || !is_user_alive(id) || g_CurrentMode > e_gPaused)
        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)
    if(distance > 60)
    {
        velocity[0] = (hookorigin[id][0] - origin[0]) * (2.0 * 300 / distance)
        velocity[1] = (hookorigin[id][1] - origin[1]) * (2.0 * 300 / distance)
        velocity[2] = (hookorigin[id][2] - origin[2]) * (2.0 * 300 / distance)
        entity_set_vector(id,EV_VEC_velocity,velocity)
    }
    else
    {
        entity_set_vector(id,EV_VEC_velocity,Float:{0.0,0.0,0.0})
        entity_set_float(id, EV_FL_gravity, 0.00000001);
    }
    entity_set_int(id, EV_INT_sequence, 55);
    entity_set_float(id,EV_FL_frame, 0.0);
}

public draw_hook(id)
{
	log_amx("[CRXLOG] MSG_BROADCAST @ 832")
    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(100)             // life
    write_byte(10)              // width
    write_byte(0)               // noise
    write_byte(0)               // r
    write_byte(64)              // g
    write_byte(39)              // b
    write_byte(250)             // brightness
    write_byte(0)               // speed
    message_end()
}

public remove_hook(id)
{
    if(task_exists(id+9999))
        remove_task(id+9999)

    remove_beam(id)
    entity_set_float(id, EV_FL_gravity, 1.0);
    ishooked[id] = false
}

public remove_beam(id)
{
	log_amx("[CRXLOG] MSG_BROADCAST @ 865")
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte(99) // TE_KILLBEAM
    write_short(id)
    message_end()
}

public cmdCheckpoint(plr)
{
    if( g_CurrentMode > e_gPaused )
    {
        client_print(plr, print_chat, "Checkpoints Are Disabled.");
        return PLUGIN_HANDLED;
    }
    else if( !is_user_alive(plr) )
    {
        client_print(plr, print_chat, "You Can't Do That While Dead.");
        return PLUGIN_HANDLED;
    }

    pev(plr, pev_origin, gCheckpoints[plr][g_bCheckpointAlternate[plr] ? 1 : 0]);
    g_bCheckpointAlternate[plr] = !g_bCheckpointAlternate[plr];

    return PLUGIN_HANDLED;
}

public cmdGoCheck(plr)
{
    if( g_CurrentMode > e_gPaused )
    {
        client_print(plr, print_chat, "Checkpoints Are Disabled.");
        return PLUGIN_HANDLED;
    }
    else if( !is_user_alive(plr) )
    {
        client_print(plr, print_chat, "You Can't Do That While Dead.");
        return PLUGIN_HANDLED;
    }
    else if( !gCheckpoints[plr][0][0] )
    {
        client_print(plr, print_chat, "You Don't Have Any Checkpoints.");
        return PLUGIN_HANDLED;
    }

    set_pev(plr, pev_velocity, Float:{0.0, 0.0, 0.0});
    set_pev(plr, pev_flags, pev(plr, pev_flags) | FL_DUCKING)
    engfunc(EngFunc_SetOrigin, plr, gCheckpoints[plr][!g_bCheckpointAlternate[plr]]);

    return PLUGIN_HANDLED;
}

public cmdStartRound(id)
{
    if(get_user_flags(id) & hns_ACESS)
    {
        if(g_CurrentMode > e_gKnife)
        {
            ColorChat(id, RED, "^1[^4%s^1] Write ^4/stop^1 Before Start The Mix.", hns_tag);
        }
        else
        {
            if(current_mode == mode_mr)
                pf_Scrim(id)
            else
                StartSMCmd(id);
        }
    }
}

public StartSMCmd(id) {

    if(!GameStarted)
    {
        set_dhudmessage(229, 228, 226, -1.0, 0.60, 2, 0.0, 5.0, 0.01, 0.01)

        show_dhudmessage(0, "GAME START IN 5 SECONDS")
        set_task(5.0, "StartSM");
    }
    else
    {
        client_print(id, print_chat, "[%s] Timer Mode Is Already Started, To Stop It Say /stop", hns_tag);
    }
    return PLUGIN_HANDLED
}

public StopSMCmd(id) {
    if(GameStarted)
    {
        GameStarted = false
        Survival = false;
        new szName[64]
        get_user_name(id, szName, 63)
    }
    return PLUGIN_HANDLED
}

public StartSM()
{
    PrepareMode(e_gMix);
    flSidesTime[0] = 0.0
    flSidesTime[1] = 0.0
    iCurrentSW = 1;
    GameStarted = true;
    Task_Hud(0, 2.0, 1, 255, 153, 0, 3.0, "LIVE LIVE LIVE");

}

public cmdStop(id)
{
    if(get_user_flags(id) & hns_ACESS)
    {
        switch(g_CurrentMode)
        {
            case e_gPaused:
            {
                ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Stopped ^4Match^1!", hns_tag, GetName(id))
            }
            case e_gKnife:
            {
                ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Stopped ^4Knife Round^1!", hns_tag, GetName(id))
            }
            case e_gMix:
            {
                ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Stopped ^4Match^1!", hns_tag, GetName(id))
            }
            case e_gPub:
            {
                ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Stopped ^4Public^1!", hns_tag, GetName(id))
            }
        }

        server_cmd("amxx unpause uq_jumpstats_v2.51.amxx")
        server_cmd("amxx unpause uq_jumpstats_tops.amxx")

        StopSMCmd(id);
        if(g_CurrentMode)
        {
            PrepareMode(e_gTraining);
        }
    }
}

public cmdKnifeRound(id)
{
    if(get_user_flags(id) & hns_ACESS)
    {
        if(g_CurrentMode > e_gKnife)
        {
            ColorChat(id, RED, "^1[^4%s^1] Write ^4/stop^1 Before Start The Mix.", hns_tag);
        }
        else
        {
            pf_KnifeRound(id)
            remove_hook(id)
        }
    }
}

public pf_Scrim(id)
{
    set_task(4.5, "PrepareMode", e_gMix);
    set_task(5.0, "RestartRound");
    Task_Hud(0, 0.0, 1, 65, 105, 225, 3.0, "Normal Mode In 5 Seconds")
    Task_Hud(0, 7.0, 1, 255, 153, 0, 5.0, "Live Live Live^nGood Luck & Have Fun")
    ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Started The ^4Game^1!", hns_tag, GetName(id));
}

public pf_KnifeRound(id)
{
    new szMapName[64]
    get_mapname(szMapName, 63);
    PrepareMode(e_gKnife);
    Task_Hud(0, 2.0, 1, 65, 105, 225, 3.0, "Knife Round Started!");
    ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Started ^4Knife Round^1!", hns_tag, GetName(id));

    return PLUGIN_HANDLED
}

public Score(id)
{
    if(current_mode == mode_timebased)
    {
        ShowTimers(id)
        return PLUGIN_CONTINUE
    }
    new teamname[2][32]
    teamname[0] = "FCT";
    teamname[1] = "FTT";
    if(!g_iSecondHalf)
        ColorChat(id, BLUE,"^1[^4%s^1] Score: ^4%s ^3%d^1:^3%d ^4%s ^1(^3MR%d^1)", hns_tag, teamname[0], g_iScore[0], g_iScore[1], teamname[1], get_pcvar_num(cvarMaxRounds))
    else
        ColorChat(id, BLUE,"^1[^4%s^1] Score: ^4%s ^3%d^1:^3%d ^4%s ^1(^3MR%d^1)", hns_tag, teamname[0], g_iScore[0], g_iScore[1], teamname[1], get_pcvar_num(cvarMaxRounds))

    return PLUGIN_CONTINUE
}

public eCurWeapon(id)
{
    if(g_CurrentMode == e_gKnife)
    {
        engclient_cmd(id, "weapon_knife")
    }

    if(!g_bFreezePeriod)
        return

    if (cs_get_user_team(id) == CS_TEAM_T)
        cs_reset_user_maxspeed(id)
}

public cs_reset_user_maxspeed(id) {
    engfunc(EngFunc_SetClientMaxspeed, id, 250.0);
    set_pev(id, pev_maxspeed, 250.0)
    return PLUGIN_HANDLED
}

public ePreFT() {
    if(task_exists(ROUNDENDTASK))
        remove_task(ROUNDENDTASK);
    if(task_exists(TASK_ROUNDTIME))
        remove_task(TASK_ROUNDTIME);


    if(GameStarted)
    {
        ShowTimers(0);
    }
    g_flRoundTime = 0.0;
    g_bFreezePeriod = true;

    set_task(0.1, "TaskDestroyBreakables");
}

public ePostFT() {
    g_bFreezePeriod = false;

    if(current_mode == mode_timebased)
    {
        if(GameStarted)
            Survival = true

        set_task(0.25, "RoundEnd", TASK_ROUNDTIME,. flags = "b");
    }
}

public RoundEnd()
{
    g_flRoundTime+= 0.25;
    if(Survival)
    {
        flSidesTime[iCurrentSW]+=0.25;
        if(flSidesTime[iCurrentSW] >= get_pcvar_float(g_Captime)*60.0)
        {
            SoundFx = false;
            GameStarted = false;
            Survival = false;
            new szTeam[64]
            new Float:TimeDiff
            get_pcvar_string(cvarTeam[iCurrentSW], szTeam, 63)
            if(iCurrentSW)
                TimeDiff = flSidesTime[iCurrentSW]-flSidesTime[0]
            else
                TimeDiff = flSidesTime[iCurrentSW]-flSidesTime[1]

            new sTime[24];
            fnConvertTime( TimeDiff, sTime, 23 );
            PrepareMode(e_gTraining);
            ColorChat(0,RED,"^1[^4%s^1] ^3%s^1 Won The Game! (^4%s^1 Difference)",hns_tag, szTeam, sTime)

            MixFinished(1);
            server_cmd("sv_restart 1")
        }
        else if(flSidesTime[iCurrentSW] >= get_pcvar_float(g_Captime)*60.0-1.5 && !SoundFx)
        {
            EndSoundFx(1);
            SoundFx = true;
        }
    }
    if((g_flRoundTime/60.0) >= get_pcvar_float( g_pRoundTime ))
    {
        if(GameStarted)
            Survival = false;
        //RoundTerminating(0.5)

        remove_task(TASK_ROUNDTIME)
    }
}

public EndSoundFx( toggle )
{
    if(toggle)
        client_cmd ( 0 , "spk ambience/endgame.wav" )
    else
        for( new i = 1; i <= g_iMaxPlayers; i++ )
    {
        if(is_user_connected(i))
            client_cmd(i, "stopsound");
    }

}

public TerroristWin()
{
    new winner = 2;
    if(g_CurrentMode == e_gMix)
    {
        if(!g_iSecondHalf)
        {
            if(winner == 1)
            {
                g_iScore[0]++
            }
            if(winner == 2)
            {
                g_iScore[1]++
            }
        }
        else
        {
            if(winner == 1)
            {
                g_iScore[1]++
            }
            if(winner == 2)
            {
                g_iScore[0]++
            }
        }
        CheckScore();
    }
    server_cmd("sv_restart 1");
}

public eEndRound()
{
    if(task_exists(ROUNDENDTASK))
        remove_task(ROUNDENDTASK);

    new msg[32], winner;
    read_data(2,msg,32)

    if(containi(msg,"ct") != -1)
    {
        winner = 1
    }

    else if(contain(msg,"ter") != -1)
    {
        winner = 2;

    }

    if(g_CurrentMode == e_gPub || (g_CurrentMode == e_gMix && current_mode == mode_timebased))
    {
        Survival = false;
        if(winner == 1)
        {
            iCurrentSW = !iCurrentSW;
            SwitchTeams();
            }
    }
    else if(g_CurrentMode == e_gMix && current_mode == mode_mr)
    {
        if(!g_iSecondHalf)
        {
            if(winner == 1)
            {
                g_iScore[0]++
            }
            if(winner == 2)
            {
                g_iScore[1]++
            }
        }
        else
        {
            if(winner == 1)
            {
                g_iScore[1]++
            }
            if(winner == 2)
            {
                g_iScore[0]++
            }
        }
        CheckScore();
    }
    else  if(g_CurrentMode == e_gKnife)
{
    if(winner == 1)
    {
        Task_Hud(0, 2.0, 1, 65, 105, 225, 3.0, "KNIFE ROUND WIN SEEKERS");
    }
    if(winner == 2)
    {
        Task_Hud(0, 2.0, 1, 65, 105, 225, 3.0, "KNIFE ROUND WIN HIDERS");
    }

    if(CaptainWinner == 3)
    {
        if(winner == 1)
        CaptainSide = Captain1;
        else
        CaptainSide = Captain2;
        set_task(1.5, "captain_menu", CaptainSide);
        set_task(0.2, "PlayersList", TASK_PLAYERSLIST, _, _, "b");
        CaptainWinner = 0;
        PrepareMode(e_gCaptain);
        }
        else
        PrepareMode(e_gTraining);
    SavePlayers();
    }
}

public respawn_player( id )
{
    if ( is_user_connected( id ) )
    {
        /* Make the engine think he is spawning */
        set_pev( id, pev_deadflag, DEAD_RESPAWNABLE );
        set_pev( id, pev_iuser1, 0 );
        dllfunc( DLLFunc_Think, id );

        /* Move his body so if corpse is created it is not in map */
        engfunc( EngFunc_SetOrigin, id, Float:{ -4800.0, -4800.0, -4800.0 } );

        /* Actual Spawn */
        set_task(0.1, "spawnagain", id);
    }
}

public spawnagain( id )
{
    /* Make sure he didn't disconnect in the 0.5 seconds that have passed. */
    if ( is_user_connected( id ) )
    {
        new bool:SortTeams = false;
        /* Spawn player */
        if(g_CurrentMode != e_gPub)
        {
            spawn( id );
            dllfunc( DLLFunc_Spawn, id );
        }
        if((file_exists("addons/amxmodx/data/playerslist.ini")))
        {
            new szMap[64]
            get_mapname(szMap, 63);
            if(containi(szMap, "arena") != -1)
            {
                SortTeams = false;
            }
            else
            {
                SortTeams = true;
                if(task_exists(92271))
                    remove_task(92271)

                set_task(5.0, "remove_file", 92271);
            }
        }
        if(( g_CurrentMode != e_gTraining && g_CurrentMode != e_gPub ) || SortTeams)
        {
            if(!CheckPlayer(id))
            {
                user_silentkill( id );
                cs_set_user_team( id, CS_TEAM_SPECTATOR );
            }
            else
            {
                spawn( id );
                dllfunc( DLLFunc_Spawn, id );
            }
        }


        /*
         * After 1.0 the player will be spawned fully and you can mess with the ent (give weapons etc)
         * set_task(1.0,"player_fully_spawned",id)
         */
    }
}

enum _:SaveData
{
save_team,
SteamID[32]
}

public CheckScore()
{
new Rounds = get_pcvar_num(cvarMaxRounds)

Score(0);

if(!g_iSecondHalf)
{
    if(g_iScore[0]+g_iScore[1] == Rounds)
    {
        g_iSecondHalf = true;
        SwitchTeams();
        Task_Hud(0, 2.0, 1, 65, 105, 225, 6.0, "1ST HALF %d:%d^nSWITCHING SIDES...^n2ND HALF IN 5 SECONDS", g_iScore[0], g_iScore[1])
        Task_Hud(0, 9.0, 1, 255, 153, 0, 4.0, "LIVE LIVE LIVE");
        set_task(7.0, "RestartRound");
        }
    }
    else
    {
        new teamname[32]
        if(g_iScore[0] > Rounds)
        {
        MixFinished(1)
        get_pcvar_string(cvarTeam[0], teamname, 31)
        Task_Hud(0, 2.0, 1, 65, 105, 225, 3.0, "GAME FINISHED^nWINNER: %s",teamname[0]);
        PrepareMode(e_gTraining);
        }
        else if(g_iScore[1] > Rounds)
        {
        MixFinished(2)
        get_pcvar_string(cvarTeam[1], teamname, 31)
        Task_Hud(0, 2.0, 1, 65, 105, 225, 3.0, "GAME FINISHED^nWINNER: %s",teamname[1]);
        PrepareMode(e_gTraining);
        }
        else if((g_iScore[0]+g_iScore[1]) == (Rounds*2))
        {
        Task_Hud(0, 2.0, 1, 65, 105, 225, 3.0, "GAME FINISHED^nDRAW DRAW DRAW");

        MixFinished(0)
        PrepareMode(e_gTraining);
        }
    }
}

public SwitchTeams()
{
    for( new i = 1; i <= g_iMaxPlayers; i++ ) {
        if( is_user_connected( i ) )
        {
            switch( cs_get_user_team( i ) )
            {
                case CS_TEAM_T: cs_set_user_team( i, CS_TEAM_CT )
                    case CS_TEAM_CT: cs_set_user_team( i, CS_TEAM_T )
                }
        }
    }
}

public CBasePlayer_Spawn_Post(id) {

    if (!is_user_alive(id))
        return;

    //set_pdata_bool(id, m_bJustConnected, false);
    if(g_CurrentMode <= e_gPaused)
        set_user_godmode(id, 1)

    SetRole(id)
}

public EventResetHUD(id)
{
    if(is_user_alive(id))
    {
        set_user_footsteps(id, cs_get_user_team(id) == CS_TEAM_T ? 1 : 0)
    }
}

public SetRole(id) {
    new CsTeams:team = cs_get_user_team(id)
    strip_user_weapons(id)
    set_user_freeze(id, 0);
    if(g_CurrentMode > e_gKnife )
    {
        switch (team)
        {
            case CS_TEAM_T:
            {
                cs_reset_user_maxspeed(id);
                give_item(id, "weapon_knife")
                if( get_pcvar_num( cvarFlashNum ) >= 1 )
                {
                    give_item( id, "weapon_flashbang" );
                    cs_set_user_bpammo( id, CSW_FLASHBANG, get_pcvar_num( cvarFlashNum ) );
                }
                if( get_pcvar_num( cvarSmokeNum ) >= 1 )
                {
                    give_item( id, "weapon_smokegrenade" );
                    cs_set_user_bpammo( id, CSW_SMOKEGRENADE, get_pcvar_num( cvarSmokeNum ) );
                }
            }
            case CS_TEAM_CT:
            {
                give_item(id, "weapon_knife")
            }
        }
    }
    else
    {
        give_item(id, "weapon_knife")
    }
}

public GetName(id)
{
    new szName[128]
    get_user_name(id, szName, charsmax(szName))
    return szName
}

public PrepareMode(mode)
{

    switch(mode)
    {
        case e_gTraining:
        {

            server_cmd("amxx unpause uq_jumpstats_v2.51.amxx")
            server_cmd("amxx unpause uq_jumpstats_tops.amxx")
            server_cmd("sv_alltalk 1")
            server_cmd("mp_roundtime 9")
            server_cmd("mp_timelimit 60")
            server_cmd("mp_freezetime 0")
            server_cmd("mp_autoteambalance 0")
            server_cmd("kill_message 0")
            server_cmd("hns_flash 0")
            g_CurrentMode = e_gTraining;
        }
        case e_gKnife:
        {

            server_cmd("amxx pause uq_jumpstats_v2.51.amxx")
            server_cmd("amxx pause uq_jumpstats_tops.amxx")
            server_cmd("sv_alltalk 1")
            server_cmd("mp_freezetime 0")
            server_cmd("hns_semiclip 1")
            server_cmd("kill_message 0")
            server_cmd("hns_flash 0")
            g_CurrentMode = e_gKnife;
        }
        case e_gMix:
        {

            LoadMapCFG();
            g_iScore[0] = 0;
            g_iScore[1] = 0;
            g_iSecondHalf = false;
            server_cmd("amxx pause uq_jumpstats_v2.51.amxx")
            server_cmd("amxx pause uq_jumpstats_tops.amxx")
            server_cmd("sv_alltalk 1")
            server_cmd("mp_timelimit 0")
	   server_cmd("mp_roundtime 2.50")
	   server_cmd("mp_freezetime 3")
	   server_cmd("mp_autoteambalance 2")
	   server_cmd("mp_forcechasecam 0")
	   server_cmd("mp_forcecamera 0")
	   server_cmd("mp_footsteps 1")
            server_cmd("kill_message 0")
	   server_cmd("hns_flash 2")
	   server_cmd("hns_smoke 1")
            g_CurrentMode = e_gMix;
        }
        case e_gPub:
        {

            server_cmd("amxx unpause uq_jumpstats_v2.51.amxx")
            server_cmd("amxx unpause uq_jumpstats_tops.amxx")
            server_cmd("sv_alltalk 1")
            server_cmd("mp_autoteambalance 2")
	   server_cmd("mp_forcechasecam 0")
	   server_cmd("mp_forcecamera 0")
	   server_cmd("mp_footsteps 1")
            server_cmd("mp_freezetime 3")
            server_cmd("mp_roundtime 2.50")
            server_cmd("mp_timelimit 20")
            server_cmd("kill_message 1")
	   server_cmd("hns_flash 2")
	   server_cmd("hns_smoke 1")
            g_CurrentMode = e_gPub;
        }
        case e_gCaptain:
        {

            server_cmd("amxx pause uq_jumpstats_v2.51.amxx")
            server_cmd("amxx pause uq_jumpstats_tops.amxx")
            server_cmd("sv_alltalk 1")
            server_cmd("hns_flash 0")
            server_cmd("kill_message 0")
            g_CurrentMode = e_gCaptain;
        }
    }

    RestartRound();
}

public RestartRound()
{
    Survival = false;
    flSidesTime[iCurrentSW] -= g_flRoundTime;
    server_cmd("sv_restart 1");
}

public FwdKnifePrim( const iPlayer )
{
    if( g_CurrentMode )
    {
        ExecuteHamB( Ham_Weapon_SecondaryAttack, iPlayer );
        return HAM_SUPERCEDE;
    }
    return HAM_IGNORED;
}

public FwdDeployKnife( const iEntity )
{
    new iClient = get_pdata_cbase( iEntity, m_pPlayer, EXTRAOFFSET_WEAPONS );

    if(gOnOff[iClient] )
    {
        set_pev(iClient, pev_viewmodel, 0)
    }
    else
    {
        set_pev(iClient, pev_viewmodel, alloc_KnifeModel)
    }

    if(get_user_team(iClient) == 1 && g_CurrentMode != e_gKnife)
    {
        set_pdata_float( iEntity, m_flNextPrimaryAttack, 9999.0, EXTRAOFFSET_WEAPONS );
        set_pdata_float( iEntity, m_flNextSecondaryAttack, 9999.0, EXTRAOFFSET_WEAPONS );
    }
    return HAM_IGNORED;
}

public Task_Hud(id, Float:Time ,hud, Red, Green, Blue, Float:HoldTime, const Text[], any: ... )
{
    new message[128]; vformat( message, charsmax( message ), Text, 9 );
    new Args[7];
    Args[0] = id;
    Args[1] = EncodeText(message);
    Args[2] = Red
    Args[3] = Green
    Args[4] = Blue
    Args[5] = hud
    Args[6] = _:HoldTime
    if(Time > 0.0)
        set_task(Time, "Hud_Message", 89000, Args, 7)
    else
        Hud_Message(Args)
}

public Hud_Message(Params[])
{
    new id, Text[128], RRR, GGG, BBB, hud, Float:HoldTime
    id = Params[0]
    DecodeText(Params[1], Text, charsmax(Text))
    RRR = Params[2]
    GGG = Params[3]
    BBB = Params[4]
    hud = Params[5]
    HoldTime = Float:Params[6]

    if(!id || is_user_connected(id))
    {
        if(hud)
        {
            set_dhudmessage(229, 228, 226, -1.0, 0.60, 0, 0.0, HoldTime, 0.1, 0.1)

            show_dhudmessage(id, Text)
        }
        else
        {
            set_dhudmessage(229, 228, 226, -1.0, 0.60, 0, 0.0, HoldTime, 0.1, 0.1, -1);
            show_dhudmessage(id, Text)
        }
    }
}

public addToFullPack(es, e, ent, host, hostflags, player, pSet)
{
    if(player)
    {
        if(g_bFreezePeriod)
        {
            if(get_user_team(host) == 2 && get_user_team(ent) == 1)
            {
                set_es( es, ES_Origin, { 999999999.0, 999999999.0, 999999999.0 } );
                set_es( es, ES_RenderMode, kRenderTransAlpha );
                set_es( es, ES_RenderAmt, 0 );

                return FMRES_SUPERCEDE;
            }
        }
    }

    if(get_pcvar_num(cvarSemiclip))
        return FMRES_IGNORED;

    if(player && is_user_connected(host) && is_user_connected(ent))
    {
        static Float:flDistance
        flDistance = entity_range(host, ent)

        if(plrSolid[host] && plrSolid[ent] && plrTeam[host] == plrTeam[ent] && get_user_team(host) != 3 && flDistance < 512.0)
        {
            set_es(es, ES_Solid, SOLID_NOT)
            set_es(es, ES_RenderMode, kRenderTransAlpha)
            set_es(es, ES_RenderAmt, floatround(flDistance)/1)
        }
    }

    return FMRES_IGNORED;
}

FirstThink()
{
for(new i = 1; i <= g_iMaxPlayers; i++)
{
    if(!is_user_alive(i))
    {
        plrSolid[i] = false
        continue
    }

    plrTeam[i] = get_user_team(i)

    plrSolid[i] = pev(i, pev_solid) == SOLID_SLIDEBOX ? true : false
}
}

public preThink(id)
{
if(get_pcvar_num(cvarSemiclip))
    return FMRES_IGNORED;

static i, LastThink

if(LastThink > id)
    {
    FirstThink()
    }
LastThink = id


if(!plrSolid[id]) return FMRES_IGNORED

for(i = 1; i <= g_iMaxPlayers; i++)
    {
        if(!plrSolid[i] || id == i) continue

        if(plrTeam[i] == plrTeam[id])
        {
            set_pev(i, pev_solid, SOLID_NOT)
            plrRestore[i] = true
        }
    }

return FMRES_IGNORED;
}

public postThink(id)
{
    if(get_pcvar_num(cvarSemiclip))
        return FMRES_IGNORED;

    static i

    for(i = 1; i <= g_iMaxPlayers; i++)
    {
        if(plrRestore[i])
        {
            set_pev(i, pev_solid, SOLID_SLIDEBOX)
            plrRestore[i] = false
        }
    }
    return FMRES_IGNORED;
}

public CaptainCmd(id,level,cid) {
    if(!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED

    if(g_CurrentMode != e_gTraining)
        return PLUGIN_HANDLED

    g_CurrentMode = e_gCaptain;

    new hns_name[32]
    get_user_name(id, hns_name, charsmax(hns_name))
    new iPlayers[32], iNum;
    get_players(iPlayers, iNum);

    Captain1 = Captain2 = 0;

    for(new i; i < iNum; i++)
    {
        user_silentkill(iPlayers[i]);
        cs_set_user_team(iPlayers[i], 3);
    }

    ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Choosing ^4Captains^1...", hns_tag, hns_name);

    CaptainMenu(id);

    return PLUGIN_HANDLED;
}

public StopCaptainCmd(id,level,cid) {
    if(!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED

    if(g_CurrentMode == e_gMix || g_CurrentMode == e_gPaused)
        return PLUGIN_HANDLED

    new hns_name[32]
    get_user_name(id, hns_name, charsmax(hns_name))

    CaptainWinner = CaptainSide = 0;
    Captain1 = Captain2 = 0;
    if(task_exists(TASK_MENUCLOSE))
        remove_task(TASK_MENUCLOSE)

    if(task_exists(TASK_PLAYERSLIST))
    remove_task(TASK_PLAYERSLIST)

    PrepareMode(e_gTraining);

    ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Stopped ^4Captain Mode^1...", hns_tag, hns_name);
    SavePlayers();

    return PLUGIN_HANDLED;
}

public CaptainMenu( id )
{
    new menu = menu_create( "\rPick Captains:", "menu_handler" );

    new players[32], pnum, tempid;

    new szName[32], szUserId[32];

    new callback = menu_makecallback("playermenu_callback");

    get_players(players, pnum);
    new items = 1;
    for ( new i; i<pnum; i++ )
    {
        tempid = players[i];
        if(tempid == Captain1)
            continue;

        get_user_name( tempid, szName, charsmax( szName ) );
        formatex( szUserId, charsmax( szUserId ), "%d", get_user_userid( tempid ) );
        if(items && items%7 == 0)
        {
            items++
            menu_additem( menu, "Refresh", "*", 0 );
        }
        if(plr_noplay[tempid] || tempid == Captain1)
        {
            if(plr_noplay[tempid])
                add(szName, charsmax(szName), " [noplay]");
            menu_additem( menu, szName, szUserId, 0, callback );
        }
        else menu_additem( menu, szName, szUserId, 0);

        items++
    }
    items = menu_items(menu)+1;
    if(items%7 != 0)
    {
        while(items%7 != 0)
        {
            items++;
            //menu_addblank(menu);
            //menu_addblank2(menu);
        }
    }

    menu_additem( menu, "Refresh", "*", 0 );
    menu_display( id, menu, 0 );
}

public playermenu_callback( id, menu, item )
{
    return ITEM_DISABLED;
}

public menu_handler( id, menu, item )
{
    if ( item == MENU_EXIT )
    {
        menu_destroy( menu );
        return PLUGIN_HANDLED;
    }

    new szData[6], szName[64];
    new _access, item_callback;
    menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
    if(szData[0] == '*')
    {
        CaptainMenu(id);
        return PLUGIN_HANDLED;
    }
    new userid = str_to_num( szData );

    new player = find_player( "k", userid );

    if ( player )
    {
        new szName[64];
        get_user_name( player, szName, charsmax( szName ) );

        if(!Captain1)
        {
            ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Chosed As ^4First Captain.", hns_tag, szName);
            Captain1 = player;

            CaptainMenu(id);
        }
        else
        {
            ColorChat(0, RED, "^1[^4%s^1] ^3%s ^1Chosed As ^4Second Captain^1.", hns_tag, szName);
            Captain2 = player;

            cs_set_user_team(Captain1, CS_TEAM_CT);
            cs_set_user_team(Captain2, CS_TEAM_T);
            CaptainWinner = 3;
            set_task(1.5, "pf_KnifeRound", id);
        }
    }

    menu_destroy( menu );
    return PLUGIN_HANDLED;
}

public captain_menu(id)
{
    if(id != Captain1 && id != Captain2)
        return PLUGIN_HANDLED;

    if(id != CaptainSide)
        return PLUGIN_HANDLED

    new menu = menu_create("Pick:", "captainmenu_handler")
    new callback = menu_makecallback("playermenu_callback");
    //set_task(11.5, "menu_task", id + TASK_MENUCLOSE);
    // Lets try? OK

    new players[32], pnum, tempid;
    new szName[32], szTempid[10];

    get_players(players, pnum);

    if(pnum == 0)
    {
    remove_task(id+TASK_MENUCLOSE)
    if(task_exists(TASK_PLAYERSLIST))
    remove_task(TASK_PLAYERSLIST);
    return PLUGIN_HANDLED;
    }

    new totalnum = 0;
    new items = 1;
    for(new i; i<pnum; i++)
    {
    tempid = players[i];

    if(cs_get_user_team(tempid) != CS_TEAM_SPECTATOR)
        {
            totalnum++;
            continue;
        }

    get_user_name(tempid, szName, charsmax(szName));
    num_to_str(tempid, szTempid, charsmax(szTempid));


    if(items && items%7 == 0)
        {
            items++
            menu_additem( menu, "Refresh", "*", 0 );
        }
    items++

    if(plr_noplay[tempid])
        {
            add(szName, charsmax(szName), " [noplay]");
            menu_additem( menu, szName, szTempid, 0, callback );
        }
    else
    menu_additem( menu, szName, szTempid, 0 );
    }
    items = menu_items(menu)+1;
    if(items%7 != 0)
    {
    while(items%7 != 0)
        {
    items++;
        }
    }
    menu_additem( menu, "Refresh", "*", 0 );



    menu_display(id, menu, 0);
    return PLUGIN_HANDLED;
}

public captainmenu_handler(id,menu,item)
{
    if(id != Captain1 && id != Captain2)
        return PLUGIN_HANDLED

    if(id != CaptainSide)
        return PLUGIN_HANDLED

    if(item == MENU_EXIT)
    {
        menu_destroy( menu );
        return PLUGIN_HANDLED;
    }
    new data[6], szName[64];
    new access, callback;
    menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);

    if(data[0] == '*')
    {
        captain_menu(id)
        return PLUGIN_HANDLED
    }
    new tempid = str_to_num(data)

    new name[35], namec[35];
    get_user_name(tempid, name, charsmax(name));
    get_user_name(id, namec, charsmax(namec));

    cs_set_user_team(tempid, cs_get_user_team(id));
    ColorChat(0, RED, "^1[^4%s^1] ^3%s^1 Pick -> ^4%s^1.", hns_tag, namec, name);

    set_cvar_num("sv_restart",1)

    remove_task(id+TASK_MENUCLOSE)

    new iPlayers[32],pnum
    get_players(iPlayers,pnum,"h")
    new bool:has_spec
    new totalplayers;
    for(new i; i < pnum; i++)
    {
        if(cs_get_user_team(iPlayers[i]) == CS_TEAM_SPECTATOR)
        {
            has_spec = true
        }
        else
        {
            totalplayers++;
        }
    }
    if(!has_spec || totalplayers == 10)
    {
        if(task_exists(TASK_PLAYERSLIST))
        remove_task(TASK_PLAYERSLIST);
        CaptainWinner = CaptainSide = 0;
        Captain1 = Captain2 = 0;

        PrepareMode(e_gTraining);
        return PLUGIN_HANDLED;
    }
    if(is_user_connected(Captain1) && is_user_connected(Captain2))
    {
        if(id == Captain1)
            CaptainSide = Captain2
        else
            CaptainSide = Captain1
        set_task(1.5,"captain_menu", CaptainSide)
    }
    else
    {
        set_task(5.0,"CheckCaptainJoin",id == Captain1 ? Captain1 : Captain2)
    }
    menu_destroy(menu)
    return PLUGIN_HANDLED
}

public menu_task(id)
{
    id -= TASK_MENUCLOSE

    new players[32], pnum;
    get_players(players, pnum, "h");

    new randomnum = random(pnum)
    new bool:has_spec
    new totalplayers;
    for(new i; i < pnum; i++)
    {
        if(cs_get_user_team(players[i]) == CS_TEAM_SPECTATOR)
        {
            has_spec = true
        }
        else
        {
            totalplayers++;
        }
    }
    if(!has_spec || totalplayers == 10)
    {
        if(task_exists(TASK_PLAYERSLIST))
        remove_task(TASK_PLAYERSLIST);

        PrepareMode(e_gTraining);
        return;
    }
    while(cs_get_user_team(players[randomnum]) != CS_TEAM_SPECTATOR)
    {
        randomnum = random(pnum)
    }
    if(is_user_connected(id))
    {
        set_cvar_num("sv_restart",1)
        cs_set_user_team(players[randomnum],cs_get_user_team(id))

        set_task(1.5, "captain_menu", id == Captain1 ? Captain2 : Captain1);
    }
    else
    {
        set_task(5.0, "CheckCaptainJoin", id == Captain1 ? Captain2 : Captain1);

        client_print(0, print_chat, "%s Awaiting The Arrival Of A New Captain.", hns_tag);
    }
    //show_menu(id, 0, "^n", 1);
}

public LoadMapCFG()
{
    new szMap[64]
    get_mapname(szMap, 63);
    new szPath[128]
    get_configsdir(szPath, 127);
    format(szPath, 127, "%s/hns", szPath);
    if(!dir_exists(szPath))
        mkdir(szPath);
    format(szPath, 127, "%s/mapcfg", szPath);
    if(!dir_exists(szPath))
        mkdir(szPath);

    format(szPath, 127, "%s/%s.cfg", szPath, szMap);
    if(file_exists(szPath))
    {
        server_cmd("exec %s", szPath);
    }
}

public TaskDestroyBreakables( )
{
    new iEntity = -1;
    while ((iEntity = find_ent_by_class(iEntity, "func_breakable" )))
    {
        if(entity_get_float(iEntity , EV_FL_takedamage))
        {
            entity_set_vector(iEntity, EV_VEC_origin, Float:{10000.0, 10000.0, 10000.0})
        }
    }
}

public safe_transfer( CsTeams:iTeam)
{
    new Float:flTime
    new iPlayers[ 32 ], iPlayersNum
    get_players( iPlayers, iPlayersNum, "h");
    for(new i = 0; i < iPlayersNum; i++)
    {
        new id = iPlayers[i];
        if(is_user_connected(id))
        {
            switch(id)
            {
                case 1..8: flTime = 0.1;
                    case 9..16: flTime = 0.2;
                    case 17..24: flTime = 0.3;
                    case 25..32: flTime = 0.4;
                }

            new task_params[2];
            task_params[0] = id;
            task_params[1] = _:iTeam;

            if(task_exists(SAFETRANSFERTASK+id))
                remove_task(SAFETRANSFERTASK+id)

            set_task(flTime, "task_to_team", SAFETRANSFERTASK+id, task_params, sizeof task_params);
        }
    }
}

public task_to_team( Params[] )
{
    new id = Params[0];
    new team = Params[1];
    if(is_user_connected(id))
    {
        if(is_user_alive(id))
            user_kill(id, 0)
        if(get_user_team(id) != team)
        {
            cs_set_user_team(id, team);
        }
    }
}

public Timer(id, Time)
{
	log_amx("[CRXLOG] g_msg_showtimer @ 2175")
    message_begin(MSG_ONE, g_msg_showtimer, _, id)
    message_end()

	log_amx("[CRXLOG] g_msg_roundtime @ 2179")
    message_begin(MSG_ONE, g_msg_roundtime, _, id)
    write_short(Time+1)
    message_end()
}

public MixFinished(status)
{
    new g_iReturn;
    ExecuteForward(iFwd_MixFinished, g_iReturn);
}

public fnConvertTime( Float:time, convert_time[], len )
{
    new sTemp[24];
    new Float:fSeconds = time, iMinutes;

    iMinutes        = floatround( fSeconds / 60.0, floatround_floor );
    fSeconds        -= iMinutes * 60.0;
    new intpart     = floatround( fSeconds, floatround_floor );
    new Float:decpart   = (fSeconds - intpart) * 100.0;
    intpart         = floatround( decpart );

    formatex( sTemp, charsmax( sTemp ), "%02i:%02.0f.%d", iMinutes, fSeconds, intpart );


    formatex( convert_time, len, sTemp );

    return(PLUGIN_HANDLED);
}

public fwd_FlashBangRetireWeapon_Pre( ent )
{
    new id = get_pdata_cbase( ent, m_pPlayer, 4 );
    if( get_pdata_int( id, m_rgAmmoFlashBang, 5 ) > 0 )
    {
        set_pdata_float( ent, m_flReleaseThrow, -1.0, 4 );
        set_pdata_float( ent, m_flTimeWeaponIdle, random_float( 10.0, 15.0 ), 4 );
        SendWeaponAnim( id, ent, FLASHBANG_DRAW );
        return HAM_SUPERCEDE;
    }
    return HAM_IGNORED;
}

public CBasePlayerWpn_SecondaryAttack(const grenadeEntity)
{
    if(pev_valid(grenadeEntity) && !g_bFreezePeriod)
    {
        new id = get_pdata_cbase(grenadeEntity, m_pPlayer, XoCGrenade)
        new buttons = pev(id, pev_button)

        if(buttons & IN_ATTACK)
        {
            HandleThrowType[id] = medium
        }
        else
        {
            HandleThrowType[id] = slower
        }

        ExecuteHamB(Ham_Weapon_PrimaryAttack, grenadeEntity)
    }
}

public team_spec(id)
{
    if(g_CurrentMode != e_gPub)
        return PLUGIN_HANDLED;

    if (g_Spec[id])
    {
        cs_set_user_team(id, hTeam[id]);
        cs_set_user_deaths(id, hDeath[id]);
        g_Spec[id] = false
    }
    else
    {
        if (cs_get_user_team(id) == CS_TEAM_SPECTATOR)
            return PLUGIN_HANDLED;

        hDeath[id] = cs_get_user_deaths(id);
        hTeam[id] = cs_get_user_team(id);
        if (is_user_alive(id))
            cs_set_user_deaths(id, hDeath[id] - 1);
        cs_set_user_team(id, CS_TEAM_SPECTATOR);
        user_silentkill(id);
        g_Spec[id] = true
    }

    return PLUGIN_HANDLED;
}

public grenade_throw(id, grenadeEntity, grenadeWeaponIndex)
{
    if(pev_valid(grenadeEntity))
    {
        new Float:grenadeVelocity[3]
        pev(grenadeEntity, pev_velocity, grenadeVelocity)

        new Float:multiplier = VelocityMultiplier[HandleThrowType[id]]
        xs_vec_mul_scalar(grenadeVelocity, multiplier, grenadeVelocity)
        set_pev(grenadeEntity, pev_velocity, grenadeVelocity)

        HandleThrowType[id] = regular
    }
}

public client_connect(id)
{
    super_set(id, "fps_max 99.5;cl_updaterate 100;cl_cmdrate 105;hud_centerid 1;ex_interp 0.01;")
    g_bShowPlayerNames[id] = true;
}

stock super_set(const id, const szCmd[])
{
	log_amx("[CRXLOG] SVC_DIRECTOR @ 2294")
    message_begin(MSG_ONE, SVC_DIRECTOR, _, id)
    write_byte(strlen(szCmd) + 2)
    write_byte(10)
    write_string(szCmd)
    message_end()
}

stock fnRegisterSayCmd(const szCmd[], const szShort[], const szFunc[], flags = -1, szInfo[] = "")
{
    new szTemp[65], szInfoLang[65];
    format(szInfoLang, 64, "%L", LANG_SERVER, szInfo);

    format(szTemp, 64, "say /%s", szCmd);
    register_clcmd(szTemp, szFunc, flags, szInfoLang);

    format(szTemp, 64, "%s", szCmd);
    register_clcmd(szTemp, szFunc, flags, szInfoLang);

    format(szTemp, 64, "/%s", szCmd);
    register_clcmd(szTemp, szFunc, flags, szInfoLang);


    format(szTemp, 64, "say /%s", szShort);
    register_clcmd(szTemp, szFunc, flags, szInfoLang);

    format(szTemp, 64, "%s", szShort);
    register_clcmd(szTemp, szFunc, flags, szInfoLang);

    format(szTemp, 64, "/%s", szShort);
    register_clcmd(szTemp, szFunc, flags, szInfoLang);

    return 1;
}

stock EncodeText( const text[] )
{
    return engfunc( EngFunc_AllocString, text )
}

stock DecodeText( const text, string[], const length )
{
    global_get( glb_pStringBase, text, string, length )
}

stock set_user_freeze(client,freeze){
    new iFlag = pev(client,pev_flags);
    set_pev(client,pev_flags,freeze ? iFlag | FL_FROZEN:iFlag & ~FL_FROZEN);
}

stock SendWeaponAnim( const id, const ent, const anim )
{
    if( !is_user_alive( id ) )
        return;

    set_pev(id, pev_weaponanim, anim);

    log_amx("[CRXLOG] SVC_WEAPONANIM @ 2351")
    message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id);
    write_byte(anim);
    write_byte(pev(ent, pev_body));
    message_end();
}

stock ExplodeString( p_szOutput[][], p_nMax, p_nSize, p_szInput[], p_szDelimiter )
{
    new nIdx    = 0, l = strlen( p_szInput );
    new nLen    = (1 + copyc( p_szOutput[nIdx], p_nSize, p_szInput, p_szDelimiter ) );
    while ( (nLen < l) && (++nIdx < p_nMax) )
        nLen += (1 + copyc( p_szOutput[nIdx], p_nSize, p_szInput[nLen], p_szDelimiter ) );
    return(nIdx);
}

public message_show_menu( msgid, dest, id )
{
    if ( !should_autojoin( id ) )
        return(PLUGIN_CONTINUE);

    static  team_select[] = "#Team_Select";
    static  menu_text_code[sizeof team_select];
    get_msg_arg_string( 4, menu_text_code, sizeof menu_text_code - 1 );
    if ( !equal( menu_text_code, team_select ) )
        return(PLUGIN_CONTINUE);

    set_force_team_join_task( id, msgid );

    return(PLUGIN_HANDLED);
}


public message_vgui_menu( msgid, dest, id )
{
    if ( get_msg_arg_int( 1 ) != 2 || !should_autojoin( id ) )
        return(PLUGIN_CONTINUE);

    set_force_team_join_task( id, msgid );

    return(PLUGIN_HANDLED);
}

set_force_team_join_task( id, menu_msgid )
{
static param_menu_msgid[2];
param_menu_msgid[0] = menu_msgid;
set_task( 0.1, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid );
}


public task_force_team_join( menu_msgid[], id )
{
    if ( get_user_team( id ) )
    return;

    force_team_join( id, menu_msgid[0], "5", "5" );
}


stock force_team_join( id, menu_msgid, /* const */ team[] = "5", /* const */ class[] = "0" )
{
    static jointeam[] = "jointeam";
    if ( class[0] == '0' )
    {
        engclient_cmd( id, jointeam, team );
        return;
    }

    static msg_block, joinclass[] = "joinclass";
    msg_block = get_msg_block( menu_msgid );
    set_msg_block( menu_msgid, BLOCK_SET );
    engclient_cmd( id, jointeam, team );
    engclient_cmd( id, joinclass, class );
    set_msg_block( menu_msgid, msg_block );
    respawn_player( id );
}

bool:should_autojoin( id )
{
return(!get_user_team( id ) && !task_exists( id ) );
}

public NewRound() {
    if(RestartGame) {
        new Players[32], num, user
        get_players(Players, num, "h")
        for(new i = 0; i < num; i++) {
            user = Players[i]
            if(is_user_connected(user)) {
                Frags[user] = get_user_frags(user)
                Deaths[user] = cs_get_user_deaths(user)
                if(Frags[user] || Deaths[user])
                    RestartTime = get_gametime()
            }
        }
        EnableHamForward(PlayerSpawn)
        RestartGame = false
    }
}

public FwPlayerSpawn(user) {
    new Float:GameTime = get_gametime()

    if(GameTime != RestartTime)
        DisableHamForward(PlayerSpawn)

    else {
        if(is_user_alive(user)) {
            set_user_frags(user, Frags[user])
            cs_set_user_deaths(user, Deaths[user])
        }
    }
}

public RoundRestart() {
    RestartGame = true
}

public fwd_EmitSound_Pre( id, iChannel, szSample[], Float:volume, Float:attenuation, fFlags, pitch )
{
    if( equal( szSample, "weapons/knife_deploy1.wav") )
    {
        return FMRES_SUPERCEDE;
    }

    if( is_user_alive( id ) && cs_get_user_team(id) == CS_TEAM_T && equal( szSample, snd_denyselect ) )
    {
        emit_sound( id, iChannel, g_szUseSound, volume, attenuation, fFlags, pitch );
        return FMRES_SUPERCEDE;
    }
    return FMRES_IGNORED;
}


public SavePlayers()
{
    if(file_exists("addons/amxmodx/data/playerslist.ini"))
        delete_file("addons/amxmodx/data/playerslist.ini");

    new PlayersFile = fopen("addons/amxmodx/data/playerslist.ini", "w");
    new players[MAX_PLAYERS], num;
    get_players(players, num, "ae", "TERRORIST");

    for(new i = 1; i <= g_iMaxPlayers; i++)
    {
        if(!is_user_connected(i))
            continue;

        new szString[128];
        new Steam[64]
        get_user_authid(i, Steam, 63);
        if(!num)
        {
            if(get_user_team(i) == 1)
                format(szString, 127, "%s %d^r^n", Steam, 2)
            else if(get_user_team(i) == 2)
                format(szString, 127, "%s %d^r^n", Steam, 1)
            else
                format(szString, 127, "%s %d^r^n", Steam, get_user_team(i))
        }
        else
            format(szString, 127, "%s %d^r^n", Steam, get_user_team(i))

        fputs(PlayersFile, szString);
    }

    fclose(PlayersFile);
}

public bool:CheckPlayer(id)
{
    new szSteam[64];
    get_user_authid(id, szSteam, 63);
    new szMap[64]
    get_mapname(szMap, 63);
    if(containi(szMap, "arena") != -1)
    {
        return false;
    }
    new string[128];
    new side;
    new exploded[2][64]

    new PlayersFile = fopen("addons/amxmodx/data/playerslist.ini", "r");

    if(PlayersFile)
    {
        while(!feof(PlayersFile))
        {
            fgets(PlayersFile, string, 127)
            if(containi(string, szSteam) != -1)
            {
                ExplodeString(exploded,2,63,string, ' ' );
                side = str_to_num(exploded[1]);
                break;
            }
        }

        fclose(PlayersFile);
    }

    if(side == 1)
    {
        cs_set_user_team(id, CS_TEAM_T);
    }
    else if(side == 2)
    {
        cs_set_user_team(id, CS_TEAM_CT);
    }
    else
    {
        cs_set_user_team(id, CS_TEAM_SPECTATOR);
        return false;
    }

    return true;
}

public PlayersList()
{
    new iPlayers[32], iNum;
    get_players(iPlayers, iNum, "h");
}

public SaveState(id)
{
    new temp_array[SaveData];
    temp_array[save_team] = get_user_team(id);
    get_user_authid(id, temp_array[SteamID], 31);
}

public client_disconnected(id)
{
    if(CaptainWinner == id)
        CaptainWinner = 0;
    if(CaptainSide == id)
        CaptainSide = 0;
    if(Captain1 == id)
        Captain1 = 0;
    if(Captain2 == id)
        Captain2 = 0;

    PlayNoPlay[id] = get_gametime()+60.0;

    if(get_user_team(id) == 1 || get_user_team(id) == 2)
        SaveState(id);

    else
    {
    g_bSurvived[id] = false;
    }
}

public remove_file( )
{
    if(file_exists("addons/amxmodx/data/playerslist.ini"))
        delete_file("addons/amxmodx/data/playerslist.ini");
}

public Messages_Audio(Message_Index, Message_Dest, Index)
{
    if(!Index)
    {
        new Audio[14], won_msg[120]
        get_msg_arg_string(2, Audio, charsmax(Audio))

        if(TrieGetCell(tc, Audio, WinningTeam) && get_pcvar_string(WinningTeam, won_msg, charsmax(won_msg)))
        {
            if(get_msg_block(Text_Msg) == BLOCK_NOT)
                set_msg_block(Text_Msg, BLOCK_ONCE)

            if(!get_pcvar_num(msgcvar_method))
                client_print(0, print_center, "%s", won_msg)

            else
            {
                set_dhudmessage(229, 228, 226, -1.0, 0.3, 0, 6.0, 12.0, _, _, -1)
                show_dhudmessage(0, "%s", won_msg)
            }

            return PLUGIN_HANDLED
        }
    }

    return PLUGIN_CONTINUE
}

public player_spawn(id)
{
    if(is_user_alive(id))
    {
        new Float:fHealth = get_pcvar_float(g_pcvarHealth)
        if(fHealth != 100.0)
        {
            set_pev(id, pev_health, fHealth)
        }
    }
}

public client_PreThink( client )
{
    if( is_user_alive( client ) )
    {
        static CsTeams:iTeam;
        iTeam = cs_get_user_team( client );

        static iTarget, iBody;
        get_user_aiming( client, iTarget, iBody );

        static iOldTarget[ 33 ], iResetCount[ 33 ];

        if( ( 1 <= iTarget <= g_iMaxPlayers ) && is_user_alive( iTarget ) && g_bShowPlayerNames[ client ] )
        {
            static iOld, bool:bIsTeammate;
            iOld = iOldTarget[ client ];
            bIsTeammate = bool:( cs_get_user_team( iTarget ) == iTeam );

            if( !iOld )
            {
                if( bIsTeammate )
                {
                    UTIL_StatusValue( client, SV_FLAG_TEAMMATE, SV_TEAMVALUE_FRIEND );
                }
                else
                {
                    UTIL_StatusValue( client, SV_FLAG_TEAMMATE, SV_TEAMVALUE_ENEMY );
                }
            }

            if( iOld != iTarget )
            {
                iOldTarget[ client ] = iTarget;

                UTIL_StatusValue( client, SV_FLAG_PLAYERID, iTarget );
            }

            if( !iOld )
            {
                if( bIsTeammate )
                {
                    static szMessage[ 192 ];
                    formatex( szMessage, 191, "%%p2 - %i%%%% HP", get_user_health( iTarget ) );

                    UTIL_StatusText( client, szMessage );
                }
                else if( get_user_flags( client ) & ADMIN_KICK)
                {
                    static szMessage[ 192 ];
                    formatex( szMessage, 191, "%%p2 - %i%%%% HP", get_user_health( iTarget ) );

                    UTIL_StatusText( client, szMessage );
                }
                else
                {
                    static szMessage[ 192 ];
                    formatex( szMessage, 191, "%%p2");

                    UTIL_StatusText( client, szMessage );
                }
            }
        }
        else if( iOldTarget[ client ] )
        {
            iOldTarget[ client ] = 0;
            iResetCount[ client ] = 1;
        }
        else if( iResetCount[ client ] > 0 && --iResetCount[ client ] == 0 )
        {
            UTIL_StatusValue( client, SV_FLAG_PLAYERID, 0 );
            UTIL_StatusText( client, "" );
        }
    }
}


UTIL_StatusText( const id, const szMessage[ ] )
{
	log_amx("[CRXLOG] g_iMsgId_StatusText @ 2729")
    message_begin( id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, g_iMsgId_StatusText, _, id );
    write_byte( 0 );
    write_string( szMessage );
    message_end( );
}

UTIL_StatusValue( const id, const iFlag, const iValue )
{
	log_amx("[CRXLOG] g_iMsgId_StatusValue @ 2738")
    message_begin( id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, g_iMsgId_StatusValue, _, id );
    write_byte( iFlag );
    write_short( iValue );
    message_end( );
}

public event_DeathMsg()
{
    new id = read_data(2);
    if(g_bSurvived[id])
    {
        g_bSurvived[id] = false;
    }
}

public event_NewRound()
{
    new players[32], ctnum, pnum;
    get_players(players, ctnum, "e", "CT");
    get_players(players, pnum, "c");

    new id, Float:fFrags;
    for(new i = 0; i < pnum; i++)
    {
        id = players[i];
        if(g_bSurvived[id] && ctnum > 0)
        {
            pev(id, pev_frags, fFrags);
            set_pev(id, pev_frags, ++fFrags);
        }

        g_bSurvived[id] = bool:(cs_get_user_team(id) == CS_TEAM_T);
    }
}

public GameDesc( ) {
    static gamename[32];
    get_pcvar_string( amx_gamename, gamename, 31 );
    forward_return( FMV_STRING, gamename );
    return FMRES_SUPERCEDE;
}

public ShowPlayerNames(id)
{
    if(g_bShowPlayerNames[id])
    {
        g_bShowPlayerNames[id] = false;
        client_print(id, print_center, "Player Names Deactivated");
    }
    else if(!g_bShowPlayerNames[id])
    {
        g_bShowPlayerNames[id] = true;
        client_print(id, print_center, "Player Names Activated");
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1026\\ f0\\ fs16 \n\\ par }
*/

Аватар
jumby1990
Извън линия
Потребител
Потребител
Мнения: 128
Регистриран на: 10 Фев 2019, 18:02
Местоположение: varna
Се отблагодари: 8 пъти
Получена благодарност: 4 пъти
Обратна връзка:

Проблем - Host errorbad server message

Мнение от jumby1990 » 19 Дек 2019, 20:53

Добре ако даде пак проблем ще пиша , за момента съм го сложил най-отгоре в плугините даже над advancedbans

Добавено преди 3 часа 26 минути 40 секунди:
No model 256!
Host_Error: CL_ParseServerMessage: Bad server message този проблем ми изкара в конзолата и ме изхвърли

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Проблем - Host errorbad server message

Мнение от OciXCrom » 19 Дек 2019, 20:56

Логовете които добавих са от типа [CRXLOG] <id на грешката> @ <ред в .sma файла>

Аватар
jumby1990
Извън линия
Потребител
Потребител
Мнения: 128
Регистриран на: 10 Фев 2019, 18:02
Местоположение: varna
Се отблагодари: 8 пъти
Получена благодарност: 4 пъти
Обратна връзка:

Проблем - Host errorbad server message

Мнение от jumby1990 » 20 Дек 2019, 06:08

да попитам тези логове запазват ли се някъде за да мога да ги видя, понеже вчера като ме изхвърли отново в конзолата ми излезе само това което ти написах, нямаше нищо започващо с CRXLOG, проверих и в logs папката и там не намерих нищо благодаря.

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Поддръжка / Помощ”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 7 госта