Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: GetPlayerPoolSize

  1. #1
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±

    GetPlayerPoolSize

    Описание:
    Возвращает самый большой ID игрока, играющего на сервере.

    Параметры:
    Функция не принимает параметров.

    Возвращаемое значение:
    Возвращает самый большой ID игрока, играющего на сервере, или 0, если сервер пуст.

    Примечания:
    • Данная функция была добавлена в SA:MP 0.3.7 и не работает в более ранних версиях.
    • Функция возвращает 0 в двух случаях: если сервер пуст и если на сервере только один игрок с ID равным нулю.
      Чтобы отличить эти два случая, проверяйте подключение игрока 0:
      1. if (GetPlayerPoolSize() == 0) // Неоднозначная ситуация.
      2. {
      3. if(IsPlayerConnected(0) == 0)
      4. print("На сервере нет ни одного игрока.");
      5. else
      6. // ...
      7. }

    Пример использования:
    1. CMD:online(playerid, params[])
    2. {
    3. // Перебор всех игроков на сервере с подсчётом онлайна.
    4. // Если i-тый игрок подключен, к переменной "c" прибавится 1,
    5. // если нет - не прибавится ничего.
    6. new c = 0;
    7. for (new i = GetPlayerPoolSize()+1; i-- != 0;)
    8. // Форматирование и вывод сообщения с результатом.
    9. static const fmt_str[] = "Текущий онлайн: %d игроков";
    10. new string[sizeof(fmt_str) - 2 + 4];
    11. format(string, sizeof(string), fmt_str, c);
    12. return SendClientMessage(playerid, -1, string);
    13. }

    См. также:


    Статью подготовил: Daniel_Cortez

    Специально для Pro-Pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  2. 4 пользователя(ей) сказали cпасибо:
    $continue$ (18.10.2015) L0ndl3m (18.10.2015) Osetin (18.10.2015) [ForD] (18.10.2015)
  3. #2
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Очередной костыль от kye. Почему в проверке IsPlayerConnected лучше использовать "== 0" нежели "!" перед функцией? Функция возвращает только 2 значения: 1 и 0.

  4. #3
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Очередной костыль от kye. Почему в проверке IsPlayerConnected лучше использовать "== 0" нежели "!" перед функцией? Функция возвращает только 2 значения: 1 и 0.
    При сравнении с нулём после вызова IsPlayerConnected генерируется только одна инструкция перехода (jz/jnz - зависит от случая), а с "!" после IsPlayerConnected происходит сначала отрицание (инструкция not), а только потом переход (jnz/jz). Даже при включенных оптимизациях (ключ -O1) компилятор оставляет "лишнюю" инструкцию not.
    Если не считать этого, то использование "!" вместо сравнения с 0 - всего лишь дело удобства. Если нужно, могу изменить пример в статье.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. 2 пользователя(ей) сказали cпасибо:
    L0ndl3m (18.10.2015) Unreal (18.10.2015)
  6. #4
    Аватар для Unreal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    133
    Репутация:
    4 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    При сравнении с нулём после вызова IsPlayerConnected генерируется только одна инструкция перехода (jz/jnz - зависит от случая), а с "!" после IsPlayerConnected происходит сначала отрицание (инструкция not), а только потом переход (jnz/jz). Даже при включенных оптимизациях (ключ -O1) компилятор оставляет "лишнюю" инструкцию not.
    Если не считать этого, то использование "!" вместо сравнения с 0 - всего лишь дело удобства. Если нужно, могу изменить пример в статье.
    я видел что используют даже так
    PHP код:
    if(== IsPlayerConnected(playerid)) 
    оно ведь не отличается от ?
    PHP код:
    if(IsPlayerConnected(playerid) == 0

  7. #5
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    Цитата Сообщение от Unreal Посмотреть сообщение
    я видел что используют даже так
    PHP код:
    if(== IsPlayerConnected(playerid)) 
    оно ведь не отличается от ?
    PHP код:
    if(IsPlayerConnected(playerid) == 0
    нет,не должно,в данном случае
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Unreal, условия читаются данным способом:
    Код:
    левое == правое
    следовательно проверка:
    Код:
    правое == левое
    будет типичной.
    Напоминает коммутативность.

  9. #7
    Аватар для Unreal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    133
    Репутация:
    4 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Unreal, условия читаются данным способом:
    Код:
    левое == правое
    следовательно проверка:
    Код:
    правое == левое
    будет типичной.
    Напоминает коммутативность.
    т.е тот код с
    PHP код:
    if(== IsPlayerConnected(playerid)) 
    просто так? или есть и похожие на это "что - либо" ?

    ------ добавлено ---------

    вот нашел. http://pro-pawn.ru/showthread.php?54...d-zcmd)-sscanf
    Последний раз редактировалось Unreal; 18.10.2015 в 21:52.

  10. #8
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Unreal Посмотреть сообщение
    я видел что используют даже так
    PHP код:
    if(== IsPlayerConnected(playerid)) 
    оно ведь не отличается от ?
    PHP код:
    if(IsPlayerConnected(playerid) == 0
    В обоих случаях сначала выполнится функция IsPlayerConnected, а затем возвращённое ей значение будет сравниваться с нулём.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  11. #9
    Аватар для Unreal
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    133
    Репутация:
    4 ±
    вот что я нашел, может кому будет интересно


    сори за оффтоп
    Pro-pawn.ru

  12. #10
    Аватар для Геннадий Акимов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.08.2015
    Адрес
    СССР
    Сообщений
    46
    Репутация:
    1 ±
    А зачем это ? не легче открыть Tab и там посмотреть ?


    С уважением ваш Геннадий Акимов

    Официальная группа в контакте проекта Sprunk: Перейти
    Официальный сайт проекта Sprunk: В разработке
    Примерная дата открытие проекта Sprunk: 1.12.2015

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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