This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Вопрос по 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
у тебя сборка какая то? или ты с нуля пишешь?
 

fiend

Новый участник
17 Ноя 2023
19
0
21
по с# путь правильный, файл cs не компилировал, унаследование тоже прописывал
 

XDeveluxe

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

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
как я понял у него на js клиентка, ну а так да

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

XDeveluxe

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

fiend

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




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

Slash

Участник портала
BackEnd developer
10 Янв 2023
130
15
53
попробуй вместо Player target передавать айди например и в команде его же писать, ибо player'a ты вроде никак не передашь через команду
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,768
1,581
211
28
Не уверен на 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 файлик то там зависимость на скрипт перестает подсвечиваться как будь-то она не активна.

 

fiend

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