Поднятие оружия по флагу

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
50
Реакции
1
Помог
1 раз(а)
Привет всем. Хотелось бы понять в чём проблема. Я в исходнике кастомного оружия прописал код( который нашёл на просторах интернета ). После этого кода, оружие не работает. Может что-то надо изменить или надо другой код? Буду благодарен, если поможете!
 

Вложения

Сообщения
839
Реакции
519
Помог
12 раз(а)
где дебаг информация
на каком этапе плагин перестает работать
 
Сообщения
50
Реакции
1
Помог
1 раз(а)
BalbuR, Он просто не работает после того, как я добавил код в исходник
 
Сообщения
3,582
Реакции
1,569
Помог
137 раз(а)
Mem4ik, что значит просто не работает? Не работать он может по разному
 
Сообщения
50
Реакции
1
Помог
1 раз(а)
#include <zombieplague>
#include <fakemeta_util>

public plugin_init() {
RegisterHam(Ham_Touch, "weaponbox", "Ham_PlayerTouch");
}

public Ham_PlayerTouch(iItem, iPlayer)
{
if(!pev_valid(iItem) || !is_user_alive(iPlayer) || zp_get_user_zombie(iPlayer))
return HAM_IGNORED;

new szModelName[32];
pev(iItem, pev_model, szModelName, charsmax(szModelName));

if(equal(szModelName, MODEL_W))
{
if(!(get_user_flags(iPlayer) & ACCESS_FLAG))
{
static Float:flLastTouch[33];
new Float:flGameTime = get_gametime();

if(flLastTouch[iPlayer] < flGameTime)
{
flLastTouch[iPlayer] = flGameTime + 3.0;
client_print(iPlayer, print_chat, "Чтобы взять данный предмет, нужны определенные права!");

return HAM_SUPERCEDE;
}
}
}

return HAM_IGNORED;
}
2 Янв 2024
Nordic Warrior, Не выдаётся просто оружие. Если убрать код ,который добавил - то опять выдаётся. Просто хотелось бы, чтобы обычные игрока не смогли подбирать оружие
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Mem4ik, удалить ваши правки, добавить проверку
Код:
public CmdGive(id) {
#if defined ACCESS_FLAG
    if (~get_user_flags(id) & ACCESS_FLAG) {
        return PLUGIN_HANDLED;
    }
#endif
    //code;
}
Раскоментировать эту строку //#define WEAPON_CAN_TOUCH_ONLY_OWNER
и заменить это
Код:
return get_entvar(weaponbox, var_owner) == id ? HAM_IGNORED : HAM_SUPERCEDE;
на это
Код:
return get_user_flags(id) & ACCESS_FLAG ? HAM_IGNORED : HAM_SUPERCEDE;
 
Последнее редактирование:
Сообщения
50
Реакции
1
Помог
1 раз(а)
Code_0xABC, В исходнике есть уже проверка
2 Янв 2024
Code_0xABC, Сработало, спасибо. Можно сделать, чтобы Текст сверху писался, что нельзя подобрать?
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Mem4ik,
Код:
-//#define WEAPON_CAN_TOUCH_ONLY_OWNER // Поднять сможет только владелец. Закоментировать если не нужно
+#define WEAPON_CAN_TOUCH_ONLY_ACCESS// Поднять сможет только админ. Закоментировать если не нужно

#if defined WEAPON_CAN_TOUCH_ONLY_ACCESS
public HookWeaponBoxTouch(const weaponbox, const id) {
    new weapon = getWeaponBoxWeapon(weaponbox);

    if(weapon == NULLENT || WeaponIdType:get_member(weapon, m_iId ) != WEAPON_ID || !IsCustomWeapon(weapon))
        return HAM_IGNORED;

    if(~get_user_flags(id) & ACCESS_FLAG) {
        client_print(id, print_chat, "Чтобы взять данный предмет, нужны определенные права!");
        return HAM_SUPERCEDE;
    }

    return HAM_IGNORED;
}
#endif
 
Сообщения
657
Реакции
562
Предупреждения
8
Помог
9 раз(а)
Code_0xABC, Не надо засорять канал и чат. Нужна задержка.
 
Сообщения
1,082
Реакции
58
Помог
11 раз(а)
Vaqtincha, это ясно, не все же делать за него, он даже не пытается разобраться, да и он это делал уже в своей попытке подобное что ему надо
Код:
+
#if AMXX_VERSION_NUM < 183
    const MAX_PLAYERS = 32;
#endif

+const Float:f_delay = 2.0;
-client_print(id, print_chat, "Чтобы взять данный предмет, нужны определенные права!");

+
static Float:flLastTouch[MAX_PLAYERS +1];

if(flLastTouch[id] < get_gametime()) {
    client_print(id, print_chat, "Чтобы взять данный предмет, нужны определенные права!");
    flLastTouch[id] = get_gametime() +f_delay;
}
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.

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

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