Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 9 из 9
  1. #1
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±

    По команде /tv(режим наблюдения за игроками)

    Привет всем. Пишу мод с 0(new.pwn). И дошел до момента, когда сильно нуждаюсь в наблюдении за игроками, но совсем не понимаю, из чего это все состоит, так же не знаю стандартных функций для реализации наблюдения.

    Если есть у кого самый простой вариант, только для открытия наблюдения, выложите пожалуйста.
    Если же нет, расскажите, что и как действует в ней, и я напишу сам. Пересматривал коды многих этой команды, но там такой бред, что я ни черта не понял.
    Помогите, пожалуйста.


    Все, что имею на данный момент :DD:

    PHP код:
        if(Command("/tv")) // режим наблюдения за игроками
        
    {
            if(
    GetPVarInt(playerid"Admin") < 1) return 1;
            if(
    sscanf(params"u"params[0])) return SendClientMessage(playeridcwhite"***Используйте: /tv [ID/Имя_Фамилия]");
            if(!
    IsPlayerConnected(params[0])) return SendClientMessage(playeridcgrey"**Отсутствует на сервере.");
            if(
    GetPVarInt(params[0], "Login") == 0) return SendClientMessage(playeridcgrey"**Не авторизирован.");
            return 
    1;
        } 

  2. #2
    Аватар для Роуди.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.07.2015
    Сообщений
    154
    Репутация:
    17 ±
    PHP код:
    if(Command("/tv")) // режим наблюдения за игроками
    {
        if(
    GetPVarInt(playerid"Admin") < 1) return 1;
         if(
    sscanf(params"u"params[0])) return SendClientMessage(playeridcwhite"***Используйте: /tv [ID/Имя_Фамилия]");
          if(!
    IsPlayerConnected(params[0])) return SendClientMessage(playeridcgrey"**Отсутствует на сервере.");
           if(
    GetPVarInt(params[0], "Login") == 0) return SendClientMessage(playeridcgrey"**Не авторизирован.");
           
        
    TogglePlayerSpectating(params[0], 1// погружает плеера в спек
           
    PlayerSpectatePlayer(playeridparams[]); // устанавливает спек на определенного игрока
        
    SetPlayerVirtualWorld(playeridGetPlayerVitualWorld(params[0])); // устанавливает виртуальный мира игрока, за которого следим.
        
    SetPlayerInterior(playeridGetPlayerInterior(params[0]));
        return 
    1;


  3. #3
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    спс) +

  4. #4
    Аватар для A N D R E Y
    Пользователь

    Статус
    Оффлайн
    Регистрация
    07.12.2013
    Сообщений
    149
    Репутация:
    14 ±
    PHP код:
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playeridcgrey"**Отсутствует на сервере."); 
    А вы знали, что если игрока нет на сервере комманда и так не сработает? Зачем эта проверка тут нужна?

  5. #5
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Можно использовать возвращаемое значение функции TogglePlayerSpectating, которое возвращает число 0, если такого идентификатора игрока нет на сервере (это так же можно назвать оптимизацией, т.к. мы уменьшаем количество вызываемых функции).

    Вариант команды:
    PHP код:
    if(Command("/tv"))
        if (
    GetPVarInt(playerid"Admin") <= 0)
            return 
    1;
        new 
    targetid;
        if (
    sscanf(params"u"targetid)) // Также можно использовать массив.
            
    return SendClientMessage(playerid, -1,
                
    // Упакованная строка занимает меньше памяти: в одной ячейки помещаются
                // сразу несколько значений.
                
    !"*** Используйте: /tv [ID/Имя_Фамилия]");
        
    // Решил их объединить, т.к. несут одну и ту же информацию для администратора.
        
    if (GetPVarInt(targetid"Login") == 0
        
    ||  TogglePlayerControllable(targetid1) == 0)
            return 
    SendClientMessage(playeridcgrey, !"** Не авторизирован.");
        
    PlayerSpectatePlayer(playeridtargetid);
        
    SetPlayerVirtualWorld(playeridGetPlayerVirtualWorld(targetid));
        
    SetPlayerInterior(playeridGetPlayerInterior(targetid));
        return 
    1;

    P.S.: Аббревиатура tv означает — телевизор (Телевиденье). Не кажется ли вам, что это не много путает администратора. ИМХО, лучше изменить название данной команды, например, sp(ectate).

    UPD: Нашёл для вас интересный урок, как раз по вашей теме.
    Последний раз редактировалось VVWVV; 16.01.2016 в 16:41.

  6. Пользователь сказал cпасибо:
    BadPawn (24.01.2016)
  7. #6
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от A N D R E Y Посмотреть сообщение
    PHP код:
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playeridcgrey"**Отсутствует на сервере."); 
    А вы знали, что если игрока нет на сервере комманда и так не сработает? Зачем эта проверка тут нужна?
    Чтобы выдать сообщение об отсутствии игрока, если он не подключен, а не сфейлиться втихаря (или вывести какое-то левое сообщение).
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. Пользователь сказал cпасибо:
    BadPawn (24.01.2016)
  9. #7
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    P.S.: Аббревиатура tv означает — телевизор (Телевиденье). Не кажется ли вам, что это не много путает администратора. ИМХО, лучше изменить название данной команды, например, sp(ectate).
    /sp(awn)

  10. #8
    Аватар для BadPawn
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.01.2016
    Адрес
    Приморье, Спасск-Дальний
    Сообщений
    165
    Репутация:
    7 ±
    всем спасибо ребят за помощь. приятно, когда нуждаешься в помощи и помогают. начал разбираться и писать код. команды готовы, идем дальше. )

    в ответ всем вам, ставлю всем +, и выложу готовую систему слежения(если ее можно назвать системой) своими руками, но с помощью инфы, которую вы мне дали.

    P.S> Единственный портал на котором реально откровенная помощь, если не знают пользователи, то помогают администраторы.
    P.S2> На других порталах такого не встречал.

    Всем спасибо друзья. )

  11. #9
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Цитата Сообщение от A N D R E Y Посмотреть сообщение
    PHP код:
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playeridcgrey"**Отсутствует на сервере."); 
    А вы знали, что если игрока нет на сервере комманда и так не сработает? Зачем эта проверка тут нужна?
    Логический сработает.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •