REL LUA HoldCMDs

  • Привет! Если твой основной форумник заблокирован - ты можешь оставить заявку в этом разделе: Нажми на меня!, НЕ создавая новый форумный аккаунт.
  • Гость, цивильный бизнес — это твой главный источник крутого ролевого сюжета, уважения и стабильного дохода. Забирай коммерческое предприятие уже сегодня и сделай свое заведение центром тусовки всего сервера!

шкипер

коммерческий банк "валди́с"
Автор темы
2,643
31,525
Не знаю, как разрекламировать. По сути -- биндер, позволяющий открывать машины, инвентарь и телефон по нажатию и удержанию кнопки. Все.

Что еще показать -- вот интерфейс. Прогресс сбрасывается, как только вы отжали кнопку -- ну вы поняли, таких интерфейсов полно.
1787595121203.png

Активация автоматическая. По стандарту кнопка P отвечает за телефон, I за инвентарь, L -- за открытие авто/дома.

В скрипте можно изменить время -- я поставил полсекунды, а можно добавить клавиш. Ищем вот этот блок:

Код:
-- Время удержания изменено на 1 секунду
local BINDS = {
    { key = vkeys.VK_L, cmd = "/lock",  hold_time = 0.5 },
    { key = vkeys.VK_I, cmd = "/inv",   hold_time = 0.5 },
    { key = vkeys.VK_P, cmd = "/phone", hold_time = 0.5 }
}

его очень легко найти, он на восьмой строке.
и можем добавить сюда что угодно:
{ key = vkeys.VK_%любая клавиша%, cmd = "%любая команда%", hold_time = 0.5 },

и эту строчку вставляем предпоследней. потому что в конце строчки, кроме последней должна быть запятая.
Можете так себе забиндить хоть /craft, хоть /cbrake, хоть что угодно, для чего требуется команда.

Если полсекунды кажутся вам слишком быстрыми (а они не такие) -- параметр hold_time изменяете на время в секундах (sic! очень важно)

Для моих хоуми с SW интерфейс будет великоват, но не критично. Это если вдруг кому интересно.

Из зависимостей -- vkeys, imgui. Должны стоять у каждого. Скачять можно в аттачах.

Из подобных мелочей на самом деле складывается хороший игровой опыт. Может быть, если бы да кабы -- может быть бы и кое-что не было столь деревянным по прошествию более чем полугода разработки :^)
 

Вложения

  • holdCMDs.zip
    1.9 KB · Просмотры: 0
Последнее редактирование:

шкипер

коммерческий банк "валди́с"
Автор темы
2,643
31,525
Если чат открыт - скрипт не будет срабатывать?
Код:
    if not sampIsChatInputActive() and not sampIsDialogActive() and not isSampfuncsConsoleActive() then
            local current_time = os.clock()

в теории, он не должен работать с открытым чатом и инпутом вообще (логины/пароли/редактор паме), не должен работать с открытым диалогом и не должен работать с запущенной консолью сф.

на практике я знаю, что он не работает с открытым чатом.
 
  • Нравится
  • Cолидарен
Реакции: vardy и CaliBanging

vardy

Ветеран
841
3,933
Код:
    if not sampIsChatInputActive() and not sampIsDialogActive() and not isSampfuncsConsoleActive() then
            local current_time = os.clock()

в теории, он не должен работать с открытым чатом и инпутом вообще (логины/пароли/редактор паме), не должен работать с открытым диалогом и не должен работать с запущенной консолью сф.

на практике я знаю, что он не работает с открытым чатом.
ради прикола глянул.

при открытых диалогах и запущенной консолью с открытым чатом не работает. аналогично при входе в игру вылазит окно с вводом пароля, туда также нельзя написать - так как буквы печатаются в окно ввода пароля. когда заходишь от имени личного кабинета и выходит выбор персонажа - также нельзя попробовать. но заметил что при открытом инвентаре работает. проверил все открытые возможные диалоговые окна, которые на ум пришли.
 

шкипер

коммерческий банк "валди́с"
Автор темы
2,643
31,525
ради прикола глянул.

при открытых диалогах и запущенной консолью с открытым чатом не работает. аналогично при входе в игру вылазит окно с вводом пароля, туда также нельзя написать - так как буквы печатаются в окно ввода пароля. когда заходишь от имени личного кабинета и выходит выбор персонажа - также нельзя попробовать. но заметил что при открытом инвентаре работает. проверил все открытые возможные диалоговые окна, которые на ум пришли.
инвентарь — это текстдрав. равно как и телефон. не очень уверен что текстдравы как класс определены в опкодах. с другой стороны, что инвентарь, что телефон не управляются с клавиатуры, а следовательно, открыть второй раз, /случайно/, вероятность низка, если не равна нулю.
 
  • Задумчивый
Реакции: vardy

шкипер

коммерческий банк "валди́с"
Автор темы
2,643
31,525
snail matic видимо по приколу придумали

Посмотреть вложение 4796388
а мне кстати почему-то не очень нравится через него. я делал, пруфов не будет. хрен знает.

опять же — см капризный и не везде может работать, а это простое решение. не говоря уже про то, что см весит банально на порядки больше.

у меня сейчас ровно один бинд там стоит — /cc на боковую клавишу мыши. и /pnick кстати тоже вроде стоял.

вообще снейлматик хорош. по сути скрипт конструктор внутри мунлоадера. но это скорее такой эксперимент — а можно ли выдать красивую анимашку и гуй? как оказалось — можно. а у снейлматика с выводом гуя геморрой. не говорю что невозможно, но периодически оно у меня отваливалось.

а ну и суть именно в том чтобы нажать и удержать и получить результат. или не получить если нажал случайно. слабо помню, можно ли такое реализовать в см. даже если поставить функцию-пдейсхолдер с вейтом в 500, вроде как результат будет в любом случае, то есть защиты от случайного нажатия нет. но я могу ошибиться, потому что могу. мне много лет, я стар.
 

mace

Легенда
8,092
91,287
а мне кстати почему-то не очень нравится через него. я делал, пруфов не будет. хрен знает.

опять же — см капризный и не везде может работать, а это простое решение. не говоря уже про то, что см весит банально на порядки больше.

у меня сейчас ровно один бинд там стоит — /cc на боковую клавишу мыши. и /pnick кстати тоже вроде стоял.

вообще снейлматик хорош. по сути скрипт конструктор внутри мунлоадера. но это скорее такой эксперимент — а можно ли выдать красивую анимашку и гуй? как оказалось — можно. а у снейлматика с выводом гуя геморрой. не говорю что невозможно, но периодически оно у меня отваливалось.

а ну и суть именно в том чтобы нажать и удержать и получить результат. или не получить если нажал случайно. слабо помню, можно ли такое реализовать в см. даже если поставить функцию-пдейсхолдер с вейтом в 500, вроде как результат будет в любом случае, то есть защиты от случайного нажатия нет. но я могу ошибиться, потому что могу. мне много лет, я стар.
никогда не имел проблем с этим биндером, никогда случайно ни на что не нажимал, все кнопки это либо комбинации клавиш, либо находятся по правую сторону клавиатуры, ну и при использовании чата бинды естественно не срабатывают
 

мейдкор

в лёгких тает дым — мой кислород
221
617
Код:
    if not sampIsChatInputActive() and not sampIsDialogActive() and not isSampfuncsConsoleActive() then
            local current_time = os.clock()

в теории, он не должен работать с открытым чатом и инпутом вообще (логины/пароли/редактор паме), не должен работать с открытым диалогом и не должен работать с запущенной консолью сф.

на практике я знаю, что он не работает с открытым чатом.
инвентарь — это текстдрав. равно как и телефон. не очень уверен что текстдравы как класс определены в опкодах. с другой стороны, что инвентарь, что телефон не управляются с клавиатуры, а следовательно, открыть второй раз, /случайно/, вероятность низка, если не равна нулю.
сделай вместо этих трёх функций просто if not sampIsCursorActive() then, и бинды не будут срабатывать при активном курсоре, включая открытый чат, диалог, консоль сампфункса и текстдравы, да и в целом какие-либо другие имгуи/мимгуи интерфейсы других скриптов, при активации которых отображается курсор
 
  • Нравится
Реакции: шкипер

шкипер

коммерческий банк "валди́с"
Автор темы
2,643
31,525
сделай вместо этих трёх функций просто if not sampIsCursorActive() then, и бинды не будут срабатывать при активном курсоре, включая открытый чат, диалог, консоль сампфункса и текстдравы, да и в целом какие-либо другие имгуи/мимгуи интерфейсы других скриптов, при активации которых отображается курсор
если доберутся руки до одной идейки, сделаю.

а далеко не факт что доберутся.