1. Eclipse Пользователь

    Регистрация:
    11.10.15
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    Хочу добавить тег к чату Модератор но не выходит
    Подскажите куда копать?
    PHP:
    /*
    Lite Translit - легкая версия транслита aka Fuck you SkaJlbneJlb :D
    Доп плюшки(отключаются):
    * Блокировка рекламы в чате
    * Теги в чате Гл. Админ | Админ | VIP | Модератор
    * Поддержка системы армейских званий - AES ( http://c-s.net.ua/forum/topic56564.html )
    * Зеленый чат для админов и випов
    Credits:
    * Спасибо serfreeman1337 за помощь по коду и профилирование
    * Спасибо WarDeN4ik и его клавиатуре :D за различные тесты
    * А так же спасибо всем тем, кто помогал тестировать и скидывал баг-репорты
    */
    #include <amxmodx>
    #include <fakemeta>

    // #define ADBLOCK // Блокировка рекламы в чате [ По умолчанию выключен ]
    #define TAGS // Теги в чате Гл. Админ | Админ | VIP [ По умолчанию включен ]
    // #define AES // Поддержка системы армейских званий - AES ( http://c-s.net.ua/forum/topic56564.html ) [ По дефолту выключен ]
    // #define DEF_RUS // Русский язык по умолчанию [ По умолчанию английский ]
    // #define LOG_MESSAGE // Пишет сообщения в логи hlds (<gamedir>/logs) [ Включать только если статистика или плагин пишет чат ]
    #define ADMIN ADMIN_BAN // Флаг доступа для тега "Админ" в чате || Просмотр всего чата
    #if defined TAGS
    #define GL_ADMIN ADMIN_RCON // Флаг доступа для тега "Гл. Админ" в чате
    #define VIP ADMIN_MENU // Флаг доступа для тега "VIP" в чате
    #define EDM ADMIN_ADMIN // Флаг доступа для тега "Модератор" в чате
    // #define GREEN_MSG // Зеленый цвет чата админов и випов [ По умолчанию выключен ]
    new iSetPlayerTagiMessageTag[33][64]
    #endif

    #if defined AES
    #include <aes_main>
    #endif
    #define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
    #define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
    #define clr_bit(%1,%2) %1 &= ~(1 << (%2 & 31))

    new szMessage[191]
    new 
    iPlayerRus[33], iPlayerRusInfo[33]
    new 
    iIgnorePlayer

    #if defined ADBLOCK
    new blockedMsgsCounterapprovedMsgsCounter
    new blocked_msgs[128][192], approved_msgs[128][192]
    #endif

    new const eng[][]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","{","}",":",'"',"<",">","~","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","[","]",";","'",",",".","`","?","/","@","$","^^","&"};
    new const 
    rus[][]={"Ф","И","С","В","У","А","П","Р","Ш","О","Л","Д","Ь","Т","Щ","З","Й","К","Ы","Е","Г","М","Ц","Ч","Н","Я","Х","Ъ","ж","Э","Б","Ю","Ё","ф","и","с","в","у","а","п","р","ш","о","л","д","ь","т","щ","з","й","к","ы","е","г","м","ц","ч","н","я","х","ъ","ж","э","б","ю","ё",",",".","'",";"":","?"};

    public 
    plugin_init()
    {
    register_plugin("Lite Translit""2.3""neygomon")
    register_cvar("lt_version""2.3"FCVAR_SERVER FCVAR_SPONLY)

    new const 
    szRegisterClmd[][] =
    {
    "say /rus""LangRus",
    "say /eng""LangEng",
    "say""Say",
    "say_team""SayTeam"
    }
    for(new 
    asizeof szRegisterClmd+= 2)
    register_clcmd(szRegisterClmd[a],szRegisterClmd[1]);
    }

    #if defined ADBLOCK
    public plugin_cfg()
    {
    new 
    file_path[64], configsdir[64]
    get_localinfo("amxx_configsdir"configsdircharsmax(configsdir))
    formatex(file_path63,"%s/lt_blockmessages.ini"configsdir)
    new 
    file fopen(file_path"rt")
    if(
    file)
    {
    new 
    buffer[192], ij
    while(!feof(file))
    {
    fgets(filebuffer191)
    trim(buffer)

    if(
    buffer[0] == ';') continue

    if(
    buffer[0] != '!')
    {
    blocked_msgs[i++] = buffer
    blockedMsgsCounter
    ++
    }
    else
    {
    buffer[0] = '^x20'
    trim(buffer)
    approved_msgs[j++] = buffer
    approvedMsgsCounter
    ++
    }
    }
    fclose(file)
    }
    else 
    log_to_file("error_lt.log""[Error] File ^"%s^" not found!"file_path)
    }
    #endif

    public client_putinserver(id)
    {
    if(
    is_user_hltv(id) || is_user_bot(id))
    {
    set_bit(iIgnorePlayerid)
    return
    }
    #if defined TAGS
    if(get_bit(iSetPlayerTagid)) return
    switch(
    CheckFlags(id))
    {
    case 
    0iMessageTag[id] = ""
    case 1iMessageTag[id] = "^4[Гл. Админ] "
    case 2iMessageTag[id] = "^4[Админ] "
    case 3iMessageTag[id] = "^4[VIP] "
    case 4iMessageTag[id] = "^4[Модератор] "
    }
    set_bit(iSetPlayerTagid)
    #endif
    #if defined DEF_RUS
    iPlayerRus[id] = true
    #endif
    }

    public 
    client_disconnect(id)
    {
    clr_bit(iIgnorePlayerid)
    #if defined TAGS
    clr_bit(iSetPlayerTagid)
    #endif
    }

    public 
    LangRus(id)
    {
    if(!
    iPlayerRus[id])
    {
    iPlayerRus[id] = true
    PrintMsg
    (id0"^1[^4LT^1] ^4Русский чат ^3активирован!")
    }
    else 
    PrintMsg(id0"^1[^4LT^1] ^4Русский чат ^3уже ^4активирован!")
    }

    public 
    LangEng(id)
    {
    if(
    iPlayerRus[id])
    {
    iPlayerRus[id] = false
    PrintMsg
    (id0"^1[^4LT^1] ^4Английский чат ^3активирован!")
    }
    else 
    PrintMsg(id0"^1[^4LT^1] ^4Английский чат ^3уже ^4активирован!")
    }

    public 
    Say(id)
    return 
    SayHandler(idfalse)

    public 
    SayTeam(id)
    return 
    SayHandler(idtrue)

    public 
    SayHandler(idbool:is_say_team)
    {
    if(
    get_bit(iIgnorePlayerid)) return 0

    read_args
    (szMessagecharsmax(szMessage))
    remove_quotes(szMessage)
    #if defined ADBLOCK
    if(!szMessage[0] || szMessage[0] == '/' || Flood_Control(idszMessage)) return PLUGIN_HANDLED_MAIN // блочим пустое сообщение, слеш и спам в чате
    #else
    if(!szMessage[0] || szMessage[0] == '/') return PLUGIN_HANDLED_MAIN // блочим пустое сообщение и слеш в чате
    #endif
    while(replace_all2(szMessagecharsmax(szMessage), "%""")) {} // фиксим багу с %S%S%S%S%S и им подобными
    if(!iPlayerRusInfo[id])
    {
    if(!
    iPlayerRus[id])
    {
    iPlayerRusInfo[id] = true
    PrintMsg
    (id0"^1[^4LT^1] ^4У ^3Вас ^4есть возможность писать ^3по-русски. ^4Наберите ^3/rus ^4или ^3/eng ^4для переключения.")
    }
    }
    if(
    iPlayerRus[id])
    {
    for(new 
    isizeof engi++)
    while(
    replace_all2(szMessagecharsmax(szMessage), engrus)) {}
    }
    new 
    szFormatedMsg[191], szLenszName[32], iAlive is_user_alive(id), iTeam get_pdata_int(id114)

    get_user_name(idszNamecharsmax(szName))
    if(
    is_say_team)
    {
    switch(
    iTeam)
    {
    case 
    1szLen formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "%s(Террорист) "iAlive "^1" "^1*Мертвый* ")
    case 
    2szLen formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "%s(Мент) "iAlive "^1" "^1*Мертвый* ")
    case 
    3szLen formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^1(Наблюдатель) ")
    }
    }
    else
    {
    if(
    iTeam == 3szLen formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^1(Наблюдатель) ")
    else 
    szLen formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen"%s"iAlive "^1" "^1*Мертвый* ")
    }
    #if defined AES
    static AESLvl[33][64], aStats[AES_ST_END]
    aes_get_player_stats(idaStats)
    aes_get_level_name(aStats[AES_ST_LEVEL], AESLvl[id], 63LANG_SERVER)

    szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen"^4[%s] "AESLvl[id])
    #endif
    #if defined TAGS
    #if defined GREEN_MSG
    if(equal(iMessageTag[id], ""))
    szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen"%s^3%s^1 : "iMessageTag[id], szName)
    else
    szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen"%s^3%s^1 :^4 "iMessageTag[id], szName)
    #else
    szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen"%s^3%s^1 : "iMessageTag[id], szName)
    #endif
    #else
    szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen"^3%s^1 : "szName)
    #endif
    szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen"%s"szMessage)

    static 
    players[32], pcountget_players(playerspcountiAlive "ac" "bc")
    if(
    is_say_team)
    {
    for(new 
    ipcounti++)
    if(
    get_user_flags(players) & ADMIN || (iTeam == get_user_team(players)))
    PrintMsg(playersidszFormatedMsg)
    }
    else
    {
    for(new 
    ipcounti++)
    PrintMsg(playersidszFormatedMsg)
    }
    #if defined LOG_MESSAGE
    new authid[32], userteam[16]
    get_user_authid(idauthid31)
    get_user_team(iduserteam15)
    log_message("^"%s<%d><%s><%s>^" %s ^"%s^""szNameget_user_userid(id), authiduserteamis_say_team "say_team" "say" szMessage)
    #endif
    return PLUGIN_HANDLED
    }

    stock PrintMsg(const iReceiver, const iSender, const szMessage[], any:...)
    {
    new 
    szMsg[191]
    vformat(szMsgcharsmax(szMsg), szMessage4)
    message_begin(MSG_ONE_UNRELIABLE76_iReceiver)
    write_byte(iSender iSender iReceiver)
    write_string(szMsg)
    message_end()
    }
    #if defined ADBLOCK
    bool:Flood_Control(idiMsg[])
    {
    for(new 
    iapprovedMsgsCounteri++)
    if(
    containi(iMsgapproved_msgs) != -1) return false

    static last_msg[33], said_len
    said_len 
    strlen(iMsg)
    if(
    said_len 13 && last_msg[id] == said_len) return true
    last_msg
    [id] = said_len

    for(new iblockedMsgsCounteri++)
    if(
    containi(iMsgblocked_msgs) != -1) return true
    return false
    }
    #endif
    #if defined TAGS
    CheckFlags(id)
    {
    static 
    iFlags
    iFlags 
    get_user_flags(id)
    if(
    iFlags GL_ADMIN) return 1
    else if(iFlags ADMIN) return 2
    else if(iFlags VIP) return 3
    else if(iFlags EDM) return 4
    return 0
    }
    #endif
    // serfreeman1337 fixed. thx =)
    stock replace_all2(string[], len, const what[], const with[])
    {
    new 
    pos
    if((pos contain(stringwhat)) == -1) return 0
    new totalwith_len strlen(with), diff strlen(what) - with_lentotal_len strlen(string), temp_pos
    while(total_len with_len len && replace(string[pos], len poswhatwith) != 0)
    {
    total++
    pos += with_len
    total_len 
    -= diff
    if (pos >= total_len) break
    temp_pos contain(string[pos], what)
    if (
    temp_pos == -1) break
    pos += temp_pos
    }
    return 
    total
    }
     
    Последнее редактирование модератором: 11.10.15
  2. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.169
    Пол:
    Мужской
    тут и так он есть
     
  3. Eclipse Пользователь

    Регистрация:
    11.10.15
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    э
    то уже мною отредактированный , но в чате он пишется просто VIP +еще пропал тег армейских званий , мне кажется что то еще добавить надо , но что именно не вникаю
     
  4. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.169
    Пол:
    Мужской
    его надо поставить просто выше других и все
     
  5. Eclipse Пользователь

    Регистрация:
    11.10.15
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    тоесть выше этой строчки? #define GL_ADMIN
    например так?
    #if defined TAGS
    #define EDM ADMIN_ADMIN // Флаг доступа для тега "Модератор" в чате ( был в конце после VIP
    #define GL_ADMIN ADMIN_RCON // Флаг доступа для тега "Гл. Админ" в чате
    #define VIP ADMIN_MENU // Флаг доступа для тега "VIP" в чате
    // #define GREEN_MSG // Зеленый цвет чата админов и випов [ По умолчанию выключен ]
     
  6. ex3m777 Пользователь

    Регистрация:
    27.02.15
    Сообщения:
    761
    Симпатии:
    334
    Пол:
    Мужской
    VKcom:
    ex3m777
    Skype:
    ex3m777
    Ух ты.. версия 2.3))
     
  7. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.596
    Симпатии:
    4.169
    Пол:
    Мужской
    Eclipse, в коде... в CheckFlags и тд.