Skip to content

Releases: GM-DONATE/IGS

210316.2

16 Mar 02:59
32b4809
Compare
Choose a tag to compare

Other Changes

Release 210316.1

15 Mar 23:24
Compare
Choose a tag to compare

Other Changes

  • Удалены отладочные куски (294a79dd)
  • Удален socket модуль (92768b8b)

Release 210316

15 Mar 23:15
e70dde9
Compare
Choose a tag to compare

Other Changes


🔥🚨 UPD 08.12.2024 (!!!) 2024!!!

Нашел старый gist начала 2020 года, назывался IGS v3 changelog. Решил удалить его с гиста, но увековечить где-то. Так что переношу инфу в этот релиз, хотя этот релиз был создан ПОСЛЕ v3

Обновление

  1. Скачайте и установите новый igsmodification с панели на сайте
  2. Замените содержимое нового additems файла прошлым
  3. Удалите с коллекции старый IGS (или этот) и добавьте новый

Если вы использовали модуль чартов, то его также необходимо обновить

Этого должно быть достаточно, если вы не сильно модифицировали IGS, но если возникают какие-то ошибки, то напишите нам


Визуально:

Новые ITEM:методы():

  • :SetHidden(bool) - скрывает предмет из меню. Полезно в комбинации с другими новыми методами
  • :SetItems(tItems) - предмет, который выдает несколько других. Можно делать наборы со скидкой или продавать паки, например аптечек (саму аптечку при этом можно скрыть, чтобы ее не покупали поодиночке)
  • :SetRandom(tItems) - аналог "рулетки". Активирует случайный предмет
  • :SetMaxGlobalPurchases(iMax) - ограничивает максимальное глобальное кол-во покупок для предмета
  • :SetXAdminGroup(sGroup) - поддержка xAdmin
  • :SetBAdminGroup(sGroup, iWeight) - поддержка bAdmin

Модуль красивых купонов

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

Отображение покупок и пополнений счета

Изменения igs_invlog

  • 🆕 Поиск по UID предмета
  • 🆕 Кнопка деактивации предмета
  • 🙉 Теперь отображается имя даже оффлайн игроков
  • 🔧 Обновление инвентаря при дропе итема и корректная запись в igs_invlog

Поведение IGS меню

  • Меню можно свернуть кнопкой открытия
  • Меню запоминает позицию закрытия меню и восстанавливает там же
  • Звуки Иисусьей тряпки заменены приятными звуками взаимодействия с интерфейсом
  • Починена вкладка помощи (chatra)
  • Немного обновлены иконки

Детали

  • Выдача :SetWeapon() оружия при спавне по умолчанию (не нужно включать). Также покажется подсказка, как это отключить
  • Изменен стиль надписи над головой NPC

Под капотом:

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

Обратной совместимости нет, это полноценно новая версия IGS и переход на нее не обязателелен. Поддержка текущей версии будет все еще осуществляется (Рассчетно пол года). Документация по новым методам, хукам и функциям будет позже

Изменен принцип работы :SetGlobal()

Ранее функционал этого метода затрагивал более 20 файлов и был практически невостребован, а некоторые и вовсе использовали его не по назначению.

Новая логика действия более правильна и лаконична. Предметы с :SetGlobal() будут выданы на каждом из активных серверов проекта вместо того, чтобы являться 1 записью для всех, в том числе, новосозданных серверов

Изменена логика :SetOnActivate()

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

Если вы используете :SetValidator(), то замените в тех предметах :SetOnActivate на :SetInstaller. SetInstaller вызывается при активации и восстановлении предмета, как ранее делал :SetOnActivate

Упрощение переезда

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

Рефакторинг кода

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

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

  • Нетворк сильно упрощен, появились специальные функции чтения/записи типов, константы-помощники и многое другое. С ним пофиксил и "A net message (IGS.Purchase) is already started", а также полностью переписал функции покупки, активации, выбрасывания итема, да и вообще я там все переписал
  • В getPurchases и getTransactions появились параметры limit (max 255) и offset. В коде есть пример постраничного получения нужного кол-ва транзакций (IGS.GetPlayerTransactionsBypassingLimit)
  • Многие функции работы с API изменили свое название или, хотя бы, порядок параметров. То же самое касается вообще любых функций скрипта
  • Пара хуков, связанных с SandBox методами сильно переписаны и могут перестать корректно работать (CanTool, PlayerSpawnSent)
  • ui.Create > uigs.Create (избавление от конфликтов в коде)
  • ui.NUM шрифты переименованы в igs.NUM
  • Названия родных Derma компонентов IGS изменены

Но еще есть к чему стремиться. Скорее всего, будет v4, с еще большим улучшением подкапотной составляющей

Новинки / улучшения

  • Полностью новый apinator с улучшенной и упрощенной очередью запросов, защитой от падения сервера и чистеньким кодом. Кода меньше -- эффективность больше. Подробнее
  • :SetTerm(0) предметы (с мгновенным действием) теперь тоже записываются в БД. Мгновенные услуги, вроде денег с :SetTerm(0) должны быть в паре с :SetStackable(true), иначе при повторной покупке (пока игрок не перезайдет) будет "Услуга уже активна"
  • Debug команда igsreload для перезагрузки IGS
  • На коленке написана scc (SimpleChatCommands) библиотека специально для IGS для замены текущей тяжеловесной
  • Поддержка SimfPhys машин в :SetVehicle()
  • :SetDarkRPTeams({}) может принимать команду ("hobo") тимы вместо ENUM (TEAM_HOBO)

Исправления

  • Исправлен :SetDarkRPItem() ("Это для донатеров")
  • У :SetULXGroup починен "вес" группы. Если игрок купил несколько групп, то самая "высокая" не будет сбрасываться
  • Fix неправильного подсчета уровня, если у игрока 255+ транзакций
  • Огромное множество прочих исправлений, о которых вы нам писали

Бонус

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