Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 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
    Сообщений
    151
    Репутация:
    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
    Сообщений
    151
    Репутация:
    14 ±
    PHP код:
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playeridcgrey"**Отсутствует на сервере."); 
    А вы знали, что если игрока нет на сервере комманда и так не сработает? Зачем эта проверка тут нужна?

  5. #5
    Аватар для VVWVV
    Проверенный

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    607
    Репутация:
    289 ±
    Можно использовать возвращаемое значение функции 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
    new fuck_logic[0] = EOS;

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

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

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

 

 

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

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

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

Ваши права

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