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

    Статус
    Оффлайн
    Регистрация
    18.07.2015
    Сообщений
    19
    Репутация:
    2 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    id228fanta, вы ошибаетесь.

    Последний ID игрока может быть равен MAX_PLAYERS - 1.
    Максимальное количество игроков: MAX_PLAYERS.

    Условие в цикле выполняется верно.
    Я про способ от автора темы говорю.

    То есть проходит так:
    подключаются 5 игроков (у последнего ID 4)
    В переменную_для_хранения записывается цифра 4, как ID последнего игрока
    делаем цикл:
    Код:
    for(new i; i<переменная_для_хранения; i++)
    {
    // кишки
    }
    То есть в данном цикле проверка будет проходить такая:
    Код:
    for(new i; i<4; i++)
    И будут все ID кроме последнего.

  2. #12
    Аватар для ^_^
    Übermensch

    Статус
    Оффлайн
    Регистрация
    25.11.2013
    Сообщений
    157
    Репутация:
    245 ±
    Цитата Сообщение от id228fanta Посмотреть сообщение
    У тебя в цикле идёт < , то есть последнего игрока не включает.
    Можно сделать капельку по-другому, суть не меняется, просто многие игроки используют MAX_PLAYERS, и менять им не в кайф..
    Что за вздор?
    В начало мода:
    Код:
    #if defined MAX_PLAYERS
    #undef MAX_PLAYERS
    #define MAX_PLAYERS 0
    #endif
    В OnPlayerConnect:
    Код:
    new new_def = MAX_PLAYERS++;
    #undef MAX_PLAYERS
    #define MAX_PLAYERS new_def
    В OnPlayerDisconnect:
    Код:
    new new_def = MAX_PLAYERS--;
    #undef MAX_PLAYERS
    #define MAX_PLAYERS new_def
    В итоге перебор будет выглядеть так:
    Код:
    for(new i; i < MAX_PLAYERS; i++)
    {
    // кишки
    }
    Лол, такой бредятины я даже на П-И не видел, твой код не то что синтаксически имеет тону ошибок, он даже логически никак не складывается...
    Последний раз редактировалось ^_^; 05.09.2015 в 00:34.

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

    Статус
    Оффлайн
    Регистрация
    18.07.2015
    Сообщений
    19
    Репутация:
    2 ±
    Блин, а и правда.. Че-т я тупанул сильно..

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Исправил некоторые орфографические ошибки в 1-м посте, привёл стиль кода в соответствие с гайдом.

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

  5. #15
    Аватар для Alexey Melnik
    Новичок

    Статус
    Оффлайн
    Регистрация
    11.11.2017
    Сообщений
    9
    Репутация:
    0 ±
    Предлагаю освежённую версию, по моему мнению, вылизанную донельзя.

    К глобальным переменным:
    PHP код:
    #if MAX_PLAYERS > 255
        
    new players[MAX_PLAYERS];
        new 
    index[MAX_PLAYERS];
    #else
        
    new players[MAX_PLAYERS char];
        new 
    index[MAX_PLAYERS char];
    #endif

    new num_players;
    new 
    buf
    В public OnPlayerConnect:
    PHP код:
    #if MAX_PLAYERS > 255
        
    players[index[playerid] = num_players++] = playerid;
    #else
        
    players{index{playerid} = num_players++} = playerid;
    #endif 
    В public OnPlayerDisconnect:
    PHP код:
    #if MAX_PLAYERS > 255
        
    players[index[playerid]] = players[--num_players];
    #else
        
    players{index{playerid}} = players{--num_players};
    #endif 
    Пример перебора игроков:
    PHP код:
    buf num_players;
    while (
    buf--) {
        
    //

    Последний раз редактировалось Alexey Melnik; 11.11.2017 в 15:40.

  6. #16
    Аватар для DeimoS
    Модератор?

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

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

    Steve Pavlina

  7. #17
    Аватар для Alexey Melnik
    Новичок

    Статус
    Оффлайн
    Регистрация
    11.11.2017
    Сообщений
    9
    Репутация:
    0 ±
    Не пары байт, а аж 1,5 кибибайта. Различие в использовании индекса в public OnPlayerDisconnect и более оптимального цикла для перебора.

    Код в теле цикла остался прежним.

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Аж 1.5 килобайта.

    В любом случае, вот здесь ошибка:
    Цитата Сообщение от Alexey Melnik Посмотреть сообщение
    PHP код:
    #if MAX_PLAYERS > 256 
    256 char уже хранить не могут, так что в проверке нужно поставить "> 255"
    Последний раз редактировалось Nexius_Tailer; 11.11.2017 в 15:41.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  9. Пользователь сказал cпасибо:
    Alexey Melnik (11.11.2017)
  10. #19
    Аватар для Alexey Melnik
    Новичок

    Статус
    Оффлайн
    Регистрация
    11.11.2017
    Сообщений
    9
    Репутация:
    0 ±
    Поправил, спасибо.

  11. #20
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Все эти извращения явно стоят того (нет). Лучше ведь изобретать неудобные велосипеды, чем взять готовую библиотеку, которая уже имеет гораздо больший функционал и проверена временем
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  12. Пользователь сказал cпасибо:
    $continue$ (11.11.2017)
 

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

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

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

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

Ваши права

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