View Single Post
Author Message
Alber9091
Veteran Member
Join Date: Jun 2014
Location: Karachi, Pakistan
Old 07-18-2019 , 02:10   Command To Work From Web Console Too, Not Only When You Are In Server.
Reply With Quote #1

Hello I have little request !!

Can someone help me with little part this code, below.

I want:

PHP Code:
register_clcmd("say /change""CMD_ModeChange"ADMIN_VOTE"<Смена режима Mode 2x2, Открыть/Закрыть карту>"); 
This to work from web console (ex: rcon) too, not only when you are in game/server (clcmd).
And when I execute this command in console, it prints message to, Admin %s (Admin Name Or Server Name) Changed Mode. (I don't what here will be used but I mean like: console_print).


PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <engine>
#include <reapi>

#define PLUGIN_VERSION "2.5re"

#if (AMXX_VERSION_NUM < 183) || defined NO_NATIVE_COLORCHAT
    #include <colorchat>
    #include <dhudmessage>
#else
    #define DontChange print_team_default
    #define client_disconnect client_disconnected
#endif

#pragma ctrlchar            '\'
#pragma semicolon            1

#define ID_KEY_WALL            54345678

                    //x    //y
#define MESSAGE_MAP_STATUS        -1.0,    0.8                // Позиция сообщении о Закрытии/Открытии карты.


                    //r    //green        //blue
#define COLOR_MAP_CLOSE            255,    0,        0        // Цвет сообщения, когда низкий онлайн и карта закрывается. Тип цвета RGB, http://www.colorschemer.com/online.html
#define COLOR_MAP_OPEN            0,    255,        0        // Цвет сообщения, когда онлайн выше требуемого и карта открывается. Тип цвета RGB, http://www.colorschemer.com/online.html

#define MODE_TIME_START            10.0    // Через сколько начать голосование, после нужного количества голосов.
#define MODE_COUNT_START        5    // Отчет до начала голосования
#define VOTE_TIMEWAIT            3    // Через сколько минут после голосования /mode, будет снова доступно.
#define VOTE_RATIO            0.5    // Погрешность для количество голосов, Пример: (Ratio: 0.5, требуется 0.5 * 32 = 16 голосов из 32 игроков)

#define STRONG_PUSH            15.0    // Сила толчка weaponbox (оружия, C4) от стенки
#define MAX_CLIENTS            32

#define PREFIX                "\1[\4Mode\1]"
#define CLASSNAME_WALL            "test_effect" // unused classname in the game
#define SPRITE_WALL            "sprites/mode/wall.spr"

#define Vector(%0,%1,%2)        (Float:{%0,%1,%2})
#define VectorCompare(%0,%1)        (%0[x] == %1[x] && %0[y] == %1[y] && %0[z] == %1[z])
#define VectorDT(%0,%1,%2,%3)        (!(%0[x] > %3[x] || %1[x] < %2[x]) && !(%0[y] > %3[y] || %1[y] < %2[y]) && !(%0[z] > %3[z] || %1[z] < %2[z]))

enum (+= 256222)
{
    
TASK_MODE_VOTE 256222,
    
TASK_MODE_START,
    
TASK_MODE_INIT,
    
TASK_MODE_NOTIFY,
    
TASK_MODE_AUTO_MAPCLOSE
};

enum _:coord_s
{
    
Float:x,
    
Float:y,
    
Float:z
};

enum status_s
{
    
map_open,
    
map_close,
};

enum _:blocked_s
{
    
block_none 0,
    
block_vote,
    
block_start_vote,
    
block_success_vote,
    
block_roundnew,
    
block_commencing,
    
block_admin_change,
    
block_permament
};

enum _:vote_s
{
    
vote_no,
    
vote_yes
};

enum _:server_info_s
{
    
status_s:m_iStatus,
    
status_s:m_iStatusLast,
    
blocked_s:m_iBlocked,
    
m_szFile[64],
    
m_iAll,
    
m_iMaxpl,
    
m_iCount,
    
m_LoadBox,
    
bool:m_bAdvanced,
    
bool:m_bInitialized,
    
m_iClosedIndex,
    
m_iOnline_High,
    
m_iOnline_Low,
    
m_szMap[32],
    
m_iVoting[vote_s],
    
m_iVote[MAX_CLIENTS 1],
    
Float:m_fNext,
    
Float:m_fWait[MAX_CLIENTS 1],
};

new 
g_pServerVar[server_info_s];

enum _:box_data_s
{
    
m_iBox,
    
m_iCopy,
    
m_iType,
    
m_iEntid,
    
m_iSetting,
    
m_iSolid,
    
m_iSprite,
    
m_iBeamSprite,

    
Float:m_fScale
};

new 
g_pBoxVar[box_data_s];

enum box_vector_s
{
    
m_fOrigin,
    
m_fAngles,
    
m_fMins,
    
m_fMaxs
};

new 
Float:g_pBoxVector[box_vector_s][coord_s];
new 
HamHook:g_pForwardThink;

// CVars
new pcvar_mode_admin_only,
    
pcvar_mode_allow_vote,
    
pcvar_mode_allow_change,
    
pcvar_mode_force_check_online,
    
pcvar_mode_block_startgame,
    
pcvar_mode_push_weaponbox,
    
pcvar_mode_message_on_touch,
    
pcvar_mode_touch_wait,
    
pcvar_mode_changemapname;

public 
plugin_precache()
{
    
precache_model(SPRITE_WALL);
    
g_pBoxVar[m_iBeamSprite] = precache_model("sprites/smoke.spr");
    
get_mapname(g_pServerVar[m_szMap], charsmax(g_pServerVar[m_szMap]));
}

public 
plugin_init()
{
    
register_plugin("Mode 2x2"PLUGIN_VERSION"s1lent");
    
register_cvar("mode2x2_version"PLUGIN_VERSIONFCVAR_SERVER FCVAR_SPONLY);

    
register_menucmd(register_menuid("Main Edit Menu"), 0x3FF"MainEdit_Handler");
    
register_menucmd(register_menuid("Settings Menu"), 0x23F"Settings_Handler");
    
register_menucmd(register_menuid("Properties Menu"), 0x3FF"Properties_Handler");

    
DisableHamForward((g_pForwardThink RegisterHam(Ham_ThinkCLASSNAME_WALL"CTestEffect__ThinkWall")));

    
pcvar_mode_admin_only register_cvar("mode_admin_only""0");                // Запрещает второму админу использовать команду "/change", если первый админ его уже использовал для открытия карты и если админ который активировал "/change" - активный и находится в команде.
    
pcvar_mode_allow_vote register_cvar("mode_allow_vote""1");                // Разрешить использовать команду "/mode"
    
pcvar_mode_allow_change register_cvar("mode_allow_change""1");            // Разрешить использовать команду "/change"
    
pcvar_mode_force_check_online register_cvar("mode_force_check_online""1");        // Заставлять проверять онлайн даже при /change, если нет действующих админов в игре, кроме админов в спектаторе, при mode_admin_only, проверяет только одного активного админа.
    
pcvar_mode_block_startgame register_cvar("mode_block_startgame""0");        // Никогда не ставить стенки при "GameCommencing" или "Restart"
    
pcvar_mode_push_weaponbox register_cvar("mode_push_weaponbox""1");            // Толкать weaponbox (оружия, C4) от стенки

    
pcvar_mode_message_on_touch register_cvar("mode_messagetouch""0");            // Сообщать игроку при касании стены о том, что проход закрыт.
    
pcvar_mode_touch_wait register_cvar("mode_messagetouch_time""5.5");            // Задержка для повторного сообщения при касании стенки игроком.
    
pcvar_mode_changemapname register_cvar("mode_changemapname""1");

    
Load_Config();

    
register_clcmd("say /mode""CMD_Mode"0"<Голосование за открытие/закрытие карты>");
    
register_clcmd("say /change""CMD_ModeChange"ADMIN_VOTE"<Смена режима Mode 2x2, Открыть/Закрыть карту>");

    
register_clcmd("say /box""CMD_MenuBox"ADMIN_RCON"<Управление объектами, Создание/Изменение/Удаление>");
    
register_dictionary("mode.txt");

    
// initialized vars
    
g_pServerVar[m_iMaxpl] = get_maxplayers();
    
g_pServerVar[m_fNext] = _:(get_gametime() + (VOTE_TIMEWAIT 60.0));
}

public 
Task_Initialized()
{
    
g_pServerVar[m_bInitialized] = true;
    
UTIL__ChangeNameOfMap(g_pServerVar[m_iStatus]);
}

public 
Task_AutoMapClose()
{
    new 
nActivePlayers UTIL__GetActivePlayers();
    if (
nActivePlayers <= 0)
    {
        
DrawBox(g_pServerVar[m_iStatus] = map_closefalse);
    }
}

// ready config file
stock Load_Config()
{
    new 
szCfgDir[128];
    
get_configsdir(szCfgDircharsmax(szCfgDir));
    
get_localinfo("amxx_configsdir"g_pServerVar[m_szFile], charsmax(g_pServerVar[m_szFile]));

    
add(g_pServerVar[m_szFile], charsmax(g_pServerVar[m_szFile]), "/mode/");
    
add(szCfgDircharsmax(szCfgDir), "/mode.cfg");
    
mkdir(g_pServerVar[m_szFile]);

    
server_cmd("exec %s"szCfgDir);
    
server_exec();

    
formatex(g_pServerVar[m_szFile], charsmax(g_pServerVar[m_szFile]), "%s%s.ini"g_pServerVar[m_szFile], g_pServerVar[m_szMap]);

    if (
file_exists(g_pServerVar[m_szFile]))
    {
        if (!(
g_pServerVar[m_LoadBox] = LoadBox()))
            return;

        
DrawBox(g_pServerVar[m_iStatus] = map_open);

        if (
get_pcvar_num(pcvar_mode_message_on_touch))
        {
            
RegisterHam(Ham_Touch"player""CBasePlayer__Touch");
        }

        if (
get_pcvar_num(pcvar_mode_push_weaponbox))
        {
            
RegisterHam(Ham_Touch"weaponbox""CWeaponBox__Touch");
        }

        
register_event("HLTV""EventRoundNew""a""1=0""2=0");
        
register_menucmd(register_menuid("Mode Menu"), MENU_KEY_1 MENU_KEY_2"Mode_Handler");
        
register_event("TextMsg""EventStartGame""a""2=#Game_Commencing""2=#Game_will_restart_in");

        
// when all the configs with 3-rd party plugins already loaded
        
if (get_pcvar_num(pcvar_mode_changemapname))
        {
            
set_task(3.0"Task_Initialized"TASK_MODE_INIT);
        }

        
// To check if the game is in idle state, no active players.
        // So close the map over time.
        
set_task(15.0"Task_AutoMapClose"TASK_MODE_AUTO_MAPCLOSE);
    }
}

public 
plugin_end()
{
    
// reset mapname
    
UTIL__ChangeNameOfMap(map_open);

    
remove_task(TASK_MODE_VOTE);
    
remove_task(TASK_MODE_START);
    
remove_task(TASK_MODE_INIT);
    
remove_task(TASK_MODE_NOTIFY);
    
remove_task(TASK_MODE_AUTO_MAPCLOSE);
}

public 
plugin_pause()
{
    
// hide wall
    
if (g_pServerVar[m_iStatus] == map_close)
        
DrawBox(g_pServerVar[m_iStatus] = map_openfalse);

    
// reset mapname
    
UTIL__ChangeNameOfMap(map_open);

    
remove_task(TASK_MODE_VOTE);
    
remove_task(TASK_MODE_START);
    
remove_task(TASK_MODE_INIT);
    
remove_task(TASK_MODE_NOTIFY);
    
remove_task(TASK_MODE_AUTO_MAPCLOSE);
}

public 
client_disconnect(id)
{
    if (!
g_pServerVar[m_LoadBox])
        return;

    if (
g_pServerVar[m_iClosedIndex] == id)
        
g_pServerVar[m_iClosedIndex] = 0;

    if (
g_pServerVar[m_iVote][id])
    {
        --
g_pServerVar[m_iAll];
        
g_pServerVar[m_iVote][id] = 0;
    }
}

public 
EventStartGame()
{
    if (!
get_pcvar_num(pcvar_mode_block_startgame))
        return;

    
g_pServerVar[m_iBlocked] = blocked_s:block_commencing;
    
DrawBox(g_pServerVar[m_iStatus] = map_openfalse);
}

public 
EventRoundNew()
{
    new 
bool:bCvarChange get_pcvar_num(pcvar_mode_allow_change) != 0;
    new 
bool:bCvarVote get_pcvar_num(pcvar_mode_allow_vote) != 0;
    new 
bool:bCvarStartGame get_pcvar_num(pcvar_mode_block_startgame) != 0;

    if (
bCvarChange && get_pcvar_num(pcvar_mode_force_check_online) != && g_pServerVar[m_iBlocked] > blocked_s:block_admin_change)
    {
        new 
bool:bBlocked false;

        new 
iPlayers[32], iNump;
        
get_players(iPlayersiNum"ch");

        for (new 
0iNum; ++a)
        {
            
iPlayers[a];

            if ((
get_user_flags(p) & ADMIN_VOTE) && (<= get_member(pm_iTeam) <= 2))
            {
                
// if exists admin initiator closed map, trying block is changed mode
                
if (get_pcvar_num(pcvar_mode_admin_only) != && g_pServerVar[m_iClosedIndex] != a)
                {
                    continue;
                }

                
bBlocked true;
                break;
            }
        }

        if (!
bBlocked && g_pServerVar[m_iOnline_Low] >= UTIL__GetActivePlayers())
        {
            
g_pServerVar[m_iBlocked] = blocked_s:block_none;
            
DrawBox(g_pServerVar[m_iStatus] = map_close);
        }
    }
    else if (!
bCvarChange && !bCvarVote && bCvarStartGame)
    {
        if (
g_pServerVar[m_iBlocked] == blocked_s:block_commencing)
            
g_pServerVar[m_iBlocked] = blocked_s:block_none;
    }
    
/*else if (bCvarChange || bCvarVote)*/
    
{
        switch (
g_pServerVar[m_iBlocked])
        {
            case 
block_success_vote:
            {
                
DrawBox(g_pServerVar[m_iStatus]);
                
g_pServerVar[m_iBlocked] = blocked_s:block_roundnew;
            }
            case 
block_commencing:
            {
                
g_pServerVar[m_iBlocked] = blocked_s:block_none;
            }
            case 
block_admin_change:
            {
                
DrawBox(g_pServerVar[m_iStatus]);
                
g_pServerVar[m_iBlocked] = blocked_s:block_permament;
            }
            case 
block_none:
            {
                new 
nActivePlayers UTIL__GetActivePlayers();

                
// check condition for open map
                
if (nActivePlayers >= g_pServerVar[m_iOnline_High])
                {
                    if (
g_pServerVar[m_iStatus] == map_close)
                        
DrawBox(g_pServerVar[m_iStatus] = map_open);
                }
                
// check condition for close map
                
else if (nActivePlayers <= g_pServerVar[m_iOnline_Low])
                {
                    if (
g_pServerVar[m_iStatus] == map_open)
                        
DrawBox(g_pServerVar[m_iStatus] = map_close);
                }
            }
        }
    }
}

public 
CTestEffect__ThinkWall(const this)
{
    if (
g_pBoxVar[m_iEntid] != this)
        return 
HAM_IGNORED;

    new 
Float:mins[coord_s], Float:maxs[coord_s], Float:pos[coord_s];

    
entity_get_vector(thisEV_VEC_originpos);
    
entity_get_vector(thisEV_VEC_minsmins);
    
entity_get_vector(thisEV_VEC_maxsmaxs);

    
mins[x] += pos[x];
    
mins[y] += pos[y];
    
mins[z] += pos[z];

    
maxs[x] += pos[x];
    
maxs[y] += pos[y];
    
maxs[z] += pos[z];

    new const 
color[] = { 2550}; // red
    
UTIL_DrawLine(maxs[0], maxs[1], maxs[2], mins[0], mins[1], mins[2], { 0255});    // green

    
UTIL_DrawLine(maxs[0], maxs[1], maxs[2], mins[0], maxs[1], maxs[2], color);
    
UTIL_DrawLine(maxs[0], maxs[1], maxs[2], maxs[0], mins[1], maxs[2], color);
    
UTIL_DrawLine(maxs[0], maxs[1], maxs[2], maxs[0], maxs[1], mins[2], color);

    
UTIL_DrawLine(mins[0], mins[1], mins[2], maxs[0], mins[1], mins[2], color);
    
UTIL_DrawLine(mins[0], mins[1], mins[2], mins[0], maxs[1], mins[2], color);
    
UTIL_DrawLine(mins[0], mins[1], mins[2], mins[0], mins[1], maxs[2], color);

    
UTIL_DrawLine(mins[0], maxs[1], maxs[2], mins[0], maxs[1], mins[2], color);
    
UTIL_DrawLine(mins[0], maxs[1], mins[2], maxs[0], maxs[1], mins[2], color);
    
UTIL_DrawLine(maxs[0], maxs[1], mins[2], maxs[0], mins[1], mins[2], color);
    
UTIL_DrawLine(maxs[0], mins[1], mins[2], maxs[0], mins[1], maxs[2], color);
    
UTIL_DrawLine(maxs[0], mins[1], maxs[2], mins[0], mins[1], maxs[2], color);
    
UTIL_DrawLine(mins[0], mins[1], maxs[2], mins[0], maxs[1], maxs[2], color);

    
entity_set_float(thisEV_FL_nextthinkget_gametime() + 0.155);
    return 
HAM_IGNORED;
}

stock UTIL_DrawLine(const Float:x1, const Float:y1, const Float:z1, const Float:x2, const Float:y2, const Float:z2, const color[3])
{
    new 
vecStart[3], vecEnd[3];

    
vecStart[0] = floatround(x1);
    
vecStart[1] = floatround(y1);
    
vecStart[2] = floatround(z1);

    
vecEnd[0] = floatround(x2);
    
vecEnd[1] = floatround(y2);
    
vecEnd[2] = floatround(z2);

    
UTIL_DrawBeamPoints(vecStartvecEnd2color);
    return 
0;
}

stock UTIL_DrawBeamPoints(const vecStart[3], const vecEnd[3], lifetime, const color[3])
{
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
    
write_byte(TE_BEAMPOINTS);
    
write_coord(vecStart[0]);
    
write_coord(vecStart[1]);
    
write_coord(vecStart[2]);
    
write_coord(vecEnd[0]);
    
write_coord(vecEnd[1]);
    
write_coord(vecEnd[2]);
    
write_short(g_pBoxVar[m_iBeamSprite]);
    
write_byte(0);
    
write_byte(0);
    
write_byte(lifetime);
    
write_byte(10);
    
write_byte(0);
    
write_byte(color[0]);    // red
    
write_byte(color[1]);    // green
    
write_byte(color[2]);    // blue
    
write_byte(255);
    
write_byte(0);
    
message_end();
}

public 
CWeaponBox__Touch(const this, const other)
{
    if (!
is_valid_ent(other) || entity_get_int(otherEV_INT_impulse) != ID_KEY_WALL)
        return 
HAM_IGNORED;

    new 
Float:flAngles[3], Float:flVelocity[3];

    
entity_get_vector(otherEV_VEC_anglesflAngles);
    
angle_vector(flAnglesANGLEVECTOR_FORWARDflVelocity);

    
flVelocity[x] = -flVelocity[x] * STRONG_PUSH;
    
flVelocity[y] = -flVelocity[y] * STRONG_PUSH;
    
flVelocity[z] = -flVelocity[z] * STRONG_PUSH;

    
entity_set_vector(thisEV_VEC_velocityflVelocity);
    return 
HAM_IGNORED;
}

public 
CBasePlayer__Touch(const this, const other)
{
    if (!
is_valid_ent(other) || entity_get_int(otherEV_INT_impulse) != ID_KEY_WALL)
    {
        return 
HAM_IGNORED;
    }

    new 
Float:flCurrentTime get_gametime();

    if (
flCurrentTime g_pServerVar[m_fWait][this])
    {
        
g_pServerVar[m_fWait][this] = _:(flCurrentTime get_pcvar_float(pcvar_mode_touch_wait));
        
client_print_color(thisDontChange"%L %L"this"MODE_PREFIX"this"MODE_MESSAGE_TOUCH");
        return 
HAM_IGNORED;
    }

    return 
HAM_IGNORED;
}

public 
CMD_ModeChange(idlevelcid)
{
    if (!
get_pcvar_num(pcvar_mode_allow_change))
        return 
PLUGIN_CONTINUE;

    if (!
cmd_access(idlevelcid2))
        return 
PLUGIN_CONTINUE;

    if (!
g_pServerVar[m_LoadBox])
    {
        
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_NOT_USED");
        return 
PLUGIN_HANDLED;
    }

    new 
szName[32];
    
get_user_name(idszNamecharsmax(szName));

    if (
g_pServerVar[m_iClosedIndex] != id && is_user_connected(g_pServerVar[m_iClosedIndex]))
    {
        
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_ADMIN_BUSY_CHANGE"szName);
        return 
PLUGIN_HANDLED;
    }

    switch (
g_pServerVar[m_iBlocked])
    {
    case 
block_vote:
    {
        
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_VOTE");
        return 
PLUGIN_HANDLED;
    }
    case 
block_start_vote:
    {
        
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_START_VOTE");
        return 
PLUGIN_HANDLED;
    }
    case 
block_success_vote:
    {
        
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_WAIT_NEW_ROUND");
        return 
PLUGIN_HANDLED;
    }
    case 
block_admin_change:
    {
        
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_ADMIN_CHANGED"id, (g_pServerVar[m_iStatus] == map_close) ? "MODE_ADMIN_CLOSED" "MODE_ADMIN_OPENED");
        return 
PLUGIN_HANDLED;
    }
    }

    
g_pServerVar[m_iBlocked] = blocked_s:block_admin_change;
    
g_pServerVar[m_fNext] = _:(get_gametime() + (VOTE_TIMEWAIT 60.0));
    
g_pServerVar[m_iStatus] ^= map_close;

    if (
get_pcvar_num(pcvar_mode_admin_only) != 0)
    {
        
g_pServerVar[m_iClosedIndex] = (g_pServerVar[m_iStatus] == map_open) ? id 0;
    }

    new 
iPlayers[32], iNump;
    
get_players(iPlayersiNum"ch");

    for (new 
0iNum; ++a)
    {
        
iPlayers[a];

        if (
get_user_flags(p) & ADMIN_VOTE)
        {
            
client_print_color(pDontChange id"%L %L"p"MODE_PREFIX"p"MODE_ADMIN_CHANGED_ADMINS"szNamep, (g_pServerVar[m_iStatus] == map_close) ? "MODE_ADMIN_CLOSED" "MODE_ADMIN_OPENED");
        }
    }

    return 
PLUGIN_HANDLED;
}

public 
CMD_Mode(id)
{
    if (!
get_pcvar_num(pcvar_mode_allow_vote))
        return 
PLUGIN_CONTINUE;

    if (!
g_pServerVar[m_LoadBox])
    {
        
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_NOT_USED");
        return 
PLUGIN_HANDLED;
    }

    switch (
g_pServerVar[m_iBlocked])
    {
    case 
block_vote:
    {
        
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_VOTE");
        return 
PLUGIN_HANDLED;
    }
    case 
block_start_vote:
    {
        
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_START_VOTE");
        return 
PLUGIN_HANDLED;
    }
    case 
block_admin_change:
    {
        
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_ADMIN_CHANGED"id, (g_pServerVar[m_iStatus] == map_close) ? "MODE_ADMIN_CLOSED" "MODE_ADMIN_OPENED");
        return 
PLUGIN_HANDLED;
    }
    }

    new 
Float:flCurrent get_gametime();
    if (
g_pServerVar[m_fNext] > flCurrent)
    {
        new 
szBuffer[64];
        
getChangeleft(idfloatround(g_pServerVar[m_fNext] - flCurrent), szBuffercharsmax(szBuffer));
        
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_VOTE_LEFT"szBuffer);
        return 
PLUGIN_HANDLED;
    }
    else
    {
        new 
iNumRatio floatround(VOTE_RATIO UTIL__GetActivePlayers());
        if (
g_pServerVar[m_iVote][id])
            
client_print_color(idDontChange"%L %L"id"MODE_PREFIX"id"MODE_VOTE_ALREADY"g_pServerVar[m_iAll], iNumRatio);

        else
        {
            ++
g_pServerVar[m_iAll];
            
g_pServerVar[m_iVote][id] = 1;

            new 
iPlayers[32], szName[32], iNum;

            
get_players(iPlayersiNum"ch");
            
get_user_name(idszNamecharsmax(szName));

            for (new 
0iNum; ++a)
            {
                
client_print_color(iPlayers[a], DontChange id"%L %L"id"MODE_PREFIX"id"MODE_VOTED"szNameid, (g_pServerVar[m_iStatus] == map_close) ? "MODE_VOTE_OPENED" "MODE_VOTE_CLOSED"g_pServerVar[m_iAll], iNumRatio);
            }

            if (
iNumRatio <= g_pServerVar[m_iAll])
            {
                
g_pServerVar[m_iCount] = MODE_COUNT_START;
                
g_pServerVar[m_iBlocked] = blocked_s:block_vote;

                
set_task(MODE_TIME_START"Task_ModeVote"TASK_MODE_START);
                
client_print_color(0DontChange"%L %L"LANG_PLAYER"MODE_PREFIX"LANG_PLAYER"MODE_MESSAGE_VOTE_START"10);
            }
        }
    }

    return 
1;
}

public 
Task_ModeVote()
{
    new 
szBuffer[128];

    if (
g_pServerVar[m_iCount]--)
    {
        new 
szSpeak[24];
        
num_to_word(g_pServerVar[m_iCount] + 1szSpeakcharsmax(szSpeak));
        
client_cmd(0"spk \"fvox/%s\""szSpeak);

        
formatex(szBuffercharsmax(szBuffer), "%L"LANG_PLAYER"MODE_VOTE_PRESTART_MENU"LANG_PLAYER, (g_pServerVar[m_iStatus] == map_close) ? "MODE_TITLE_OPENED" "MODE_TITLE_CLOSED"g_pServerVar[m_iCount] + 1);
        
show_menu(00x3FFszBuffer2"Mode Menu");
        
set_task(1.0"Task_ModeVote"TASK_MODE_START);
    }
    else
    {
        
g_pServerVar[m_iBlocked] = blocked_s:block_start_vote;
        
formatex(szBuffercharsmax(szBuffer), "%L"LANG_PLAYER"MODE_VOTE_POSTSTART_MENU"LANG_PLAYER, (g_pServerVar[m_iStatus] == map_close) ? "MODE_TITLE_OPENED" "MODE_TITLE_CLOSED");
        
show_menu(0MENU_KEY_1 MENU_KEY_2szBuffer18"Mode Menu");
        
set_task(20.0"Task_ResultVote"TASK_MODE_VOTE);
    }
}

public 
Mode_Handler(idkey)
{
    if (!
get_pcvar_num(pcvar_mode_allow_vote))
        return 
PLUGIN_CONTINUE;

    if (
g_pServerVar[m_iBlocked] == blocked_s:block_vote)
    {
        
client_cmd(id"slot%d"key 1);
        return 
PLUGIN_HANDLED;
    }

    new 
szName[32];
    
get_user_name(idszNamecharsmax(szName));

    
client_print_color(0DontChange id"%L"id"MODE_VOTE_FORMAT"szNameidkey "MODE_VOTE_NO" "MODE_VOTE_YES");
    ++
g_pServerVar[m_iVoting][key];

    return 
PLUGIN_HANDLED;
}

public 
Task_ResultVote()
{
    
g_pServerVar[m_iAll] = 0;
    
g_pServerVar[m_fNext] = _:(get_gametime() + (VOTE_TIMEWAIT 60.0));

    
arrayset(g_pServerVar[m_iVote], 0g_pServerVar[m_iMaxpl]);

    if (
g_pServerVar[m_iVoting][vote_no] > g_pServerVar[m_iVoting][vote_yes])
    {
        
g_pServerVar[m_iBlocked] = blocked_s:block_success_vote;
        
g_pServerVar[m_iStatus] ^= map_close;

        
client_print_color(0DontChange"%L %L"LANG_PLAYER"MODE_PREFIX"LANG_PLAYER"MODE_VOTE_RESULT",
            
g_pServerVar[m_iVoting][vote_no],
            
g_pServerVar[m_iVoting][vote_yes],
            
g_pServerVar[m_iVoting][vote_no] + g_pServerVar[m_iVoting][vote_yes]);

        
client_print_color(0,DontChange"%L %L",
            
LANG_PLAYER"MODE_PREFIX",
            
LANG_PLAYER"MODE_VOTE_SUCCESS",
            
LANG_PLAYER, (g_pServerVar[m_iStatus] == map_close) ? "MODE_RESULT_CLOSED" "MODE_RESULT_OPENED");
    }
    else if (
g_pServerVar[m_iVoting][vote_no] < g_pServerVar[m_iVoting][vote_yes])
    {
        
g_pServerVar[m_iBlocked] = blocked_s:block_none;

        
client_print_color(0DontChange"%L %L"LANG_PLAYER"MODE_PREFIX"LANG_PLAYER"MODE_VOTE_RESULT",
            
g_pServerVar[m_iVoting][vote_no],
            
g_pServerVar[m_iVoting][vote_yes],
            
g_pServerVar[m_iVoting][vote_no] + g_pServerVar[m_iVoting][vote_yes]);

        
client_print_color(0DontChange"%L %L"LANG_PLAYER"MODE_PREFIX"LANG_PLAYER"MODE_VOTE_FAILED");
    }
    else
    {
        
g_pServerVar[m_iBlocked] = blocked_s:block_none;
        
client_print_color(0DontChange"%L %L"LANG_PLAYER"MODE_PREFIX"LANG_PLAYER"MODE_VOTE_FAILED");
    }
}

public 
CMD_MenuBox(idlevelcid)
{
    if (!
cmd_access(idlevelcid2))
        return 
PLUGIN_CONTINUE;

    if (
g_pForwardThink)
        
EnableHamForward(g_pForwardThink);

    return 
Menu_MainEdit(id);
}

stock Menu_MainEdit(id)
{
    new 
szBuffer[512];
    
formatex(szBuffercharsmax(szBuffer),
        
"%L"id"MODE_DEV_MENU_MAIN",
        
g_pBoxVar[m_iBox],
        
g_pBoxVar[m_iEntid] > "\\d" "\\w",
        
g_pBoxVar[m_iBox] == "\\d" "\\w",
        
g_pBoxVar[m_iBox] == "\\d" "\\w",
        
id, (g_pBoxVar[m_iEntid] == 0) ? "MODE_DEV_CHANGE" "MODE_DEV_SAVE",
        (
g_pBoxVar[m_iEntid] == 0) ? "\\d" "\\w",
        (
g_pBoxVar[m_iBox] == || g_pBoxVar[m_iEntid] > 0) ? "\\d" "\\w",
        (
g_pBoxVar[m_iCopy] == 0) ? "\\d" "\\w",
        (
g_pBoxVar[m_iBox] == || g_pBoxVar[m_iEntid] > 0) ? "\\d" "\\w"
    
);

    return 
show_menu(id0x3FFszBuffer, -1"Main Edit Menu");
}

public 
MainEdit_Handler(idkey)
{
    switch (
key)
    {
        case 
0:
        {
            if (
g_pBoxVar[m_iEntid] > 0)
            {
                
client_print(idprint_center"%L"id"MODE_DEV_FAILED_5");
                return 
Menu_MainEdit(id);
            }

            new 
Float:p_origin[coord_s], pEnt CreateBox();
            
entity_get_vector(idEV_VEC_originp_origin);

            ++
g_pBoxVar[m_iBox];
            
g_pBoxVar[m_iEntid] = pEnt;
            
p_origin[z] += 32.0;

            
EnableHamForward(g_pForwardThink);
            
entity_set_vector(pEntEV_VEC_originp_origin);
            
entity_set_vector(pEntEV_VEC_rendercolorVector(255.0100.0100.0));
        }
        case 
1:
        {
            new 
pEntdummy;
            
get_user_aiming(idpEntdummy);

            if (
is_valid_ent(pEnt))
            {
                new 
szClassname[32];
                
entity_get_string(pEntEV_SZ_classnameszClassnamecharsmax(szClassname));
                if (!
strcmp(szClassnameCLASSNAME_WALL))
                {
                    if (--
g_pBoxVar[m_iBox] < 0)
                        
g_pBoxVar[m_iBox] = 0;

                    if (
g_pBoxVar[m_iEntid] == pEnt)
                        
g_pBoxVar[m_iEntid] = 0;

                    
remove_entity(pEnt);
                    
client_print(idprint_center"%L"id"MODE_DEV_SUCCESS_1""SOLID_BBOX");
                }
                else 
client_print(idprint_center"%L"id"MODE_DEV_FAILED_1");
            }
            else if (
is_valid_ent(g_pBoxVar[m_iEntid]))
            {
                
pEnt g_pBoxVar[m_iEntid];
                new 
Float:v_absmins[coord_s], Float:v_absmaxs[coord_s], Float:e_absmin[coord_s], Float:e_absmax[coord_s];

                
entity_get_vector(idEV_VEC_absminv_absmins);
                
entity_get_vector(idEV_VEC_absmaxv_absmaxs);

                
v_absmins[x] += 1.0;
                
v_absmins[y] += 1.0;
                
v_absmins[z] += 3.0;

                
v_absmaxs[x] -= 1.0;
                
v_absmaxs[y] -= 1.0;
                
v_absmaxs[z] -= 17.0;

                
entity_get_vector(pEntEV_VEC_absmine_absmin);
                
entity_get_vector(pEntEV_VEC_absmaxe_absmax);

                if (
VectorDT(e_absmine_absmaxv_absminsv_absmaxs))
                {
                    --
g_pBoxVar[m_iBox];
                    
g_pBoxVar[m_iEntid] = 0;
                    
client_print(idprint_center"%L"id"MODE_DEV_SUCCESS_1", (entity_get_int(pEntEV_INT_solid) == SOLID_NOT) ? "SOLID_NOT" "SOLID_BBOX");
                    
remove_entity(pEnt);
                }
            }
            else 
client_print(idprint_center"%L"id"MODE_DEV_FAILED_1");

            if (!
g_pBoxVar[m_iEntid])
            {
                
DisableHamForward(g_pForwardThink);
            }
        }
        case 
2:
        {
            if (
is_valid_ent(g_pBoxVar[m_iEntid]))
            {
                
entity_set_int(g_pBoxVar[m_iEntid], EV_INT_solidSOLID_BBOX);
                
entity_set_vector(g_pBoxVar[m_iEntid], EV_VEC_rendercolorVector(0.00.00.0));
                
entity_set_size(g_pBoxVar[m_iEntid], g_pBoxVector[m_fMins], g_pBoxVector[m_fMaxs]);
                
entity_set_float(g_pBoxVar[m_iEntid], EV_FL_nextthink0.0);

                
g_pBoxVar[m_iEntid] = 0;
                
g_pBoxVar[m_fScale] = _:0.250;

                
g_pBoxVector[m_fMaxs][x] = 32.0;
                
g_pBoxVector[m_fMaxs][y] = 32.0;
                
g_pBoxVector[m_fMaxs][z] = 32.0;

                
g_pBoxVector[m_fMins][x] = -32.0;
                
g_pBoxVector[m_fMins][y] = -32.0;
                
g_pBoxVector[m_fMins][z] = -32.0;

                
g_pBoxVector[m_fOrigin][x] = 0.0;
                
g_pBoxVector[m_fOrigin][y] = 0.0;
                
g_pBoxVector[m_fOrigin][z] = 0.0;

                
g_pBoxVector[m_fAngles][x] = 0.0;
                
g_pBoxVector[m_fAngles][y] = 0.0;
                
g_pBoxVector[m_fAngles][z] = 0.0;

                
DisableHamForward(g_pForwardThink);
                
client_print(idprint_center"%L"id"MODE_DEV_SUCCESS_4");
            }
            else
            {
                new 
pEnt,body;
                
get_user_aiming(idpEntbody);

                if (
is_valid_ent(pEnt))
                {
                    new 
szClassname[32];
                    
entity_get_string(pEntEV_SZ_classnameszClassnamecharsmax(szClassname));
                    if (!
strcmp(szClassnameCLASSNAME_WALL))
                    {
                        
g_pBoxVar[m_iEntid] = pEnt;

                        
entity_get_vector(pEntEV_VEC_minsg_pBoxVector[m_fMins]);
                        
entity_get_vector(pEntEV_VEC_maxsg_pBoxVector[m_fMaxs]);

                        
entity_get_vector(pEntEV_VEC_origing_pBoxVector[m_fOrigin]);
                        
entity_get_vector(pEntEV_VEC_anglesg_pBoxVector[m_fAngles]);

                        
g_pBoxVar[m_fScale] = _:(entity_get_float(pEntEV_FL_scale));

                        
EnableHamForward(g_pForwardThink);
                        
entity_set_int(pEntEV_INT_solidSOLID_NOT);
                        
entity_set_float(pEntEV_FL_nextthinkget_gametime() + 0.1);
                        
entity_set_vector(pEntEV_VEC_rendercolorVector(255.0100.0100.0));
                        
entity_set_size(pEntg_pBoxVector[m_fMins], g_pBoxVector[m_fMaxs]);
                        
client_print(idprint_center"%L"id"MODE_DEV_SUCCESS_5");
                    }
                    else 
client_print(idprint_center"%L"id"MODE_DEV_FAILED_1");
                }
                else 
client_print(idprint_center"%L"id"MODE_DEV_FAILED_1");
            }
        }
        case 
3:
        {
            if (!
g_pBoxVar[m_iEntid])
            {
                
client_print(idprint_center"%L"id"MODE_DEV_FAILED_4");
                return 
Menu_MainEdit(id);
            }

            return 
showPropertiesMenu(id);
        }
        case 
4:
        {
            return 
Menu_Settings(id);
        }
        case 
5:
        {
            if (
g_pBoxVar[m_iEntid] > 0)
            {
                
client_print(idprint_center"%L"id"MODE_DEV_FAILED_5");
                return 
Menu_MainEdit(id);
            }

            new 
pEntdummy;
            
get_user_aiming(idpEntdummy);

            if (
is_valid_ent(pEnt))
            {
                new 
szClassname[32];
                
entity_get_string(pEntEV_SZ_classnameszClassnamecharsmax(szClassname));
                if (!
strcmp(szClassnameCLASSNAME_WALL))
                {
                    if (
g_pBoxVar[m_iCopy] == pEnt)
                    {
                        
client_print(idprint_center"%L"id"MODE_DEV_FAILED_2");
                        return 
Menu_MainEdit(id);
                    }

                    
g_pBoxVar[m_iCopy] = pEnt;
                    
client_print(idprint_center"%L"id"MODE_DEV_SUCCESS_2");
                }
                else 
client_print(idprint_center"%L"id"MODE_DEV_FAILED_1");
            }
            else 
client_print(idprint_center"%L"id"MODE_DEV_FAILED_1");
        }
        case 
6:
        {
            if (
g_pBoxVar[m_iEntid] > 0)
            {
                
client_print(idprint_center"%L"id"MODE_DEV_FAILED_5");
                return 
Menu_MainEdit(id);
            }

            if (!
is_valid_ent(g_pBoxVar[m_iCopy]))
            {
                
client_print(idprint_center"%L"id"MODE_DEV_FAILED_3");
                return 
Menu_MainEdit(id);
            }

            new 
Float:p_origin[coord_s], pEnt CreateBox();
            
entity_get_vector(idEV_VEC_originp_origin);

            ++
g_pBoxVar[m_iBox];
            
g_pBoxVar[m_iEntid] = pEnt;
            
p_origin[z] += 32.0;

            
entity_get_vector(g_pBoxVar[m_iCopy], EV_VEC_minsg_pBoxVector[m_fMins]);
            
entity_get_vector(g_pBoxVar[m_iCopy], EV_VEC_maxsg_pBoxVector[m_fMaxs]);
            
entity_get_vector(g_pBoxVar[m_iCopy], EV_VEC_anglesg_pBoxVector[m_fAngles]);

            
g_pBoxVar[m_fScale] = _:(entity_get_float(g_pBoxVar[m_iCopy], EV_FL_scale));
            
g_pBoxVar[m_iSprite] = floatround(entity_get_float(g_pBoxVar[m_iCopy], EV_FL_frame));

            
entity_set_vector(pEntEV_VEC_originp_origin);
            
entity_set_vector(pEntEV_VEC_rendercolorVector(255.0100.0100.0));

            
entity_set_vector(pEntEV_VEC_minsg_pBoxVector[m_fMins]);
            
entity_set_vector(pEntEV_VEC_maxsg_pBoxVector[m_fMaxs]);
            
entity_set_vector(pEntEV_VEC_anglesg_pBoxVector[m_fAngles]);

            new 
iFlags entity_get_int(g_pBoxVar[m_iCopy], EV_INT_effects);

            
entity_set_int(pEntEV_INT_effectsiFlags);
            
entity_set_float(pEntEV_FL_scaleg_pBoxVar[m_fScale]);
            
entity_set_float(pEntEV_FL_framefloat(g_pBoxVar[m_iSprite]));
        }
        case 
8:
        {
            if (!
g_pBoxVar[m_iBox])
                
client_print(idprint_center"%L"id"MODE_DEV_FAILED_4");

            else if (
g_pBoxVar[m_iEntid])
                
client_print(idprint_center"%L"id"MODE_DEV_FAILED_5");

            else 
boxSave(id);
        }
        case 
9:
        {
            return 
PLUGIN_HANDLED;
        }
    }

    return 
Menu_MainEdit(id);
}

stock showPropertiesMenu(id)
{
    new 
szBuffer[512];
    new 
iLen formatex(szBuffercharsmax(szBuffer), "%L"id"MODE_DEV_MENU_TITLE");

    switch (
g_pBoxVar[m_iSetting])
    {
        case 
0:
        {
            new 
Float:iSize = (g_pBoxVar[m_iType] == 0) ? 10.0 : (g_pBoxVar[m_iType] == 1) ? 5.0 : (g_pBoxVar[m_iType] == 2) ? 1.0 0.1;
            
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen"%L"id,"MODE_DEV_MENU_COORD",
                
g_pBoxVector[m_fOrigin][x],
                
g_pBoxVector[m_fOrigin][y],
                
g_pBoxVector[m_fOrigin][z], iSize);
        }
        case 
1:
        {
            new 
Float:iSize = (g_pBoxVar[m_iType] == 0) ? 45.0 : (g_pBoxVar[m_iType] == 1) ? 15.0 : (g_pBoxVar[m_iType] == 2) ? 1.0 0.5;
            
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen"%L"id,"MODE_DEV_MENU_ANGLES",
                
g_pBoxVector[m_fAngles][x],
                
g_pBoxVector[m_fAngles][y],
                
g_pBoxVector[m_fAngles][z], iSize);
        }
        case 
2,3:
        {
            new 
Float:iSize = (g_pBoxVar[m_iType] == 0) ? 10.0 : (g_pBoxVar[m_iType] == 1) ? 5.0 : (g_pBoxVar[m_iType] == 2) ? 1.0 0.5;
            
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen"%L"id,"MODE_DEV_MENU_SIZE",
                
g_pBoxVector[m_fMins][x],
                
g_pBoxVector[m_fMins][y],
                
g_pBoxVector[m_fMins][z],
                
g_pBoxVector[m_fMaxs][x],
                
g_pBoxVector[m_fMaxs][y],
                
g_pBoxVector[m_fMaxs][z], iSize);
        }
        case 
