Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Не правильный спавн игрока - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Pawn ]
Не правильный спавн игрока

#1
Пользователь офлайн   parrot.a 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Когда я сделал команду /jail и сразу к ней же приделал координаты спавна,
выскочила проблема в том что когда я пишу /jail ИД Время Причину,
то спавнит на обычный спавн. Не знаю по чему, поэтому спрашиваю.

Надеюсь кто-нибуть знает.
Вот сам код:

public OnPlayerSpawn(playerid)
{
    SetPlayerWeather(playerid, 2); 
    if(Player[playerid][pJail] == 1) { // 1 - посажен, 0 - свободен.
        SetPlayerPos(playerid, 6968.9683,1894.8192,259.2422);
        SetPlayerVirtualWorld(playerid, 666);
        SetPlayerSkin(playerid, 299);
    }
    if(Player[playerid][pMember] == 0 || Player[playerid][pLeader] == 0) {
        SetPlayerSkin(playerid, 176);
        SetPlayerPos(playerid, 1481.3489,-1741.2479,13.5469);
        SetPlayerVirtualWorld(playerid, 0);
        SetPlayerInterior(playerid, 0);
    }
    if(Player[playerid][pMember] == 1 || Player[playerid][pLeader] == 1) {
        SetPlayerPos(playerid, 1558.9725,-1692.5720,3515.4082);
        SetPlayerFacingAngle(playerid, 91.3163);
        SetPlayerVirtualWorld(playerid, 1);
        SetPlayerSkin(playerid, Player[playerid][pSkin]);
    }
    И т.д.



У меня такое ощущение, что он игнорирует if(Player[playerid][pJail] >= 1)
и сразу переходит на if(Player[playerid][pMember] == 0 || Player[playerid][pLeader] == 0) {

CMD:jail(playerid, params[]){
    if(Player[playerid][pAdmin] >= 2) {
        if(IsPlayerConnected(params[0])) return SCM(playerid, -1, "{FF0000}[Ошибка]{FFFFFF}: Данного ИД нет на сервере.");    
        if(sscanf(params, "uds", params[0], params[1], params[2])) return SCM(playerid, -1, "{FF0000}[Подсказка]{FFFFFF}: Используйте /jail [ID игрока] [Секунды] [Причина].");
        new string[128], name[24], AdmName[24];
        GetPlayerName(params[0], name, 24);
        GetPlayerName(playerid, AdmName, 24);
        format(string, 152, "{ff0000}Администратор %s посадил игрока %s на %d минут. Причина: %s.", AdmName, name, params[1], params[2]);
        SCMTA(-1, string);
        ResetPlayerWeapons(params[0]);
        Player[params[0]][pJail] = 1;
        Player[params[0]][pJailTime] = params[1]*60;
        SpawnPlayer(params[0]);        

    }
    return true;
}


При этом я создал кмд которая показывает всю статистику игрока, то есть все переменные pInfo
и там как раз таки пишет, что игрок в тюрьме и секунды тюрьмы тоже есть

Но когда я писал в public OnPlayerSpawn спавны как if, else if, else if - то он как раз таки спавнил нормально,
но возникла другая проблема - Теперь если игрок в организации,
то его кидает на обычный бомжатник к остальным, а не на его организационный спавн.


0

#2
Пользователь офлайн   lastomg3 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Конечно не очень хорошо что используешь SpawnPlayer :( Попробуй удалить
0

#3
Пользователь офлайн   KlareoN 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
Смотри, SpawnPlayer он спавнет игрока. Просто добавь корды из ареста.
0

#4
Пользователь офлайн   Pa4enka 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
if(Player[playerid][pJail] == 1) { // 1 - посажен, 0 - свободен.
    SetPlayerPos(playerid, 6968.9683,1894.8192,259.2422);
    SetPlayerVirtualWorld(playerid, 666);
    SetPlayerSkin(playerid, 299);
    return true;
}

Не факт, но возможно.
0

#5
Пользователь офлайн   parrot.a 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияPa4enka (09 Ноябрь 2018 - 22:35) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Стало также как будто я писал if, else if, else if... Но я попробовал сделать через timer, получается если игрок не находится в пределах де моргана то его ТПшит в де морган.

Вообщем мне вот это помогло:
public OnGameModeInit()
{
     SetTimer("Timer", 1000, true);
.....
}



public Timer(playerid)
{
    if(IsPlayerConnected(playerid)){
        if(Player[playerid][pJailTime] >= 1){
            Player[playerid][pJailTime]--;
        }
        if(Player[playerid][pJailTime] == 0){
            if(Player[playerid][pJail] == 1){
                Player[playerid][pJail] = 0;
                SpawnPlayer(playerid);
                SCM(playerid, -1,"Вы были выпущены на свободу.");
            }
        }
    }
    if(Player[playerid][pJail] == 1 || Player[playerid][pJailTime] >= 1) {
        if(!PlayerToPoint(25.0, playerid, 6968.9683, 1894.8192, 259.2422))
        {
            SetPlayerPos(playerid, 6968.9683,1894.8192,259.2422);
            SetPlayerVirtualWorld(playerid, 666);
            SetPlayerSkin(playerid, 299);
            SCM(playerid, -1, "{FF0000}Вы были телепортированы в Де Морган!"); 
            return true;
        }
        else return true;
    }
    return 1;
}


0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей