• Из-за обновления 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.PlayerSpawn

Статус
В этой теме нельзя размещать новые ответы.

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
Приветствую господа, подскажите пожалуйста, как сделать чтоб при PlayerDeath, игрок не спавнился через 10 секунд? а ждал пока не поступит сигнал?
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
1,864
207
5
Здравствуйте! Для того чтобы игрок не спавнился через 10 секунд после смерти, а ждал сигнала, вам нужно использовать событие PlayerSpawn с дополнительным условием, например, переменной, которая будет устанавливаться при получении сигнала. В этом случае можно сделать что-то вроде:

Код:
new PlayerIsReady[MAX_PLAYERS];

public OnPlayerDeath(playerid, killerid, reason)
{
    // Допустим, ваш сигнал для спавна имеет ID 1
    PlayerIsReady[playerid] = false;
    SetTimerEx("RespawnPlayer", 10000, false, "i", playerid);
}

public RespawnPlayer(playerid)
{
    if(PlayerIsReady[playerid])
    {
        SetPlayerHealth(playerid, 100);
        SetPlayerPos(playerid, SpawnX, SpawnY, SpawnZ);
        PlayerIsReady[playerid] = false;
        // Дополнительные действия при спавне игрока
    }
    else
    {
        // Игрок не готов к спавну, ждем сигнала
    }
}

public OnPlayerSpawn(playerid)
{
    PlayerIsReady[playerid] = true;
}

Этот код позволяет игроку не спавниться сразу после смерти, а ожидает сигнала в методе OnPlayerSpawn.
 
  • Haha