4:
        {
            new 
Float:iSize = ((g_pBoxVar[m_iType] == 0) ? 0.5 : (g_pBoxVar[m_iType] == 1) ? 0.1 : (g_pBoxVar[m_iType] == 2) ? 0.0101 0.0051);
            switch (
g_pBoxVar[m_iType])
            {
                case 
0,1:
                    
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen"%L"id,"MODE_DEV_MENU_SCALE_1",
                    
g_pBoxVar[m_fScale], iSizeiSizeiSize);
                case 
2:
                    
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen"%L"id,"MODE_DEV_MENU_SCALE_2",
                    
g_pBoxVar[m_fScale], iSizeiSizeiSize);

                case 
3:
                    
iLen += formatex(szBuffer[iLen], charsmax(szBuffer) - iLen"%L"id,"MODE_DEV_MENU_SCALE_3",
                    
g_pBoxVar[m_fScale], iSizeiSizeiSize);
            }
        }
    }

    
formatex(szBuffer[iLen], charsmax(szBuffer) - iLen"%L"id"MODE_DEV_MENU_ADDON"id,
    (
g_pBoxVar[m_iSetting] == 0) ?
        
"MODE_DEV_COORD"
            
:
        (
g_pBoxVar[m_iSetting] == 1) ?
            
"MODE_DEV_ANGLES"
                
:
            (
g_pBoxVar[m_iSetting] == && g_pServerVar[m_bAdvanced]) ?
                
"MODE_DEV_MINS"
                    
:
                (
g_pBoxVar[m_iSetting] == && g_pServerVar[m_bAdvanced]) ?
                    
"MODE_DEV_MAXS"
                        
:
                    (
g_pBoxVar[m_iSetting] == 3) ?
                        
"MODE_DEV_SIZE"
                            
:
                        
"MODE_DEV_SPRITE",
    
id,(g_pBoxVar[m_iSprite] == 0) ?
        
"MODE_DEV_TITLE"
            
:
        (
g_pBoxVar[m_iSprite] == 1) ?
            
"MODE_DEV_WALL"
                
:
            
"MODE_DEV_NULL"
    
);

    return 
