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

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается 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/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


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

Вопрос Вопрос по Client-side

fiend

Новый участник
17 Ноя 2023
19
0
21
Всем привет, прошу помощи по настройке сервера, а именно клиентской стороны. Почему-то сервер не видит скриптов не на js не на с#. На серверной стороне все скрипты работают на с#. Возможно есть актуальные гайды или подскажите что проверить нужно.
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,241
230
5
Здравствуйте! Для того чтобы сервер мог видеть скрипты на клиентской стороне, вам необходимо удостовериться, что все скрипты корректно подключены в HTML файле и расположены в нужных директориях. Также удостоверьтесь, что пути к скриптам указаны правильно. Проверьте консоль браузера на наличие ошибок загрузки скриптов. Может быть проблема связана с настройками CORS (Cross-Origin Resource Sharing), если скрипты загружаются с другого домена. Возможно, вам также пригодится изучение документации по вашему веб серверу и языку программирования. Надеюсь, эти подсказки помогут вам решить проблему!
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,768
1,581
211
28
Давай разберёмся по этапно.

JS скрипты:
  • Они могут находиться где угодно внутри папки "server_files/client_packages/".
  • Первый и единственный файл, который подгружает сам RAGEMP называется "index.js", а значит у тебя как минимум должен быть такой файл.
Подключение файлов происходит с помощью прописывания каждого отдельного скрипта внутри первого файла index.js (или внутри тех, которые так же подключены изначально в index.js) с помощью "require('./file.js');"

C# скрипты:
  • Они могут находиться где угодно внутри папки "server_files/client_packages/cs_packages/"
  • Все файлы с расширением ".cs" автоматически подгружаются оттуда и компилируется в момент подключения игрока к серверу (это значит, что тебе не обязательно собирать проект клиентской стороны в .dll файл).
Подключение файлов происходит через наследования класса "Script" из файла rage-sharpN.dll, который тебе нужен для разработки клиентской стороны на C#.
 

Slash

Участник портала
BackEnd developer
10 Янв 2023
130
15
53
Всем привет, прошу помощи по настройке сервера, а именно клиентской стороны. Почему-то сервер не видит скриптов не на js не на с#. На серверной стороне все скрипты работают на с#. Возможно есть актуальные гайды или подскажите что проверить нужно.
у тебя сборка какая то? или ты с нуля пишешь?
 

fiend

Новый участник
17 Ноя 2023
19
0
21
Давай разберёмся по этапно.

JS скрипты:
  • Они могут находиться где угодно внутри папки "server_files/client_packages/".
  • Первый и единственный файл, который подгружает сам RAGEMP называется "index.js", а значит у тебя как минимум должен быть такой файл.
Подключение файлов происходит с помощью прописывания каждого отдельного скрипта внутри первого файла index.js (или внутри тех, которые так же подключены изначально в index.js) с помощью "require('./file.js');"

C# скрипты:
  • Они могут находиться где угодно внутри папки "server_files/client_packages/cs_packages/"
  • Все файлы с расширением ".cs" автоматически подгружаются оттуда и компилируется в момент подключения игрока к серверу (это значит, что тебе не обязательно собирать проект клиентской стороны в .dll файл).
Подключение файлов происходит через наследования класса "Script" из файла rage-sharpN.dll, который тебе нужен для разработки клиентской стороны на C#.
по с# путь правильный, файл cs не компилировал, унаследование тоже прописывал
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,768
1,581
211
28
по с# путь правильный, файл cs не компилировал, унаследование тоже прописывал
Ну тогда без бОльшей информации помочь тебе чем-то не получится.
Прикрепляй скриншоты консоли, папок с наличием скриптов, код скрипта, который ты подключил и т.д.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,768
1,581
211
28
скинь скрины с папки клиентских пакетов + код index.js
Если у него C# скрипты, то index.js иметь не обязательно.
Можно, если у него так же есть скрипты на JS стороне, но не обязательно.
 

Slash

Участник портала
BackEnd developer
10 Янв 2023
130
15
53
Если у него C# скрипты, то index.js иметь не обязательно.
Можно, если у него так же есть скрипты на JS стороне, но не обязательно.
как я понял у него на js клиентка, ну а так да

