Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Admin Gag \ Admin Gag Ip

, Позволит админу заткнуть игрока на некоторое время.
Статус пользователя -=xXx=-
сообщение 27.6.2008, 14:33
Сообщение #21


Стаж: 18 лет

Сообщений: 3
Благодарностей: 1
Полезность: 0

пацаны неробит он у меня я затыкал парнишку неробит он тут же может говарить и пробал аллталк выключать беполезно
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Kaifolom
сообщение 29.6.2008, 17:13
Сообщение #22


Стаж: 18 лет

Сообщений: 350
Благодарностей: 83
Полезность: 209

Цитата(MOLOT @ 30.3.2008, 14:00) *
Если изпользовать Admin Gag по имени то у кого ник с пробеломи или значками они не блокируються

Заключай ник в кавычки " "
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Эдьбан
сообщение 29.6.2008, 19:05
Сообщение #23


Стаж: 18 лет

Сообщений: 239
Благодарностей: 18
Полезность: 1

Парни а есть такой плагин чтоб игрока в чате блокировало чтоб писать немог :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя *Silence*
сообщение 30.6.2008, 16:42
Сообщение #24


Стаж: 18 лет

Сообщений: 249
Благодарностей: 50
Полезность: 323

Меценат Меценат

А это что ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Deag1y
сообщение 19.9.2008, 23:02
Сообщение #25


Стаж: 18 лет

Сообщений: 1733
Благодарностей: 771
Полезность: 851

Попробуйте https://c-s.net.ua/forum/index.php?showtopic=11239
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sunsir
сообщение 15.10.2008, 19:35
Сообщение #26
Стаж: 17 лет

Сообщений: 55
Благодарностей: 5
Полезность: 72

Цитата(moba @ 18.6.2008, 8:57) *
Помогите передать чтобы работала по STEAM ID



+1 нужно чтоб работала по STEAM ID
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sunsir
сообщение 19.10.2008, 23:25
Сообщение #27
Стаж: 17 лет

Сообщений: 55
Благодарностей: 5
Полезность: 72

Цитата(sunsir @ 15.10.2008, 19:35) *
+1 нужно чтоб работала по STEAM ID



что у всех нон-стим? некому не надо?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя nksp
сообщение 4.1.2010, 21:32
Сообщение #28


Стаж: 17 лет

Сообщений: 21
Благодарностей: 1
Полезность: 37

У меня получается только чат заблочить. А в микрофон люди говорят спокойно !!!!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Kaifolom
сообщение 3.3.2010, 8:43
Сообщение #29


Стаж: 18 лет

Сообщений: 350
Благодарностей: 83
Полезность: 209

Цитата(sunsir @ 15.10.2008, 20:35) *
+1 нужно чтоб работала по STEAM ID

Значение amx_gag_by_authid "1" в теме https://c-s.net.ua/forum/topic16684.html позволяет банить по authid (подходит для steam серверов)

Отредактировал: Kaifolom, - 3.3.2010, 8:43
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Awesomemz
сообщение 27.9.2010, 17:47
Сообщение #30
Стаж: 15 лет

Сообщений: 120
Благодарностей: 5
Полезность: < 0

CrazyFool, а можно ли гагнуть игрока по подсети?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя TYLER[t]
сообщение 25.8.2011, 9:29
Сообщение #31


Стаж: 14 лет

Сообщений: 43
Благодарностей: 26
Полезность: 461

AMX Gag Ip Menu
Код
// © modified by kalash1k
#include <amxmodx>
#include <amxmisc>
#include <engine>

#define DEFAULT_TIME 300.0 // In Seconds

enum (<<= 1)
{
    GAG_CHAT = 1,
    GAG_TEAMSAY,
    GAG_VOICE
}

enum _:GagData
{
    GAG_USERIP[16],
    GAG_TIME,
    GAG_START,
    GAG_FLAGS
}