show_menu(id, (g_pBoxVar[m_iSetting] < 4) ? 0x3FF 0x3C3szBuffer, -1"Properties Menu");
}

public 
Properties_Handler(idkey)
{
    if (
key == 9)
    {
        return 
Menu_MainEdit(id);
    }

    
entity_get_vector(g_pBoxVar[m_iEntid], EV_VEC_origing_pBoxVector[m_fOrigin]);
    
entity_get_vector(g_pBoxVar[m_iEntid], EV_VEC_anglesg_pBoxVector[m_fAngles]);
    
entity_get_vector(g_pBoxVar[m_iEntid], EV_VEC_maxsg_pBoxVector[m_fMaxs]);
    
g_pBoxVar[m_fScale] = _:(entity_get_float(g_pBoxVar[m_iEntid], EV_FL_scale));

    switch (
g_pBoxVar[m_iSetting])
    {
        case 
0:
        {
            new 
Float:iSize = (g_pBoxVar[m_iType] == 0) ? 10.0 : (g_pBoxVar[m_iType] == 1) ? 5.0 : (g_pBoxVar[m_iType] == 2) ? 1.0 0.1;

            switch (
key)
            {
                case 
0:    g_pBoxVector[m_fOrigin][x] += iSize;
                case 
1:    g_pBoxVector[m_fOrigin][y] += iSize;
                case 
2:    g_pBoxVector[m_fOrigin][z] += iSize;
                case 
3:    g_pBoxVector[m_fOrigin][x] -= iSize;
                case 
4:    g_pBoxVector[m_fOrigin][y] -= iSize;
                case 
5:    g_pBoxVector[m_fOrigin][z] -= iSize;
                case 
6:
                {
                    if (++
g_pBoxVar[m_iType] > 3)
                        
g_pBoxVar[m_iType] = 0;
                }
                case 
7:
                {
                    if (++
g_pBoxVar[m_iSetting] > 4)
                        
g_pBoxVar[m_iSetting] = 0;

                    
g_pBoxVar[m_iSetting] = (g_pBoxVar[m_iSprite] > && g_pBoxVar[m_iSetting] == 1) ? + ((g_pServerVar[m_bAdvanced] == false) ? 0) : g_pBoxVar[m_iSetting];
                }
            }
        }
        case 
1:
        {
            new 
Float:iSize = (g_pBoxVar[m_iType] == 0) ? 45.0 : (g_pBoxVar[m_iType] == 1) ? 15.0 : (g_pBoxVar[m_iType] == 2) ? 1.0 0.5;

            switch (
key)
            {
                case 
0g_pBoxVector[m_fAngles][x] += iSize;
                case 
1g_pBoxVector[m_fAngles][y] += iSize;
                case 
2g_pBoxVector[m_fAngles][z] += iSize;
                case 
3g_pBoxVector[m_fAngles][x] -= iSize;
                case 
4g_pBoxVector[m_fAngles][y] -= iSize;
                case 
5g_pBoxVector[m_fAngles][z] -= iSize;
                case 
6:
                {
                    if (++
g_pBoxVar[m_iType] > 3)
                        
g_pBoxVar[m_iType] = 0;
                }
                case 
7:
                {
                    if (++
g_pBoxVar[m_iSetting] > 4)
                        
g_pBoxVar[m_iSetting] = 0;

                    
g_pBoxVar[m_iSetting] = (g_pBoxVar[m_iSetting] == && g_pServerVar[m_bAdvanced] == false) ? g_pBoxVar[m_iSetting];
                }
            }
        }
        case 
2:
        {
            new 
Float:iSize = (g_pBoxVar[m_iType] == 0) ? 10.0 : (g_pBoxVar[m_iType] == 1) ? 5.0 : (g_pBoxVar[m_iType] == 2) ? 1.0 0.5;

            switch (
key)
            {
                case 
0g_pBoxVector[m_fMins][x] -= iSize;
                case 
1g_pBoxVector[m_fMins][y] -= iSize;
                case 
2g_pBoxVector[m_fMins][z] -= iSize;
                case 
3g_pBoxVector[m_fMins][x] += iSize;
                case 
4g_pBoxVector[m_fMins][y] += iSize;
                case 
5g_pBoxVector[m_fMins][z] += iSize;
                case 
6:
                {
                    if (++
g_pBoxVar[m_iType] > 3)
                        
g_pBoxVar[m_iType] = 0;
                }
                case 
7:
                {
                    if (++
g_pBoxVar[m_iSetting] > 4)
                        
g_pBoxVar[m_iSetting] = 0;
                }
            }
        }
        case 
3:
        {
            new 
Float:iSize = (g_pBoxVar[m_iType] == 0) ? 10.0 : (g_pBoxVar[m_iType] == 1) ? 5.0 : (g_pBoxVar[m_iType] == 2) ? 1.0 0.5;

            switch (
key)
            {
                case 
0g_pBoxVector[m_fMaxs][x] += iSize;
                case 
1g_pBoxVector[m_fMaxs][y] += iSize;
                case 
2g_pBoxVector[m_fMaxs][z] += iSize;
                case 
3g_pBoxVector[m_fMaxs][x] -= iSize;
                case 
4g_pBoxVector[m_fMaxs][y] -= iSize;
                case 
5g_pBoxVector[m_fMaxs][z] -= iSize;
                case 
6:
                {
                    if (++
g_pBoxVar[m_iType] > 3)
                        
g_pBoxVar[m_iType] = 0;
                }
                case 
7:
                {
                    if (++
g_pBoxVar[m_iSetting] > 4)
                        
g_pBoxVar[m_iSetting] = 0;

                    
g_pBoxVar[m_iSetting] = (g_pBoxVar[m_iSprite] > && g_pBoxVar[m_iSetting] == 4) ? g_pBoxVar[m_iSetting];
                }
            }
        }
        case 
4:
        {
            new 
Float:iSize = (g_pBoxVar[m_iType] == 0) ? 0.5 : (g_pBoxVar[m_iType] == 1) ? 0.1 : (g_pBoxVar[m_iType] == 2) ? 0.0101 0.0051;

            if (
iSize g_pBoxVar[m_fScale])
            {
                if (++
g_pBoxVar[m_iType] > 3)
                    
g_pBoxVar[m_iType] = 0;

                
iSize = (g_pBoxVar[m_iType] == 0) ? 0.5 : (g_pBoxVar[m_iType] == 1) ? 0.1 : (g_pBoxVar[m_iType] == 2) ? 0.0101 0.0051;
            }
            switch (
key)
            {
                case 
0:    g_pBoxVar[m_fScale] += iSize;
                case 
1g_pBoxVar[m_fScale] -= iSize;
                case 
6:
                {
                    if (++
g_pBoxVar[m_iType] > 3)
                        
g_pBoxVar[m_iType] = 0;
                }
                case 
7:
                {
                    if (++
g_pBoxVar[m_iSetting] > 4)
                        
g_pBoxVar[m_iSetting] = 0;
                }
            }
        }
    }
    switch (
key)
    {
        case 
8:
        {
            if (
is_valid_ent(g_pBoxVar[m_iEntid]))
            {
                if (++
g_pBoxVar[m_iSprite] > 2)
                    
g_pBoxVar[m_iSprite] = 0;

                new 
iFlags entity_get_int(g_pBoxVar[m_iEntid], EV_INT_effects);

                if (
g_pBoxVar[m_iSprite] > 1)
                    
entity_set_int(g_pBoxVar[m_iEntid], EV_INT_effectsiFlags EF_NODRAW);

                else if (
iFlags EF_NODRAW)
                    
entity_set_int(g_pBoxVar[m_iEntid], EV_INT_effectsiFlags &~ EF_NODRAW);

                
entity_set_float(g_pBoxVar[m_iEntid], EV_FL_framefloat(g_pBoxVar[m_iSprite]));
            }
        }
    }
    if (
g_pBoxVar[m_fScale] < 0.0051)
        
g_pBoxVar[m_fScale] = _:0.0051;

    if (
g_pServerVar[m_bAdvanced])
    {
        if (
g_pBoxVector[m_fMins][x] > 0.0)
            
g_pBoxVector[m_fMins][x] = 0.0;

        else if (
g_pBoxVector[m_fMins][y] > 0.0)
            
g_pBoxVector[m_fMins][y] = 0.0;

        else if (
g_pBoxVector[m_fMins][z] > 0.0)
            
g_pBoxVector[m_fMins][z] = 0.0;

        if (
g_pBoxVector[m_fMaxs][x] < 0.0)
            
g_pBoxVector[m_fMaxs][x] = 0.0;

        else if (
g_pBoxVector[m_fMaxs][y] < 0.0)
            
g_pBoxVector[m_fMaxs][y] = 0.0;

        else if (
g_pBoxVector[m_fMaxs][z] < 0.0)
            
g_pBoxVector[m_fMaxs][z] = 0.0;

    }
    else
    {
        if (
g_pBoxVector[m_fMaxs][x] < 1.0)
            
g_pBoxVector[m_fMaxs][x] = 1.0;

        else if (
g_pBoxVector[m_fMaxs][y] < 1.0)
            
g_pBoxVector[m_fMaxs][y] = 1.0;

        else if (
g_pBoxVector[m_fMaxs][z] < 1.0)
            
g_pBoxVector[m_fMaxs][z] = 1.0;
    }

    if (
g_pBoxVector[m_fAngles][x] >= 360.0 || g_pBoxVector[m_fAngles][x] <= -360.0)
        
g_pBoxVector[m_fAngles][x] = 0.0;

    if (
g_pBoxVector[m_fAngles][y] >= 360.0 || g_pBoxVector[m_fAngles][y] <= -360.0)
        
g_pBoxVector[m_fAngles][y] = 0.0;

    if (
g_pBoxVector[m_fAngles][z] >= 360.0 || g_pBoxVector[m_fAngles][z] <= -360.0)
        
g_pBoxVector[m_fAngles][z] = 0.0;

    if (!
g_pServerVar[m_bAdvanced])
    {
        
g_pBoxVector[m_fMins][x] = -g_pBoxVector[m_fMaxs][x];
        
g_pBoxVector[m_fMins][y] = -g_pBoxVector[m_fMaxs][y];
        
g_pBoxVector[m_fMins][z] = -g_pBoxVector[m_fMaxs][z];
    }

    
entity_set_float(g_pBoxVar[m_iEntid], EV_FL_scaleg_pBoxVar[m_fScale]);
    
entity_set_vector(g_pBoxVar[m_iEntid], EV_VEC_anglesg_pBoxVector[m_fAngles]);
    
entity_set_float(g_pBoxVar[m_iEntid], EV_FL_nextthinkget_gametime() + 0.1);
    
entity_set_int(g_pBoxVar[m_iEntid], EV_INT_solidg_pBoxVar[m_iSolid] ? SOLID_BBOX SOLID_NOT);

    
entity_set_size(g_pBoxVar[m_iEntid], g_pBoxVector[m_fMins], g_pBoxVector[m_fMaxs]);
    
entity_set_vector(g_pBoxVar[m_iEntid], EV_VEC_origing_pBoxVector[m_fOrigin]);

    return 
showPropertiesMenu(id);
}

