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

Проблема Респавн после смерти

jango81

Участник портала
24 Дек 2023
22
7
13
JavaScript:
mp.events.add("playerDeath", (player, reason, killer) => {
    mp.game.graphics.startScreenEffect("DeathFailNeutralIn", 3000, false);
    setTimeout(() => {
        mp.events.callRemote("CLIENT:SERVER::PLAYER_DEATH_RESPAWN", player);
    }, 3000)
});


C#:
[RemoteEvent("CLIENT:SERVER::PLAYER_DEATH_RESPAWN")]
Тут я хочу после смерти телепортировать игрока в больницу
private void OnPlayerDeathRespawn(Player player)
{
    NAPI.Server.SetAutoRespawnAfterDeath(false);
    NAPI.Player.SpawnPlayer(player, new Vector3(297.4522, -583.98505, 43.141323));
}

Этот ивент задает позицию когда я захожу на сервак
C#:
[ServerEvent(Event.PlayerSpawn)]
private void OnPlayerSpawn(Player player)
{
    player.Health = 100;
    player.Armor = 100;
    player.Position = new Vector3(-1041.1769, -2743.9912, 21.359406);
    player.Rotation = new Vector3(0, 0, -29.736088);
}

Проблема: Из за того что у меня в [ServerEvent(Event.PlayerSpawn)] задается позиция то при смерти игрок телепортируется на спавн вместо больки. Как это можно обойти? Или же есть другой способ как спавнить игрока при входе
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,640
260
100
Проблема возникает из-за того, что вы устанавливаете позицию игрока в ивенте [ServerEvent(Event.PlayerSpawn)]. Чтобы обойти эту проблему, вы можете использовать флаг, чтобы определять, в каком состоянии находится игрок - жив или мертв. Вот примерный план действий:

1. Создайте переменную в классе Player, которая будет хранить состояние игрока (например, "isAlive").

2. В ивенте [ServerEvent(Event.PlayerSpawn)] установите значение "isAlive" в true.

3. В ивенте "CLIENT:SERVER::pLAYER_DEATH_RESPAWN" установите значение "isAlive" в false и телепортируйте игрока в больницу.

4. В ивенте [ServerEvent(Event.PlayerSpawn)] добавьте проверку, чтобы определить, спавнить ли игрока на спавне или в больнице. Например:

C#:
[ServerEvent(Event.PlayerSpawn)]
private void OnPlayerSpawn(Player player)
{
    player.Health = 100;
    player.Armor = 100;
    
    if (player.isAlive)
    {
        player.Position = new Vector3(-1041.1769, -2743.9912, 21.359406);
        player.Rotation = new Vector3(0, 0, -29.736088);
    }
    else
    {
        player.Position = new Vector3(297.4522, -583.98505, 43.141323);
        player.Rotation = new Vector3(0, 0, 0);
    }
}

Надеюсь, это поможет вам решить проблему с телепортацией игрока после смерти.
 
Реакции: Inoi

jango81

Участник портала
24 Дек 2023
22
7
13
В целом нейросеть примерно правильно ответила
Тебе нужен какой-то флаг, который ты проверяешь - в общем то и всё
Спасибо за ответ уже понял и разбираюсь, еще вопрос как тригернуть сервер ивент с сервера на C# я нашел как на js а на шарп нет
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,503
2,200
208
36
как тригернуть сервер ивент с сервера на C#

Это точно правильно сформулированный вопрос?
Тогда ответ в главе "Методы" любого учебника по .net
 

jango81

Участник портала
24 Дек 2023
22
7
13
Это точно правильно сформулированный вопрос?
Тогда ответ в главе "Методы" любого учебника по .net
C#:
[RemoteEvent("CLIENT:SERVER::PLAYER_DEATH_RESPAWN")]

private void OnPlayerDeathRespawn(Player player)
{
    NAPI.Server.SetAutoRespawnAfterDeath(false);
// тут вызов
}

C#:
[ServerEvent(Event.PlayerSpawn)]
private void OnPlayerSpawn(Player player)
{
    player.Health = 100;
    player.Armor = 100;

    if(NAPI.Player.GetPlayerHealth(player) == 0)
    {
        NAPI.ClientEvent.TriggerClientEvent(player, "playerDeath");
        player.Position = new Vector3(297.4522, -583.98505, 43.141323);
    }
    else
    {
        player.Position = new Vector3(-1041.1769, -2743.9912, 21.359406);
        player.Rotation = new Vector3(0, 0, -29.736088);
    }
}
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,503
2,200
208
36
 

Similar threads