Page 1 of 1

Ne compilina

Posted: 2014 Jul 18 17:56
by v1rus
Nezinau kur beda. Pagelbekit.

Code: Select all

#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_COMMENCINGpublic GameCommencing(){    g_pServerVar[m_iBlocked] = blocked_s:block_commencing;    showBox((g_pServerVar[m_iStatus] = status_s:box_open),.bShow = false);}#endifpublic 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_DUST2public 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_USESTATEMENT_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_USESTATEMENT_FALLBACK(pfnThink,0,stpfnThink:Disabled)#endif #if defined WEAPONBOX_PUSHpublic 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_USESTATEMENT_FALLBACK(pfnTouchWeaponBox,0,stMode:Disabled)#endif#endif #if defined MODE_DESCRIPTONpublic 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_USESTATEMENT_FALLBACK(pfnGetGameDescription,0,stMode:Disabled)#endif#endif #if defined MODE_TOUCHMESSAGEpublic 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_USESTATEMENT_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;}
Image

Re: Ne compilina

Posted: 2014 Aug 01 13:02
by ArtHa123
Nutrink #include <dhudmessage>.

Arba įsikelk į includes aplankalą dhudmessage.inc

Re: Ne compilina

Posted: 2014 Aug 06 09:41
by v1rus
Aciu.