stock Menu_Settings(id)
{
    new 
szMenu[512];
    
formatex(szMenucharsmax(szMenu), "%L"id"MODE_DEV_MENU_CONFIG",
        
id, (g_pBoxVar[m_iEntid] == 0) ? "MODE_DEV_SOLID_D" "MODE_DEV_SOLID",
        
g_pBoxVar[m_iSolid] ? "SOLID_BBOX" "SOLID_NOT",
        (
g_pBoxVar[m_iBox] == 0) ? "\\d" "\\w",
        
id, (g_pServerVar[m_iStatus] == map_close) ? "MODE_DEV_HIDE" "MODE_DEV_SHOW",
        
g_pServerVar[m_iOnline_Low], g_pServerVar[m_iOnline_High],
        
identity_get_int(idEV_INT_movetype) == MOVETYPE_NOCLIP "MODE_DEV_YES" "MODE_DEV_NO",
        
idg_pServerVar[m_bAdvanced] ? "MODE_DEV_YES" "MODE_DEV_NO");

    return 
show_menu(id0x23FszMenu, -1"Settings Menu");
}

public 
Settings_Handler(idkey)
{
    switch (
key)
    {
        case 
0:
        {
            if (!
g_pBoxVar[m_iEntid])
            {
                
client_print(idprint_center"%L"id"MODE_DEV_FAILED_4");
                return 
Menu_Settings(id);
            }

            
entity_set_float(g_pBoxVar[m_iEntid], EV_FL_nextthinkget_gametime() + 0.1);
            
entity_set_int(g_pBoxVar[m_iEntid], EV_INT_solid, (g_pBoxVar[m_iSolid] ^= 1) ? SOLID_BBOX SOLID_NOT);
            
entity_set_size(g_pBoxVar[m_iEntid], g_pBoxVector[m_fMins], g_pBoxVector[m_fMaxs]);

            
client_print(id,print_center"%L"id"MODE_DEV_SUCCESS_6"g_pBoxVar[m_iSolid] ? "SOLID_BBOX" "SOLID_NOT");
        }
        case 
1:
        {
            if (
g_pBoxVar[m_iBox])
                
DrawBoxDev((g_pServerVar[m_iStatus] ^= map_close));
        }
        case 
2:
        {
            if (++
g_pServerVar[m_iOnline_Low] > g_pServerVar[m_iOnline_High])
                
g_pServerVar[m_iOnline_Low] = 0;
        }
        case 
3:
        {
            if (++
g_pServerVar[m_iOnline_High] > g_pServerVar[m_iMaxpl])
                
g_pServerVar[m_iOnline_High] = g_pServerVar[m_iOnline_Low];
        }
        case 
4:
        {
            if (
is_user_alive(id))
            {
                
entity_set_int(idEV_INT_movetype, (entity_get_int(idEV_INT_movetype) == MOVETYPE_NOCLIP) ? MOVETYPE_WALK MOVETYPE_NOCLIP);
            }
        }
         case 
5g_pServerVar[m_bAdvanced] ^= true;
        case 
9:    return Menu_MainEdit(id);
    }

    return 
Menu_Settings(id);
}

