AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Translation Request (https://forums.alliedmods.net/forumdisplay.php?f=25)
-   -   Translate this plugin in english [I pay] (https://forums.alliedmods.net/showthread.php?t=294619)

venyn 03-03-2017 12:12

Translate this plugin in english [I pay]
 
Code:

#include <amxmodx>
#include <engine>
#include <fakemeta>

#if AMXX_VERSION_NUM < 183
        #include <dhudmessage>
        #include <colorchat>
#else
        #define DontChange print_team_default
#endif

#pragma ctrlchar                        '\'
#pragma semicolon                        1

/***** SETTING DEFINE START *****/
#define CHECK_FORCE_ONLINE                // Заставлять проверять онлайн даже при /change, если нет действующих админов в игре, кроме админов в спектаторе, при ADMIN_ONE_ONLY, проверяет только одного активного админа.
#define STATE_USE                        // Использовать динамические статы
//#define ADD_MORE_CHECK                // Дополнительные проверки (имхо лишние)
//#define ADMIN_ONE_ONLY                // Запрещает второму админу использовать команду "/change", если первый админ его уже использовал для открытия карты и если админ который активировал "/change" - активный и находится в команде. (Не проверено)
#define MODE_DESCRIPTON                        // Отображать при режиме 2x2 в GameDescripton, что включен режим "Mode:карта_2x2"
#define MOVE_COORD_DUST2                // Сместить координаты спавнов T на карте de_dust2, которые находятся за аркой.
#define WEAPONBOX_PUSH                        // Толкать weaponbox (оружия, C4) от стенки
#define GAME_COMMENCING                        // Никогда не ставить стенки при "GameCommencing" или "Restart"
#define MODE_TOUCHMESSAGE                // Сообщать игроку при касании стены о том, что проход закрыт.

#if defined MODE_TOUCHMESSAGE
        #define MESSAGE_TIMEWAIT        5.5        // Задержка для повторного сообщения при касании стенки игроком.
#endif

                                        //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 VOTE_TIMEWAIT                        3        // Через сколько минут после голосования /mode, будет снова доступно.
#define VOTE_RATIO                        0.5        // Погрешность для количество голосов, Пример: (Ratio: 0.5, требуется 0.5 * 32 = 16 голосов из 32 игроков)
#define STRONG_PUSH                        15.0        // Сила толчка weaponbox (оружия, C4) от стенки
/***** SETTING DEFINE END *****/

#define MAX_PLAYERS                        32
#define PREFIX                                "\1[\4Mode\1]"
#define CLASSNAME_WALL                        "info_mode"
#define SPRITE_WALL                        "sprites/mode/wall.spr"

#define IsRatio                                (floatround(VOTE_RATIO * checkNumPlayers()))
#define IsUserTeam(%0)                        (1 <= get_pdata_int(%0,114) <= 2)
#define IsUserFlags(%0,%1)                (get_user_flags(%0) & %1)
#define IsUserAValid(%0)                (1 <= %0 <= g_pServerVar[m_iMaxpl] && is_user_alive(%0))

#define CheckPlayers                        (g_pServerVar[m_iOnline] > checkNumPlayers())

#define Vector(%0,%1,%2)                (Float:{%0,%1,%2})
#define VectorEqual(%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]))

#if defined STATE_USE
#define STATEMENT_FALLBACK(%0,%1,%2)        public %0()<>{return %1;} public %0()<%2>{return %1;}
#endif

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

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

enum _:status_s
{
        box_open = 0,
        box_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_box_s
{
        m_fOrigin,
        m_fAngles,
        m_fMins,
        m_fMaxs
};

enum _:server_info_s
{
        m_iNone,
        m_iAll,
        m_iBox,
        m_iType,
        m_iEntid,
        m_iSetting,
        m_iSolid,
        m_iMaxpl,
        blocked_s:m_iBlocked,
        m_szFile[64],
        m_iCount,
        m_iThink,
#if defined ADMIN_ONE_ONLY
        m_iClose,
#endif
#if defined MODE_DESCRIPTON
        m_szDescr[64],
#endif
        m_iOnline,
        m_iSprite,
        status_s:m_iStatus,
        m_szMap[32],
        m_iVoting[vote_s],
        m_iVote[MAX_PLAYERS + 1],
        Float:m_fNext,
        Float:m_fWait[MAX_PLAYERS + 1],
        Float:m_fScale
};

new g_pServerVar[server_info_s];
new Float:g_pServerBox[server_box_s][coord_s];

public plugin_precache()
{
        get_mapname(g_pServerVar[m_szMap],31);

#if defined STATE_USE
        #if defined MOVE_COORD_DUST2
        if(equal(g_pServerVar[m_szMap],"de_dust2"))
        {
                state stpfnSpawn:Enabled;
        }
        #endif
#endif
        precache_model(SPRITE_WALL);
}
public plugin_init()
{
        register_plugin("Mode 2x2","1.8","s1lent");

        register_clcmd("say /mode","cmdMode");
        register_clcmd("say /box","cmdMenuBox",ADMIN_RCON,"<Управление объектами, Создание/Изменение/Удаление>");
        register_clcmd("say /change","cmdModeChange",ADMIN_VOTE,"<Смена режима Mode 2x2, Открыть/Закрыть карту>");

        register_menucmd(register_menuid("Main Edit Menu"),0x3FF,"mainEditHandler");
        register_menucmd(register_menuid("Setting Menu"),0x3FF,"settingHandler");

        g_pServerVar[m_iMaxpl] = get_maxplayers();
        g_pServerVar[m_fNext] = _:-1.0;//(get_gametime() + (VOTE_TIMEWAIT * 60.0));

        loadConfig();
}
loadConfig()
{
#if defined STATE_USE
        #if defined MOVE_COORD_DUST2
        state stpfnSpawn:Disabled;
        #endif
#endif
        get_localinfo("amxx_configsdir",g_pServerVar[m_szFile],63);

        add(g_pServerVar[m_szFile],63,"/mode/");

        if(!dir_exists(g_pServerVar[m_szFile]))
        {
                mkdir(g_pServerVar[m_szFile]);
        }
        formatex(g_pServerVar[m_szFile],63,"%s%s.ini",g_pServerVar[m_szFile],g_pServerVar[m_szMap]);
        if(file_exists(g_pServerVar[m_szFile]))
        {
                g_pServerVar[m_iNone] = boxLoad();
                showBox(g_pServerVar[m_iStatus] = box_open,.bShow = false);

                #if defined MODE_DESCRIPTON
                        formatex(g_pServerVar[m_szDescr],63,"Mode: %s_2x2",g_pServerVar[m_szMap]);
                        register_forward(FM_GetGameDescription,"pfnGetGameDescription");
                #endif
                #if defined MODE_TOUCHMESSAGE
                        register_touch(CLASSNAME_WALL,"player","pfnTouch");
                #endif
                #if defined WEAPONBOX_PUSH
                        register_touch("weaponbox",CLASSNAME_WALL,"pfnTouchWeaponBox");
                #endif

                register_menucmd(register_menuid("Mode Menu"),0x03,"modemenu");

                register_event("HLTV","RoundNew","a","1=0","2=0");
                #if defined GAME_COMMENCING
                register_event("TextMsg","GameCommencing","a","2=#Game_Commencing","2=#Game_will_restart_in");
                #endif
        }
}
public plugin_end()
{
        if(task_exists(TASK_MODE_VOTE))
        {
                remove_task(TASK_MODE_VOTE);
        }
        if(task_exists(TASK_MODE_START))
        {
                remove_task(TASK_MODE_START);
        }
        if(g_pServerVar[m_iThink] && !g_pServerVar[m_iNone])
        {
                boxSave(0); // Force save box
        }
}
public client_disconnect(id)
{
        if(!g_pServerVar[m_iNone])
        {
                return;
        }
#if defined ADMIN_ONE_ONLY
        if(g_pServerVar[m_iClose] == id)
        {
                g_pServerVar[m_iClose] = 0;
        }
#endif
        if(g_pServerVar[m_iVote][id])
        {
                g_pServerVar[m_iAll]--;
                g_pServerVar[m_iVote][id] = 0;
        }
}
#if defined GAME_COMMENCING
public GameCommencing()
{
        g_pServerVar[m_iBlocked] = blocked_s:block_commencing;
        showBox((g_pServerVar[m_iStatus] = status_s:box_open),.bShow = false);
}
#endif
public RoundNew()
{
#if defined CHECK_FORCE_ONLINE
        if(g_pServerVar[m_iBlocked] > blocked_s:block_admin_change)
        {
                new iNum;
                for(new a = 1; a <= g_pServerVar[m_iMaxpl]; a++)
                {
                        if(!is_user_connected(a) || !IsUserFlags(a,ADMIN_VOTE) || !IsUserTeam(a))
                        {
                                continue;
                        }
#if defined ADMIN_ONE_ONLY
                        if(g_pServerVar[m_iClose] != a)
                        {
                                continue;
                        }
#endif
                        iNum++;
                }
                if(!iNum)
                {
                        if(CheckPlayers)
                        {
                                g_pServerVar[m_iBlocked] = blocked_s:block_none;
                                showBox((g_pServerVar[m_iStatus] = status_s:box_close),true);
                        }
                }
        }
        else
#endif
        if(g_pServerVar[m_iBlocked])
        {
                switch(g_pServerVar[m_iBlocked])
                {
                        case block_success_vote:
                        {
                                showBox(g_pServerVar[m_iStatus],true);
                                g_pServerVar[m_iBlocked] = blocked_s:block_roundnew;
                        }
                        case block_commencing:
                        {
                                g_pServerVar[m_iBlocked] = blocked_s:block_none;
                        }
                        case block_admin_change:
                        {
                                showBox(g_pServerVar[m_iStatus],true);
                                g_pServerVar[m_iBlocked] = blocked_s:block_permament;
                        }
                }
        }
        else if(CheckPlayers)
        {
                if(g_pServerVar[m_iStatus] == status_s:box_open)
                {
                        showBox((g_pServerVar[m_iStatus] = status_s:box_close),true);
                }
        }
        else
        {
                if(g_pServerVar[m_iStatus] == status_s:box_close)
                {
                        showBox((g_pServerVar[m_iStatus] = status_s:box_open),true);
                }
        }
}

#if defined MOVE_COORD_DUST2
public pfn_spawn(ent)
#if defined STATE_USE
        <stpfnSpawn:Enabled>
#endif
{
        #if !defined STATE_USE
        if(!equal(g_pServerVar[m_szMap],"de_dust2"))
        {
                return 0;
        }
        #endif
        static classname[32];
        entity_get_string(ent,EV_SZ_classname,classname,31);
        if(equali(classname,"info_player_deathmatch"))
        {
                static Float:vec[coord_s];
                entity_get_vector(ent,EV_VEC_origin,vec);

                static Float:looking[][coord_s] =
                {
                        {-1024.0, -800.0, 176.0},
                        {-1024.0, -704.0, 176.0},
                        {-1024.0, -896.0, 192.0},

                        {-826.0, -970.0, 200.0},
                        {-726.0, -970.0, 200.0},
                        {-626.0, -970.0, 200.0}
                };
                for(new b = 0; b < sizeof(looking) / 2; b++)
                {
                        if(VectorEqual(vec,looking[b]))
                        {
                                entity_set_vector(ent,EV_VEC_origin,looking[b + 3]);
                                break;
                        }
                }
        }
        return 0;
}
#if defined STATE_USE
STATEMENT_FALLBACK(pfn_spawn,0,stpfnSpawn:Disabled)
#endif
#endif

public pfnThink(ent)
#if defined STATE_USE
        <stpfnThink:Enabled>
#endif
{
        #if defined ADD_MORE_CHECK
        if(!is_valid_ent(g_pServerVar[m_iEntid]) || !is_valid_ent(ent) || g_pServerVar[m_iEntid] != ent)
        {
                return 0;
        }
        #else
        if(g_pServerVar[m_iEntid] != ent)
        {
                return 0;
        }
        #endif

        static Float:b_mins[coord_s],Float:b_maxs[coord_s],Float:b_origin[coord_s];
        entity_get_vector(ent,EV_VEC_origin,b_origin);
        entity_get_vector(ent,EV_VEC_mins,b_mins);
        entity_get_vector(ent,EV_VEC_maxs,b_maxs);

        engfunc(EngFunc_MessageBegin,MSG_ALL/*MSG_PVS*/,SVC_TEMPENTITY,b_origin);
        write_byte(TE_BOX);
        engfunc(EngFunc_WriteCoord,(b_mins[x] += b_origin[x]));
        engfunc(EngFunc_WriteCoord,(b_mins[y] += b_origin[y]));
        engfunc(EngFunc_WriteCoord,(b_mins[z] += b_origin[z]));
        engfunc(EngFunc_WriteCoord,(b_maxs[x] += b_origin[x]));
        engfunc(EngFunc_WriteCoord,(b_maxs[y] += b_origin[y]));
        engfunc(EngFunc_WriteCoord,(b_maxs[z] += b_origin[z]));
        write_short(2);
        write_byte(255);
        write_byte(0);
        write_byte(0);
        message_end();

        return entity_set_float(ent,EV_FL_nextthink,get_gametime() + 0.1);
}
#if defined STATE_USE
STATEMENT_FALLBACK(pfnThink,0,stpfnThink:Disabled)
#endif

#if defined WEAPONBOX_PUSH
public pfnTouchWeaponBox(ent,id)
#if defined STATE_USE
        <stMode:Enabled>
#endif
{
        #if defined ADD_MORE_CHECK
        if(!is_valid_ent(ent) || !is_valid_ent(id)) // why do it?!
        {
                return 0;
        }
        #endif
        new Float:velocity[3];
        get_global_vector(GL_v_forward,velocity);

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

        entity_set_vector(ent,EV_VEC_velocity,velocity);

        return 0;
}
#if defined STATE_USE
STATEMENT_FALLBACK(pfnTouchWeaponBox,0,stMode:Disabled)
#endif
#endif

#if defined MODE_DESCRIPTON
public pfnGetGameDescription()
#if defined STATE_USE
        <stMode:Enabled>
#endif
{
        #if !defined STATE_USE
        if(g_pServerVar[m_iStatus] != status_s:box_close)
        {
                return FMRES_IGNORED;
        }
        #endif

        forward_return(FMV_STRING,g_pServerVar[m_szDescr]);
        return FMRES_SUPERCEDE;
}
#if defined STATE_USE
STATEMENT_FALLBACK(pfnGetGameDescription,0,stMode:Disabled)
#endif
#endif

#if defined MODE_TOUCHMESSAGE
public pfnTouch(ent,id)
#if defined STATE_USE
        <stMode:Enabled>
#endif
{
        #if defined ADD_MORE_CHECK
        if(!is_valid_ent(ent) || !IsUserAValid(id)) // why do it?!
        {
                return 0;
        }
        #else
        if(!is_user_alive(id))
        {
                return 0;
        }
        #endif

        static Float:currentTime;
        currentTime = get_gametime();
        if(currentTime > g_pServerVar[m_fWait][id])
        {
                g_pServerVar[m_fWait][id] = _:(currentTime + MESSAGE_TIMEWAIT);
                return client_print_color(id,DontChange,"%s К сожалению\3 Проход закрыт\4,\1 по причине мало игроков\4.",PREFIX);
        }
        return 0;
}
#if defined STATE_USE
STATEMENT_FALLBACK(pfnTouch,0,stMode:Disabled)
#endif
#endif

public cmdModeChange(id,level,cid)
{
        if(!IsUserFlags(id,level))
        {
                return 0;
        }
        if(!g_pServerVar[m_iNone])
        {
                return client_print_color(id,DontChange,"%s На этой карте отсутствует\3 /mode\1 режим\4.",PREFIX);
        }

#if defined ADMIN_ONE_ONLY
        if(g_pServerVar[m_iClose] != id)
        {
                if(is_user_connected(g_pServerVar[m_iClose]))
                {
                        new name[32];
                        get_user_name(id,name,31);
                        return client_print_color(id,DontChange,"%s К сожалению\4,\1 админ\3 %s\1 использует эту команду.",PREFIX,name);
                }
        }
#endif
        switch(g_pServerVar[m_iBlocked])
        {
                case block_vote: return client_print_color(id,DontChange,"%s Сейчас начнется Голосование\4.",PREFIX);
                case block_start_vote: return client_print_color(id,DontChange,"%s Идет голосование\4.",PREFIX);
                case block_success_vote: return client_print_color(id,DontChange,"%s Дождитесь нового раунда\4.",PREFIX);
                case block_admin_change: return client_print_color(id,DontChange,"%s Админ\3 %s\1 карту в следующем раунде\4.",PREFIX,(g_pServerVar[m_iStatus] == status_s:box_close) ? "закроет" : "откроет");
        }
        g_pServerVar[m_iBlocked] = blocked_s:block_admin_change;
        g_pServerVar[m_fNext] = _:(get_gametime() + (VOTE_TIMEWAIT * 60.0));
        g_pServerVar[m_iStatus] ^= status_s:box_close;
#if defined ADMIN_ONE_ONLY
        g_pServerVar[m_iClose] = (g_pServerVar[m_iStatus] == status_s:box_open) ? id : 0;
#endif
        new name[32];
        get_user_name(id,name,31);
        for(new a = 1; a <= g_pServerVar[m_iMaxpl]; a++)
        {
                if(!is_user_connected(a) || !IsUserFlags(a,ADMIN_VOTE))
                {
                        continue;
                }
                client_print_color(a,DontChange + id,"%s\3 %s\1 %s карту в следующем раунде\3 /change\4.",PREFIX,name,(g_pServerVar[m_iStatus] == status_s:box_close) ? "закроет" : "откроет");
        }
        return 1;
}
public cmdMode(id)
{
        if(!g_pServerVar[m_iNone])
        {
                return client_print_color(id,DontChange,"%s На этой карте отсутствует\3 /mode\1 режим\4.",PREFIX);
        }
        switch(g_pServerVar[m_iBlocked])
        {
                case block_vote: return client_print_color(id,DontChange,"%s Сейчас начнется Голосование\4.",PREFIX);
                case block_start_vote: return client_print_color(id,DontChange,"%s Идет голосование\4.",PREFIX);
                case block_admin_change: return client_print_color(id,DontChange,"%s Админ\3 %s\1 карту в следующем раунде\4.",PREFIX,(g_pServerVar[m_iStatus] == status_s:box_close) ? "закроет" : "откроет");
        }
        new Float:flCurrent = get_gametime();
        if(g_pServerVar[m_fNext] > flCurrent)
        {
                new ibuf[64];
                getChangeleft(floatround(g_pServerVar[m_fNext] - flCurrent),ibuf,63);
                return client_print_color(id,DontChange,"%s Будет доступно через\3 %s\4.",PREFIX,ibuf);
        }
        else
        {
                new num = IsRatio;

                if(g_pServerVar[m_iVote][id])
                {
                        client_print_color(id,DontChange,"%s Вы уже голосовали\4.\1 Всего голосов [\3%d\1/\3%d\1]",PREFIX,g_pServerVar[m_iAll],num);
                }
                else
                {
                        g_pServerVar[m_iAll]++;
                        g_pServerVar[m_iVote][id] = 1;

                        new name[32];
                        get_user_name(id,name,31);
                        client_print_color(0,DontChange + id,"%s\3 %s \1написал \3/mode\4.\1 Проголосовали за %s карты [\3%d\1/\3%d\1]",PREFIX,name,(g_pServerVar[m_iStatus] == status_s:box_close) ? "открытие" : "закрытие",g_pServerVar[m_iAll],num);

                        if(num <= g_pServerVar[m_iAll])
                        {
                                g_pServerVar[m_iCount] = 5;
                                g_pServerVar[m_iBlocked] = blocked_s:block_vote;
                                client_print_color(0,DontChange,"%s Голосование начнется через\3 10 \1секунд\4.",PREFIX);
                                set_task(10.0,"taskidMenu",TASK_MODE_START);
                        }
                }
        }
        return 0;
}
public taskidMenu()
{
        if(0 < g_pServerVar[m_iCount]--)
        {
                new menu[128],speak[24];

                num_to_word(g_pServerVar[m_iCount] + 1,speak,23);
                client_cmd(0,"spk \"fvox/%s\"",speak);

                formatex(menu,127,"\\dОпрос: %s карту?\nначнется через %d секунд\n\n1. Да\n2. Нет",(g_pServerVar[m_iStatus] == status_s:box_close) ? "Открыть" : "Закрыть",g_pServerVar[m_iCount] + 1);
                show_menu(0,0x3,menu,2,"Mode Menu");
                set_task(1.0,"taskidMenu",TASK_MODE_START);
        }
        else
        {
                new menu[128];
                g_pServerVar[m_iBlocked] = 2;
                formatex(menu,127,"\\wОпрос:\\y %s карту?\n\n\\r1.\\w Да\n\\r2.\\w Нет",(g_pServerVar[m_iStatus] == status_s:box_close) ? "Открыть" : "Закрыть");
                set_task(20.0,"taskidResult",TASK_MODE_VOTE);
                show_menu(0,0x3,menu,18,"Mode Menu");
        }
}
public modemenu(id,key)
{
        if(g_pServerVar[m_iBlocked] == blocked_s:block_vote)
        {
                return client_cmd(id,"slot%d",key + 1);
        }
        new name[32];
        get_user_name(id,name,31);
        client_print_color(0,DontChange + id,"\3%s \1:  [\4 %s \1]",name,key ? "Против" : "Согласен");
        g_pServerVar[m_iVoting][key]++;
        return 0;
}
public taskidResult()
{
        g_pServerVar[m_iAll] = 0;
        g_pServerVar[m_fNext] = _:(get_gametime() + (VOTE_TIMEWAIT * 60.0));
        for(new id = 1; id <= g_pServerVar[m_iMaxpl]; id++)
        {
                g_pServerVar[m_iVote][id] = 0;
        }
        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] ^= status_s:box_close;
                client_print_color(0,DontChange,"%s Согласны \4-\1 [\3%d\1] \4|\1 Против \4-\1 [\3%d\1] \4|\1 Всего \4-\1 [\3%d\1]",PREFIX,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,"%s Карта будет\3 %s\1 в следующем раунде\4.",PREFIX,(g_pServerVar[m_iStatus] == status_s:box_close) ? "закрыта" : "открыта");
        }
        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(0,DontChange,"%s Согласны \4-\1 [\3%d\1] \4|\1 Против \4-\1 [\3%d\1] \4|\1 Всего \4-\1 [\3%d\1]",PREFIX,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,"%s Не удачное голосование\4.",PREFIX);
        }
        else
        {
                g_pServerVar[m_iBlocked] = blocked_s:block_none;
                client_print_color(0,DontChange,"%s Не удачное голосование\4.",PREFIX);
        }
}
public cmdMenuBox(id,level,cid)
{
        if(!IsUserFlags(id,level))
        {
                return 0;
        }
        if(!g_pServerVar[m_iThink])
        {
                g_pServerVar[m_iThink] = register_think(CLASSNAME_WALL,"pfnThink");
        }
        return showMainEditMenu(id);
}
showMainEditMenu(id)
{
        new menu[512];
        formatex(menu,511,
                "\\yСоздание блока\n\\dБлоки: %d\n\n\\r1.%s Создать блок\n\\r2.%s Удалить блок\n\\r3.%s %s блок\n\n\n\\r4.%s %s\n\\r5.%s Настройки\n\\r6.%s Стенки: %s\n\\r7.\\w Онлайн: \\y%d\n\\r8.\\w Noclip: \\d%s\n\n\\r9.%s Сохранить всё\n\\r0.\\w Выход",
                g_pServerVar[m_iBox],
                g_pServerVar[m_iEntid] > 0 ? "\\d" : "\\w",
                g_pServerVar[m_iBox] == 0 ? "\\d" : "\\w",
                g_pServerVar[m_iBox] == 0 ? "\\d" : "\\w",
                g_pServerVar[m_iEntid] == 0 ? "Изменить" : "Сохранить",
                g_pServerVar[m_iEntid] == 0 ? "\\d Плотность:" : "\\w Плотность:\\y",
                g_pServerVar[m_iSolid] ? "SOLID_BBOX" : "SOLID_NOT",
                g_pServerVar[m_iEntid] == 0 ? "\\d" : "\\w",
                g_pServerVar[m_iBox] == 0 ? "\\d" : "\\w",
                (g_pServerVar[m_iStatus] == status_s:box_close) ? "\\dСкрыть" : "\\yПоказать",
                g_pServerVar[m_iOnline],
                entity_get_int(id,EV_INT_movetype) == MOVETYPE_NOCLIP ? "Да" : "Нет",
                (g_pServerVar[m_iBox] == 0 || g_pServerVar[m_iEntid] > 0) ? "\\d" : "\\w"
        );
        return show_menu(id,0x3FF,menu,-1,"Main Edit Menu");
}
public mainEditHandler(id,key)
{
        switch(key)
        {
                case 0:
                {
                        if(g_pServerVar[m_iEntid] > 0)
                        {
                                client_print(id,print_center,"* Вы не закончили изменения прыдыдущего блока *");
                                goto ret0;
                        }
                        new Float:p_origin[coord_s],ent = CreateWall(.bParse = false);
                        entity_get_vector(id,EV_VEC_origin,p_origin);

                        g_pServerVar[m_iBox]++;
                        g_pServerVar[m_iEntid] = ent;
                        p_origin[z] += 32.0;

                        #if defined STATE_USE
                                state stpfnThink:Enabled;
                        #endif

                        entity_set_vector(ent,EV_VEC_origin,p_origin);
                        entity_set_vector(ent,EV_VEC_rendercolor,Vector(255.0,100.0,100.0));
                }
                case 1:
                {
                        new ent,dummy;
                        get_user_aiming(id,ent,dummy);
                        if(is_valid_ent(ent))
                        {
                                new classname[32];
                                entity_get_string(ent,EV_SZ_classname,classname,31);
                                if(equali(classname,CLASSNAME_WALL))
                                {
                                        if(--g_pServerVar[m_iBox] < 0)
                                        {
                                                g_pServerVar[m_iBox] = 0;
                                        }
                                        if(g_pServerVar[m_iEntid] == ent)
                                        {
                                                g_pServerVar[m_iEntid] = 0;
                                        }
                                        remove_entity(ent);
                                        client_print(id,print_center,"* Блок \"SOLID_BBOX\" удален *");
                                }
                                else client_print(id,print_center,"* Блок не найден *");
                        }
                        else if(is_valid_ent(g_pServerVar[m_iEntid]))
                        {
                                new ent = g_pServerVar[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(id,EV_VEC_absmin,v_absmins);
                                entity_get_vector(id,EV_VEC_absmax,v_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(ent,EV_VEC_absmin,e_absmin);
                                entity_get_vector(ent,EV_VEC_absmax,e_absmax);

                                if(VectorDT(e_absmin,e_absmax,v_absmins,v_absmaxs))
                                {
                                        g_pServerVar[m_iBox]--;
                                        g_pServerVar[m_iEntid] = 0;
                                        client_print(id,print_center,"* Блок \"%s\" удален *",(entity_get_int(ent,EV_INT_solid) == SOLID_NOT) ? "SOLID_NOT" : "SOLID_BBOX");
                                        remove_entity(ent);
                                }
                        }
                        else client_print(id,print_center,"* Блок не найден *");

                        #if defined STATE_USE
                        if(g_pServerVar[m_iEntid] == 0)
                        {
                                state stpfnThink:Disabled;
                        }
                        #endif
                }
                case 2:
                {
                        if(is_valid_ent(g_pServerVar[m_iEntid]))
                        {
                                #if defined STATE_USE
                                        state stpfnThink:Disabled;
                                #endif
                                entity_set_int(g_pServerVar[m_iEntid],EV_INT_solid,SOLID_BBOX);
                                entity_set_vector(g_pServerVar[m_iEntid],EV_VEC_rendercolor,Vector(0.0,0.0,0.0));
                                entity_set_size(g_pServerVar[m_iEntid],g_pServerBox[m_fMins],g_pServerBox[m_fMaxs]);

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

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

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

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

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

                                client_print(id,print_center,"* Свойства блока сохранены *");
                        }
                        else
                        {
                                new ent,body;
                                get_user_aiming(id,ent,body);
                                if(is_valid_ent(ent))
                                {
                                        new classname[32];
                                        entity_get_string(ent,EV_SZ_classname,classname,31);
                                        if(equali(classname,CLASSNAME_WALL))
                                        {
                                                #if defined STATE_USE
                                                        state stpfnThink:Enabled;
                                                #endif
                                                g_pServerVar[m_iEntid] = ent;

                                                entity_get_vector(ent,EV_VEC_mins,g_pServerBox[m_fMins]);
                                                entity_get_vector(ent,EV_VEC_maxs,g_pServerBox[m_fMaxs]);

                                                entity_get_vector(ent,EV_VEC_origin,g_pServerBox[m_fOrigin]);
                                                entity_get_vector(ent,EV_VEC_angles,g_pServerBox[m_fAngles]);

                                                g_pServerVar[m_fScale] = _:(entity_get_float(ent,EV_FL_scale));

                                                entity_set_int(ent,EV_INT_solid,SOLID_NOT);
                                                entity_set_float(ent,EV_FL_nextthink,get_gametime() + 0.1);
                                                entity_set_vector(ent,EV_VEC_rendercolor,Vector(255.0,100.0,100.0));
                                                entity_set_size(ent,g_pServerBox[m_fMins],g_pServerBox[m_fMaxs]);
                                                client_print(id,print_center,"* Блок готов для изменения #%d *",ent);
                                        }
                                        else client_print(id,print_center,"* Блок не найден *");
                                }
                                else client_print(id,print_center,"* Блок не найден *");
                        }
                }
                case 3:
                {
                        if(!g_pServerVar[m_iEntid])
                        {
                                client_print(id,print_center,"* Вы должны для начала создать блок *");
                                goto ret0;
                        }
                        entity_set_float(g_pServerVar[m_iEntid],EV_FL_nextthink,get_gametime() + 0.1);
                        entity_set_int(g_pServerVar[m_iEntid],EV_INT_solid,(g_pServerVar[m_iSolid] ^= 1) ? SOLID_BBOX : SOLID_NOT);
                        entity_set_size(g_pServerVar[m_iEntid],g_pServerBox[m_fMins],g_pServerBox[m_fMaxs]);

                        client_print(id,print_center,"* Установлено свойство: \"%s\" *",g_pServerVar[m_iSolid] ? "SOLID_BBOX" : "SOLID_NOT");
                }
                case 4:
                {
                        if(!g_pServerVar[m_iEntid])
                        {
                                client_print(id,print_center,"* Для начала создайте блок *");
                                goto ret0;
                        }
                        return showSettingsMenu(id);
                }
                case 5:
                {
                        if(g_pServerVar[m_iBox])
                        {
                                showBoxDeveloper((g_pServerVar[m_iStatus] ^= status_s:box_close));
                        }
                }
                case 6:
                {
                        if(++g_pServerVar[m_iOnline] > g_pServerVar[m_iMaxpl])
                        {
                                g_pServerVar[m_iOnline] = 0;
                        }
                }
                case 7:
                {
                        if(is_user_alive(id))
                        {
                                entity_set_int(id,EV_INT_movetype,(entity_get_int(id,EV_INT_movetype) == MOVETYPE_NOCLIP) ? MOVETYPE_WALK : MOVETYPE_NOCLIP);
                        }
                }
                case 8:
                {
                        if(!g_pServerVar[m_iBox])
                        {
                                client_print(id,print_center,"* Для начала создайте блок *");
                        }
                        else if(g_pServerVar[m_iEntid])
                        {
                                client_print(id,print_center,"* Закончьте Создание/Изменения текущего блока *");
                        }
                        else boxSave(id);
                }
                case 9:
                {
                        return 0;
                }
        }
        ret0:
        return showMainEditMenu(id);
}
showSettingsMenu(id)
{
        new menu[512],len;
        len = formatex(menu,511,"\\yСоздание блока \\d>>\\w Настройки\n");
        switch(g_pServerVar[m_iSetting])
        {
                case 0:
                {
                        new Float:iSize = (g_pServerVar[m_iType] == 0) ? 10.0 : (g_pServerVar[m_iType] == 1) ? 5.0 : (g_pServerVar[m_iType] == 2) ? 1.0 : 0.1;
                        len += formatex(menu[len],511 - len,"\nЛокация:\\y  %0.1f  %0.1f  %0.1f\n\n\\r1.\\w X\\y++\n\\r2.\\w Y\\y++\n\\r3.\\w Z\\y++\n\n\\r4.\\w X\\r--\n\\r5.\\w Y\\r--\n\\r6.\\w Z\\r--\n\n\\r7.\\w Интервал:\\y x%0.1f",
                        g_pServerBox[m_fOrigin][x],
                        g_pServerBox[m_fOrigin][y],
                        g_pServerBox[m_fOrigin][z],iSize);
                }
                case 1:
                {
                        new Float:iSize = (g_pServerVar[m_iType] == 0) ? 45.0 : (g_pServerVar[m_iType] == 1) ? 15.0 : (g_pServerVar[m_iType] == 2) ? 1.0 : 0.5;
                        len += formatex(menu[len],511 - len,"\nУглы:\\y  %0.1f  %0.1f  %0.1f\n\n\\r1.\\w X\\y++\n\\r2.\\w Y\\y++\n\\r3.\\w Z\\y++\n\n\\r4.\\w X\\r--\n\\r5.\\w Y\\r--\n\\r6.\\w Z\\r--\n\n\\r7.\\w Интервал:\\y x%0.1f",
                        g_pServerBox[m_fAngles][x],
                        g_pServerBox[m_fAngles][y],
                        g_pServerBox[m_fAngles][z],iSize);
                }
                case 2:
                {
                        new Float:iSize = (g_pServerVar[m_iType] == 0) ? 10.0 : (g_pServerVar[m_iType] == 1) ? 5.0 : (g_pServerVar[m_iType] == 2) ? 1.0 : 0.5;
                        len += formatex(menu[len],511 - len,"\nРазмеры:  \\w[\\r Mins \\y  %0.1f  %0.1f  %0.1f  \\w]\t[\\r Maxs\\y  %0.1f  %0.1f  %0.1f  \\w]\n\n\\r1.\\w X\\y++\n\\r2.\\w Y\\y++\n\\r3.\\w Z\\y++\n\n\\r4.\\w X\\r--\n\\r5.\\w Y\\r--\n\\r6.\\w Z\\r--\n\n\\r7.\\w Интервал:\\y x%0.1f",
                        g_pServerBox[m_fMins][x],
                        g_pServerBox[m_fMins][y],
                        g_pServerBox[m_fMins][z],
                        g_pServerBox[m_fMaxs][x],
                        g_pServerBox[m_fMaxs][y],
                        g_pServerBox[m_fMaxs][z],iSize);
                }
                case 3:
                {
                        new Float:iSize = ((g_pServerVar[m_iType] == 0) ? 0.5 : (g_pServerVar[m_iType] == 1) ? 0.1 : (g_pServerVar[m_iType] == 2) ? 0.01 : 0.005) + 0.000001;
                        switch(g_pServerVar[m_iType])
                        {
                                case 0,1:
                                        len += formatex(menu[len],511 - len,"\nСкайл:\\y  %0.1f\n\n\\r1.\\w %0.1f\\y++\n\\r2.\\w %0.1f\\r--\n\n\n\n\n\n\n\\r7.\\w Интервал:\\y x%0.1f",
                                        g_pServerVar[m_fScale],iSize,iSize,iSize);

                                case 2:
                                        len += formatex(menu[len],511 - len,"\nСкайл:\\y  %0.2f\n\n\\r1.\\w %0.2f\\y++\n\\r2.\\w %0.2f\\r--\n\n\n\n\n\n\n\\r7.\\w Интервал:\\y x%0.2f",
                                        g_pServerVar[m_fScale],iSize,iSize,iSize);

                                case 3:
                                        len += formatex(menu[len],511 - len,"\nСкайл:\\y  %0.3f\n\n\\r1.\\w %0.3f\\y++\n\\r2.\\w %0.3f\\r--\n\n\n\n\n\n\n\\r7.\\w Интервал:\\y x%0.3f",
                                        g_pServerVar[m_fScale],iSize,iSize,iSize);
                        }
                }
        }
        formatex(menu[len],511 - len,"\n\\r8.\\w Действие:\\y %s\n\\r9.\\w Спрайт:\\y %s\n\n\\r0.\\w Выход",(g_pServerVar[m_iSetting] == 0) ? "Координаты" : (g_pServerVar[m_iSetting] == 1) ? "Угол" : (g_pServerVar[m_iSetting] == 2) ? "Размер плотности" : "Размер спрайта",(g_pServerVar[m_iSprite] == 0) ? "Надпись" : (g_pServerVar[m_iSprite] == 1) ? "Стенка" : "Пусто");
        return show_menu(id,(g_pServerVar[m_iSetting] < 3) ? 0x3FF : 0x3C3,menu,-1,"Setting Menu");
}
public settingHandler(id,key)
{
        if(key == 9)
        {
                return;
        }
        entity_get_vector(g_pServerVar[m_iEntid],EV_VEC_origin,g_pServerBox[m_fOrigin]);
        entity_get_vector(g_pServerVar[m_iEntid],EV_VEC_angles,g_pServerBox[m_fAngles]);
        entity_get_vector(g_pServerVar[m_iEntid],EV_VEC_maxs,g_pServerBox[m_fMaxs]);
        g_pServerVar[m_fScale] = _:(entity_get_float(g_pServerVar[m_iEntid],EV_FL_scale));

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

                                        if(g_pServerVar[m_iSprite] > 1)
                                        {
                                                switch(g_pServerVar[m_iSetting])
                                                {
                                                        case 1: g_pServerVar[m_iSetting] = 2;
                                                        case 3: g_pServerVar[m_iSetting] = 0;
                                                }
                                        }
                                }
                        }
                }
                case 1:
                {
                        new Float:iSize = (g_pServerVar[m_iType] == 0) ? 45.0 : (g_pServerVar[m_iType] == 1) ? 15.0 : (g_pServerVar[m_iType] == 2) ? 1.0 : 0.5;
                        switch(key)
                        {
                                case 0: g_pServerBox[m_fAngles][x] += iSize;
                                case 1: g_pServerBox[m_fAngles][y] += iSize;
                                case 2: g_pServerBox[m_fAngles][z] += iSize;
                                case 3: g_pServerBox[m_fAngles][x] -= iSize;
                                case 4: g_pServerBox[m_fAngles][y] -= iSize;
                                case 5: g_pServerBox[m_fAngles][z] -= iSize;
                                case 6:
                                {
                                        if(++g_pServerVar[m_iType] > 3)
                                                g_pServerVar[m_iType] = 0;
                                }
                                case 7:
                                {
                                        if(++g_pServerVar[m_iSetting] > 3)
                                                g_pServerVar[m_iSetting] = 0;

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

                                        if(g_pServerVar[m_iSprite] > 1)
                                        {
                                                switch(g_pServerVar[m_iSetting])
                                                {
                                                        case 1: g_pServerVar[m_iSetting] = 2;
                                                        case 3: g_pServerVar[m_iSetting] = 0;
                                                }
                                        }
                                }
                        }
                }
                case 3:
                {
                        new Float:iSize = (g_pServerVar[m_iType] == 0) ? 0.5 : (g_pServerVar[m_iType] == 1) ? 0.1 : (g_pServerVar[m_iType] == 2) ? 0.01 : 0.005;
                        switch(key)
                        {
                                case 0:        g_pServerVar[m_fScale] += iSize;
                                case 1:        g_pServerVar[m_fScale] -= iSize;
                                case 6:
                                {
                                        if(++g_pServerVar[m_iType] > 3)
                                                g_pServerVar[m_iType] = 0;
                                }
                                case 7:
                                {
                                        if(++g_pServerVar[m_iSetting] > 3)
                                                g_pServerVar[m_iSetting] = 0;
                                }
                        }

                }
        }
        switch(key)
        {
                case 8:
                {
                        if(is_valid_ent(g_pServerVar[m_iEntid]))
                        {
                                if(++g_pServerVar[m_iSprite] > 2)
                                {
                                        g_pServerVar[m_iSprite] = 0;
                                }
                                new iFlags = entity_get_int(g_pServerVar[m_iEntid],EV_INT_effects);
                                if(g_pServerVar[m_iSprite] > 1)
                                {
                                        entity_set_int(g_pServerVar[m_iEntid],EV_INT_effects,iFlags|EF_NODRAW);
                                }
                                else
                                {
                                        if(iFlags & EF_NODRAW)
                                        {
                                                entity_set_int(g_pServerVar[m_iEntid],EV_INT_effects,iFlags&~EF_NODRAW);
                                        }
                                }
                                entity_set_float(g_pServerVar[m_iEntid],EV_FL_frame,float(g_pServerVar[m_iSprite]));
                        }
                }
        }
        if(g_pServerVar[m_fScale] < 0.000001)
        {
                g_pServerVar[m_fScale] = _:0.000001;
        }
        if(g_pServerBox[m_fMaxs][x] < 1.0)
        {
                g_pServerBox[m_fMaxs][x] = 1.0;
        }
        else if(g_pServerBox[m_fMaxs][y] < 1.0)
        {
                g_pServerBox[m_fMaxs][y] = 1.0;
        }
        else if(g_pServerBox[m_fMaxs][z] < 1.0)
        {
                g_pServerBox[m_fMaxs][z] = 1.0;
        }
        if(g_pServerBox[m_fAngles][x] >= 360.0 || g_pServerBox[m_fAngles][x] <= -360.0)
        {
                g_pServerBox[m_fAngles][x] = 0.0;
        }
        if(g_pServerBox[m_fAngles][y] >= 360.0 || g_pServerBox[m_fAngles][y] <= -360.0)
        {
                g_pServerBox[m_fAngles][y] = 0.0;
        }
        if(g_pServerBox[m_fAngles][z] >= 360.0 || g_pServerBox[m_fAngles][z] <= -360.0)
        {
                g_pServerBox[m_fAngles][z] = 0.0;
        }

        g_pServerBox[m_fMins][x] = -g_pServerBox[m_fMaxs][x];
        g_pServerBox[m_fMins][y] = -g_pServerBox[m_fMaxs][y];
        g_pServerBox[m_fMins][z] = -g_pServerBox[m_fMaxs][z];

        entity_set_float(g_pServerVar[m_iEntid],EV_FL_scale,g_pServerVar[m_fScale]);
        entity_set_vector(g_pServerVar[m_iEntid],EV_VEC_angles,g_pServerBox[m_fAngles]);
        entity_set_float(g_pServerVar[m_iEntid],EV_FL_nextthink,get_gametime() + 0.1);
        entity_set_int(g_pServerVar[m_iEntid],EV_INT_solid,g_pServerVar[m_iSolid] ? SOLID_BBOX : SOLID_NOT);

        entity_set_size(g_pServerVar[m_iEntid],g_pServerBox[m_fMins],g_pServerBox[m_fMaxs]);
        entity_set_vector(g_pServerVar[m_iEntid],EV_VEC_origin,g_pServerBox[m_fOrigin]);

        showSettingsMenu(id);
}
getChangeleft(time,output[],len)
{
        if(time > 0)
        {
                new minute = 0,second = 0;

                second = time;

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

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

                if(minute > 0)
                {
                        getEnding(minute,"минут","минута","минуты",21,ending);
                        formatex(ibuf[++num],32,"%i \1%s",minute,ending);
                }
                if(second > 0)
                {
                        getEnding(second,"секунд","секунда","секунды",21,ending);
                        formatex(ibuf[++num],32,"%i \1%s",second,ending);
                }
                switch(num)
                {
                        case 0: formatex(output,len,"%s",ibuf[0]);
                        case 1: formatex(output,len,"%s и\3 %s",ibuf[0],ibuf[1]);
                }
        }
        else formatex(output,len,"0 \1секунд");
}
getEnding(num,const a[],const b[],const c[],lenght,output[])
{
        new num100 = num % 100,num10 = num % 10,ibuf[22];
        if(num100 >= 5 && num100 <= 20 || num10 == 0 || num10 >= 5 && num10 <= 9)
        {
                copy(ibuf,21,a);
        }
        else if(num10 == 1)
        {
                copy(ibuf,21,b);
        }
        else if(num10 >= 2 && num10 <= 4)
        {
                copy(ibuf,21,c);
        }
        return formatex(output,lenght,"%s",ibuf);
}
boxSave(id)
{
        if(file_exists(g_pServerVar[m_szFile]))
        {
                delete_file(g_pServerVar[m_szFile]);
        }
        new ibuf[1024],Float:frame,Float:p_origin[coord_s],Float:p_angles[coord_s],Float:p_maxs[coord_s],Float:p_scale,p_sprite,count,ent = -1;
        formatex(ibuf,1023,"ONLINE=%d",g_pServerVar[m_iOnline]);               
        write_file(g_pServerVar[m_szFile],ibuf,0);
        while((ent = find_ent_by_class(ent,CLASSNAME_WALL)))
        {
                if(g_pServerVar[m_iEntid] == ent)
                {
                        continue;
                }
                entity_get_vector(ent,EV_VEC_origin,p_origin);
                entity_get_vector(ent,EV_VEC_angles,p_angles);
                entity_get_vector(ent,EV_VEC_maxs,p_maxs);

                p_scale = entity_get_float(ent,EV_FL_scale);
                frame = entity_get_float(ent,EV_FL_frame);

                p_sprite = floatround(frame);

                formatex(ibuf,1023,"\"%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_maxs[x],p_maxs[y],p_maxs[z],p_scale,p_sprite);
                write_file(g_pServerVar[m_szFile],ibuf,-1);
                count++;
        }
        if(id && count > 0)
        {
                client_print(id,print_center,"* Успешно сохранено *");
        }
}
boxLoad()
{
        new ibuf[2048],key[32],value[32],p_origin[coord_s][6],p_angles[coord_s][6],p_maxs[coord_s][6],p_scale[6],p_sprite[6];
        new file = fopen(g_pServerVar[m_szFile],"r");
        while(!feof(file))
        {
                fgets(file,ibuf,2047);
                if(!ibuf[0] || ibuf[0] == ';')
                {
                        continue;
                }
                trim(ibuf);
                strtok(ibuf,key,31,value,31,'=');

                if(equal(key,"ONLINE"))
                {
                        g_pServerVar[m_iOnline] = str_to_num(value);
                        continue;
                }

                parse(ibuf,
                p_origin[x],5,
                p_origin[y],5,
                p_origin[z],5,
                p_angles[x],5,
                p_angles[y],5,
                p_angles[z],5,
                p_maxs[x],5,
                p_maxs[y],5,
                p_maxs[z],5,
                p_scale,5,
                p_sprite,5);

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

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

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

                g_pServerBox[m_fMins][x] = -g_pServerBox[m_fMaxs][x];
                g_pServerBox[m_fMins][y] = -g_pServerBox[m_fMaxs][y];
                g_pServerBox[m_fMins][z] = -g_pServerBox[m_fMaxs][z];

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

                CreateWall(.bParse = true);
                g_pServerVar[m_iBox]++;
        }
        return fclose(file);
}
checkNumPlayers()
{
        static iNum;
        iNum = 0;

        for(new index = 1; index <= g_pServerVar[m_iMaxpl]; index++)
        {
                if(!is_user_connected(index) || !IsUserTeam(index))
                {
                        continue;
                }
                iNum++;
        }
        return iNum;
}
showBoxDeveloper(status_s:st)
{
        new iEnt = -1;
        while((iEnt = find_ent_by_class(iEnt,CLASSNAME_WALL)))
        {
                entity_set_int(iEnt,EV_INT_solid,st == status_s:box_close ? SOLID_BBOX : SOLID_NOT);

                if(g_pServerVar[m_iEntid] == iEnt || entity_get_float(iEnt,EV_FL_frame) > 1.0)
                {
                        continue;
                }
                static iFlags;
                iFlags = entity_get_int(iEnt,EV_INT_effects);
                entity_set_int(iEnt,EV_INT_effects,st == status_s:box_close ? iFlags &~ EF_NODRAW : iFlags|EF_NODRAW);
        }
}
showBox(status_s:st,bool:bShow)
{
        new iEnt = -1;
        while((iEnt = find_ent_by_class(iEnt,CLASSNAME_WALL)))
        {
                entity_set_int(iEnt,EV_INT_solid,st == status_s:box_close ? SOLID_BBOX : SOLID_NOT);

                if(entity_get_float(iEnt,EV_FL_frame) > 1)
                {
                        continue;
                }
                static iFlags;
                iFlags = entity_get_int(iEnt,EV_INT_effects);
                entity_set_int(iEnt,EV_INT_effects,st == status_s:box_close ? iFlags &~ EF_NODRAW : iFlags|EF_NODRAW);
        }
        switch(st)
        {
                case box_open:
                {
                        #if defined STATE_USE
                        state stMode:Disabled;
                        #endif
                        if(bShow)
                        {
                                set_dhudmessage(COLOR_MAP_OPEN,MESSAGE_MAP_STATUS,2,0.1,2.0,0.05,0.2);
                                show_dhudmessage(0,"Карта открыта");
                        }
                }
                case box_close:
                {
                        #if defined STATE_USE
                        state stMode:Enabled;
                        #endif
                        if(bShow)
                        {
                                set_dhudmessage(COLOR_MAP_CLOSE,MESSAGE_MAP_STATUS,2,0.1,2.0,0.05,0.2);
                                show_dhudmessage(0,"Карта закрыта");
                        }
                }
        }
}
CreateWall(bool:bParse)
{
        new ent = create_entity("func_wall");

        if(!is_valid_ent(ent))
        {
                return 0;
        }
        entity_set_string(ent,EV_SZ_classname,CLASSNAME_WALL);
        entity_set_int(ent,EV_INT_movetype,MOVETYPE_FLY);

        if(bParse)
        {
                entity_set_model(ent,SPRITE_WALL);
                entity_set_size(ent,g_pServerBox[m_fMins],g_pServerBox[m_fMaxs]);

                entity_set_float(ent,EV_FL_scale,g_pServerVar[m_fScale]);
                entity_set_vector(ent,EV_VEC_angles,g_pServerBox[m_fAngles]);
                entity_set_int(ent,EV_INT_solid,SOLID_BBOX);

                if(g_pServerVar[m_iSprite] > 1)
                {
                        entity_set_int(ent,EV_INT_effects,entity_get_int(ent,EV_INT_effects)|EF_NODRAW);
                }
                entity_set_float(ent,EV_FL_frame,float(g_pServerVar[m_iSprite]));
                entity_set_int(ent,EV_INT_rendermode,kRenderTransAdd);
                entity_set_float(ent,EV_FL_renderamt,175.0);
                entity_set_vector(ent,EV_VEC_origin,g_pServerBox[m_fOrigin]);
        }
        else
        {
                g_pServerBox[m_fAngles][x] = 0.0;
                g_pServerBox[m_fAngles][y] = 0.0;
                g_pServerBox[m_fAngles][z] = 0.0;

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

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

                g_pServerVar[m_fScale] = _:0.250;

                entity_set_model(ent,SPRITE_WALL);
                entity_set_size(ent,g_pServerBox[m_fMins],g_pServerBox[m_fMaxs]);

                entity_set_float(ent,EV_FL_scale,g_pServerVar[m_fScale]);
                entity_set_vector(ent,EV_VEC_angles,g_pServerBox[m_fAngles]);
                entity_set_int(ent,EV_INT_solid,SOLID_NOT);

                entity_set_float(ent,EV_FL_frame,float(g_pServerVar[m_iSprite]));

                entity_set_int(ent,EV_INT_rendermode,kRenderTransAdd);
                entity_set_float(ent,EV_FL_renderamt,175.0);

                entity_set_float(ent,EV_FL_nextthink,get_gametime() + 0.1);

                return ent;
        }
        return 0;
}


venyn 03-11-2017 09:10

Re: Translate this plugin in english
 
up

Godofwar 03-11-2017 09:21

Re: Translate this plugin in english
 
You dont need to push it. Send exact the Shit what u want to translate.. u postet a full Plugin, nobody will search in that Plugin what is another Language :)

venyn 03-12-2017 08:13

Re: Translate this plugin in english
 
the plugin contains in Russian about everything that is important, not just a phrase ... ...

venyn 03-14-2017 03:15

Re: Translate this plugin in english [I pay]
 
up

3axap 03-15-2017 01:11

Re: Translate this plugin in english [I pay]
 
Can i see actual english and russian version of plugin?

venyn 03-17-2017 07:31

Re: Translate this plugin in english [I pay]
 
only in Russian, we have ...


All times are GMT -4. The time now is 18:00.

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