new g_szIp[33][16]
new g_iThinker, g_iGagged
new bool:g_bColoredMenus, Trie:g_tArrayPos, Array:g_aGagData, Array:g_aGagTimes
new g_iMenuOption[33], g_iMenuPosition[33], g_iMenuPlayers[33][32]

public plugin_init()
{
    register_plugin("AMXX Gag", "1.3", "xPaw & Exolent")

    register_clcmd("say", "CmdSay")
    register_clcmd("say_team", "CmdTeamSay")

    register_concmd("amx_gag", "CmdGagPlayer", ADMIN_KICK, "<nick or #userid> <time> <a|b|c>")
    register_concmd("amx_ungag", "CmdUnGagPlayer", ADMIN_KICK, "<nick or #userid")
    
    register_concmd("amx_gagmenu", "CmdGagMenu", ADMIN_KICK, "- displays gag menu")
    register_srvcmd("amx_gag_times", "CmdSetBanTimes")

    register_menucmd(register_menuid("Gag Menu"), 1023, "ActionGagMenu")
    register_message(get_user_msgid("SayText"), "MessageSayText")

    g_tArrayPos = TrieCreate()
    g_aGagData  = ArrayCreate(GagData)

    g_aGagTimes = ArrayCreate()
    g_bColoredMenus = bool:colored_menus()
    
    // Gag times for the gag menu (amx_gagmenu)
    // Default values: 60 300 600 1800 3600 7200 86400

    // Load up standart times
    ArrayPushCell(g_aGagTimes, 60);
    ArrayPushCell(g_aGagTimes, 300);
    ArrayPushCell(g_aGagTimes, 600);
    ArrayPushCell(g_aGagTimes, 1800);
    ArrayPushCell(g_aGagTimes, 3600);
    ArrayPushCell(g_aGagTimes, 7200);
    ArrayPushCell(g_aGagTimes, 86400);


    new szClassname[] = "gag_thinker"

    g_iThinker  = create_entity("info_target")
    entity_set_string(g_iThinker, EV_SZ_classname, szClassname)

    register_think(szClassname, "FwdThink")
}

public CmdSetBanTimes()
{
    new iArgs = read_argc()

    if(iArgs <= 1)
    {
        server_print("Usage: amx_gag_times <time1> [time2] [time3] ...")
        return;
    }

    ArrayClear(g_aGagTimes)

    new szBuffer[32], iTime
    for(new i = 1; i < iArgs; i++)
    {
        read_argv( i, szBuffer, 31)
        iTime = str_to_num(szBuffer)
        if( iTime > 86400 ){
        server_print("[AMXX GAG] Time more then 86400 is not allowed!")
        continue;
    }
        ArrayPushCell( g_aGagTimes, iTime )
    }
}
public plugin_end()
{
    TrieDestroy(g_tArrayPos)
    ArrayDestroy(g_aGagData)
    ArrayDestroy(g_aGagTimes)
}

public client_putinserver(id)
{
    get_user_ip(id, g_szIp[id], 15, 1)
    
    if(CheckGagFlag(id, GAG_VOICE))
        set_speak(id, SPEAK_MUTED)
}

public client_disconnect(id)
{
    if(TrieKeyExists(g_tArrayPos, g_szIp[id]))
    {
        new szName[32]
        get_user_name(id, szName, 31)
        
        new iPlayers[32], iNum, iPlayer
        get_players(iPlayers, iNum, "ch")
        
        for(new i; i < iNum; i++)
        {
            iPlayer = iPlayers[i]
            
            if(get_user_flags(iPlayer) & ADMIN_KICK)
                client_print(iPlayer, print_chat, "[AMXX] Gagged player ^"%s<%s>^" has disconnected!", szName, g_szIp[id])
        }
    }
    
    g_szIp[id][0] = '^0'
}

