Решено проблемы со спавном игрока после смерти

Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
Статус
В этой теме нельзя размещать новые ответы.
Пользователь
Регистрация
23 Май 2024
Сообщения
11
Всем привет. Создаю мод с нуля по гайдам, в своем роде я новичок. Столкнулся с проблемой: после того как я умер, в моем случае, разбился насмерть, я появляюсь не на месте спавна, а на кольце grove в скине CJ.
Подскажите, как эту проблему можно преодолеть? в OnPlayerSpawn я задаю координаты спавна игроку.

onPlayerSpawn:
public OnPlayerSpawn(playerid)
{
        if(!temp_player_info[playerid][pLogged] && !RegSkinChoose[playerid])
        {
                SCM(playerid, COLOR_RED, "[Ошибка] {ffffff}Вы не авторизованы на сервере.");
                return KickPlayer(playerid);
        }
        
        SetPlayerInterior(playerid, 0);
        SetPlayerVirtualWorld(playerid, 0);
        switch(random(2))
        {
                case 0:
                {
                        SetPlayerPos(playerid, 1940.9644, -1288.7435, 15.3792);
                        SetPlayerFacingAngle(playerid, 1.8388);
                }
                case 1:
                {
                        SetPlayerPos(playerid, 1953.0961, -1289.0625, 15.3858);
                        SetPlayerFacingAngle(playerid, 90.0);
                }
                case 2:
                {
                        SetPlayerPos(playerid, 1952.4254, -1280.3700, 15.3858);
                        SetPlayerFacingAngle(playerid, 90.0);
                }
        }
        FreezePlayer(playerid, 2000);
        SetCameraBehindPlayer(playerid);
        SetPlayerSkin(playerid, player_info[playerid][pSkin]);
        SetPlayerScore(playerid, player_info[playerid][pLvl]);
        SetPlayerColor(playerid, NAME_DEFAULT);
}

SpawnInfo при авторизации игрока на сервере есть.
AddPlayerClass в modinit добавил.
 
Решение
Для ответа как решение:
Проблема была в том, что в функции OnPlayerRequestClass не было функции, определяющей дальнейшую информации о спавне.

Решение:
Pawn:
public OnPlayerRequestClass(playerid, classid)
{
    SetSpawnInfo(playerid, NO_TEAM, 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
   
    SpawnPlayer(playerid);
    return 1;
}
Не пишите мне, я злой.
Активный
Регистрация
21 Мар 2022
Сообщения
82
А что там должно быть? У меня там ничего нет, только отображение килл-листа.
Проверка авторизации, сброс виртуального мира и интерьера (на случай если сдох в интерьере), далее задаешь координаты спавна игрока и тд. Пробуй впихнуть все то, что нужно после смери игрока (например можно установку скина ему сделать).
 
Пользователь
Регистрация
23 Май 2024
Сообщения
11
Создатель WayDev
Команда форума
Администратор
Регистрация
13 Мар 2022
Сообщения
1,041
@maxshtorm, пробуй.
Pawn:
public OnPlayerDeath(playerid, killerid, reason)
{
    foreach(new i:Player)
    {
        if(!temp_player_info[i][pAdminAuth])
            continue;
        
        SendDeathMessageToPlayer(i, killerid, playerid, reason);
    }
    SpawnPlayer(playerid);
    return 1;
}
 
Пользователь
Регистрация
23 Май 2024
Сообщения
11
@maxshtorm, пробуй.
Pawn:
public OnPlayerDeath(playerid, killerid, reason)
{
    foreach(new i:Player)
    {
        if(!temp_player_info[i][pAdminAuth])
            continue;
       
        SendDeathMessageToPlayer(i, killerid, playerid, reason);
    }
    SpawnPlayer(playerid);
    return 1;
}
Я уже так делал. Первый раз игрока спавнит нормально, но если умереть снова, то игрок появляется опять хер пойми где, в фризе, и бесконечно умирает. Фриз конечно может быть из-за того что я его в onplayerspawn делаю, но суть такая.
 
Создатель WayDev
Команда форума
Администратор
Регистрация
13 Мар 2022
Сообщения
1,041
@maxshtorm, фриз идет после телепортирования игрока на координаты (SetPlayerPos), так что, все нормально. Первый раз телепортирует куда нужно, а все последующие разы в центр карты?
 
Пользователь
Регистрация
23 Май 2024
Сообщения
11
@maxshtorm, фриз идет после телепортирования игрока на координаты (SetPlayerPos), так что, все нормально. Первый раз телепортирует куда нужно, а все последующие разы в центр карты?
В las-venturas на элеватор. Ну знаешь, где дефолт спавн TDE находится. Сейчас прикреплю видео.
 
Пользователь
Регистрация
23 Май 2024
Сообщения
11
Создатель WayDev
Команда форума
Администратор
Регистрация
13 Мар 2022
Сообщения
1,041
@maxshtorm, такого, во всяком случае, не должно быть постоянно. Пробуй телепортироваться с интервалом на крышу после смерти. Сам по себе момент странный, с таким впервые сталкиваюсь за все 8 лет работы с этим языком. Умер - появился - ждешь 5-10 секунд - телепортируешься.
 
Пользователь
Регистрация
23 Май 2024
Сообщения
11
@maxshtorm, такого, во всяком случае, не должно быть постоянно. Пробуй телепортироваться с интервалом на крышу после смерти. Сам по себе момент странный, с таким впервые сталкиваюсь за все 8 лет работы с этим языком.
Не то видиво залил. спавнит нормально, но вот этот момент напряжный только
 
Пользователь
Регистрация
23 Май 2024
Сообщения
11
Создатель WayDev
Команда форума
Администратор
Регистрация
13 Мар 2022
Сообщения
1,041
@maxshtorm, то, что мелькает пустота - это нормально. Всегда так было и всегда так будет. Со скином. в OnPlayerRequestClass в SetSpawnInfo можешь поменять ноль на player_info[playerid][pSkin]. Не могу сказать точно, поможет или нет, но все же.

Было:
Pawn:
SetSpawnInfo(playerid, NO_TEAM, 0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
Стало:
Pawn:
SetSpawnInfo(playerid, NO_TEAM, player_info[playerid][pSkin], 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху