- 96
- 56
- Версия SA-MP
-
- Любая
Inventory Plus - поиск и названия предметов в лавке, шкафах, складах и багажнике
Как многие знают - стандартное окно лавки не имеет ни поиска, ни вывода названия предмета и приходится наводиться на каждую ячейку, чтобы понять, что это за предмет. Особенно больно, когда у некоторых предметов те же иконки, а их в лавке несколько десятков. Этот скрипт добавляет полноценный поиск по названию и подписывает каждую ячейку прямо в окне лавки, в шкафу, складе, багажнике и других окнах с такой же сеткой предметов (у них общий интерфейс). Помимо этого умеет сортировать предметы по алфавиту и запоминать введённый запрос - удобно, когда пробегаешь десяток лавок подряд в поисках одной вещи. Всё сделано на элементах родного интерфейса: те же иконки, тултипы и стили, что в инвентаре, плюс масштабирование под любое разрешение - от стандартного окна наверное и не отличить.
Что умеет скрипт
Важно знать (ограничения)
Зависимости
Команды скрипта
Примечание
Скрипт делал под свои нужды, поэтому он заточено конкретно под мой сценарий использования. Если будут дельные пожелания и предложения и они мне по силам - есть шанс, что я их реализую.
Так же я заранее замечу, что я не эксперт по CEF (и на него не претендую), но всю жизнь занимаюсь вебом, так что часть кода, который я понимал - я пытался максимально оптимизировать, а вот CEF часть - тут уже искал оптимальный вариант исходя из дебага CEF на сервере и консультаций с клодом. Но вроде бы финальный вариант работает нормально, каких-то тормозов я не замечал, как и вылетов (Изначально были тормоза, но как оказалось, это и без скриптов так лавка открывается с фризами, ранее не обращал внимание).
Актуальная версия
На данный момент актуальная версия - 2.2.0, скачать можно ниже, всегда обновляю ссылку в первом посте.
Если нужны предыдущие версии, то ниже в Истории изменений можете поискать ссылки на посты.
Пример работы можно посмотреть ниже.
Как многие знают - стандартное окно лавки не имеет ни поиска, ни вывода названия предмета и приходится наводиться на каждую ячейку, чтобы понять, что это за предмет. Особенно больно, когда у некоторых предметов те же иконки, а их в лавке несколько десятков. Этот скрипт добавляет полноценный поиск по названию и подписывает каждую ячейку прямо в окне лавки, в шкафу, складе, багажнике и других окнах с такой же сеткой предметов (у них общий интерфейс). Помимо этого умеет сортировать предметы по алфавиту и запоминать введённый запрос - удобно, когда пробегаешь десяток лавок подряд в поисках одной вещи. Всё сделано на элементах родного интерфейса: те же иконки, тултипы и стили, что в инвентаре, плюс масштабирование под любое разрешение - от стандартного окна наверное и не отличить.
Что умеет скрипт
- Добавляет строку поиска прямо в окно торговой лавки, шкафов, складов, багажника и мусорки. Основной инвентарь не трогает - там поиск и так есть.
- Выводит название предмета поверх каждой ячейки, так что видно всё сразу без наведения.
- Иконка поиска работает как в инвентаре: ввёл текст - лупа становится крестиком, клик по нему сбрасывает поиск.
- Замочек в строке поиска - запоминает введённый запрос: можно закрыть лавку, открыть соседнюю, и поиск уже вбит. Живёт до перезахода в игру, при очистке поля выключается сам.
- Нормальная сортировка по названию (иконка слева от поиска): предметы выстраиваются по алфавиту, безымянные и пустые слоты уходят в конец. Специально делал по названию, а не подобие стандартной игровой, где фиг что найдешь по итогу. Выключил - вернулся порядок, который выставил продавец (или сервер). Настройка запоминается насовсем, у иконок есть подсказки при наведении.
- В диалоге покупки/продажи предмета - кнопка MAX (в поле ввода вместо индикатора раскладки) подставляет максимально доступное количество: при покупке это наличие в лавке, при продаже - меньшее из «сколько игрок покупает» и «сколько у вас есть». Под полем сразу считается Итого (количество × цену) в валюте этого диалога, обновляется на лету и краснеет, если ввести больше максимума.
Важно знать (ограничения)
- Совсем новые предметы могут быть без названия. Cвежедобавленные на сервер предметы попадают в словарь с задержкой, пока я не обновлю список на сервере. У таких предметов название не будет отображаться, и по ним не сработает поиск - ячейки просто останутся без баннера. То же касается сортировки - она идёт по названиям из словаря, поэтому предметы, которых нет в списке, всегда окажутся в конце, даже если включена.
- Названия выводятся не полностью. Делалось специально т.к. мне достаточно видеть даже часть названия, чтобы понять, что это за предмет. Не вижу смысла делать какие-то переносы строк и закрывать половину иконки.
- Список отдаётся с моего сервера. Есть теоретический шанс, что он окажется недоступен из некоторых стран, но на практике такого пока не было. Если словарь не загрузился - поле поиска покажет «СПИСОК НЕ ЗАГРУЖЕН», можно попробовать /ipreload.
Зависимости
- SAMP.lua
- encoding
Команды скрипта
- /ipreload - принудительно обновить список предметов (сбрасывает весь кэш). Результат виден в поле поиска: плейсхолдер меняется на «ПОИСК» при успехе или «СПИСОК НЕ ЗАГРУЖЕН» при ошибке.
Примечание
Скрипт делал под свои нужды, поэтому он заточено конкретно под мой сценарий использования. Если будут дельные пожелания и предложения и они мне по силам - есть шанс, что я их реализую.
Так же я заранее замечу, что я не эксперт по CEF (и на него не претендую), но всю жизнь занимаюсь вебом, так что часть кода, который я понимал - я пытался максимально оптимизировать, а вот CEF часть - тут уже искал оптимальный вариант исходя из дебага CEF на сервере и консультаций с клодом. Но вроде бы финальный вариант работает нормально, каких-то тормозов я не замечал, как и вылетов (Изначально были тормоза, но как оказалось, это и без скриптов так лавка открывается с фризами, ранее не обращал внимание).
Актуальная версия
На данный момент актуальная версия - 2.2.0, скачать можно ниже, всегда обновляю ссылку в первом посте.
Если нужны предыдущие версии, то ниже в Истории изменений можете поискать ссылки на посты.
Пример работы можно посмотреть ниже.
2.2.0
- В диалоге покупки/продажи предмета добавлена кнопка MAX (в поле ввода вместо индикатора раскладки) - подставляет максимально доступное количество: при покупке наличие в лавке, при продаже меньшее из «сколько игрок покупает» и «сколько у вас есть».
- Под полем ввода в таких диалогах появился живой подсчёт Итого (количество × цену) в валюте этого диалога, с пометкой «без учёта комиссии»; краснеет, если ввести больше максимума.
2.1.0
- Словарь предметов теперь полный: названия есть у всех предметов сервера, а не только у ~2-3к торгуемых на маркете. Поиск и сортировка тоже видят всё.
- На случай проблем с полным словарём (долгая загрузка или «СПИСОК НЕ ЗАГРУЖЕН») в самом верху файла скрипта появилась настройка DICT_MODE: замена 'all' на 'market' возвращает прежний облегчённый список, после смены перезапустить игру. Пока решил обойтись без конфига, вряд-ли будут проблемы с полным списком.
2.0.0
- Скрипт переименован в Inventory Plus - он теперь не только про лавку. Файл скрипта тоже переименован: старый [TheMY3] Lavka Enhancer.lua нужно удалить из moonloader.
- Поиск, названия предметов и сортировка теперь работают также в шкафах (личных и организации), складах (обоих типов), багажнике и мусорках - у всех этих окон общий интерфейс с лавкой.
- Плашка «Сбросить поиск» в шкафу встаёт над блоком «Пополнить/Снять», а не под ним.
- Команда обновления списка переименована: /lreload -> /ipreload.
- Разовое после обновления: словарь предметов скачается заново, а настройка сортировки сбросится (сменились ключи кэша из-за переименования).
1.2.0
- Иконка поиска теперь ведёт себя как в инвентаре: при вводе текста лупа меняется на крестик, клик по нему сбрасывает поиск.
- Добавлен замочек в строке поиска — запоминает введённый запрос при закрытии лавки или открытии другой (не сохраняется между перезаходами).
- Добавлена сортировка предметов по названию (иконка слева от поиска): предметы без названия и пустые слоты уходят в конец, при выключении возвращается порядок продавца. Настройка сохраняется между перезаходами.
- Добавлены игровые тултипы-подсказки к иконкам.
- Плашка с названием предмета теперь плотно прилегает к краям ячейки, без просвета.
- Все размеры интерфейса масштабируются под любое разрешение, как родной интерфейс игры.
- В диалоге покупки/продажи предмета добавлена кнопка MAX (в поле ввода вместо индикатора раскладки) - подставляет максимально доступное количество: при покупке наличие в лавке, при продаже меньшее из «сколько игрок покупает» и «сколько у вас есть».
- Под полем ввода в таких диалогах появился живой подсчёт Итого (количество × цену) в валюте этого диалога, с пометкой «без учёта комиссии»; краснеет, если ввести больше максимума.
2.1.0
- Словарь предметов теперь полный: названия есть у всех предметов сервера, а не только у ~2-3к торгуемых на маркете. Поиск и сортировка тоже видят всё.
- На случай проблем с полным словарём (долгая загрузка или «СПИСОК НЕ ЗАГРУЖЕН») в самом верху файла скрипта появилась настройка DICT_MODE: замена 'all' на 'market' возвращает прежний облегчённый список, после смены перезапустить игру. Пока решил обойтись без конфига, вряд-ли будут проблемы с полным списком.
2.0.0
- Скрипт переименован в Inventory Plus - он теперь не только про лавку. Файл скрипта тоже переименован: старый [TheMY3] Lavka Enhancer.lua нужно удалить из moonloader.
- Поиск, названия предметов и сортировка теперь работают также в шкафах (личных и организации), складах (обоих типов), багажнике и мусорках - у всех этих окон общий интерфейс с лавкой.
- Плашка «Сбросить поиск» в шкафу встаёт над блоком «Пополнить/Снять», а не под ним.
- Команда обновления списка переименована: /lreload -> /ipreload.
- Разовое после обновления: словарь предметов скачается заново, а настройка сортировки сбросится (сменились ключи кэша из-за переименования).
1.2.0
- Иконка поиска теперь ведёт себя как в инвентаре: при вводе текста лупа меняется на крестик, клик по нему сбрасывает поиск.
- Добавлен замочек в строке поиска — запоминает введённый запрос при закрытии лавки или открытии другой (не сохраняется между перезаходами).
- Добавлена сортировка предметов по названию (иконка слева от поиска): предметы без названия и пустые слоты уходят в конец, при выключении возвращается порядок продавца. Настройка сохраняется между перезаходами.
- Добавлены игровые тултипы-подсказки к иконкам.
- Плашка с названием предмета теперь плотно прилегает к краям ячейки, без просвета.
- Все размеры интерфейса масштабируются под любое разрешение, как родной интерфейс игры.
Вложения
Последнее редактирование:








