• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/ru/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Релиз февральских изменений

koltr

Гуру
Автор темы
high coder
14 Сен 2020
154
114
120
Привет ребят! Хочу сообщить вам отличную новость, а конкретнее о нововведениях мартовского обновления.


Данные были взяты из официального дискорд канала. Тестовая ветка которая была: 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: Развиваем портал вместе)
 

MADARAdev

Гуру
media
30 Дек 2020
633
284
141
27
Привет ребят! Хочу сообщить вам отличную новость, а конкретнее о нововведениях мартовского обновления.


Данные были взяты из официального дискорд канала. Тестовая ветка которая была: 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: Развиваем портал вместе)
(y) Пизд*тый патч-ноут!
 

Vermilion

Специалист
29 Сен 2021
292
144
80
33
Отличный апдейт. Достаточно много идей появляется для реализации
 

Wair

Специалист
26 Ноя 2020
153
27
95
синхра лодок очень сырая, это сильно заметно когда чел смешается по высоте и его дёргает