Вопрос Проблема Как связать клиентскую client-side [C#] с server-side [C#] (RAGE:MP 1.1)

yungstep

Участник портала
Автор темы
14
1
5
В server-side[C#] подключен include Bootstrapper, все ивенты работают исправно [ServerEvent(*)].

В моём случае хочу вызвать ивент на стороне клиента с помощью команды из чата /test, смысл её вызов любой клиентской функции, к примеру тривиальная Chat.Output("Вы прописали команду /test");.

Кусок кода server-side
C#:
public class main : Script

    {

     [ServerEvent(Event.ResourceStart)]

     [Command("test")]

     public void CommandTest(Player player)

        {

            NAPI.Util.ConsoleOutput("Попытка вызвать ивент cl_test");  // для проверки работоспособности

            NAPI.ClientEvent.TriggerClientEvent(player, "cl_test");

        }

    }


cl_cef - имя для обращения к ивенту на стороне клиента.

Дак вот сам вопрос как принять вызов ивента "cl_test", если приведённая ниже конструкция не сработала

Кусок кода client-side
C#:
    public class cl_main : Events.Script

    {

        public cl_main()

        {

            Events.Add("cl_test", OnTest);

        }



        private void OnTest()

        {

            Chat.Output("Вы прописали команду /test");

        }

    }


Проблема заключается больше в том, что нету мануала как русскоязычного так и англоязычного который расскажет как соединить client-side [C#] и server-side [C#], при компиляции ошибок нет (возможно они будут по коду, потому что составлял на сайте), для клиентской стороны использован include rage-sharp, ragemp-server.exe подгружает файлы из директории /client_packages/cl_main.cs.
Что я мог упустить?
 

IronPython

Участник портала
38
6
17
Client Code

C#:
using RAGE;
using System;

namespace cs_packages
{
    public class Client : Events.Script
    {
        public Client()
        {
            Events.Add("client.test", ClientTestEvent);
        }

        public void ClientTestEvent(object[] obj)
        {
            string message = (string)obj[0];
            RAGE.Chat.Output($"{message}");
        }
    }
}
Server Code

C#:
using GTANetworkAPI;

namespace Server
{
    public class Server : Script
    {
        [Command("testevent")]
        public void TestClientEvent(Player player , string text = "hello world")
        {
            player.TriggerEvent("client.test" , text);
        }

    }
}
Нет возможности сейчас описать что там происходит , если хотите узнать пингуйте меня в ДС , на сервере этого форума ( ник такойже как и здесь )
 

IronPython

Участник портала
38
6
17
А ну и еще клиентские шарп файлы должны лежать в папке ./client_packages/cs_packages/*, и чтобы в папке с клиентскими файлами шарпа(cs_packages) не должно быть ничего кроме .cs файлов
 

yungstep

Участник портала
Автор темы
14
1
5
А ну и еще клиентские шарп файлы должны лежать в папке ./client_packages/cs_packages/*, и чтобы в папке с клиентскими файлами шарпа(cs_packages) не должно быть ничего кроме .cs файлов
Команда /testevent исполняется, так как ERROR: Command not found в чате не пишется (как например /asdasd, которой нет), но любые из нижеприведённых функций на клиентской стороне просто не исполяются.
C#:
 RAGE.Chat.Output($"{message}"); RAGE.Discord.Update(message, message); RAGE.Game.Ped.GetPedMoney(500);
 

yungstep

Участник портала
Автор темы
14
1
5
P.S в директории \client_packages\cs_packeges\ находится только Client.cs.
 

IronPython

Участник портала
38
6
17
Команда /testevent исполняется, так как ERROR: Command not found в чате не пишется (как например /asdasd, которой нет), но любые из нижеприведённых функций на клиентской стороне просто не исполяются.
C#:
 RAGE.Chat.Output($"{message}"); RAGE.Discord.Update(message, message); RAGE.Game.Ped.GetPedMoney(500);
Закиньте свой код или сервак куда-то и скиньте линк на место с ним , а то так с ходу я не могу понять почему оно не работает
 

yungstep

Участник портала
Автор темы
14
1
5
Закиньте свой код или сервак куда-то и скиньте линк на место с ним , а то так с ходу я не могу понять почему оно не работает
https://yadi.sk/d/_hUhqo8WyEW8UQ
Папка с сервером валяется в D:\Server*
F6 - сборка клиентской части настроена
SHIFT+F6 - сборка серверной части настроена
Проект в созданный VS2019 находится D:\Server\project
 

IronPython

Участник портала
38
6
17
https://yadi.sk/d/_hUhqo8WyEW8UQ
Папка с сервером валяется в D:\Server*
F6 - сборка клиентской части настроена
SHIFT+F6 - сборка серверной части настроена
Проект в созданный VS2019 находится D:\Server\project
Вам нужно копировать все файлы и папки, а вы копируете только файлы
 

yungstep

Участник портала
Автор темы
14
1
5
Вам нужно копировать все файлы и папки, а вы копируете только файлы
Вариант 1. Перенёс все файлы и папки в ручную, из директории D:\Server\project\server-side\bin\Debug\netcoreapp3.1\* в директорию D:\Server\dotnet\resources\gamemode\ - не помогло, команда всё так же вызывается сервером, но не исполняется клиентом.

Вариант 2. Построил билд, как в уроке (https://ragemp.pro/threads/s-sozdanie-i-nastrojka-servera-dlja-ragemp.772/), перенёс все файлы и папки в ручную, из директории D:\Server\project\server-side\bin\Release\netcoreapp3.1\* в директорию D:\Server\dotnet\resources\gamemode\ - не помогло, симптомы те же самые.

Вариант 3. Добавил все файлы и папки из самого рейджа, к Варианту 1, а потом к Варианту 2, из директории D:\\RageMP\dotnet\* в директорию D:\Server\dotnet\resources\gamemode\ - не помогло, всё по прежнему не работает.

Вариант 4. Сделал как всё в варианте 1, варианте 2, только копировал из D:\Server\project\server-side\, прописав в meta.xml различные пути к server-side.dll - опять не помогло.

Вариант 5. Добавил к варианту 4 вариант 3 - почувствовал небольшое повышение температуры в районе кресла (тоже не прокатило).

Наличие D:\Server\client_packages\cs_packeges\Client.cs в каждом из вариантов есть.
Ошибок при запуске ragemp-server.exe, в консуле не отображается. (консоль сообщает, [DONE] The server is ready to accept connectors.) Вес Client-side совпадает с весом папки + Client.cs.
 

IronPython

Участник портала
38
6
17
Вариант 1. Перенёс все файлы и папки в ручную, из директории D:\Server\project\server-side\bin\Debug\netcoreapp3.1\* в директорию D:\Server\dotnet\resources\gamemode\ - не помогло, команда всё так же вызывается сервером, но не исполняется клиентом.

Вариант 2. Построил билд, как в уроке (https://ragemp.pro/threads/s-sozdanie-i-nastrojka-servera-dlja-ragemp.772/), перенёс все файлы и папки в ручную, из директории D:\Server\project\server-side\bin\Release\netcoreapp3.1\* в директорию D:\Server\dotnet\resources\gamemode\ - не помогло, симптомы те же самые.

Вариант 3. Добавил все файлы и папки из самого рейджа, к Варианту 1, а потом к Варианту 2, из директории D:\\RageMP\dotnet\* в директорию D:\Server\dotnet\resources\gamemode\ - не помогло, всё по прежнему не работает.

Вариант 4. Сделал как всё в варианте 1, варианте 2, только копировал из D:\Server\project\server-side\, прописав в meta.xml различные пути к server-side.dll - опять не помогло.

Вариант 5. Добавил к варианту 4 вариант 3 - почувствовал небольшое повышение температуры в районе кресла (тоже не прокатило).

Наличие D:\Server\client_packages\cs_packeges\Client.cs в каждом из вариантов есть.
Ошибок при запуске ragemp-server.exe, в консуле не отображается. (консоль сообщает, [DONE] The server is ready to accept connectors.) Вес Client-side совпадает с весом папки + Client.cs.
cs_packages
 
  • Like
Реакции: Winsley

IronPython

Участник портала
38
6
17
Вариант 1. Перенёс все файлы и папки в ручную, из директории D:\Server\project\server-side\bin\Debug\netcoreapp3.1\* в директорию D:\Server\dotnet\resources\gamemode\ - не помогло, команда всё так же вызывается сервером, но не исполняется клиентом.

Вариант 2. Построил билд, как в уроке (https://ragemp.pro/threads/s-sozdanie-i-nastrojka-servera-dlja-ragemp.772/), перенёс все файлы и папки в ручную, из директории D:\Server\project\server-side\bin\Release\netcoreapp3.1\* в директорию D:\Server\dotnet\resources\gamemode\ - не помогло, симптомы те же самые.

Вариант 3. Добавил все файлы и папки из самого рейджа, к Варианту 1, а потом к Варианту 2, из директории D:\\RageMP\dotnet\* в директорию D:\Server\dotnet\resources\gamemode\ - не помогло, всё по прежнему не работает.

Вариант 4. Сделал как всё в варианте 1, варианте 2, только копировал из D:\Server\project\server-side\, прописав в meta.xml различные пути к server-side.dll - опять не помогло.

Вариант 5. Добавил к варианту 4 вариант 3 - почувствовал небольшое повышение температуры в районе кресла (тоже не прокатило).

Наличие D:\Server\client_packages\cs_packeges\Client.cs в каждом из вариантов есть.
Ошибок при запуске ragemp-server.exe, в консуле не отображается. (консоль сообщает, [DONE] The server is ready to accept connectors.) Вес Client-side совпадает с весом папки + Client.cs.

ТУТ ВСЕ РАБОТАЕТ
 

yungstep

Участник портала
Автор темы
14
1
5

ТУТ ВСЕ РАБОТАЕТ
А что ты сделал? Я сравниваю проекты и везде все одно и тоже. У тебя работает, а у меня нет.
Я нашел файлы которые ты вырезал из SERVER\project\server-side\bin\Debug\netcoreapp3.1 в SERVER\dotnet\resources\Server. Ресурс переименовался с gamemode в Server, что и видно в settings.xml. Я сделал на своем проекте тоже самое, но у тебя работает, а у меня нет.
 

yungstep

Участник портала
Автор темы
14
1
5
Проблема была решена. Папка "cs_packages" имела не правильное название.
Было так "cs_packeges", стало так "cs_packages".
 
  • Like
Реакции: IronPython