BLOG [questions] Вопросы от maFFyoZZyk, или над чем я ломаю голову.

Сообщения
494
Реакции
341
Помог
11 раз(а)
maFFyoZZyk, индекс того, на кого смотришь, можешь получить из ивента без всяких get_user_aiming.

Код:
#include <amxmodx>
#include <reapi>

new g_iUserAimingIndex[MAX_PLAYERS+1];

public plugin_init()
{
    register_event("StatusValue", "EventStatusValueShow", "be", "1=2", "2!0");
    register_event("StatusValue", "EventStatusValueHide", "be", "1=1", "2=0");

    RegisterHookChain(RG_CBasePlayer_UseEmpty, "CBasePlayer_UseEmpty", .post = true);
}

public EventStatusValueShow(pPlayer)
{
    // https://wiki.alliedmods.net/Half-Life_1_Game_Events#StatusValue
    g_iUserAimingIndex[pPlayer] = read_data(2);
}

public EventStatusValueHide(pPlayer)
{
    g_iUserAimingIndex[pPlayer] = 0;
}

public CBasePlayer_UseEmpty(pPlayer)
{
    if(!is_user_alive(pPlayer) || !is_user_alive(g_iUserAimingIndex[pPlayer]))
        return;

    client_print_color(pPlayer, print_team_default, "Смотришь на:^4 %n", g_iUserAimingIndex[pPlayer]);
}
Только обращай внимание на квар mp_playerid. Хз как отключение показа текста на кого смотришь повлияет на обработку ивента, не проверял и не вникал.
 
Сообщения
333
Реакции
290
Помог
9 раз(а)
индекс того, на кого смотришь, можешь получить из ивента
там еще и player health можно получить..
а если для public EventStatusValueShow(pPlayer) убрать "2!0", то
register_event("StatusValue", "EventStatusValueHide", "be", "1=1", "2=0"); вообще не нужен
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
zhorzh78, я ему поэтому ссылочку и оставил в функции, чтоб прочитал про параметры.
 
Сообщения
775
Реакции
293
Помог
11 раз(а)
register_event("StatusValue", "EventStatusValueShow", "be", "1=2", "2!0");
т.е. register_event("StatusValue", "EventStatusValueShow", "be", "1=2", "2=3");, где
2 - id игрока на которого смотришь (read_data(2))
3 - сколько у игрока здоровья(read_data(3))
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
maFFyoZZyk, верно.
1 - флаг
2 - индекс игрока, на которого смотришь
3 - здоровье этого игрока

Я же дал ссылку на описание ивента, читай, там всё написано о параметрах.
 
Сообщения
775
Реакции
293
Помог
11 раз(а)
bizon, я про то, я правильно вызов написал, если хочу получить данные параметры
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
т.е. register_event("StatusValue", "EventStatusValueShow", "be", "1=2", "2=3");
2 параметр - индекс игрока.
С такой проверкой будет вызываться только для игрока, индекс которого - 3.
Так и задумано или дичь сделал?
 
Сообщения
775
Реакции
293
Помог
11 раз(а)
bizon, дичь сделал, я просто пока не понимаю эту магию чисел, даже после того как прочитал
26 Мар 2023
Объясните мне вот эти 1=2 2=3 и вообще что может быть и как оно живет
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
maFFyoZZyk, это параметры. Сколько угодно можно добавлять таких проверок.

Код:
"1=1" - Первый параметр должен быть равен 1
"2!0" - Второй параметр должен быть не равен 0
"3>0" - Третий параметр должен быть больше 0
"4&C4" - Четвертый параметр должен содержать "C4" (для параметра-строки)
Если это делать в коллбэке, то выглядело бы так:
Код:
public event_CallBack(pPlayer)
{
    // "1=1"
    new iParam1;
    iParam1 = read_data(1);

    if(iParam1 != 1)
        return;

    // "2!0"
    new iParam2;
    iParam2 = read_data(2);

    if(iParam2 == 0)
        return;

    // "3>0"
    new iParam3;
    iParam3 = read_data(3);

    if(iParam3 <= 0)
        return;

    // "4&C4"
    new szParam4[16];
    read_data(4, szParam4, charsmax(szParam4));

    if(!contain(szParam4, "C4"))
        return;
}
А так ты просто заранее эти проверки указываешь в функции register_event, начиная с 4 аргумента функции.
 
Сообщения
494
Реакции
341
Помог
11 раз(а)
Все эти 4 параметра и значения для проверки если что просто взял из головы.
Говорю на всякий случай, а то вдруг подумаешь, что они относятся к событию "StatusValue".
Это я чисто тебе для примера и понимания.
 
Сообщения
775
Реакции
293
Помог
11 раз(а)
bizon, нет, я понял что это работает в register event
 
Сообщения
3,579
Реакции
1,569
Помог
137 раз(а)
maFFyoZZyk, так же, для более лучшего восприятия я рекомендую использовать register_event_ex(), так как он позволяет выводить флаги читабельными константами, вместо букв.
 
Сообщения
775
Реакции
293
Помог
11 раз(а)
там еще и player health можно получить..
Да, там так написано. Но new iHealth = read_data(3); всегда равен 0
3 Апр 2023
И все плагины какие я видел, даже те которые переписывают все в худ, они в статусе получают хп игрока, через натив
3 Апр 2023
P.s. пробовал как int так и float
 
Сообщения
775
Реакции
293
Помог
11 раз(а)
Продолжаем разговор.
1. Что лучше, вариант использующий set_task или делать как предлагает Flymic24 тут
2. Я заказал V_ модель с боди группами и анимациями
Что делаю не так?
Код:
        if(get_user_flags(id) & read_flags(g_Cvar[IMK_MP_GIRL_ACCESS]))
        {
            set_entvar(id, var_viewmodel, VIEW_MDL);
            set_entvar(id, var_body, 1);
            set_entvar(id, var_sequence, 0);
        }
        else
        {
            set_entvar(id, var_viewmodel, VIEW_MDL);
            set_entvar(id, var_body, 0);
            set_entvar(id, var_sequence, 0);
        }
Работает только первая боди группа и 1 анимация (таких условий 2)
 
Сообщения
594
Реакции
350
Предупреждения
1
Помог
9 раз(а)
maFFyoZZyk, потому что не так просто сделать v_ боди, если и можно, то с багами
 
Сообщения
594
Реакции
350
Предупреждения
1
Помог
9 раз(а)
maFFyoZZyk, что значит не заменяешь
 

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

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