Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

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

Статус
В этой теме нельзя размещать новые ответы.
Май
11
2
Пользователь
Всем привет. Создаю мод с нуля по гайдам, в своем роде я новичок. Столкнулся с проблемой: после того как я умер, в моем случае, разбился насмерть, я появляюсь не на месте спавна, а на кольце 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;
}
Не пишите мне, я злой.
Мар
90
257
Активный
А что там должно быть? У меня там ничего нет, только отображение килл-листа.
Проверка авторизации, сброс виртуального мира и интерьера (на случай если сдох в интерьере), далее задаешь координаты спавна игрока и тд. Пробуй впихнуть все то, что нужно после смери игрока (например можно установку скина ему сделать).
 
𝚖𝚎𝚖𝚎𝚗𝚝𝚘 𝚖𝚘𝚛𝚒.
Мар
1,129
11,442
Команда форума
Администратор
@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;
}
 
Май
11
2
Пользователь
@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 делаю, но суть такая.
 
𝚖𝚎𝚖𝚎𝚗𝚝𝚘 𝚖𝚘𝚛𝚒.
Мар
1,129
11,442
Команда форума
Администратор
@maxshtorm, фриз идет после телепортирования игрока на координаты (SetPlayerPos), так что, все нормально. Первый раз телепортирует куда нужно, а все последующие разы в центр карты?
 
Май
11
2
Пользователь
@maxshtorm, фриз идет после телепортирования игрока на координаты (SetPlayerPos), так что, все нормально. Первый раз телепортирует куда нужно, а все последующие разы в центр карты?
В las-venturas на элеватор. Ну знаешь, где дефолт спавн TDE находится. Сейчас прикреплю видео.
 
Май
11
2
Пользователь
𝚖𝚎𝚖𝚎𝚗𝚝𝚘 𝚖𝚘𝚛𝚒.
Мар
1,129
11,442
Команда форума
Администратор
@maxshtorm, такого, во всяком случае, не должно быть постоянно. Пробуй телепортироваться с интервалом на крышу после смерти. Сам по себе момент странный, с таким впервые сталкиваюсь за все 8 лет работы с этим языком. Умер - появился - ждешь 5-10 секунд - телепортируешься.
 
Май
11
2
Пользователь
@maxshtorm, такого, во всяком случае, не должно быть постоянно. Пробуй телепортироваться с интервалом на крышу после смерти. Сам по себе момент странный, с таким впервые сталкиваюсь за все 8 лет работы с этим языком.
Не то видиво залил. спавнит нормально, но вот этот момент напряжный только
 
Май
11
2
Пользователь
𝚖𝚎𝚖𝚎𝚗𝚝𝚘 𝚖𝚘𝚛𝚒.
Мар
1,129
11,442
Команда форума
Администратор
@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);
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху