Bomb taker(с4_taker.amxx) нельзя забрать бомбу у админа

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
101
Реакции
17
Помог
2 раз(а)
Добрый вечер товарищи.
Подскажите пожалуйста.
Как сделать, чтобы у игрока с флагом(например админа), не могли отобрать с4?
Игрался с get_user_flags, но что-то я делаю не так, и плагин перестает работать.
Код:
// Copyright © 2017 Vaqtincha

// Original Plugin Authors "joaquimandrade and ConnorMcLeod"

/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG START ■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/

#define INFO_HUD_POSITION            -1.0, 0.40        // Позиция худ информера
#define INFO_HUD_COLOR                125, 110, 200    // Цвет худ информера

#define PLAYER_MAX_WAIT_TIME         15    // Время бездействия игрока после которого можно взять его бомбу
// #define BOT_WAIT_TIME_IGNORE            // игнорировать PLAYER_MAX_WAIT_TIME у ботов (от них всегда можно взять бомбу)

/**■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ CONFIG END ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/

#include <amxmodx>
#include <hamsandwich>
#include <reapi>

#define PL_VERSION                 "0.0.1b"

#define PLAYER_USE_RADIUS        75

new g_iHudSync

public plugin_init()
{
    register_plugin("Bomb Taker", PL_VERSION, "Vaqtincha")

    if(bool:get_member_game(m_bMapHasBombTarget))
    {
        RegisterHam(Ham_ObjectCaps, "bot", "CBasePlayer_ObjectCaps", .Post = false)
        RegisterHam(Ham_ObjectCaps, "player", "CBasePlayer_ObjectCaps", .Post = false)
        RegisterHam(Ham_Use, "bot", "CBasePlayer_PlayerUse", .Post = true)
        RegisterHam(Ham_Use, "player", "CBasePlayer_PlayerUse", .Post = true)

        register_event("StatusValue", "Event_StatusValue_Show", "be", "1=3"/*HEALTH*/, "2>0")
        register_event("StatusValue", "Event_StatusValue_Hide", "b", "1=1", "2=0")
       
        g_iHudSync = CreateHudSyncObj()
    }
    else {
        pause("ad")
    }
}

public CBasePlayer_ObjectCaps(const pPlayer)
{
    SetHamReturnInteger(FCAP_ONOFF_USE)
    return HAM_SUPERCEDE
}


public CBasePlayer_PlayerUse(const pPlayer, const pActivator, const pCaller, const use_type, const Float:value)
{
    if(value == 0.0 || !is_user_alive(pActivator) || get_member(pActivator, m_iTeam) != TEAM_TERRORIST)
        return

    if(is_user_alive(pPlayer) && CanUseThisPlayer(pPlayer)) {
        rg_transfer_c4(pPlayer, pActivator)
    }
}

public Event_StatusValue_Hide(const pPlayer) {
    ClearSyncHud(pPlayer, g_iHudSync)
}

public Event_StatusValue_Show(const pPlayer)
{
    if(get_member(pPlayer, m_iTeam) != TEAM_TERRORIST)
        return

    new pTarget, iBody
    get_user_aiming(pPlayer, pTarget, iBody, PLAYER_USE_RADIUS)

    if(pTarget > 0 && iBody > 0 && is_user_alive(pTarget) && CanUseThisPlayer(pTarget))
    {
        set_hudmessage(INFO_HUD_COLOR, INFO_HUD_POSITION, .holdtime = 1.5, .fadeintime = 0.5, .fadeouttime = 0.5)
        ShowSyncHudMsg(pPlayer, g_iHudSync, "Нажмите ^"E^" чтобы взять бомбу")
    }
    else {
        ClearSyncHud(pPlayer, g_iHudSync)
    }
}

stock bool:CanUseThisPlayer(pPlayer)
{
    if(!get_member(pPlayer, m_bHasC4))
        return false

#if defined BOT_WAIT_TIME_IGNORE
    if(is_user_bot(pPlayer))
        return true
#endif

    return bool:((get_gametime() - Float:get_member(pPlayer, m_fLastMovement)) > PLAYER_MAX_WAIT_TIME.0)
}
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
muhycspb, покажи свои попытки сделать.

В теме должны быть опубликованы попытки (diff кода или последовательность действий) самостоятельного поиска решения.
 
Сообщения
101
Реакции
17
Помог
2 раз(а)
Nordic Warrior, из последнего пробовал
Код:
if(is_user_alive(pPlayer) && CanUseThisPlayer(pPlayer)) {
заменять на
Код:
if((is_user_alive(pPlayer) && CanUseThisPlayer(pPlayer))  && (!get_user_flags(pPlayer) & ADMIN_MENU)) {
и
Код:
if(value == 0.0 || !is_user_alive(pActivator) || get_member(pActivator, m_iTeam) != TEAM_TERRORIST)
заменять на
Код:
if(value == 0.0 || !is_user_alive(pActivator) || get_member(pActivator, m_iTeam) != TEAM_TERRORIST || get_user_flags(pPlayer) & ADMIN_MENU)
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
muhycspb, первый вариант почти правильный.
Это битовая операция, поэтому надо либо !(get_user_flags(pPlayer) & ADMIN_MENU), либо ~get_user_flags(pPlayer) & ADMIN_MENU
 
Сообщения
101
Реакции
17
Помог
2 раз(а)
Nordic Warrior, с первым вариантом получилось, все работает, большое спасибо)
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу