Jump to content
  • Sign in to follow this  

    Кнопки


    Electr0
    • Сделано

    Возможности

     

    Описание:

    • Кнопки представляют из себя полностью анимированые переключатели, которые можно настроить на выполнение разных действий над предметами.

     

    Применение:

    • Контроль освещения построек, можно как включать выключать, так и менять цвет освещения нажимая на кнопки
    • Создание разных интересных вариантов входных дверей с удаленным управлением через кнопку
    • Создание сложных развлекательных лабиринтов с большим количеством ловушек
    • Много чего можно придумать, ограничение лишь в фантазии :)

     

    Ограничения:

    • Лимит действий на  кнопку: 20
    • Лимит действий над одним предметом в рамках одной кнопки: 10

     

    Типы:

    • Переключатель ( работает как обычный выключатель, действия совершенные при включении, при выключении выполняются в обратной последовательности )
    • Кнопка ( при нажатии выполняет действия которые нужно делать при включении и отжимается обратно  )

     

    Примеры моделей кнопок:

     

    Выключено:

    second.jpgfirst.jpgfive.jpg

     

    Включено:

    third.jpgfour.jpgsix.jpg

     

    Настройки  кнопки (!f - Управление => Настройки кнопки):

    • Название
    • Тип
    • Заблокировать после использования
    • Пароль
    • Обзор действий
    • Добавление действий
    • Тип медленного передвижения
    • Скопировать действия с другой кнопки
    • Сбросить настройки

     

    Настройки действий:

    • Типы действий над предметами:
      • Передвинуть по осям предмета

      • Передвинуть по осям предмета [Медленно]

      • Повернуть по осям предмета

      • Повернуть по осям предмета [Медленно]

      • Заблокировать (Дверь / Кнопку)
      • Разблокировать (Дверь / Кнопку)
      • Открыть дверь
      • Закрыть дверь
      • Выставить яркость
      • Выставить цвет по названию
      • Выставить RGB цвет
      • Выставить скин
      • Выставить анимацию
      • Выставить статус ВКЛ. (Кнопке)
      • Выставить статус ВЫКЛ. (Кнопке)
    • Перенастройка (вы можете перенастроить уже добавленное действие над предметом, в таком случае выбирать курсором, как при добавлении не придется)
    • Добавить еще (вы можете добавить еще одно действие к предмету)
    • Очередность (если у вас в рамках одной кнопки выполняется несколько действий над одним предметом, вы можете менять очередность их выполнения, для этого есть кнопки вверх / вниз в меню обзора действий)
    • Удаление

     

    Подсветка (красная):

    • При заходе в меню настроек, если выбрана кнопка, то она подсвечивается.
    • В меню обзора действий, предметы действий подсвечиваются. 
    • При добавлении предмета в действия кнопки, если выбран предмет который можно добавить то он так же подсвечивается

     

    Предварительные проверки:

    • Перед запуском выполнения действий кнопки на передвижение и повороты, выполняется проверка на то попадет ли предмет действия в игрока, так же действие не начнут выполнятся если игрок стоит на предмете действия или прыгает на нем.
    • Если предметом действия являются двери и пока они открываются / закрываются кнопку нельзя нажать.
    • Если предметом действия является кнопка, пока она включается / выключается кнопку нельзя нажать.

     

    Сохранение

    • Конечно же все это сложно настроенное кнопочное хозяйство вы можете сохранить себе в слот, поддерживаются снимки конца раунда и смены карты.

     

    Как найти?:

    !f => Предметы => Наборы => Кнопки

    !f => Предметы => Часто используемое => Кнопки

     

    Цена: 100 игровых $

     

    Меню:

    • О визуальном виде меню можно посмотреть ниже,  разделе стили меню, применен тот же стиль меню что и в библиотеке.

     

    Стили меню

     


    Меню настройки кнопки:


     

    Настройка кнопки

    UUID: 4bf6ab2b-8226-413c-84b6-14249bd16bdb

    1. Обновить

     

    Название - Переключатель света  в холле

    2. Сменить

     

    Тип - Переключатель

    3. Сменить

     

    Заблокировать после использования

    4. Сменить

     

    Действия (4 / 20)

    5. Обзор (если 0 действий то серая)

    6. Добавить (если 20 действий уже есть то серая)

     

    8. Назад

     


    Меню обзора действий:


     

    Действие 1 / 4

    UUID: 4bf6ab2b-8226-413c-84b6-14249bd16bdb

    Тип предмета: Лампа (Люминесцентная)

     

    Тип действия: Выставить яркость

    Включено: 500 / На 500 (Если тип кнопка)

    Выключено: 0 (Если тип кнопка не показывать)

    1. Перенастроить

     

    Очередность 1 / 2

    2. Вверх

    3. Вниз

     

    4. Удалить

     

    8. Назад

    9. Далее


    Действие 2 / 4

    UUID: 4bf6ab2b-8226-413c-84b6-14249bd16bdb

    Тип предмета: Лампа (Люминесцентная)

     

    Тип: Выставить яркость

    Включено: 500 / На 500 (Если тип кнопка)

    Выключено: 0 (Если тип кнопка не показывать)

    1. Перенастроить

     

    Очередность 2 / 2

    2. Вверх

    3. Вниз

     

    4. Удалить

     

    8. Назад

    9. Далее


    Действие 3 / 4

    UUID: 4bf6ab2b-8226-413c-84b6-14249bd16bdb

    Тип предмета: Дверь

     

    Тип: Передвинуть предмет по его ОСИ

    Ось: Y (Если тип кнопка не показывать)

    Включено: -54.51 / На -54.51 по оси Y  (Если тип кнопка)

    Выключено: 54.51 (Если тип кнопка не показывать)

    1. Перенастроить

     

    Очередность 1 / 2

    2. Вверх

    3. Вниз

     

    4. Удалить

     

    8. Назад

    9. Далее


    Действие 4 / 4

    UUID: 4bf6ab2b-8226-413c-84b6-14249bd16bdb

    Тип предмета: Дверь

     

    Тип: Передвинуть предмет по его ОСИ

    Ось: Y (Если тип кнопка не показывать)

    Включено: -54.51/ На -54.51 по оси Y (Если тип кнопка)

    Выключено: 54.51 (Если тип кнопка не показывать)

    1. Перенастроить

     

    Очередность 2 / 2

    2. Вверх

    3. Вниз

     

    3. Удалить

     

    8. Назад

     

     


     

     

    Благодарности:

    • @raziEiL идея выставления обратной скорости воспроизведения анимации, которая очень подошла для организации анимации выключения щитового переключателя и голубой кнопки, модели которых не имеют анимации выключения.
    • @asha@Marysan@EskimoCallboy  тестирование
    Sign in to follow this  


    User Feedback

    Recommended Comments



     

    как уже говорил в посте в другой теме, делать буду через симуляцию, соотв придется делать побочку внутри плагина ради экономии лимитов пропов и затрат на хранение данных о том какой кнопке принадлежит какой func_button, но есть и другие проблемы, нет нормальных кнопок:

    Есть вот это: выключен.

    20181020152820_1.jpg

     

    Включен:

    20181020152829_1.jpg

     

    такой себе вариант, огромный слишком.

     

    в игре такие кнопки переключатся анимацией в данном случае ON, OFF и текущую анимацию узнать нельзя.

    Share this comment


    Link to comment
    Share on other sites

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

     

    Реализация:

    Сделано полностью на базе prop_dynamic, дополнительный проп func_button не понадобился, а значит лимиты на дополнительные ентити тратится не будут.

     

    Типы:

    • Кнопка ( просто кликаем, и она отжимается обратно)
    • Выключатель ( работает как обычный выключатель )

     

    Все кнопки на данный момент поддерживают оба режима, это было сложновато но получилось.

     

    Анимации:

    У кнопок есть полноценные анимации включения / выключения

     

    Звуки: 

    У кнопок на текущий момент есть звук тапа по кнопке

     

    Сохранение / загрузка:

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

     

    Модельки:

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

     

    Скрины:

     

    20181022005933_1.jpg

    20181022005943_1.jpg

     

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

    Share this comment


    Link to comment
    Share on other sites

    прототип 2: действия

     

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

     

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

    Share this comment


    Link to comment
    Share on other sites

    Получена первая версия 2 прототипа, эхей оно научилось раздвигать двери, следующая на очереди задача заставить сие включать и выключать лампы

    Share this comment


    Link to comment
    Share on other sites

    прототип 2.1 

    • добавлена поддержка настройки скорости анимации у кнопок, после чего ускорена кнопка в виде щита с автоматом в 3 раза, т.к. была слишком вальяжная
    • добавлена поддержка переключения яркости ламп
    • добавлена поддержка действий для обычных кнопок (Push)
    • добавлено ограничение по дальности от кнопки в 100 юнитов, если игрок находится дальше то операции с кнопками не выполняются.

    Share this comment


    Link to comment
    Share on other sites

    прототип 2.2

    • добавлено предсказание позиций предметов после действий для фикса троллинга (как у обычных функций редактирования позиции и углов)
    • добавлена отправку команды на выключение / включение анимации выключателя если не пройдена проверка на позиции предметов на шаг вперед
    • добавлена поддержка поворотов.
    • добавлена поддержка копирования кнопок для root админов
    • серьезные оптимизации в импорте кеша кнопок из MYSQL вместо 49 строк теперь 2 =)

    Share this comment


    Link to comment
    Share on other sites

    прототип 2.3

    • сохраняет и загружает кнопки в автозагрузчик и из него.
    • сохраняет информацию о кнопках в снимки и позволяет сохранять кнопки из снимков

    Share this comment


    Link to comment
    Share on other sites

    прототип 2.4

     

    нужно обеспечить полную уникальность UUID после:

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

     

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

    1. игрок загрузил свой слот из снимка и захотел сохранить, но сохранить в другой слот!
    2. игрок хочет сохранить содержимое сохраненное в одном слоте в другой слот

     

     

     

    на данный момент я еще не придумал как до процесса сохранения давать предметам другие UUID в описанных сверху ситуациях, по причине того что кнопка может оказатся внизу сохранения, а описанные в ней действия над предметами в ней самой, выходит я должен знать новый и старый UUID уже до процесса сохранения. чтобы в кнопке были УЖЕ новые UUID.

     

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

     

    думаю надо написать функцию которая бы в первом проходе составила бы список какие UUID будут иметь дело в сохранении, попутно делая связки старый UUID => новый UUID, во втором проходе нужно провести обработку содержимого действий кнопок чтобы создать клоны веток в памяти но уже с новыми ид, на третьем этапе тем предметам которым будут нужные новые UUID она будет давать исходя и ранее сгенерированой связи старый = новый ид, а действия уже обработаны

    Share this comment


    Link to comment
    Share on other sites

    прототип 2.4 

    автозагручик успешно генерирует UUID для всех предметов и обновляет данные в кеше тоже.

    Share this comment


    Link to comment
    Share on other sites

    прототип 2.5:

    • Реализована покупка кнопки
    • Исправлена ошибка в нахождении цены товара, она не была видна т.к. похожий код использовался для персонажей которые стоили стандартную цену.

    Share this comment


    Link to comment
    Share on other sites

    прототип 2.6

    • добавлено корневое меню настройки кнопки, в котором можно будет сменить тип кнопки, название кнопки и оставлены кнопки под обзор и добавление действий.
    • на текущий момент реализована смена типа кнопки из этого меню.

     

    !f => Управление => Настроить Кнопку => Если игрок смотрел на кнопку открывается меню:

     

    20181028004945_1.jpg

    Share this comment


    Link to comment
    Share on other sites

    прототип 2.7

    • Добавлен рендер списка действий, главное требование чтобы можно было выйти на нужную страницу в случае перенастройки кнопки и смены названия предмета над которым производится действие

     

    Переключатель:

    20181028161147_1.jpg

    20181028161103_1.jpg

    20181028161107_1.jpg

     

     

    Share this comment


    Link to comment
    Share on other sites

    прототип 2.8

     

    Сделано:

    • Добавить действие блокировка / разблокировка кнопки (пригодится в некоторых сценариях)
    • Определится какие предметы можно добавлять в действия над предметами.
    • Добавить индикатор отсутствия пропа на карте в рендер списка действий, отсутствие пропа на карте запрещает пользователю перенастраивать действие, оставляя право на удаление действия над предметом.
    • Добавить выбор типа действия
    • Добавить выбор предмета действия при добавлении нового действия
    • Добавить показ лучевой коробки предмета описания действий над которым открыто в рендере меню списка действий, так мы упростим жизнь человеку который листает список действий и пытается понять что тут где находится.
    • Добавить в концепт добавления пропа ньанс что перед добавлением действия должно быть меню с выбором предмета, при нажатии на кнопку добавить меню само смотрит есть ли что-то что можно взять за целевой проп, если нет меню уже открывается с сообщением об ошибке выбора, и предоставляет возможность обновлить страницу повторно посмотрев что есть под курсором. В случаях когда проп можно взять и он корректен показывается его ТИП (лампа, дверь, оружие, персонаж, ну в таком роде.)
    • Добавлено удаление действий из меню обзора действий.

     

     

     

     

    Концепт добавления действий:

     

    Добавить (в этот момент надо смотреть на предмет над которым будут выполнятся действия) / Перенастроить => Выбор действий: 

    • Передвинуть предмет по его ОСИ => Выбор ОСИ (X / Y / Z) => Введите Кол-во юнитов => Диалог подтверждения
    • Повернуть предмет по его ОСИ => Выбор ОСИ (X / Y / Z) => Введите Кол-во юнитов => Диалог подтверждения
    • Задать яркость лампы (если предмет лампа) => Выберите значение после ВКЛЮЧЕНИЯ: от 0 до 500 шагом в 50 => Выберите значение после ВЫКЛЮЧЕНИЯ от 0 до 500 шагом в 50 (нужно если кнопка будет переключателем, если будет обычной кнопкой то та будет использовать только значение для ВКЛЮЧЕНИЯ) => Диалог подтверждения

    Share this comment


    Link to comment
    Share on other sites

    прототип 2.9

     

    Сделано:

    • Выработан принцип хранения множественных действий над одним предметом
    • Реализовано чтение и выполнение действий множественных действий над одним предметом
    • В меню действий реализовано чтение, и подсчет кол-ва множественных действий
    • В меню настроек кнопки корректно считывает кол-во действий
    • Добавлено: разблокировка, блокировка, открыть дверь, закрыть дверь, RGB цвет в действия кнопок (для задействования нового сценария применения кнопок который я тестирую на закрытом сервере)
    • Реализовано обратное чтение действий при выключении, чтобы соблюдать правильную последовательность выключения, поскольку некоторые действия в иной последовательности просто не заработают.
    • Реализовано открытие меню действий на ту же страницу (это было сломано из-за того что на один UUID теперь может приходится по несколько действий)
    • Удалена ненужная теперь кнопка смены названия действия
    • Починить удаление действия
    • Если действий над одним и тем же предметом два и больше нужно предоставить возможность поменять их очередность, поскольку иначе игроку, если он хочет сделать какое-то действие первым придется удалить все действия и добавить их в нужной последовательности, это неудобно..

     

    20181102004526_1.jpg

    Share this comment


    Link to comment
    Share on other sites

    Прототип 3.0

     

    Сделано:

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

    Share this comment


    Link to comment
    Share on other sites

    Прототип 3.1

     

    Сделано:

    • Вчера время было позднее я греб как мог, и таки добил добавление действий но наделал ляпов:
      • Нужно отключить запрос на введение данных о том насколько сдвинуть повернуть после выключения кнопки, т.к. эти значения инвертируются автоматически и нет нужды их вводить.
    • Исправлена работа REGEX проверки на вводимые значения RGB формата 255 255 255

    Share this comment


    Link to comment
    Share on other sites

    Прототип 3.2

    • Решить нужно ли добавлять в отмену и повтор изменения по кнопкам.
    • Проверить возможные проблемы с тем как действия сохраняются

     

    Сделано:

    • Добавить поддержку блокировки / разблокировки кнопки через действие над ней (на данный момент прописано все кроме того что текущая реализация ломает исполнение действий)
    • Зарезервирован индекс BUTTON_INFO_PSWD под пароли если вдруг решу что нужно вводить возможно запоролить доступ к кнопке.
    • Добавить разблокировку и блокировку дверей / кнопок в меню управления
    • Блокировка разблокировка кнопки вынесена из меню настроек кнопки, т.к. ее можно разблокировать заблокировать из добавленного меню Действия с блокировкой.
    • Исправлено отсутствие сохранения оси действия
    • Исправлена проблема остановки рендера меню списка действий в некоторых случаях.
    • Расширен лимит действий кнопки до 20, действий на один предмет 10.

     

    Исправить:

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

    Share this comment


    Link to comment
    Share on other sites

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

     

    Прототип 3.4 

    Сделать: 

    • Сделать медленные передвижения по осям предмета для реализации лифтов, раздвижных дверей, и многого другого
    • Нужно написать функции которые будут расчитывать финальное расположение предмета после медленных передвижений чтобы при перезагрузке плагина прерывая все это мы могли довести его до финального состояния.

    Share this comment


    Link to comment
    Share on other sites

     

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

    Share this comment


    Link to comment
    Share on other sites

    Прототип 3.3

     

    Сделано:

    • Сделать запрет на использование кнопок во время сохранения
    • Сделать запрет сохранения во время использования кнопок (традиционное сохранение и автозагрузчик)
    • Добавить проверку AGF (если кто-то стоит на предмете, прыгает на нем, использует как землю стоя на нем)
    • Для снимков введен сброс статуса кнопки чтобы не получить мертвую кнопку, т.к. создание снимка не остановить.

    Share this comment


    Link to comment
    Share on other sites

    Прототип 3.5

     

    Сделано:

    • Добавить поддержку смены скинов и анимаций, понадобится для атмосферных преображений комнат, так и для интересных заставок с участием анимаций.

     

    Сделать:

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

    Share this comment


    Link to comment
    Share on other sites

    Прототип 3.6

    Сделано:

    1.  Попробовать использовать это https://sm.alliedmods.net/new-api/keyvalues/KvCopySubkeys вместо экспорта в строку и импорта из строки как сделано сейчас в некоторых местах. 
    2. Провести стандартизацию используемого синтаксиса KeyValues, местами применяется старый стиль. 

    Share this comment


    Link to comment
    Share on other sites



    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.

    Guest
    Add a comment...

    ×   Pasted as rich text.   Paste as plain text instead

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.


  • Обозначения статусов

    В обработке = Мы работаем над вашим отзывом.

    Будет сделано = Ваша идея добавлена к плану будущих изменений.

    Тестируется = Изменения внесены, но требуют тестирования.

    Сделано = Ваша идея реализована!

    Отклонено = Отзыв некорректный, бред, либо уже реализовано. Если у вас есть дополнительная информация напишите комментарий и мы снова откроем этот вопрос.

×
×
  • Create New...