Привет ребят! Хочу сообщить вам отличную новость, а конкретнее о нововведениях мартовского обновления.
Данные были взяты из официального дискорд канала. Тестовая ветка которая была: 11_test_1102_eXzHpHrWd2UfgUhdau6PDVJ88GG5aQY3
Важно!
Обновление затрагивает только клиентскую часть! Вам не нужно обновлять сервер, чтобы это обновление у вас работало
wheelId : Number - Номер колеса
deleteMapObject : Boolean - Удалять ли физический объект колеса?
wheelId : Number - Номер колеса
wheelId : Number - Номер колеса
front : Boolean - Передний бампер?
deleteMapObject : Boolean - Удалять ли физический объект колеса?
front : Boolean - Передний бампер?
front : Boolean - Передний бампер?
Если значение было применено на одном клиенте, оно будет синхронизироваться, но транспорт должен быть от сервера
texDict : String - Название текстурного словаря
texName : String - Название текстуры
texDict : String - Название текстурного словаря
texName : String - Название текстуры
texDictNormal : String - Название текстурного словаря (Карта нормалей)
texNameNormal : String - Название текстуры (Карта нормалей)
url : String - Ссылка на браузер (.html)
width : Number - Длина
height : Number - Ширина
forceFlip : Boolean - Обрезать ли браузер (Следует использовать только в тех случаях, когда headlessTextureHeightScale неприменим)
После создания текстурного браузера, из него можно вытащить нужные нам поля, они описаны ниже
Название текстуры
Коэффициент высоты
buttonType : Number - Нажатия клавиша, от 0 до 2
x : Number - Координата по оси X
y : Number - Координата по оси Y
isUp : Boolean - Она поднята?
x : Number - Координата по оси X
y : Number - Координата по оси Y
type : Number - Тип взаимодействия курсора (Примеры: Обычное, изменение размера по горизонтали)
packageFilePath : String - Путь до расположения изображения курсора
offsetX : Number - Отступ по горизонтали
offsetY : Number - Отступ по вертикали
Пример ресурс на официальном сайте
Требуется отправлять POST запрос с заголовками (Headers):
texture-dict : String - Название словаря
texture-name : String - Название текстуры
width : Number - Длина текстуры
height: Number - Высота текстуры
Гоша не указал какой параметр для отправки содержимого файла изображения, если знаете сообщите ;(
Для получение внутри игры, нужно использовать словарь с префиксом crtxd_
В итоге crtxd_название_словаря
Требуется отправлять POST запрос с заголовками (Headers):
texture-dict : String - Название словаря
texture-name : String - Название текстуры (Необязательно)
Создать замену (ЭКСПЕРИМЕНТАЛЬНАЯ)
Добавляет замену прошлым текстурам на новые
oldTexDict : String - Название словаря (Изначальное)
oldTexName: String - Название текстуры (Изначальное)
newTexDict: String - Название словаря (Новое)
newTexName: String - Название текстуры (Новое)
Убрать замену (ЭКСПЕРИМЕНТАЛЬНАЯ)
Если вы создали замену, вы сможете её убрать при помощи этой функции
oldTexDict : String - Название словаря (Изначальное)
oldTexName: String - Название текстуры (Изначальное)
Убрать все замены (ЭКСПЕРИМЕНТАЛЬНАЯ)
Позволяет убрать все существующие замены текстур

Создан для (Новогодний конкурс 2024: Развиваем портал вместе)
Данные были взяты из официального дискорд канала. Тестовая ветка которая была: 11_test_1102_eXzHpHrWd2UfgUhdau6PDVJ88GG5aQY3
Важно!
Обновление затрагивает только клиентскую часть! Вам не нужно обновлять сервер, чтобы это обновление у вас работало
Транспорт
В общем затронуты лишь части с визуальными состояниями транспортаКолёса
Взаимодействия с колёсами у транспортаУдаление колеса
Открепляет определённое колесо от транспорта и спавнит физический объект колеса
JavaScript:
vehicle.breakOffWheel(number wheelId, bool deleteMapObject)
wheelId : Number - Номер колеса
deleteMapObject : Boolean - Удалять ли физический объект колеса?
Починить колесо
Чинит определённое колесо полностью, например если мы его убираем через vehicle.breakOffWheel мы его сможем восстанавливать через этот метод
JavaScript:
vehicle.fixWheel(number wheelId)
wheelId : Number - Номер колеса
Состояние колеса
Возвращает булевое значение, которое определяется в зависимости колесо не отсоединено ли колесо
JavaScript:
vehicle.isWheelBrokenOff(number wheelId)
wheelId : Number - Номер колеса
Бампер
Взаимодействия с бамперами у транспортаУдаление бампера
Открепляет передний или задний бампер от транспорта и спавнит физический объект колеса
JavaScript:
vehicle.breakOffBumper(bool front, bool deleteMapObject)
front : Boolean - Передний бампер?
deleteMapObject : Boolean - Удалять ли физический объект колеса?
Починить бампер
Чинит передний или задний бампер, например если мы его убираем через vehicle.breakOffBumper мы его сможем восстанавливать через этот метод
JavaScript:
vehicle.fixBumper(bool front)
front : Boolean - Передний бампер?
Состояние бампера
Возвращает булевое значение, которое определяется в зависимости находиться ли бампер на транспорте
JavaScript:
vehicle.isBumperBrokenOff(bool frontnumber wheelId)
front : Boolean - Передний бампер?
Объекты от транспорта
Здесь рассматриваются уже не методы, а именно значения, отвечающие за объекты которые принадлежат транспорту.Если значение было применено на одном клиенте, оно будет синхронизироваться, но транспорт должен быть от сервера
Колеса
Удалять физические колеса, которые были отсоединены от транспорта?
JavaScript:
vehicle.deleteBrokenWheelObjects
Запчасти
Удалять физические запчасти, которые были отсоединены от транспорта? (Бампера как пример)
JavaScript:
vehicle.deleteBrokenPartObjects
Двери
Удалять физические двери, которые были отсоединены от транспорта?
JavaScript:
vehicle.deleteBrokenDoorObjects
Пример
В данном примере показано, как сделать так чтобы двери сразу удалялись, когда они открепляются от транспорта
JavaScript:
vehicle.deleteBrokenDoorObjects = true;
Прочее
Экспериментальные функции крайне нестабильны, и возможно будет доработаны в будущем. При их использовании будьте аккуратны, потому что они могут привести вас к непредвиденным ошибкамТекстура винила (ЭКСПЕРИМЕНТАЛЬНАЯ)
Позволяет заменить текстуру текущего винила на требуемую вам.
JavaScript:
vehicle.setLiveryTexture(texDict, texName)
texDict : String - Название текстурного словаря
texName : String - Название текстуры
Текстура номерного знака (ЭКСПЕРИМЕНТАЛЬНАЯ)
Позволяет заменить текстуру текущего номерного знака на требуемую вам.
JavaScript:
vehicle.setNumberPlateTexture(texDict, texName, texDictNormal, texNameNormal)
texDict : String - Название текстурного словаря
texName : String - Название текстуры
texDictNormal : String - Название текстурного словаря (Карта нормалей)
texNameNormal : String - Название текстуры (Карта нормалей)
Хэндлинг
Теперь параметры fDriveBiasFront/fDriveBiasRear могут быть применимы при спавне транспортаБраузер
Теперь рассмотрим браузеры, в них есть множество интересных нововведений.Текстурный браузер
Позволяет нам использовать браузер как текстуру, чтобы рисовать её в дальнейшем на поверхности объектовСоздание
Для того чтобы создать такой браузер, у нас появился новый метод для создания. Он нам позволит узнать будущие значения словаря и названия текстуры
JavaScript:
mp.browsers.newHeadless(url, width, height, forceFlip = false)
url : String - Ссылка на браузер (.html)
width : Number - Длина
height : Number - Ширина
forceFlip : Boolean - Обрезать ли браузер (Следует использовать только в тех случаях, когда headlessTextureHeightScale неприменим)
После создания текстурного браузера, из него можно вытащить нужные нам поля, они описаны ниже
Новые поля
Текстурный словарь
JavaScript:
browser.headlessTextureDict
Название текстуры
JavaScript:
browser.headlessTextureName
Коэффициент высоты
JavaScript:
browser.headlessTextureHeightScale
Взаимодействие с мышкой
Описываются методы для создания взаимодействия с помощью мышкиВозможность взаимодействия
Позволяет взаимодействовать с браузером при помощи мышки. Это поле, а не метод
JavaScript:
browser.mouseInputEnabled
Применить взаимодействие
Отправляет браузеру событие нажатие мышки на определённых координатах
JavaScript:
browser.sendMouseClickEvent(buttonType, x, y, isUp)
buttonType : Number - Нажатия клавиша, от 0 до 2
x : Number - Координата по оси X
y : Number - Координата по оси Y
isUp : Boolean - Она поднята?
Движение
Отправляет браузеры событие на перемещение мышки внутри браузера
JavaScript:
browser.sendMouseMoveEvent(x, y)
x : Number - Координата по оси X
y : Number - Координата по оси Y
Изменение курсора мыши
Изменяет курсор мыши, который отображается при помощи mp.gui.cursor.show
JavaScript:
mp.gui.cursor.registerCustomIcon(type, packageFilePath, offsetX, offsetY)
type : Number - Тип взаимодействия курсора (Примеры: Обычное, изменение размера по горизонтали)
packageFilePath : String - Путь до расположения изображения курсора
offsetX : Number - Отступ по горизонтали
offsetY : Number - Отступ по вертикали
Пример ресурс на официальном сайте
Скриншоты
Изменение получения скриншотов, на стороне браузера клиентаПолучение прямо в браузере
Позволяет сделать скриншот без запроса на клиент прямо в браузере
HTML:
http://screenshots/take
Получение прямо в браузере с CEF
Позволяет сделать скриншот без запроса на клиент прямо в браузере с интерфейсом от CEF
HTML:
http://screenshots/take_with_cef
Игровые текстуры
Возможность добавления и удаления текстур
Добавление текстуры
Позволяет добавить в игру свою собственную текстуру
HTML:
http://game-textures/put
Требуется отправлять POST запрос с заголовками (Headers):
texture-dict : String - Название словаря
texture-name : String - Название текстуры
width : Number - Длина текстуры
height: Number - Высота текстуры
Гоша не указал какой параметр для отправки содержимого файла изображения, если знаете сообщите ;(
Для получение внутри игры, нужно использовать словарь с префиксом crtxd_
В итоге crtxd_название_словаря
Удаление текстуры
Удаляет из игры собственную текстуру
HTML:
http://game-textures/remove
Требуется отправлять POST запрос с заголовками (Headers):
texture-dict : String - Название словаря
texture-name : String - Название текстуры (Необязательно)
Прочее
Не относятся к категориям вышеЗамена текстур
Позволяет вам манипулировать текстурами при помощи функцийСоздать замену (ЭКСПЕРИМЕНТАЛЬНАЯ)
Добавляет замену прошлым текстурам на новые
HTML:
mp.game.graphics.createWorldTextureSwap(oldTexDict, oldTexName, newTexDict, newTexName)
oldTexDict : String - Название словаря (Изначальное)
oldTexName: String - Название текстуры (Изначальное)
newTexDict: String - Название словаря (Новое)
newTexName: String - Название текстуры (Новое)
Убрать замену (ЭКСПЕРИМЕНТАЛЬНАЯ)
Если вы создали замену, вы сможете её убрать при помощи этой функции
HTML:
mp.game.graphics.removeWorldTextureSwap(oldTexDict, oldTexName)
oldTexDict : String - Название словаря (Изначальное)
oldTexName: String - Название текстуры (Изначальное)
Убрать все замены (ЭКСПЕРИМЕНТАЛЬНАЯ)
Позволяет убрать все существующие замены текстур
HTML:
mp.game.graphics.resetWorldTextureSwaps()
Обнаружение ошибок
Новые способы их обнаруженияОбычная ошибка
Добавлено новое событие, которое вызывается при ошибке
JavaScript:
mp.events.add("uncaughtException", (exception) => {
});
Promise ошибка
Добавлено новое событие, которое вызывается при ошибке, которая была вызвана при помощи Promise (Обещание)
JavaScript:
mp.events.add("unhandledRejection", (promise, error) => {
});
Синхронизация
Обновления с синхронизацией объектовЛодки
Теперь игроки находящиеся на лодке, не будут скакать на ней если она будет в движении, а наоборот будет прикреплены к нейПрицепы
Если вы раньше прицепляли прицеп, то он отсоединялся если вы не являлись его контроллером. Теперь это исправлено, и отображается правильноСамолёты
Если в самолёте раньше находился игрок, и самолёт отлетал на 5 метров, он начинал пропадать. Теперь он будет отображаться в зависимости от дистанции стрима сервераСмена контроллеров педов
Улучшена автоматическая смена контроллеров для более лучшей синхронизации. Будет ещё улучшено в будущих обновленияхЛетающий транспорт
Раньше если транспорте никого не было, то он мог рандомно подлетать от земли. Сейчас с этим стабильноЗавершение
Вот и всё, это всё что я хотел вам рассказать. Надеюсь вам понравилось, очень старался сам разобраться в каждом пункте для того чтобы вам было понятнееСоздан для (Новогодний конкурс 2024: Развиваем портал вместе)