Raised This Month: $12 Target: $400
 3% 

Command To Work From Web Console Too, Not Only When You Are In Server.


Post New Thread Reply   
 
Thread Tools Display Modes
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
Airkish
AlliedModders Donor
Join Date: Apr 2016
Location: Lithuania
Old 07-18-2019 , 03:07   Re: Command To Work From Web Console Too, Not Only When You Are In Server.
Reply With Quote #2

PHP Code:
register_concmd("change""CMD_ModeChange"); 
or
PHP Code:
register_srvcmd("change""CMD_ModeChange"); 
__________________

Last edited by Airkish; 07-18-2019 at 03:09.
Airkish is offline
Alber9091
Veteran Member
Join Date: Jun 2014
Location: Karachi, Pakistan
Old 07-18-2019 , 04:48   Re: Command To Work From Web Console Too, Not Only When You Are In Server.
Reply With Quote #3

Quote:
Originally Posted by Airkish View Post
PHP Code:
register_concmd("change""CMD_ModeChange"); 
or
PHP Code:
register_srvcmd("change""CMD_ModeChange"); 
"say /change", "/change" or just "change"? And what about console_print?

Last edited by Alber9091; 07-18-2019 at 04:51.
Alber9091 is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 07-18-2019 , 07:44   Re: Command To Work From Web Console Too, Not Only When You Are In Server.
Reply With Quote #4

Why do you need a "say" command in the server console?!
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Alber9091
Veteran Member
Join Date: Jun 2014
Location: Karachi, Pakistan
Old 07-18-2019 , 07:55   Re: Command To Work From Web Console Too, Not Only When You Are In Server.
Reply With Quote #5

Quote:
Originally Posted by OciXCrom View Post
Why do you need a "say" command in the server console?!
Since it resemble, the clcmd (in case if I use srvcmd) and if I use concmd, say will be optimal for both client & via web console. [/change for both client & console]

Last edited by Alber9091; 07-18-2019 at 07:56.
Alber9091 is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 07-18-2019 , 08:02   Re: Command To Work From Web Console Too, Not Only When You Are In Server.
Reply With Quote #6

clcmd -> client console
srvcmd -> server console
concmd -> client + server console
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Alber9091
Veteran Member
Join Date: Jun 2014
Location: Karachi, Pakistan
Old 07-18-2019 , 11:45   Re: Command To Work From Web Console Too, Not Only When You Are In Server.
Reply With Quote #7

Quote:
Originally Posted by OciXCrom View Post
clcmd -> client console
srvcmd -> server console
concmd -> client + server console
Yes I know about it.

I want to use this comnand say /change.
Example:
Press Y -> "/change" in server/game.
And "say /change" from game console.

I tried it but it didn't work from console (never tested as client).

PHP Code:
register_concmd("say /change""CMD_ModeChange"); 
Now airkash has told another way in above post,

PHP Code:
register_concmd("change""CMD_ModeChange"); 
So, I was asking do I have to use?

1.
PHP Code:
register_concmd("change""CMD_ModeChange"); 
2.
PHP Code:
register_concmd("/change""CMD_ModeChange"); 
"
3.
PHP Code:
register_concmd("say /change""CMD_ModeChange"); 
since I want /change as a command in say.

Last edited by Alber9091; 07-18-2019 at 12:26.
Alber9091 is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 07-18-2019 , 13:52   Re: Command To Work From Web Console Too, Not Only When You Are In Server.
Reply With Quote #8

If you want it in chat, you obviously need "say".
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Alber9091
Veteran Member
Join Date: Jun 2014
Location: Karachi, Pakistan
Old 07-18-2019 , 14:01   Re: Command To Work From Web Console Too, Not Only When You Are In Server.
Reply With Quote #9

Quote:
Originally Posted by OciXCrom View Post
If you want it in chat, you obviously need "say".
I tried,

PHP Code:
    register_concmd("say /change""CMD_ModeChange"ADMIN_VOTE"<Смена режима Mode 2x2, Открыть/Закрыть карту>"); 
PHP Code:
    }

    
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");
            
console_print(id"%s Changed The Mode"szName);
            }
    }

    return 
PLUGIN_HANDLED;


I used this command from server console, i.e: say /change.

Neither, it sends:
console_print(id, "%s Changed The Mode", szName);

Nor, any function took place, i.e: mode didn't change.

I made these 2 changes, console_print & concmd but it didn't helped, can you please figure out where the problem could be?

Last edited by Alber9091; 07-18-2019 at 14:45.
Alber9091 is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 07-18-2019 , 14:33   Re: Command To Work From Web Console Too, Not Only When You Are In Server.
Reply With Quote #10

I don't think you can use "say" in the server console. Register it without say with srvcmd. You can register it twice - once with concmd + say, once with srvcmd without say.
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 04:06.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode