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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Блокировка входа за охрану зекам.

Статус пользователя andruha
сообщение 6.8.2015, 4:13
Сообщение #1
Стаж: 11 лет

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

Блок команда работает нормально, но с одним минусом...
Cкрытый текст
В общем когда игроку ставишь блокировку, игроку запрещено играть за охрану и при этом когда он зашел за охрану его не переводит сразу а переводит тогда когда он оживает. И когда нет представителей играющих за охрану, зек (кому было заблокировано играть за охрану) заходящий за охрану начинает как бы флудить т.е. когда игрок заходит за охрану его без конца перебрасывает за зеков и при этом происходит рестарт раунда. А любители так побаловаться весьма раздражающий действуют на игроков сервера. Просьба, если это возможно сделать так чтобы он (игрок кому был заблокирован вход за охрану) вообще не мог переходить за охрану + когда нажимаешь команду заблокировать, можно заблокировать только тех кто играет за охрану а зеков нельзя блок, так не могли бы ещё сделать возможность заблокировать вход и зекам за охрану т.е. не только охране ставить блок играть за охрану но и зекам...

Исходник
Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>

new g_LoadList[81]
new iPlayerBlock[33]

public plugin_init()
{
    register_plugin("[JBU] Block", "1.3", "Avtor/Chlenistonogi")

    RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1)

    register_clcmd("say /block", "BlockMenu")
    register_clcmd("say /unblock", "UnblockMenu")
}

public plugin_cfg()
{
    new g_LoadDir[81]
    get_configsdir(g_LoadDir, charsmax(g_LoadDir))

    formatex(g_LoadList, charsmax(g_LoadList), "%s/jbu_block.ini", g_LoadDir)
}

public client_authorized(id)
{
    if(!is_user_bot(id) || !is_user_hltv(id))
    {
        set_task(0.1, "CheckPlayer", id)
    }
}

public plugin_natives() register_native("jbu_get_user_block", "native_jb_get_user_block", 1)
public native_jb_get_user_block(id) return iPlayerBlock[id]
public client_disconnect(id) iPlayerBlock[id] = false

public CheckPlayer(id)
{
    new szName[64], szSteam[32]
    new szParse[128]
    new iLine, iNum

    get_user_name(id, szName, charsmax(szName))
    get_user_authid(id, szSteam, charsmax(szSteam))

    for(iLine = 0; read_file(g_LoadList, iLine, szParse, charsmax(szParse), iNum); iLine++)
    {
        if(iNum > 0 && szParse[0] != ';')
        {
            if(equal(szName, szParse) || equal(szSteam, szParse))
            {
                iPlayerBlock[id] = true
                break
            }
        }
    }
}

public PlayerSpawn(id)
{
    if(!is_user_alive(id) || !is_user_connected(id)) return PLUGIN_CONTINUE
    if(!iPlayerBlock[id]) return PLUGIN_CONTINUE

    if(get_user_team(id) == 2)
    {
        user_kill(id)
        cs_set_user_team(id, CS_TEAM_T)
        set_task(2.0, "kill_id", id)
        ChatColor(id, "!t[!gJBU!t] Вам заблокирован вход за охранников")
    }
    return PLUGIN_CONTINUE
}

public kill_id(id)
{
    if(is_user_alive(id))
    {
        user_kill(id)
    }
}

public BlockMenu(id)
{
    if(!(get_user_flags(id) & ADMIN_BAN))
    {
        ChatColor(id, "!t[!gJBU!t] !yУ вас недостаточно прав")
        return PLUGIN_HANDLED
    }

    new szTitle[512]

    formatex(szTitle, charsmax(szTitle), "Управление охраной")
    new iMenu = menu_create(szTitle, "BlockMenu_handler")

    new iPlayers[32], szName[32]
    new iPlayer, iNum, iNumCT, iPlayerNum[10]

    get_players(iPlayers, iNum)

    for(new i; i < iNum; i++)
    {
        iPlayer = iPlayers[i]

        if(!is_user_connected( iPlayer ) || iPlayer == id || iPlayerBlock[iPlayer] || get_user_team(iPlayer) != 2)
            continue

        get_user_name(iPlayer, szName, charsmax( szName ))
        num_to_str(iPlayer, iPlayerNum, charsmax( iPlayerNum ))

        if(get_user_flags(iPlayer) & ADMIN_IMMUNITY)
        {
            menu_additem(iMenu, szName, iPlayerNum, ADMIN_ADMIN)
        }else{
            menu_additem(iMenu, szName, iPlayerNum, 0)
        }
        ++iNumCT
    }

    if(!iNumCT)
    {
        ChatColor(id, "!t[!gJBU!t] !yОтсутствуют охранники")
        return PLUGIN_HANDLED
    }

    menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL )
    menu_setprop(iMenu, MPROP_NEXTNAME, "Далее")
    menu_setprop(iMenu, MPROP_BACKNAME, "Назад")
    menu_setprop(iMenu, MPROP_EXITNAME, "Выход")

    menu_display(id, iMenu, 0)
    return PLUGIN_HANDLED
}

