• Из-за обновления 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) последний раз были обновлены:

FAQ Что такое rage-rpc и почему это лучше?

Mercury_One

Специалист
Автор темы
high coder
11 Фев 2021
37
22
82
Здравствуйте, пишу первый раз на этом форуме, так что не бейте)

P.S. Эта статья предназначена для скриптеров, которые пишут или хотят начать писать на JS (клиент и сервер).

Для начала, RPC (Remote Procedure Calls) упрощает двустороннюю связь между сервером, клиентом и cef. Фактически эта библиотека строится на стандартом RAGE API отправки пакетов с сервера на клиент и обратно, но с значительными преимуществами в виде удобства и оптимизации вашего кода.

Приведу небольшой практический пример: Допустиму нас есть CEF - меню фракции, в нём есть какая-то кнопка, действие которой нужно обработать на сервере.

Как эту задачу мы бы реализовали с помощью RAGE API:

CEF:
JavaScript:
$("#quit-fraction").click(function() {
    // тело
    mp.trigger("playerQuitFraction");
});

Клиент:
JavaScript:
mp.events.add("playerQuitFraction", () => {
    mp.events.callRemote("remotePlayerQuitFraction");
});

Сервер:
JavaScript:
mp.events.add("remotePlayerQuitFraction", (player) => {
    // и уже тут что-то делаем с player'ом
});

Как эту задачу мы бы реализовали с помощью rage-rpc:

CEF:
JavaScript:
$("#quit-fraction").click(function() {
    // тело
    rpc.callServer("playerQuitFraction");
});

Сервер:
JavaScript:
rpc.register("playerQuitFraction", (data, info) => {
    let player = info.player;
    // и уже тут что-то делаем с player'ом
});

Rage-rpc работает и в обратную сторону, с сервера в cef.

Мы пропустили посредника, а именно клиент. Может показаться, что не сильно сложно написать пару строк на клиенте, но вы только представьте, что происходит если вам надо создать кучу обработчиков действий из cef.

Проблему захламлённости кода клиента ненужными ивентами (посредниками) между CEF - Сервером и решает rage-rpc. Но это только начало. Функционал rage-rpc достаточно обилен.

Представим ситуацию: Мы хотим узнать на сервере поднимается ли по лестнице игрок в данный момент. Говорить о реализации через RAGE API, тут даже не стоит.

Реализация, через rage-rpc:

Сервер:
JavaScript:
const isClimbing = await rpc.callClient(player, 'getIsClimbing');

if (isClimbing) {
    console.log(player.name + " поднимается.");
} else {
    console.log(player.name + " не поднимается.");
}

Клиент:
JavaScript:
rpc.register('getIsClimbing', () => mp.players.local.isClimbing());

Абсолютно ничего лишнего, всё просто и удобно.

Если вас заинтересовал rage-rpc, вот соурс: https://github.com/micaww/rage-rpc
Там же более подробно рассказано о всех функциях данной библиотеки, о установке и т.п.

Так же если будут какие-то вопросы, задавайте в комментарии, работаю с этой библиотекой уже 3 месяца.
 

Harland David Sanders

Куратор портала
Команда форума
Куратор портала
VIP
high coder
media
10 Сен 2020
3,060
2,451
219
Awesome 👏
 

челавек паук

Специалист
7 Ноя 2020
158
43
95
Круто) Подробно описано. Опробую!
 

filecore

Специалист
high coder
6 Окт 2020
227
87
82
На самом деле посредника мы не лишается, если открыть клиентскую библиотеку rpc то мы увидим унификацию callremote и цеф общается цеф-рпс клиент - рпс сервер - рейдж сервер и в обратном порядке
 

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
582
274
161
29
На самом деле посредника мы не лишается, если открыть клиентскую библиотеку rpc то мы увидим унификацию callremote и цеф общается цеф-рпс клиент - рпс сервер - рейдж сервер и в обратном порядке
дядь В теме об этом и говорится
Для начала, RPC (Remote Procedure Calls) упрощает двустороннюю связь между сервером, клиентом и cef. Фактически эта библиотека строится на стандартом RAGE API отправки пакетов с сервера на клиент и обратно, но с значительными преимуществами в виде удобства и оптимизации вашего кода.
 