stock getChangeleft(idtimeoutput[], lenght)
{
    if (
time 0)
    {
        new 
minute 0second 0;

        
second time;

        
minute second 60;
        
second -= (minute 60);

        new 
szBuffer[2][33], ending[22], num = -1;

        if (
minute 0)
        {
            
getEnding(minute"MODE_MINUT""MODE_MINUTE""MODE_MINUTES"21ending);
            
formatex(szBuffer[++num], charsmax(szBuffer[]), "%i %L"minuteidending);
        }
        if (
second 0)
        {
            
getEnding(second"MODE_SECOND""MODE_SECUNDE""MODE_SECONDS"21ending);
            
formatex(szBuffer[++num], charsmax(szBuffer[]), "%i %L"secondidending);
        }
        switch (
num)
        {
        case 
0formatex(outputlenght"%s"szBuffer[0]);
        case 
1formatex(outputlenght"%L"id"MODE_AND"szBuffer[0], szBuffer[1]);
        }
    }
    else 
formatex(outputlenght"0 %L"id"MODE_SECOND");
}

stock getEnding(num, const a[], const b[], const c[], lenghtoutput[])
{
    new 
num100 num 100num10 num 10szBuffer[22];
    if (
num100 >= && num100 <= 20 || num10 == || num10 >= && num10 <= 9)
        
copy(szBuffer21a);

    else if (
num10 == 1)
        
copy(szBuffer21b);

    else if (
num10 >= && num10 <= 4)
        
copy(szBuffer21c);

    return 
formatex(outputlenght"%s"szBuffer);
}

