- 173
- 96
- Версия SA-MP
-
- Любая
Inventory Plus - поиск и названия предметов в лавке, шкафах, складах и багажнике
Как многие знают - стандартное окно лавки не имеет ни поиска, ни вывода названия предмета и приходится наводиться на каждую ячейку, чтобы понять, что это за предмет. Особенно больно, когда у некоторых предметов те же иконки, а их в лавке несколько десятков. Этот скрипт добавляет полноценный поиск по названию и подписывает каждую ячейку прямо в окне лавки, в шкафу, складе, багажнике и других окнах с такой же сеткой предметов (у них общий интерфейс). Помимо этого умеет сортировать предметы по алфавиту и запоминать введённый запрос - удобно, когда пробегаешь десяток лавок подряд в поисках одной вещи. Всё сделано на элементах родного интерфейса: те же иконки, тултипы и стили, что в инвентаре, плюс масштабирование под любое разрешение - от стандартного окна наверное и не отличить.
Что умеет скрипт
Важно знать (ограничения)
Зависимости
Команды скрипта
Примечание
Скрипт делал под свои нужды, поэтому он заточено конкретно под мой сценарий использования. Если будут дельные пожелания и предложения и они мне по силам - есть шанс, что я их реализую.
Так же я заранее замечу, что я не эксперт по CEF (и на него не претендую), но всю жизнь занимаюсь вебом, так что часть кода, который я понимал - я пытался максимально оптимизировать, а вот CEF часть - тут уже искал оптимальный вариант исходя из дебага CEF на сервере и консультаций с клодом. Но вроде бы финальный вариант работает нормально, каких-то тормозов я не замечал, как и вылетов (Изначально были тормоза, но как оказалось, это и без скриптов так лавка открывается с фризами, ранее не обращал внимание).
Актуальная версия
На данный момент к посту приложена версия 2.3.0. Новые версии выкладываю отдельными постами ниже по теме (первый пост стараюсь лишний раз не трогать, чтобы не гонять его через модерацию заново) - так что и этот номер, и История изменений ниже могут отставать от реальной последней версии по той же причине. Если после установки скрипт напишет о доступном обновлении - вводите /ipupdate, это быстрее и надёжнее, чем искать актуальный пост в теме.
Пример работы можно посмотреть ниже.
Как многие знают - стандартное окно лавки не имеет ни поиска, ни вывода названия предмета и приходится наводиться на каждую ячейку, чтобы понять, что это за предмет. Особенно больно, когда у некоторых предметов те же иконки, а их в лавке несколько десятков. Этот скрипт добавляет полноценный поиск по названию и подписывает каждую ячейку прямо в окне лавки, в шкафу, складе, багажнике и других окнах с такой же сеткой предметов (у них общий интерфейс). Помимо этого умеет сортировать предметы по алфавиту и запоминать введённый запрос - удобно, когда пробегаешь десяток лавок подряд в поисках одной вещи. Всё сделано на элементах родного интерфейса: те же иконки, тултипы и стили, что в инвентаре, плюс масштабирование под любое разрешение - от стандартного окна наверное и не отличить.
Что умеет скрипт
- Добавляет строку поиска прямо в окно торговой лавки, шкафов, складов, багажника и мусорки. Основной инвентарь не трогает - там поиск и так есть.
- Выводит название предмета поверх каждой ячейки, так что видно всё сразу без наведения.
- Иконка поиска работает как в инвентаре: ввёл текст - лупа становится крестиком, клик по нему сбрасывает поиск.
- В поиске можно искать сразу несколько предметов через разделитель %: например ларец%ящик покажет и то, и другое одновременно.
- Замочек в строке поиска - запоминает введённый запрос: можно закрыть лавку, открыть соседнюю, и поиск уже вбит. Живёт до перезахода в игру, при очистке поля выключается сам.
- Нормальная сортировка по названию (иконка слева от поиска): предметы выстраиваются по алфавиту, безымянные и пустые слоты уходят в конец. Специально делал по названию, а не подобие стандартной игровой, где фиг что найдешь по итогу. Выключил - вернулся порядок, который выставил продавец (или сервер). Настройка запоминается насовсем, у иконок есть подсказки при наведении.
- В диалоге покупки/продажи предмета - кнопка MAX (в поле ввода вместо индикатора раскладки) подставляет максимально доступное количество: при покупке это наличие в лавке, при продаже - меньшее из «сколько игрок покупает» и «сколько у вас есть». Под полем сразу считается Итого (количество × цену) в валюте этого диалога, обновляется на лету и краснеет, если ввести больше максимума.
- Сам проверяет версию при заходе (тихо, ничего не качает) и если есть новая - пишет одну строку в чат. Установить её - команда /ipupdate, без похода на форум за файлом.
Важно знать (ограничения)
- Совсем новые предметы могут быть без названия. Cвежедобавленные на сервер предметы попадают в словарь с задержкой, пока я не обновлю список на сервере. У таких предметов название не будет отображаться, и по ним не сработает поиск - ячейки просто останутся без баннера. То же касается сортировки - она идёт по названиям из словаря, поэтому предметы, которых нет в списке, всегда окажутся в конце, даже если включена.
- Названия выводятся не полностью. Делалось специально т.к. мне достаточно видеть даже часть названия, чтобы понять, что это за предмет. Не вижу смысла делать какие-то переносы строк и закрывать половину иконки.
- Список отдаётся с моего сервера. Есть теоретический шанс, что он окажется недоступен из некоторых стран, но на практике такого пока не было. Если словарь не загрузился - поле поиска покажет «СПИСОК НЕ ЗАГРУЖЕН», можно попробовать /ipreload.
- Обновление скрипта идёт с отдельного внешнего сервера. Теоретически может быть недоступен, но при любом сбое (нет сети, оборвалось скачивание) скрипт остаётся на старой рабочей версии - апдейтер ничего не ломает, просто сообщает об ошибке.
Зависимости
- SAMP.lua
- encoding
Команды скрипта
- /ipreload - принудительно обновить список предметов (сбрасывает весь кэш). Результат виден в поле поиска: плейсхолдер меняется на «ПОИСК» при успехе или «СПИСОК НЕ ЗАГРУЖЕН» при ошибке.
- /ipupdate - проверить и установить обновление скрипта одной командой. Если что-то пошло не так (нет сети, битый файл) - старая версия остаётся рабочей, в чате будет ссылка на эту тему для ручного скачивания.
Примечание
Скрипт делал под свои нужды, поэтому он заточено конкретно под мой сценарий использования. Если будут дельные пожелания и предложения и они мне по силам - есть шанс, что я их реализую.
Так же я заранее замечу, что я не эксперт по CEF (и на него не претендую), но всю жизнь занимаюсь вебом, так что часть кода, который я понимал - я пытался максимально оптимизировать, а вот CEF часть - тут уже искал оптимальный вариант исходя из дебага CEF на сервере и консультаций с клодом. Но вроде бы финальный вариант работает нормально, каких-то тормозов я не замечал, как и вылетов (Изначально были тормоза, но как оказалось, это и без скриптов так лавка открывается с фризами, ранее не обращал внимание).
Актуальная версия
На данный момент к посту приложена версия 2.3.0. Новые версии выкладываю отдельными постами ниже по теме (первый пост стараюсь лишний раз не трогать, чтобы не гонять его через модерацию заново) - так что и этот номер, и История изменений ниже могут отставать от реальной последней версии по той же причине. Если после установки скрипт напишет о доступном обновлении - вводите /ipupdate, это быстрее и надёжнее, чем искать актуальный пост в теме.
Пример работы можно посмотреть ниже.
2.3.0
- Поиск теперь понимает разделитель % - можно искать сразу несколько предметов одним запросом, например ларец%ящик покажет всё, что подходит под любую из частей.
- Добавлена проверка версии при заходе (тихо, в чат пишет только если есть новая) и команда /ipupdate для обновления скрипта в одну команду, без похода на форум.
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
- Иконка поиска теперь ведёт себя как в инвентаре: при вводе текста лупа меняется на крестик, клик по нему сбрасывает поиск.
- Добавлен замочек в строке поиска — запоминает введённый запрос при закрытии лавки или открытии другой (не сохраняется между перезаходами).
- Добавлена сортировка предметов по названию (иконка слева от поиска): предметы без названия и пустые слоты уходят в конец, при выключении возвращается порядок продавца. Настройка сохраняется между перезаходами.
- Добавлены игровые тултипы-подсказки к иконкам.
- Плашка с названием предмета теперь плотно прилегает к краям ячейки, без просвета.
- Все размеры интерфейса масштабируются под любое разрешение, как родной интерфейс игры.
- Поиск теперь понимает разделитель % - можно искать сразу несколько предметов одним запросом, например ларец%ящик покажет всё, что подходит под любую из частей.
- Добавлена проверка версии при заходе (тихо, в чат пишет только если есть новая) и команда /ipupdate для обновления скрипта в одну команду, без похода на форум.
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
- Иконка поиска теперь ведёт себя как в инвентаре: при вводе текста лупа меняется на крестик, клик по нему сбрасывает поиск.
- Добавлен замочек в строке поиска — запоминает введённый запрос при закрытии лавки или открытии другой (не сохраняется между перезаходами).
- Добавлена сортировка предметов по названию (иконка слева от поиска): предметы без названия и пустые слоты уходят в конец, при выключении возвращается порядок продавца. Настройка сохраняется между перезаходами.
- Добавлены игровые тултипы-подсказки к иконкам.
- Плашка с названием предмета теперь плотно прилегает к краям ячейки, без просвета.
- Все размеры интерфейса масштабируются под любое разрешение, как родной интерфейс игры.
Вложения
Последнее редактирование:









