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

Сообщения
113
Реакции
26
Nordic Warrior,
Пытаюсь отловить VGUI-меню покупки оружия через этот хук:
Код:
    RegisterHookChain(RG_ShowVGUIMenu, "RG_ShowVGUIMenu_Pre", false);
Залогировал. Открываю меню выбора команды - логи пишет, а команда "buy" не логирует (VGUI-меню покупок открывается).
 
Сообщения
113
Реакции
26
@fl0wer,так получается, что невозможно сделать свое меню на команду "buy"?
 
Сообщения
336
Реакции
414
Помог
7 раз(а)
/del
 
Последнее редактирование:
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
jocasrb, no, command not sent to server when VGUI.
 
Сообщения
113
Реакции
26
Ребята, спасибо, что откликнулись. Пример по ссылке тоже смотрел.
В примере ниже меню открывается в зоне закупки, после выхода из зоны - закрывается.
Но есть один минус. Когда нажимаешь "B", то на мгновение появляется стандартное VGUI-меню.
Можно сделать, чтобы не было, хоть и не долгого, но появления стандартного меню закупки?
Вот код плагина с основными данными:
Код:
public plugin_init() {
    register_plugin("New Buy Menu", "1.0", "MIRDOBRO777");

    RegisterHookChain(RG_CBasePlayer_PreThink, "@rgPlayerPreThink");
    RegisterHookChain(RG_ShowVGUIMenu, "@ShowVGUIMenu_Pre", .post = false);

    RegisterCmd("client_buy_open", "@BuyWeaponMenu", CONSOLE);
}

#define msgid_BuyClose 136
@rgPlayerPreThink(pId) {
    if(!alive(pId)) return SKIP;

    if(is_player_buyzone(pId)) {
    message_begin(MSG_ONE, msgid_BuyClose, _, pId);
    message_end();
}

    return SKIP;
}

@ShowVGUIMenu_Pre(pId, VGUIMenu:menuType, bitsSlots, szOldMenu[]) {
// Когда нажимаю клавишу "B", то логи не пишет.
// Когда выбираю команду и скин в режиме меню VGUI, то пишет 2 и 26.
// Не отлавливает таким способом VGUI меню покупки оружия
    set_log("", _, "buy_menu", false, "%n^n%d", pId, menuType);

    return SKIP;
}

@BuyWeaponMenu(pId) {
// Открывается меню
}
 
Сообщения
336
Реакции
414
Помог
7 раз(а)
MIRDOBRO777, к сожалению нельзя, ибо меню будет показываться на 1 фрейм. Можно конечно вообще убирать байзоны с карт и тогда не придется выключать стандартные менюшки, но метод не проверен, поэтому не знаю наверняка
 
Сообщения
839
Реакции
519
Помог
12 раз(а)
MIRDOBRO777, к сожалению нельзя, ибо меню будет показываться на 1 фрейм. Можно конечно вообще убирать байзоны с карт и тогда не придется выключать стандартные менюшки, но метод не проверен, поэтому не знаю наверняка
неа, тогда он будет работать от места где ты респавнился в последний раз.
нужно просто создать 1 общую байзону и сделать ее неосязаемой(остальные при этом удалив совсем), тогда иконка buyzone не будет появляться
но опять же команда client_buy_open и прочие вызываться не будут без этой иконки
 
Сообщения
113
Реакции
26
Всем здравия!
Есть массив данных:
Код:
enum _:STATE_PLAYERS {
    StateKills,
    StateDeaths,
    StateAssists
}
new g_iPlayersData[33][STATE_PLAYERS];
Подскажите, пожалуйста, как правильно сохранять и считывать этот массив в одну ячейку SQLite?
То есть не создавать много столбцов для каждого квара, а все данные занести в один столбец.
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
MIRDOBRO777, это плохая практика хранить массивы данных и это приводит к денормализации данных, конкретно в твоем случае этого вообще не нужно, разбей на столбцы. Если уж очень сильно хочется то по моему в sqllite завозили json(могу ошибаться) можешь в нем хранить, но опять таки это излишни. В принципе можно хранить просто строку разделяя ее допустим запятыми, затем парсить, можно так же хранить строку в виде json формата и парсить ее стандартными средствами амхх, но самого типа данных в лайте нету который поддерживает структуры данных
 
Сообщения
113
Реакции
26
Всем здравия!
Сохраняю CheckPoint так:
Код:
    get_entvar(pId, var_origin, g_fPlayerOrigin[pId]);
    get_entvar(pId, var_angles, g_fPlayerAngles[pId]);
Телепортирую так:
Код:
    set_entvar(pId, var_velocity, Float:{0.0, 0.0, 0.0});
    set_entvar(pId, var_origin, g_fPlayerOrigin[pId]);
    set_entvar(pId, var_angles, g_fPlayerAngles[pId]);
    set_entvar(pId, var_fixangle, 1);
После телепортации угол взгляда всегда выравнивается.
Например, сохранил CheckPoint, опустив взгляд вниз, а после TP уже не вниз, а ровно прямо.
Подскажите, пожалуйста, как правильно выставлять сохраненный угол.
P.S. Логировал углы: сохранения CP и после TP - совпадают.
 

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

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