public client_infochanged(id)
{
    if(!CheckGagFlag(id, (GAG_CHAT | GAG_TEAMSAY)))
        return
    
    static const name[] = "name"
    
    static szNewName[32], szOldName[32]
    get_user_info(id, name, szNewName, 31)
    get_user_name(id, szOldName, 31)
    
    if(!equal(szNewName, szOldName))
    {
        client_print(id, print_chat, "[AMXX] Gagged players cannot change their names!")
        
        set_user_info(id, name, szOldName)
    }
}

public MessageSayText(iMsgId, iDest, iReceiver)
{
    static const Cstrike_Name_Change[] = "#Cstrike_Name_Change"
    
    static szMessage[sizeof(Cstrike_Name_Change) + 1]
    get_msg_arg_string(2, szMessage, sizeof(szMessage) - 1)
    
    if(equal(szMessage, Cstrike_Name_Change))
    {
        static szName[32], id
        for(new i = 3; i <= 4; i++)
        {
            get_msg_arg_string(i, szName, 31)
            
            id = get_user_index(szName)
            
            if(is_user_connected(id))
            {
                if(CheckGagFlag(id, (GAG_CHAT | GAG_TEAMSAY)))
                    return PLUGIN_HANDLED
                
                break
            }
        }
    }
    
    return PLUGIN_CONTINUE
}

public FwdThink(iEntity)
{
    if(!g_iGagged)
        return
    
    new Float:fGametime
    fGametime = get_gametime()
    
    new data[GagData], id, szName[32]
    for(new i = 0; i < g_iGagged; i++)
    {
        ArrayGetArray(g_aGagData, i, data)
        
        if((Float:data[GAG_START] + Float:data[GAG_TIME] - 0.5) <= fGametime)
        {
            id = find_player("d", data[GAG_USERIP])
            
            if(is_user_connected(id)) {
                get_user_name(id, szName, 31)
                
                client_print(0, print_chat, "[AMXX] Player ^"%s^" is no longer gagged.", szName)
            }
            
            DeleteGag(i)
            
            i--
        }
    }
    
    if(!g_iGagged)
        return
    
    new Float:flNextTime = 999999.9
    for(new i = 0; i < g_iGagged; i++)
    {
        ArrayGetArray(g_aGagData, i, data)
        
        flNextTime = floatmin(flNextTime, Float:data[GAG_START] + Float:data[GAG_TIME])
    }
    
    entity_set_float(iEntity, EV_FL_nextthink, flNextTime)
}

public CmdSay(id)
    return CheckSay(id, 0)

public CmdTeamSay(id)
    return CheckSay(id, 1)

CheckSay(id, bTeam)
{
    static iArrayPos
    if(TrieGetCell(g_tArrayPos, g_szIp[id], iArrayPos))
    {
        static data[GagData]
        ArrayGetArray(g_aGagData, iArrayPos, data)
        
        static const iFlags[] = {GAG_CHAT, GAG_TEAMSAY}
        
        if(data[GAG_FLAGS] & iFlags[bTeam])
        {
            static const szTeam[][] = {"", " team"}
            client_print(id, print_center, "** You are gagged from%s chat! **", szTeam[bTeam])
            
            PrintLeftTime(id, Float:data[GAG_TIME], Float:data[GAG_START])
            
            return PLUGIN_HANDLED
        }
    }
    
    return PLUGIN_CONTINUE
}

PrintLeftTime(id, Float:flGagTime, Float:flGaggedAt)
{
    new szInfo[32], iLen, iTime = floatround((flGaggedAt + flGagTime) - get_gametime()), iMinutes = iTime / 60, iSeconds = iTime % 60
    
    if(iMinutes > 0)
        iLen = formatex(szInfo, 31, "%i minute%s", iMinutes, iMinutes == 1 ? "" : "s")
    if(iSeconds > 0)
        formatex(szInfo[iLen], 31 - iLen, "%s%i second%s", iLen ? " and " : "", iSeconds, iSeconds == 1 ? "" : "s")
    
    client_print(id, print_chat, "[AMXX] %s left before your ungag!", szInfo)
}

