Malboro

Настройка клиентской части для разработки в RageMP (C# client side)

Recommended Posts

Posted (edited)

Привет!!!


Продолжаем. Рассмотрим настройку среды разработки для клиентской части. Сразу извините за звук, поехали:

Строка настройки событий после сборки:

del "E:\RageMP\client_packages\cs_packages\*.*" /Q
for /R %CD% %%i in (*.cs) do (
	xcopy %%i "E:\RageMP\client_packages\cs_packages\" /Q /Y /EXCLUDE:exclude.txt
)

Пока!!!

Edited by Malboro
  • Like 1

Share this post


Link to post
Share on other sites

При сборке ошибка. Ругается на цикл
 

1>C:\RAGE-Server\RageMP\Client\Client.csproj(18,5): error MSB3073: выход из команды "del "C:\RAGE-Server\client_packages\cs_packages\*.*" /Q
1>C:\RAGE-Server\RageMP\Client\Client.csproj(18,5): error MSB3073: for /R Í% %%i in (*.cs) do (
1>C:\RAGE-Server\RageMP\Client\Client.csproj(18,5): error MSB3073: 	xcopy %%i "C:\RAGE-Server\client_packages\cs_packages\" /Q /Y /EXCLUDE:exclude.txt
1>C:\RAGE-Server\RageMP\Client\Client.csproj(18,5): error MSB3073: )" с кодом 255.

 

Share this post


Link to post
Share on other sites
Posted (edited)
13 часа назад, Dr.Deft сказал:

При сборке ошибка. Ругается на цикл
 

1>C:\RAGE-Server\RageMP\Client\Client.csproj(18,5): error MSB3073: выход из команды "del "C:\RAGE-Server\client_packages\cs_packages\*.*" /Q
1>C:\RAGE-Server\RageMP\Client\Client.csproj(18,5): error MSB3073: for /R Í% %%i in (*.cs) do (
1>C:\RAGE-Server\RageMP\Client\Client.csproj(18,5): error MSB3073: 	xcopy %%i "C:\RAGE-Server\client_packages\cs_packages\" /Q /Y /EXCLUDE:exclude.txt
1>C:\RAGE-Server\RageMP\Client\Client.csproj(18,5): error MSB3073: )" с кодом 255.

 

Судя по ошибке не может удалить старые файлы, возможно они открыты в редакторе, либо недостаточно прав для удаления(попробуй запустить vs от имени администратора)

И еще скинь строку посмотреть смущает один момент:

for /R Í% %%i

 

Edited by Malboro

Share this post


Link to post
Share on other sites

Вот сам код 

del "C:\RAGE-Server\client_packages\cs_packages\*.*" /Q
for /R %CD% %%i in (*.cs) do (
	xcopy %%i "C:\RAGE-Server\client_packages\cs_packages\" /Q /Y /EXCLUDE:exclude.txt
)

Ругается именно на цикл. Если без него, то отдельное удаление и копирование работает. Если %CD% заменить на папку, то ошибка так же остается. 

Share this post


Link to post
Share on other sites
1 час назад, Dr.Deft сказал:

Вот сам код 

del "C:\RAGE-Server\client_packages\cs_packages\*.*" /Q
for /R %CD% %%i in (*.cs) do (
	xcopy %%i "C:\RAGE-Server\client_packages\cs_packages\" /Q /Y /EXCLUDE:exclude.txt
)

Ругается именно на цикл. Если без него, то отдельное удаление и копирование работает. Если %CD% заменить на папку, то ошибка так же остается. 

Попробуй открыть. Окно команд в корне клиента и выполнить эту команду. У меня винда 10 полет нормальный ошибок нет. Так же попробуй от имени администратора.

Share this post


Link to post
Share on other sites

Спасибо за видео!
При сборке проекта сталкиваюсь с такой же проблемой как у Dr.Deft.

Сделал себе файл copy.cmd c тем же текстом и копирование начало работать.

Запускаю сервер -> Захожу на него -> Выходит уведомление о компиляции клиентских скриптов

Но сами скрипты не запускаются. Для примера прикрепляю ниже ПУТЬ (куда копируются файлы) и ФАЙЛ (с исходным кодом вывода в чат при запуске). Текст в чат не выводит.

KMsAA_3zbTk.jpg

Что неправильно делаю? Сможете помочь?

Share this post


Link to post
Share on other sites

Первое что нужно сделать - это убедится в наличии файла в папке с Rage:

enable-clientside-cs.txt

Без этого файла клиентская часть работать не будет, так как на версии 3.7 клиент шарп находится в стадии теста. Если его нет нужно его создать

Share this post


Link to post
Share on other sites

Файл есть в наличии.

xbFqbhB-n1M.jpg

В некоторых уроках предлагали записать в него true. Вероятно это роли не играет, но оба варианта (с и без содержимого) у меня не проходят.

Share this post


Link to post
Share on other sites
1 час назад, pandov сказал:

Файл есть в наличии.

xbFqbhB-n1M.jpg

В некоторых уроках предлагали записать в него true. Вероятно это роли не играет, но оба варианта (с и без содержимого) у меня не проходят.

Записывать в него однозначно нечего не нужно. Возможно следует дождаться пока клиент загрузится полностью, или чат  отключен. Создай событие и выведи что-нибудь в чат, вызови его явным образом чтобы убедится что чат и клиент работает наверняка. Это даст тебе направление куда копать. Мне просто совсем не хочется гта запускать. Но если не разберешься напиши в дискорде помогу. Там в русском чате найдешь

Share this post


Link to post
Share on other sites

Посмотрел ваше видео про события. Написал аналогичный код. И все равно почему-то не работает. Однако что заметил: при заходе на сервер клиентские файлы кэшируются (в директорию client_resources в корневой папке мультиплеера). Странно почему они не вызываются.

Ниже прикрепляю код двух файлов (клиента и сервера), а также тест их работы.

MainServer.cs

using GTANetworkAPI;

namespace Gamemode
{
    public class MainServer : Script
    {
        public MainServer()
        {
        }

        [ServerEvent(Event.PlayerConnected)]
        public void OnPlayerConnected(Client client)
        {
            client.SendChatMessage("ServerEvent.PlayerConnected");
            NAPI.Util.ConsoleOutput($"Player name is {client.Name}");
            client.TriggerEvent("ClientTestEvent", "TriggerClientEvent");
        }

        [RemoteEvent("TestEvent")]
        public void OnTestEvent(Client client, string message)
        {
            NAPI.Util.ConsoleOutput($"Client message: {message}");
        }
    }
}

MainClient.cs

using RAGE;

namespace ClientScripts
{
    public class MainClient : Events.Script
    {
        public MainClient()
        {
            Events.OnPlayerChat += OnPlayerChat;
            Events.Add("ClientTestEvent", OnClientTestEvent);
            Chat.Output("Test client!");
        }

        private void OnClientTestEvent(object[] args)
        {
            string message = (string)args[0];
            Chat.Output(message);
        }

        private void OnPlayerChat(string text, Events.CancelEventArgs cancel)
        {
            Events.CallRemote("TestEvent", text);
        }
    }
}

Скриншот работы. Ни один из сценариев клиента не работает.

iS1Gu4uVJ58.jpg

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.