stock boxSave(id)
{
    
delete_file(g_pServerVar[m_szFile]);

    new 
szBuffer[1024], Float:frameFloat:p_origin[coord_s], Float:p_angles[coord_s], Float:p_mins[coord_s], Float:p_maxs[coord_s], Float:p_scalep_spritecountpEnt = -1;
    if (
g_pServerVar[m_iOnline_High] != 0)
        
formatex(szBuffercharsmax(szBuffer),"ONLINE=%d,%d"g_pServerVar[m_iOnline_Low], g_pServerVar[m_iOnline_High]);
    else
        
formatex(szBuffercharsmax(szBuffer),"ONLINE=%d"g_pServerVar[m_iOnline_Low]);

    
write_file(g_pServerVar[m_szFile], szBuffer0);

    while ((
pEnt find_ent_by_class(pEntCLASSNAME_WALL)))
    {
        if (
g_pBoxVar[m_iEntid] == pEnt)
            continue;

        
entity_get_vector(pEntEV_VEC_originp_origin);
        
entity_get_vector(pEntEV_VEC_anglesp_angles);
        
entity_get_vector(pEntEV_VEC_minsp_mins);
        
entity_get_vector(pEntEV_VEC_maxsp_maxs);

        
p_scale entity_get_float(pEntEV_FL_scale);
        
frame entity_get_float(pEntEV_FL_frame);

        
p_sprite floatround(frame);

        
formatex(szBuffercharsmax(szBuffer),
            
"\"%f\" \"%f\" \"%f\" \"%f\" \"%f\" \"%f\" \"%f\" \"%f\" \"%f\" \"%f\" \"%f\" \"%f\" \"%f\" \"%d\"",
            
p_origin[x], p_origin[y], p_origin[z],
            
p_angles[x], p_angles[y], p_angles[z],
            
p_mins[x], p_mins[y], p_mins[z],
            
p_maxs[x], p_maxs[y], p_maxs[z],
            
p_scale,
            
p_sprite
        
);

        
write_file(g_pServerVar[m_szFile], szBuffer, -1);
        ++
count;
    }

    if (
id && count 0)
    {
        
client_print(id,print_center"%L"id"MODE_DEV_SUCCESS_3");
    }
}

