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

Проблема Events (регистрация в Server)

Holod

Новый участник
10 Янв 2025
20
0
6
Как правильно зарегистрировать / добавить Events? У меня есть следующий код:
C#:
using GTANetworkAPI;
using namerp_server.handlers;

namespace namerp_server
{
    public class Server : Script
    {
        public Server()
        {
            Events.Add("client_register_request", OnClientRegisterRequest);
            Events.Add("client_login_request", OnClientLoginRequest);
            Events.Add("client_create_character_request", OnClientCreateCharacterRequest);
        }
        private async void OnClientRegisterRequest(Player player, string username, string password)
        {
            await new AuthHandler().Register(player, username, password);
        }
        private async void OnClientLoginRequest(Player player, string username, string password)
        {
            await new AuthHandler().Login(player, username, password);
        }

        private async void OnClientCreateCharacterRequest(Player player, string characterName)
        {
            await new CharacterHandler().CreateCharacter(player, characterName);
        }
    }
}

Ругается на:
Код:
Events.Add("client_register_request", OnClientRegisterRequest);
Events.Add("client_login_request", OnClientLoginRequest);
Events.Add("client_create_character_request", OnClientCreateCharacterRequest);

Имя "Events" не существует в текущем контексте.
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
1,875
208
5
Чтобы использовать Events в GTANetworkAPI, вам необходимо создать экземпляр класса Events и затем добавлять обработчики событий к нему. В вашем случае, вам нужно добавить следующее:

C#:
Events.ClientEventTrigger += OnClientEventTrigger;
Events.Add("client_register_request", 3 /* expected arguments count */);
Events.Add("client_login_request", 3);
Events.Add("client_create_character_request", 2);

После этого вам также нужно добавить метод для обработки событий:

C#:
private void OnClientEventTrigger(Client client, int eventNameHash, params object[] arguments)
{
    if (eventNameHash == "client_register_request".GetHashCode())
    {
        string username = arguments[0].ToString();
        string password = arguments[1].ToString();
        OnClientRegisterRequest(client, username, password);
    }
    else if (eventNameHash == "client_login_request".GetHashCode())
    {
        string username = arguments[0].ToString();
        string password = arguments[1].ToString();
        OnClientLoginRequest(client, username, password);
    }
    else if (eventNameHash == "client_create_character_request".GetHashCode())
    {
        string characterName = arguments[0].ToString();
        OnClientCreateCharacterRequest(client, characterName);
    }
}

Этот код должен помочь вам правильно зарегистрировать и добавить обработчики событий в GTANetworkAPI.
 

Holod

Новый участник
10 Янв 2025
20
0
6
Чтобы использовать Events в GTANetworkAPI, вам необходимо создать экземпляр класса Events и затем добавлять обработчики событий к нему. В вашем случае, вам нужно добавить следующее:

C#:
Events.ClientEventTrigger += OnClientEventTrigger;
Events.Add("client_register_request", 3 /* expected arguments count */);
Events.Add("client_login_request", 3);
Events.Add("client_create_character_request", 2);

После этого вам также нужно добавить метод для обработки событий:

C#:
private void OnClientEventTrigger(Client client, int eventNameHash, params object[] arguments)
{
    if (eventNameHash == "client_register_request".GetHashCode())
    {
        string username = arguments[0].ToString();
        string password = arguments[1].ToString();
        OnClientRegisterRequest(client, username, password);
    }
    else if (eventNameHash == "client_login_request".GetHashCode())
    {
        string username = arguments[0].ToString();
        string password = arguments[1].ToString();
        OnClientLoginRequest(client, username, password);
    }
    else if (eventNameHash == "client_create_character_request".GetHashCode())
    {
        string characterName = arguments[0].ToString();
        OnClientCreateCharacterRequest(client, characterName);
    }
}

Этот код должен помочь вам правильно зарегистрировать и добавить обработчики событий в GTANetworkAPI.
Все равно ругается именно на Events
 

JJIGolem

Старожил
high coder
19 Окт 2020
237
281
142
На серверной части C# свои события объявляются через атрибут над методом:
C#:
[RemoteEvent("event_name")]
public void TestEvent(Player player)
{
  // code
}
Важно, сигнатура метода должна иметь первым параметром Player player !
После, можете указать другие свои параметры. Используйте примитивы.

Есть еще один способ, использовать NAPI.ClientEvent.Register. Но использование атрибута более чем достаточно, если вы не преследуете привязку/отвязку событий.
 
Реакции: Holod, Inoi и m0v1l3