Реакции: Harland David Sanders

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
Ну я сделал код из Pawna в Rage но не помогло(
Всё равно спавнит в определённой точки.

Код:
 [ServerEvent(Event.PlayerDeath)]
        public void OnPlayerDeath(Player player, Player killer, uint reason)
        {
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            if (!Accounts.OnPlayerLogin(player)) return;
            account.death = 1;
            NAPI.Util.ConsoleOutput($"{account.death}");
            NAPI.ClientEvent.TriggerClientEvent(player, "CEF:CLIENT::PLAYER_DEATH_FOR_WOLRD");
            NAPI.ClientEvent.TriggerClientEvent(player, "PlayerFreeze", true);
            player.Health = 100;
        }

        public void RespawnPlayer(Player player)
        {
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            if (account == null) return;
            if (account.death == 0)
            {
                player.Health = 50;
                new Vector3(-429.29593, 1109.9119, 327.6819);
                account.death = 0;
                // Дополнительные действия при спавне игрока
            }
            else
            {
                // Игрок не готов к спавну, ждем сигнала
            }
        }

        [ServerEvent(Event.PlayerSpawn)]
        public void OnPlayerSpawn(Player player)
        {
           
            RespawnPlayer(player);
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            NAPI.Util.ConsoleOutput($" я того рот !!!");

            /*   player.Health = 50;
               player.Armor = 50;
               player.Dimension = 0;*/
        }
 

NULMEKS

Мастер
12 Янв 2024
299
197
72
27
Ну я сделал код из Pawna в Rage но не помогло(
Всё равно спавнит в определённой точки.

Код:
 [ServerEvent(Event.PlayerDeath)]
        public void OnPlayerDeath(Player player, Player killer, uint reason)
        {
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            if (!Accounts.OnPlayerLogin(player)) return;
            account.death = 1;
            NAPI.Util.ConsoleOutput($"{account.death}");
            NAPI.ClientEvent.TriggerClientEvent(player, "CEF:CLIENT::PLAYER_DEATH_FOR_WOLRD");
            NAPI.ClientEvent.TriggerClientEvent(player, "PlayerFreeze", true);
            player.Health = 100;
        }

        public void RespawnPlayer(Player player)
        {
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            if (account == null) return;
            if (account.death == 0)
            {
                player.Health = 50;
                new Vector3(-429.29593, 1109.9119, 327.6819);
                account.death = 0;
                // Дополнительные действия при спавне игрока
            }
            else
            {
                // Игрок не готов к спавну, ждем сигнала
            }
        }

        [ServerEvent(Event.PlayerSpawn)]
        public void OnPlayerSpawn(Player player)
        {
          
            RespawnPlayer(player);
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            NAPI.Util.ConsoleOutput($" я того рот !!!");

            /*   player.Health = 50;
               player.Armor = 50;
               player.Dimension = 0;*/
        }
Тебя GPT завел в заблуждение это так не работает.
 

NULMEKS

Мастер
12 Янв 2024
299
197
72
27

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
код пустой, выше прописан DeathPlayer
и SpawnPlayer
код пишу для себя с нуля.


Код:
[ServerEvent(Event.PlayerDeath)]
        public void OnPlayerDeath(Player player, Player killer, uint reason)
        {
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            if (!Accounts.OnPlayerLogin(player)) return;
            account.death = 1;
            NAPI.Util.ConsoleOutput($"{account.death}");
            NAPI.ClientEvent.TriggerClientEvent(player, "CEF:CLIENT::PLAYER_DEATH_FOR_WOLRD");
            NAPI.ClientEvent.TriggerClientEvent(player, "PlayerFreeze", true);
            player.Health = 100;
        }

        public void RespawnPlayer(Player player)
        {
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            if (account == null) return;
            if (account.death == 0)
            {
                player.Health = 50;
                new Vector3(-429.29593, 1109.9119, 327.6819);
                account.death = 0;
                // Дополнительные действия при спавне игрока
            }
            else
            {
                // Игрок не готов к спавну, ждем сигнала
            }
        }

        [ServerEvent(Event.PlayerSpawn)]
        public void OnPlayerSpawn(Player player)
        {
          
            RespawnPlayer(player);
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            NAPI.Util.ConsoleOutput($" я того рот !!!");

            /*   player.Health = 50;
               player.Armor = 50;
               player.Dimension = 0;*/
        }
 

NULMEKS

Мастер
12 Янв 2024
299
197
72
27
код пустой, выше прописан DeathPlayer
и SpawnPlayer
код пишу для себя с нуля.


Код:
[ServerEvent(Event.PlayerDeath)]
        public void OnPlayerDeath(Player player, Player killer, uint reason)
        {
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            if (!Accounts.OnPlayerLogin(player)) return;
            account.death = 1;
            NAPI.Util.ConsoleOutput($"{account.death}");
            NAPI.ClientEvent.TriggerClientEvent(player, "CEF:CLIENT::PLAYER_DEATH_FOR_WOLRD");
            NAPI.ClientEvent.TriggerClientEvent(player, "PlayerFreeze", true);
            player.Health = 100;
        }

        public void RespawnPlayer(Player player)
        {
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            if (account == null) return;
            if (account.death == 0)
            {
                player.Health = 50;
                new Vector3(-429.29593, 1109.9119, 327.6819);
                account.death = 0;
                // Дополнительные действия при спавне игрока
            }
            else
            {
                // Игрок не готов к спавну, ждем сигнала
            }
        }

        [ServerEvent(Event.PlayerSpawn)]
        public void OnPlayerSpawn(Player player)
        {
         
            RespawnPlayer(player);
            Accounts account = player.GetData<Accounts>(Accounts.Account_Key);
            NAPI.Util.ConsoleOutput($" я того рот !!!");

            /*   player.Health = 50;
               player.Armor = 50;
               player.Dimension = 0;*/
        }
Зайди в лс. скинул пример решения.
 

JJIGolem

Старожил
high coder
19 Окт 2020
237
281
142
Вам необходимо отключить дефолтный респавн игрока после его смерти. На серверной части C# отключается следующим образом: NAPI.Server.SetAutoRespawnAfterDeath(false);
Необходимо вставить там, где у вас запускается сервер. К примеру в одном из обработчиков события Event.ResourceStart
 

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
Всем спасибо (y)
Помогло отключение автоматического спавна.
 
Статус
В этой теме нельзя размещать новые ответы.