artemsiberian

Начинающий специалист
22 Май 2021
59
12
50
Последний коммит 1.5 года назад по либе, рейдж обновят там что нибудь потом во фрейморке ковырятся :confused:
 

Mercury_One

Специалист
Автор темы
high coder
11 Фев 2021
37
22
82
Не понимаю смысла разводить тут дискуссии, это просто статья, хотите используйте, хотите нет. И я лично не понимаю, зачем что-то обновлять если оно и так идеально работает.
Так же думаю, что создатель rage mp, не будет менять систему/API связи сервер - клиент, потому что возможно многие сервера выпадут, вероятно он сам знает о rage-rpc.
 
Последнее редактирование:
  • Like
Реакции: Harland David Sanders

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
582
274
161
29
как разница потом в чем ковырятся в своем или чужом Дядь,
проще юзать натив как есть, ничего сложного
По этой логике проще писать на чистом JS не используя ничего. Долой jquery! Долой VUE! Долой REACT!:j3r:
И разница в том что своё пишешь ты, а чужой пишешь не ты... :j33r:
 

artemsiberian

Начинающий специалист
22 Май 2021
59
12
50
По этой логике проще писать на чистом JS не используя ничего. Долой jquery! Долой VUE! Долой REACT!:j3r:
И разница в том что своё пишешь ты, а чужой пишешь не ты... :j33r:
ну ты сравнил, конечно, жопу с пальцем)))
вью с реактом и хер пойми какой реп двух летний
 

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
582
274
161
29
ну ты сравнил, конечно, жопу с пальцем)))
вью с реактом и хер пойми какой реп двух летний
Я ничего не сравнивал) Пытаюсь понять твою логику. Есть либа, которой можно воспользоваться. хочешь берешь и используешь. Не хочешь, не используешь. Либа построена на фундаментальных API которые врятли будут изменять. "Обновлять то что по сути не нужно обновлять..."
 

artemsiberian

Начинающий специалист
22 Май 2021
59
12
50
Я ничего не сравнивал) Пытаюсь понять твою логику. Есть либа, которой можно воспользоваться. хочешь берешь и используешь. Не хочешь, не используешь. Либа построена на фундаментальных API которые врятли будут изменять. "Обновлять то что по сути не нужно обновлять..."
Сейчас объясню логику ;) у ламбы и у жигули, фундаментально все одинаково, 4 колеса, и та и та свои функции выполняет, умеет двигаться из точки а в точку Б, но есть некоторые минимальные отличия, у каждого они свои, это от запросов и потребностей зависит, так и тут, хочешь берешь и используешь. Не хочешь, не используешь :)
 

X-Clusiv

Модератор
Команда форума
high coder
4 Окт 2020
582
274
161
29
Странное сравнение) Получается тут тебе подгоняют ламбу, ты такой, неее я буду гонять на своем жигуле...
 
  • Like
Реакции: artemsiberian

Brabus7

Активный участник
14 Окт 2021
29
6
40
Кто попробует взять код из примера, ждите ошибку, await работает только внутри функции async
 

Brabus7

Активный участник
14 Окт 2021
29
6
40
Так работает JS. async/await это просто синтаксический сахар над Promise
Для меня как новичка в этом деле не понятен этот сахар.
Надо указать что пример для тех кто умеет работать с этим и смог бы разобраться сам, получается смысла этой темы нет. Так как понять как оно работает можно на примерах которые опять таки требуют знаний....
 

Anatolii

Активный участник
12 Окт 2021
3
0
38
Для меня как новичка в этом деле не понятен этот сахар.
Надо указать что пример для тех кто умеет работать с этим и смог бы разобраться сам, получается смысла этой темы нет. Так как понять как оно работает можно на примерах которые опять таки требуют знаний....
Вот неплохой сайт https://learn.javascript.ru/ Пройди его по порядку, прорешай примеры, и всё станет понятно.

Спасибо автору за тему! Отличная либа.
 

aspidemon

Активный участник
26 Сен 2022
116
42
40
Было бы круто, если либа давала небольшую защиту от executor и подобных читов..