stock bool:LoadBox()
{
    new 
szBuffer[2048], szKey[32], szValue[32], p_origin[coord_s][6], p_angles[coord_s][6], p_mins[coord_s][6], p_maxs[coord_s][6], p_scale[6], p_sprite[6];
    new 
file fopen(g_pServerVar[m_szFile], "r");
    if (!
file)
    {
        return 
false;
    }

    while (!
feof(file))
    {
        
fgets(fileszBuffercharsmax(szBuffer));

        if (
szBuffer[0] == EOS || szBuffer[0] == ';')
            continue;

        
trim(szBuffer);
        
strtok(szBufferszKeycharsmax(szKey), szValuecharsmax(szValue), '=');

        if (!
strcmp(szKey"ONLINE"))
        {
            new 
szOnlineLow[5], szOnlineHigh[5];
            
strtok(szValueszOnlineLowcharsmax(szOnlineLow), szOnlineHighcharsmax(szOnlineHigh), ',');

            
g_pServerVar[m_iOnline_Low] = str_to_num(szOnlineLow);
            
g_pServerVar[m_iOnline_High] = str_to_num(szOnlineHigh);

            if (
g_pServerVar[m_iOnline_High] == 0)
                
g_pServerVar[m_iOnline_High] = g_pServerVar[m_iOnline_Low];

            if (
g_pServerVar[m_iOnline_Low] > g_pServerVar[m_iOnline_High])
                
g_pServerVar[m_iOnline_Low] = g_pServerVar[m_iOnline_High];

            continue;
        }

        
// parse data on line
        
parse(szBuffer,
            
p_origin[x],    5p_origin[y],    5p_origin[z],    5,    // origin
            
p_angles[x],    5p_angles[y],    5p_angles[z],    5,    // angles
            
p_mins[x],    5p_mins[y],    5p_mins[z],    5,    // mins
            
p_maxs[x],    5p_maxs[y],    5p_maxs[z],    5,    // maxs
            
p_scale,    5,                    // scale
            
p_sprite,    5);                    // sprite

        
g_pBoxVector[m_fOrigin][x] = str_to_float(p_origin[x]);
        
g_pBoxVector[m_fOrigin][y] = str_to_float(p_origin[y]);
        
g_pBoxVector[m_fOrigin][z] = str_to_float(p_origin[z]);

        
g_pBoxVector[m_fAngles][x] = str_to_float(p_angles[x]);
        
g_pBoxVector[m_fAngles][y] = str_to_float(p_angles[y]);
        
g_pBoxVector[m_fAngles][z] = str_to_float(p_angles[z]);

        
g_pBoxVector[m_fMins][x] = str_to_float(p_mins[x]);
        
g_pBoxVector[m_fMins][y] = str_to_float(p_mins[y]);
        
g_pBoxVector[m_fMins][z] = str_to_float(p_mins[z]);

        
g_pBoxVector[m_fMaxs][x] = str_to_float(p_maxs[x]);
        
g_pBoxVector[m_fMaxs][y] = str_to_float(p_maxs[y]);
        
g_pBoxVector[m_fMaxs][z] = str_to_float(p_maxs[z]);

        
g_pBoxVar[m_fScale] = _:(str_to_float(p_scale));
        
g_pBoxVar[m_iSprite] = str_to_num(p_sprite);

        
CreateBox(true);
        ++
g_pBoxVar[m_iBox];
    }

    
fclose(file);
    return 
g_pBoxVar[m_iBox] > true false;
}