public BlockMenu_handler(id, iMenu, iItem)
{
    if(iItem == MENU_EXIT)
    {
        menu_destroy( iMenu )
        return PLUGIN_HANDLED
    }

    new szData[6], szName[64], szAccess, szCallback
    menu_item_getinfo(iMenu, iItem, szAccess, szData, charsmax( szData ), szName, charsmax( szName ), szCallback)

    new iPlayer = str_to_num( szData )

    new szText[512]
    new szNamePlayer[32], szSteamPlayer[32]

    get_user_name(iPlayer, szNamePlayer, charsmax( szNamePlayer ))
    get_user_authid(iPlayer, szSteamPlayer, charsmax( szSteamPlayer ))

    iPlayerBlock[iPlayer] = true

    cs_set_user_team(iPlayer, CS_TEAM_T)
    ExecuteHam(Ham_CS_RoundRespawn, iPlayer)

    formatex(szText, charsmax( szText ), "%s", szSteamPlayer)
    write_file(g_LoadList, szText, -1)
    
    ChatColor(0, "!t[!gJBU!t] !yИгроку !t%s !yзаблокирован вход за охранников", szNamePlayer)

    menu_destroy( iMenu )
    return PLUGIN_HANDLED
}

public UnblockMenu(id)
{
    if(!(get_user_flags(id) & ADMIN_BAN))
    {
        ChatColor(id, "!t[!gJBU!t] !yУ вас недостаточно прав")
        return PLUGIN_HANDLED
    }

    new szTitle[512]

    formatex(szTitle, charsmax( szTitle ), "Управление охраной")
    new iMenu = menu_create(szTitle, "UnblockMenu_handler")

    new iPlayers[32], szName[32]
    new iPlayer, iNum, iNumBlock, iPlayerNum[10]

    get_players(iPlayers, iNum)

    for(new i; i < iNum; i++)
    {
        iPlayer = iPlayers[i]

        if(!is_user_connected( iPlayer ) || iPlayer == id || !iPlayerBlock[iPlayer])
            continue

        get_user_name(iPlayer, szName, charsmax( szName ))
        num_to_str(iPlayer, iPlayerNum, charsmax( iPlayerNum ))

        menu_additem(iMenu, szName, iPlayerNum, 0)
        ++iNumBlock
    }

    if(!iNumBlock)
    {
        ChatColor(id, "!t[!gJBU!t] !yОтсутствуют охранники")
        return PLUGIN_HANDLED
    }

    menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL )
    menu_setprop(iMenu, MPROP_NEXTNAME, "Далее")
    menu_setprop(iMenu, MPROP_BACKNAME, "Назад")
    menu_setprop(iMenu, MPROP_EXITNAME, "Выход")

    menu_display(id, iMenu, 0)
    return PLUGIN_HANDLED
}

public UnblockMenu_handler(id, iMenu, iItem)
{
    if(iItem == MENU_EXIT)
    {
        menu_destroy( iMenu )
        return PLUGIN_HANDLED
    }

    new szData[6], szName[64], szAccess, szCallback
    menu_item_getinfo(iMenu, iItem, szAccess, szData, charsmax( szData ), szName, charsmax( szName ), szCallback)

    new iPlayer = str_to_num( szData )

    new szText[512]
    new szNamePlayer[32], szSteamPlayer[32]
    new szParse[128]
    new iLine, iNum

    get_user_name(iPlayer, szNamePlayer, charsmax( szNamePlayer ))
    get_user_authid(iPlayer, szSteamPlayer, charsmax( szSteamPlayer ))

    iPlayerBlock[iPlayer] = false

    for(iLine = 0; read_file(g_LoadList, iLine, szParse, charsmax( szParse ), iNum); iLine++)
    {
        if(iNum > 0 && szParse[0] != ';')
        {
            if(equal(szNamePlayer, szParse))
            {
                formatex(szText, charsmax( szText ), ";%s", szNamePlayer)
                write_file(g_LoadList, szText, iLine)

                break
            }else
            if(equal(szSteamPlayer, szParse))
            {
                formatex(szText, charsmax( szText ), ";%s", szSteamPlayer)
                write_file(g_LoadList, szText, iLine)

                break
            }
        }
    }

    
    ChatColor(0, "!t[!gJBU!t] !yИгроку !t%s !yразблокирован вход за охранников", szNamePlayer)

    menu_destroy( iMenu )
    return PLUGIN_HANDLED
}

stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all(msg, 190, "!g", "^4")
    replace_all(msg, 190, "!y", "^1")
    replace_all(msg, 190, "!t", "^3")
    
    if (id) players[0] = id; else get_players(players, count, "ch")
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}

Прикрепленный файл  jbu_block.sma ( 6,94 килобайт ) Кол-во скачиваний: 23
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: