Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 4 из 4 ПерваяПервая ... 2 3 4
Показано с 31 по 37 из 37
  1. #31
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Если GetMaxPlayers вернёт 0, всё будет очень печально.
    С чего бы GetMaxPlayers вернёт 0?

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

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

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Впрочем, не помешало бы использовать эту функцию вместо GetMaxPlayers.
    Таки-да, в таком случае можно будет предотвратить лишние итерации в цикле.

  4. #34
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    А ещё можно создать новый итератор в foreach и проверять только тех, кто действительно авторизируется :3 Но это уж совсем для извращенцев.
    Я бы всё же остановился на варианте с индивидуальными таймерами или убивал бы таймер, если на данный момент никто не авторизируется. Как-то попусту гонять цикл, как по мне, не комильфо
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    А ещё можно создать новый итератор в foreach и проверять только тех, кто действительно авторизируется :3 Но это уж совсем для извращенцев.
    Итератор займёт 4004 байта (MAX_PLAYERS + 1 ячеек). Сомнительная польза, особенно на фоне того, что Londlem изначально решил сэкономить с размером массива под время.


    Цитата Сообщение от DeimoS Посмотреть сообщение
    Я бы всё же остановился на варианте с индивидуальными таймерами или убивал бы таймер, если на данный момент никто не авторизируется. Как-то попусту гонять цикл, как по мне, не комильфо
    PHP код:
    static auth_countdown_time[MAX_PLAYERS char];
    static 
    auth_countdown_total_players 0;
    static 
    auth_countdown_func_name[] = !"@__AuthCountdownTimer";
    static 
    auth_countdown_timer;


    StartAuthCountdown(playeridtime)
    {
        
    auth_countdown_time{playerid} = time;
        if (
    auth_countdown_total_players++ == 0)
            
    auth_countdown_timer SetTimer(auth_countdown_func_name1000true);
    }

    StopAuthCountdown(playerid)
    {
        
    auth_countdown_time{playerid} = 0;
        if (--
    auth_countdown_total_players == 0)
            
    KillTimer(auth_countdown_timer);
    }

    @
    __AuthCountdownTimer();
    @
    __AuthCountdownTimer()
    {
    #if defined foreach && !defined FOREACH_NO_PLAYERS
        
    foreach(Player:i)
    #else
        
    static i;
        for (
    GetPlayerPoolSize() + 1i-- != 0;) if (IsPlayerConnected(i))
    #endif
        
    {
            if ((
    auth_countdown_time{i} != 0) && (--auth_countdown_time{i} == 0))
            {
                
    SendClientMessage(i,-1,"Время на регистрацию/авторизацию истекло.");
                
    Kick(i);
            }
        }

    И так я случайно изобрёл новый инклуд. Опять.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. Пользователь сказал cпасибо:
    Nurick (03.05.2016)
  7. #36
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Итератор займёт 4004 байта (MAX_PLAYERS + 1 ячеек). Сомнительная польза, особенно на фоне того, что Londlem изначально решил сэкономить с размером массива под время.
    Ну, во-первых, зависит от того, какое число скрывается за MAX_PLAYERS :D

    Во-вторых, если ставить перед собой цель сделать максимально "лёгкий" код, боясь выделить пару лишних байт, то да - такой метод не подойдёт. Но, как по мне, быстродействие и минимальна нагрузка оправдывают подобный жор памяти.
    Тем более, что такой итератор можно использовать не только для цикла, но и реализовать другие системы (например, проверку на авторизацию сделать более функциональней, проверяя наличие игрока в итераторе). Зависит от конкретной ситуации
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    06.11.2015
    Сообщений
    40
    Репутация:
    10 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    быстродействие и минимальна нагрузка оправдывают подобный жор памяти.
    согласен, лучше потратить дешевую память, в наше то время, чем золотое процессорное время.

 

 
Страница 4 из 4 ПерваяПервая ... 2 3 4

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

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

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

Ваши права

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