public CmdGagPlayer(id, iLevel, iCid)
{
    if(!cmd_access(id, iLevel, iCid, 2))
    {
        console_print(id, "Flags: a - Chat | b - Team Chat | c - Voice communications")
        
        return PLUGIN_HANDLED
    }
    
    new szArg[32]
    read_argv(1, szArg, 31)
    
    new iPlayer = cmd_target(id, szArg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS)
    
    if(!iPlayer)
        return PLUGIN_HANDLED
    
    new szName[20]
    get_user_name(iPlayer, szName, 19)
    
    if(TrieKeyExists(g_tArrayPos, g_szIp[iPlayer]))
    {
        console_print(id, "User ^"%s^" is already gagged!", szName)
        
        return PLUGIN_HANDLED
    }
    
    new szFlags[4], Float:flGagTime
    read_argv(2, szArg, 31)
    
    // No time entered
    if(!szArg[0])
    {
        flGagTime = DEFAULT_TIME
        
        formatex(szFlags, 3, "abc")
    }
    else
    {
        // Seconds entered
        if(is_str_num(szArg))
        {
            flGagTime = floatstr(szArg)
            
            if(flGagTime > 86400.0)
                flGagTime = 86400.0
        }
        else
        {
            console_print(id, "The value must be in seconds!")
            
            return PLUGIN_HANDLED
        }
        
        read_argv(3, szArg, 31)
        
        // No flag entered
        if(!szArg[0])
            formatex(szFlags, 3, "abc")
        else
            formatex(szFlags, 3, szArg)
    }
    
    new iFlags = read_flags(szFlags)
    
    new data[GagData]
    data[GAG_START] = _:get_gametime()
    data[GAG_TIME] = _:flGagTime
    data[GAG_FLAGS] = iFlags
    copy(data[GAG_USERIP], 15, g_szIp[iPlayer])
    
    TrieSetCell(g_tArrayPos, g_szIp[iPlayer], g_iGagged)
    ArrayPushArray(g_aGagData, data)
    
    new szFrom[64]
    
    if(iFlags & GAG_CHAT)
        formatex(szFrom, 63, "say")
    
    if(iFlags & GAG_TEAMSAY)
    {
        if(!szFrom[0])
            formatex(szFrom, 63, "say_team")
        else
            format(szFrom, 63, "%s / say_team", szFrom)
    }
    
    if(iFlags & GAG_VOICE)
    {
        set_speak(iPlayer, SPEAK_MUTED)
        
        if(!szFrom[0])
            formatex(szFrom, 63, "voicecomm")
        else
            format(szFrom, 63, "%s / voicecomm", szFrom)
    }
    
    g_iGagged++
    
    new Float:flGametime = get_gametime(), Float:flNextThink
    flNextThink = entity_get_float(g_iThinker, EV_FL_nextthink)
    
    if(!flNextThink || flNextThink > (flGametime + flGagTime))
        entity_set_float(g_iThinker, EV_FL_nextthink, flGametime + flGagTime)
    
    new szInfo[32], szAdmin[20], iTime = floatround(flGagTime), iMinutes = iTime / 60, iSeconds = iTime % 60
    get_user_name(id, szAdmin, 19)
    
    if(!iMinutes)
        formatex(szInfo, 31, "%i second%s", iSeconds, iSeconds == 1 ? "" : "s")
    else
        formatex(szInfo, 31, "%i minute%s", iMinutes, iMinutes == 1 ? "" : "s")
    
    show_activity(id, szAdmin, "Has gagged %s from speaking for %s! (%s)", szName, szInfo, szFrom)
    
    console_print(id, "You have gagged ^"%s^" (%s) !", szName, szFrom)
    
    log_amx("Gag: ^"%s<%s>^" has gagged ^"%s<%s>^" for %i minutes. (%s)", szAdmin, g_szIp[id], szName, g_szIp[iPlayer], floatround(flGagTime / 60), szFrom)
    
    return PLUGIN_HANDLED
}

