Обучение и помощь по скриптингу для MIRDOBRO777

Сообщения
494
Реакции
341
Помог
11 раз(а)
Я так полагаю, нужно дать движку понять, что свойство изменено.
То же самое, если изменить member m_iAccount, но hud не обновится, нужно заслать мессагу Money (разумеется, что тут проще юзать rg_add_account, это просто пример).
Тут что-то по аналогии нужно сделать.

На самом деле в твоём случае можно сделать все проще.

Создаешь глобальную переменную.
Код:
new bool: g_bIsEnableNightVision[MAX_PLAYERS+1];

Функция, где нужно выключить ночное видение.
Код:
if(get_member(id, m_bNightVisionOn))
{
    g_bIsEnableNightVision[id] = true;
    client_cmd(id, "nightvision");
}

Функция, где ты ловишь команду nightvision, блокируешь ее и показываешь свое меню.
Код:
{
    if(g_bIsEnableNightVision[id])
        return PLUGIN_CONTINUE;
    else
    {
        // показываешь свое меню
        g_bIsEnableNightVision[id] = false;
        return PLUGIN_HANDLED;
    }
}

Дешево и сердито.
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
Vaqtincha, абсолютли верно. Я почему-то пропустил эту мессагу, когда смотрел список.

Накидал такой сток:
Код:
stock rg_nightvision_toggle(pPlayer, iNvgToggle = 1, bool: bIsItemSuite)
{
    static const iMsgNVGToggle = 111; // without get_user_msgid("NVGToggle");

    if(bIsItemSuite)
        set_member(pPlayer, m_bHasNightVision, iNvgToggle);

    set_member(pPlayer, m_bNightVisionOn, bIsItemSuite);

    message_begin(MSG_ONE, iMsgNVGToggle, .player = pPlayer);
    write_byte(iNvgToggle);
    message_end();
}
iNvgToggle: 1 - включить, 0 - отключить ночное видение.
bool: bIsItemSuite: true - выдать ночное видение, false - забрать ночное видение.
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
d3m37r4, возможно.
Чего действительно в стоке у меня не хватает, это добавить чек наблюдателей (я думал, что это движком учитывается) и возможно воспроизведение звука (опционально).
В принципе пример для ТСа есть, пусть от этого уже сам пляшет.
 
Сообщения
113
Реакции
26
bizon, правильней оригинальный код геймлибы воспроизвести.
Если не затруднит, то можно пример?

bizon, сделал по примеру использования сочетания команды и меню. Просто таким образом я могу убирать противное стандартное зеленое свечение, а вот через сток все четко работает, но не убирается зелень...
И в дополнение, я не очень пока еще дружу с мессагами, да и капризные они, чуть что сервак падает (у меня пока еще именно так), а можно в твой сток добавить возможность менять цвет свечения НВ?
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Сообщения
113
Реакции
26
Всем здравия!
Ребята, появился вопрос на тему нативов.
Можно ли, чтобы плагин смог работать без требуемого натива? Например:
Код:
 native get_player_points(id);
В плагине есть проверка:
Код:
 if(get_player_points(id) == ЛЮБОЕ ЧИСЛО) {
Обычно плагин не запускается, если отсутствует плагин с требуемым нативом, а можно сделать проверку на отсутствие натива и отключать только часть кода (определенные функции)?
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Ответ на Ваш вопрос:
можно сделать проверку на отсутствие натива и отключать только часть кода (определенные функции)?
MIRDOBRO777 Да, это возможно таким способом:
Код:
public plugin_natives() {
    set_native_filter("native_filter")  // Этим регистрируем фильтр
}

public native_filter(name[], index) {
    if (equal(name, "get_player_points")) { // Здесь проверяем имя натива, и если именно он вызвал проблему - игнорируем его.
        return PLUGIN_HANDLED
    }

    return PLUGIN_CONTINUE
}
При обращении к нативу get_player_points() обращающийся плагин не будет выдавать ошибку, и как в следствии продолжит работу.
 
Сообщения
657
Реакции
562
Предупреждения
8
Помог
9 раз(а)
SergeyShorokhov, очеень старый приём. Как по мне лучше пусть выдаст ошибку чем тонны вопросов.
 

d3m37r4

111111
Сообщения
1,451
Реакции
1,177
Помог
10 раз(а)
Vaqtincha, под условие добавить вывод сообщения в консоль/логи и т.д. перед возвращением PLUGIN_HANDLED, так и кейс автора будет выполнен, и будет уведомление об отсутствии натива.
 
Сообщения
657
Реакции
562
Предупреждения
8
Помог
9 раз(а)
d3m37r4, Гениально. А как плагин без этого натива будет выполнять свою функцию?
Зачем лог вести с этими проверками если амхмод сам прекрасно это делает.
23 Июл 2023
Есть предел "защиты идиота"
23 Июл 2023
Ради этого усложнять код не стоит.
 

d3m37r4

111111
Сообщения
1,451
Реакции
1,177
Помог
10 раз(а)
Vaqtincha, амхх стопает плагин как и сказал MIRDOBRO777 ему нужно продолжить работу плагина, без той части кода, в которой используется натив.1690090005629.png
 
Сообщения
657
Реакции
562
Предупреждения
8
Помог
9 раз(а)
Albertio, совершенно верно.
23 Июл 2023
Я знаю про этот натив но скинул свой вариант (который более функционален) для примера.
 
Сообщения
113
Реакции
26
Спасибо всем, кто подсказал решение вопроса нативов.
Прошу подсказать, может кто сталкивался с вопросом тысячных секунд. Вот мой костыль:
Код:
stock get_format_time(Float:fUnixTime) {
    static szFormat[24], iTime;

    iTime = floatround(fUnixTime, floatround_floor);

    formatex(szFormat, cm(szFormat), "%d:%d:%.3f", iTime / 3600 % 60, iTime / 60 % 60, float(iTime % 60) + (fUnixTime - float(iTime)));

    return szFormat;
}
Есть ли решение лучше?
 
Сообщения
113
Реакции
26
Здравствуйте!
Подскажите, пожалуйста, как можно сделать свое меню на стандартную клиентскую команду "buy"?
Если убираю время закупки, то вообще ничего не происходит, а с корзинкой (зоной закупки) просто открывается стандартное меню покупки оружия.
 

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

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