если ты про название конкретно, то вроде входным всегда его делают, но хз как у него
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,768
1,581
211
28

fiend

Новый участник
17 Ноя 2023
19
0
21
1737916307718.png

1737916324654.png

1737916338789.png


Меня интересует больше пока что работа на с#, сильно не пинайте за ошибки, скажите что не так. 10 поставил чисто проверить работу скрипта.
 

Slash

Участник портала
BackEnd developer
10 Янв 2023
130
15
53
Посмотреть вложение 18168
Посмотреть вложение 18169
Посмотреть вложение 18170

Меня интересует больше пока что работа на с#, сильно не пинайте за ошибки, скажите что не так. 10 поставил чисто проверить работу скрипта.
попробуй вместо Player target передавать айди например и в команде его же писать, ибо player'a ты вроде никак не передашь через команду
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,768
1,581
211
28
Посмотреть вложение 18168
Посмотреть вложение 18169
Посмотреть вложение 18170

Меня интересует больше пока что работа на с#, сильно не пинайте за ошибки, скажите что не так. 10 поставил чисто проверить работу скрипта.
Не уверен на 100%, но если я не ошибаюсь, то команда может принимать объект (то есть Player) только первым аргументом для игрока, который вводит команду.
Дальше ты уже используешь типы данных struct, то есть числа (boolean, float, int, byte, long), текст (string) и т.д.
Таким образом если ты хочешь просто проверить работает ли твоя клиентская сторона, то исправь код на следующий:

Сервер:
C#:
[Command("heal")]
public void SetHealth(Player player, int heal)
{
    player.TriggerEvent("PlayerHealth", heal);
    player.SendChatMessage($"Вы пытаетесь изменить своё здоровье на {heal}");
}

Клиент:
C#:
public void PlayerHealth(object[] args)
{
    if (args == null || args.Length == 0) return;

    int health = Convert.ToInt32(args[0]);
    if (health < 0) return;

    RAGE.Elements.Player.LocalPlayer.SetHealth(health);
}

Если же ты хочешь делать команду по target, то нужно вписывать либо динамический Id игрока, который устанавливается RAGEMP, либо в будущем свой статичный, который выдаётся каждому игроку навсегда.
Для использования логики с ID RAGEMP:
C#:
[Command("heal")]
public void SetHealth(Player player, int targetId, int heal)
{
    Player target = NAPI.Pools.GetAllPlayers().FirstOrDefault(x => x.Value == targetId);
    if (target == null)
    {
        player.SendChatMessage($"Игрока с Id {targetId} не существует в данный момент.");
        return;
    }

    target.TriggerEvent("PlayerHealth", heal);
    player.SendChatMessage($"Вы пытаетесь изменить здоровье {target.Name} ({target.Value}) на {heal}");
}

Ну либо с именем, как тебе удобнее:
C#:
[Command("heal", GreedyArg = true)]
public void SetHealth(Player player, int heal, string targetName)
{
    Player target = NAPI.Pools.GetAllPlayers().FirstOrDefault(x => x.Name == targetName);
    if (target == null)
    {
        player.SendChatMessage($"Игрока с именем {targetName} не существует в данный момент.");
        return;
    }
 
    target.TriggerEvent("PlayerHealth", heal);
    player.SendChatMessage($"Вы пытаетесь изменить здоровье {target.Name} ({target.Value}) на {heal}");
}

В любом случае тебе нужно искать объект игрока по каким-то ключевым данным, ты не можешь получить его в команду автоматически.
 
Последнее редактирование:
Реакции: Slash

fiend

Новый участник
17 Ноя 2023
19
0
21
Я заметил что когда я создаю зависимости в файле проекта то вылазит ошибка какого-то файла в консоли и консоль закрывается, а если я просто перекидываю cs файлик то там зависимость на скрипт перестает подсвечиваться как будь-то она не активна.

1737918047031.png
 

fiend

Новый участник
17 Ноя 2023
19
0
21
Еще в консоли такое вылазит после команды.

1737918220039.png