public CmdUnGagPlayer(id, iLevel, iCid)
{
    if(!cmd_access(id, iLevel, iCid, 2))
        return PLUGIN_HANDLED
    
    new szArg[32]
    read_argv(1, szArg, 31)
    
    if(equali(szArg, "@all"))
    {
        if(!g_iGagged)
        {
            console_print(id, "No gagged players!")
            
            return PLUGIN_HANDLED
        }
        
        while(g_iGagged) DeleteGag(0) // Excellent by Exolent
        
        if(entity_get_float(g_iThinker, EV_FL_nextthink) > 0.0)
            entity_set_float(g_iThinker, EV_FL_nextthink, 0.0)
        
        console_print(id, "You have ungagged all players!")
        
        new szAdmin[32]
        get_user_name(id, szAdmin, 31)
        
        show_activity(id, szAdmin, "Has ungagged all players.")
        
        log_amx("UnGag: ^"%s<%s>^" has ungagged all players.", szAdmin, g_szIp[id])
        
        return PLUGIN_HANDLED
    }
    
    new iPlayer = cmd_target(id, szArg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS)
    
    if(!iPlayer)
        return PLUGIN_HANDLED
    
    new szName[32]
    get_user_name(iPlayer, szName, 31)
    
    new iArrayPos
    if(!TrieGetCell(g_tArrayPos, g_szIp[iPlayer], iArrayPos))
    {
        console_print(id, "User ^"%s^" is not gagged!", szName)
        
        return PLUGIN_HANDLED
    }
    
    DeleteGag(iArrayPos)
    
    new szAdmin[32]
    get_user_name(id, szAdmin, 31)
    
    show_activity(id, szAdmin, "Has ungagged %s.", szName)
    
    console_print(id, "You have ungagged ^"%s^" !", szName)
    
    log_amx("UnGag: ^"%s<%s>^" has ungagged ^"%s<%s>^"", szAdmin, g_szIp[id], szName, g_szIp[iPlayer])
    
    return PLUGIN_HANDLED
}

public CmdGagMenu(id, iLevel, iCid)
{
    if(!cmd_access(id, iLevel, iCid, 1))
    return PLUGIN_HANDLED
    
    g_iMenuOption[id] = 0
    arrayset(g_iMenuPlayers[id], 0, 32)

    DisplayGagMenu(id, g_iMenuPosition[id] = 0)

    return PLUGIN_HANDLED
}

public ActionGagMenu(id, iKey)
{
    switch(iKey)
    {
    case 7:
    {
        ++g_iMenuOption[id]
        g_iMenuOption[id] %= ArraySize(g_aGagTimes)
        DisplayGagMenu(id, g_iMenuPosition[id])
    }
    case 8: DisplayGagMenu(id, ++g_iMenuPosition[id])
    case 9: DisplayGagMenu(id, --g_iMenuPosition[id])
    default:
    {
        new iPlayer = g_iMenuPlayers[id][g_iMenuPosition[id] * 7 + iKey]

        if(TrieKeyExists(g_tArrayPos, g_szIp[iPlayer ]))
            client_cmd(id, "amx_ungag #%i", get_user_userid(iPlayer))

        else
        client_cmd(id, "amx_gag #%i %i", get_user_userid(iPlayer), ArrayGetCell(g_aGagTimes, g_iMenuOption[id]))
        DisplayGagMenu(id, g_iMenuPosition[id])
        }
    }
}