stock UTIL__GetActivePlayers()
{
    new 
iNum 0;
    for (new 
nIndex 1nIndex <= g_pServerVar[m_iMaxpl]; ++nIndex)
    {
        if (!
is_user_connected(nIndex) || !(<= get_member(nIndexm_iTeam) <= 2))
            continue;

        ++
iNum;
    }

    return 
iNum;
}

stock DrawBoxDev(status_s:st)
{
    new 
pEnt = -1;
    while ((
pEnt find_ent_by_class(pEntCLASSNAME_WALL)))
    {
        
entity_set_int(pEntEV_INT_solidst == map_close SOLID_BBOX SOLID_NOT);

        if (
g_pBoxVar[m_iEntid] == pEnt || entity_get_float(pEntEV_FL_frame) > 1.0)
            continue;

        new 
iFlags entity_get_int(pEntEV_INT_effects);
        
entity_set_int(pEntEV_INT_effectsst == map_close ? (iFlags &~ EF_NODRAW) : (iFlags EF_NODRAW));
    }
}

stock DrawBox(status_s:stbool:bShow true)
{
    new 
pEnt = -1;
    while ((
pEnt find_ent_by_class(pEntCLASSNAME_WALL)))
    {
        
entity_set_int(pEntEV_INT_solid, (st == map_close) ? SOLID_BBOX SOLID_NOT);

        if (
entity_get_float(pEntEV_FL_frame) > 1)
            continue;

        new 
iFlags entity_get_int(pEntEV_INT_effects);
        
entity_set_int(pEntEV_INT_effects, (st == map_close) ? iFlags &~ EF_NODRAW iFlags EF_NODRAW);
    }

    if (
g_pServerVar[m_bInitialized])
    {
        
UTIL__ChangeNameOfMap(st);
    }

    new 
arg[2];
    
arg[0] = _:st;

    switch (
st)
    {
        case 
map_open:
        {
            
g_pServerVar[m_iAll] = 0;
            
arrayset(g_pServerVar[m_iVote], 0g_pServerVar[m_iMaxpl]);

            if (
bShow)
            {
                
g_pServerVar[m_iAll] = 0;
                
set_task(0.7"Task_NotifyStatusMap"TASK_MODE_NOTIFYargsizeof(arg));
            }
        }
        case 
map_close:
        {
            if (
bShow)
            {
                
g_pServerVar[m_iAll] = 0;
                
set_task(0.7"Task_NotifyStatusMap"TASK_MODE_NOTIFYargsizeof(arg));
            }
        }
    }

    
UTIL__MoveSpawnSpot(st);
    
g_pServerVar[m_iStatusLast] = st;
}

public 
Task_NotifyStatusMap(arg[])
{
    if (
arg[0] == any:map_open)
    {
        
set_dhudmessage(COLOR_MAP_OPENMESSAGE_MAP_STATUS20.12.00.050.2);
        
show_dhudmessage(0"%L"LANG_PLAYER"MODE_MESSAGE_MAP_OPENED");
    }
    else
    {
        
set_dhudmessage(COLOR_MAP_CLOSEMESSAGE_MAP_STATUS20.12.00.050.2);
        
show_dhudmessage(0"%L"LANG_PLAYER"MODE_MESSAGE_MAP_CLOSED");
    }
}

stock CreateBox(bool:bParse false)
{
    new 
pEnt create_entity(CLASSNAME_WALL);

    if (!
pEnt)
    {
        return 
0;
    }

    
entity_set_int(pEntEV_INT_movetypeMOVETYPE_FLY);
    
entity_set_int(pEntEV_INT_impulseID_KEY_WALL);

    if (
bParse)
    {
        
entity_set_model(pEntSPRITE_WALL);
        
entity_set_size(pEntg_pBoxVector[m_fMins], g_pBoxVector[m_fMaxs]);

        
entity_set_float(pEntEV_FL_scaleg_pBoxVar[m_fScale]);
        
entity_set_vector(pEntEV_VEC_anglesg_pBoxVector[m_fAngles]);
        
entity_set_int(pEntEV_INT_solidSOLID_BBOX);

        if (
g_pBoxVar[m_iSprite] > 1)
            
entity_set_int(pEntEV_INT_effectsentity_get_int(pEntEV_INT_effects) | EF_NODRAW);

        
entity_set_float(pEntEV_FL_framefloat(g_pBoxVar[m_iSprite]));
        
entity_set_int(pEntEV_INT_rendermodekRenderTransAdd);
        
entity_set_float(pEntEV_FL_renderamt175.0);
        
entity_set_vector(pEntEV_VEC_origing_pBoxVector[m_fOrigin]);
    }
    else
    {
        
g_pBoxVector[m_fAngles][x] = 0.0;
        
g_pBoxVector[m_fAngles][y] = 0.0;
        
g_pBoxVector[m_fAngles][z] = 0.0;

        
g_pBoxVector[m_fMaxs][x] = 32.0;
        
g_pBoxVector[m_fMaxs][y] = 32.0;
        
g_pBoxVector[m_fMaxs][z] = 32.0;

        
g_pBoxVector[m_fMins][x] = -32.0;
        
g_pBoxVector[m_fMins][y] = -32.0;
        
g_pBoxVector[m_fMins][z] = -32.0;

        
g_pBoxVar[m_fScale] = _:0.250;

        
entity_set_model(pEntSPRITE_WALL);
        
entity_set_size(pEntg_pBoxVector[m_fMins], g_pBoxVector[m_fMaxs]);

        
entity_set_float(pEntEV_FL_scaleg_pBoxVar[m_fScale]);
        
entity_set_vector(pEntEV_VEC_anglesg_pBoxVector[m_fAngles]);
        
entity_set_int(pEntEV_INT_solidSOLID_NOT);

        
entity_set_float(pEntEV_FL_framefloat(g_pBoxVar[m_iSprite]));

        
entity_set_int(pEntEV_INT_rendermodekRenderTransAdd);
        
entity_set_float(pEntEV_FL_renderamt175.0);

        
entity_set_float(pEntEV_FL_nextthinkget_gametime() + 0.1);

        return 
pEnt;
    }

    return 
0;
}

stock UTIL__ChangeNameOfMap(status_s:st)
{
    if (!
get_pcvar_num(pcvar_mode_changemapname))
        return;

    switch (
st)
    {
    
// reset mapname
    
case map_open:
        
rh_reset_mapname();
    case 
map_close:
    {
        new 
szPrefix2x2[32];
        
formatex(szPrefix2x2charsmax(szPrefix2x2), "%s_2x2"g_pServerVar[m_szMap]);
        
rh_set_mapname(szPrefix2x2);
    }
    }
}

new const 
Float:g_vecSpawnSpot[][coord_s] =
{
    
// original spot spawn
    
{-1024.0, -800.0176.0},
    {-
1024.0, -704.0176.0},
    {-
1024.0, -896.0192.0},

    {-
826.0, -970.0200.0},
    {-
726.0, -970.0200.0},
    {-
626.0, -970.0200.0}
};

stock UTIL__MoveSpawnSpot(status_s:st)
{
    
// If the status has not changed
    
if (g_pServerVar[m_iStatusLast] == st)
        return;

    
// To move the origin of the T spawn on de_dust2, which are beyond the arch.
    
if (!strcmp(g_pServerVar[m_szMap], "de_dust2"))
    {
        new 
ent = -1;
        new 
direction = (st == map_open) ? -1;
        new 
index = (st == map_open) ? 0;

        while ((
ent find_ent_by_class(ent"info_player_deathmatch")))
        {
            new 
Float:vecSpot[3];
            
entity_get_vector(entEV_VEC_originvecSpot);

            for (new 
indexindex; ++i)
            {
                if (
VectorCompare(vecSpotg_vecSpawnSpot))
                {
                    
entity_set_vector(entEV_VEC_origing_vecSpawnSpot[direction]);
                    break;
                }
            }
        }
    }

Alber9091 is offline