DisplayGagMenu(id, iPosition)
{
    if(iPosition < 0)
    {
    arrayset( g_iMenuPlayers[ id ], 0, 32)
    return
    }

    new iPlayers[32], iNum, iCount, szMenu[512], iPlayer, iFlags, szName[32]
    get_players(iPlayers, iNum, "ch")

    new iStart = iPosition * 7

    if( iStart >= iNum )
    iStart = iPosition = g_iMenuPosition[ id ] = 0

    new iEnd = iStart + 7, iKeys = MENU_KEY_0 | MENU_KEY_8
    new iLen = formatex( szMenu, 511, g_bColoredMenus ? "\rGag Menu\R%i/%i\w^n^n" : "Gag Menu %i %i^n^n", iPosition + 1, (iNum / 7 + ( (iNum % 7) ? 1 : 0 )))

    if(iEnd > iNum) iEnd = iNum

    for(new i = iStart; i < iEnd; ++i)
    {
        iPlayer = iPlayers[i]
        iFlags  = get_user_flags( iPlayer)
        get_user_name(iPlayer, szName, 31)

        if(iPlayer != id && iFlags & ADMIN_IMMUNITY)
        {
            ++iCount

            if(g_bColoredMenus)
            iLen += formatex(szMenu[iLen], 511 - iLen, "\d%i. %s^n", iCount, szName)
            else
            iLen += formatex(szMenu[iLen], 511 - iLen, "#. %s^n", szName)
        }
        else
        {
            iKeys |= (1 << iCount)
            ++iCount

            iLen += formatex(szMenu[iLen], 511 - iLen, g_bColoredMenus ? "\r%i.\w %s\y%s\r%s^n" : "%i. %s%s%s^n", iCount, szName, TrieKeyExists(g_tArrayPos, g_szIp[iPlayer]) ? " GAGGED" : "", (~iFlags & ADMIN_USER ? " *" : ""))
        }
    }

    g_iMenuPlayers[id] = iPlayers

    new iSeconds = ArrayGetCell(g_aGagTimes, g_iMenuOption[id])
    new iTime = iSeconds / 60

    iLen += formatex(szMenu[iLen], 511 - iLen, g_bColoredMenus ? "^n\r8.\w Gag for\y %i\w %s^n" : "^n8. Gag for %i %s^n", (iSeconds > 60 ? iTime : iSeconds), (iSeconds > 60 ? "minutes" : "seconds"))
    if(iEnd != iNum)
    {
        formatex(szMenu[iLen], 511 - iLen, g_bColoredMenus ? "^n\r9.\w More...^n\r0.\w %s" : "^n9. More...^n0. %s", iPosition ? "Back" : "Exit")
        iKeys |= MENU_KEY_9
    }
    else
    formatex(szMenu[iLen], 511 - iLen, g_bColoredMenus ? "^n\r0.\w %s" : "^n0. %s", iPosition ? "Back" : "Exit")

    show_menu(id, iKeys, szMenu, -1, "Gag Menu")
}


CheckGagFlag(const id, const iFlag)
{
    static iArrayPos
    if(TrieGetCell(g_tArrayPos, g_szIp[id], iArrayPos))
    {
        new data[GagData]
        ArrayGetArray(g_aGagData, iArrayPos, data)
        
        return (data[GAG_FLAGS] & iFlag)
    }
    
    return 0
}

DeleteGag(iArrayPos)
{
    static data[GagData]
    ArrayGetArray(g_aGagData, iArrayPos, data)
    
    if(data[GAG_FLAGS] & GAG_VOICE)
    {
        new iPlayer = find_player("d", data[GAG_USERIP])
        if(is_user_connected(iPlayer))
            set_speak(iPlayer, SPEAK_NORMAL)
    }
    
    TrieDeleteKey(g_tArrayPos, data[GAG_USERIP])
    ArrayDeleteItem(g_aGagData, iArrayPos)
    g_iGagged--
    
    for(new i = iArrayPos; i < g_iGagged; i++)
    {
        ArrayGetArray(g_aGagData, i, data)
        TrieSetCell(g_tArrayPos, data[GAG_USERIP], i)
    }
}

i
Уведомление:
Исходный код плагина выкладываем в тегах code /code, иначе ослепнуть можно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя amx_ban ne kanaet
сообщение 9.4.2012, 13:23
Сообщение #32
Стаж: 14 лет

Сообщений: 59
Благодарностей: 2
Полезность: < 0

хм...а как сделать чтобы админы не могли давать gag самим админам?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: