Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 3 из 5 ПерваяПервая 1 2 3 4 5 ПоследняяПоследняя
Показано с 21 по 30 из 42

Тема: key_pickupfix.inc

  1. #21
    Аватар для Kovshevoy
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.07.2015
    Сообщений
    190
    Репутация:
    25 ±
    Антифлуд будешь реализовывать? А то можно же огромное кол-во раз тыкать клавишу и пикап будет флудить.
    С выбором времени например для использования пикапа можно похимичить

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от NichWell Посмотреть сообщение
    Возможно это на старой версии компилятора такая ошибка, сделал бы отдельный файлик для обладателей русифицированной версии.
    Никогда бы не подумал, что этим неподдерживаемым старьём ещё кто-то пользуется. Нужно будет как-нибудь в репо компилятора Zeex'а поднять issue на счёт добавления мультиязычности.



    Касаемо реализации инклуда:
    • Намерение использовать префиксы для всего и вся, чтобы избежать коллизий имён, похвально, но не совсем понятно, зачем нужен знак подчёркивания "_" в самом начале префикса "_key_pickupfix_". Разве без этого знака "key_pickupfix_" будет мало? Префиксы - это, конечно, хорошо, но важно также и не переусердствовать.

    • В названиях перечислений (e_PLAYER_PICKUP_DATA, e_PLAYER_PICKUP_DATA) нет префиксов.

    • Если для констант и функций соблюдается тот же стиль именования, как в инклудах SA-MP (т.е. названия констант большими буквами, функций - в CamelCase), то почему названия перечислений (которые по сути являются тегами) записываются большими буквами, как константы? (пример тега из SA-MP: PlayerText)

    • Непостоянство в стиле задания квалификатора static:
      1. static
      2. _key_pickupfix_playerPickupData[MAX_PLAYERS][e_PLAYER_PICKUP_DATA];
      3.  
      4. static const NULL_PLAYER_PICKUP_DATA[e_PLAYER_PICKUP_DATA] = {KEY_PICKUPFIX_INVALID_PICKUP_ID, KEY_PICKUPFIX_PICK_TYPE_INVALID, 0, false};

      Вообще в чём профит переносить всё, что после static или new, на новую строку? Нет, я правда хочу знать, потому что по мне это просто быссмысленная трата вертикального пространства, ухудшающая читаемость.

    • Строки в вызовах CallLocalFunction() можно сделать упакованными, чтобы занимали меньше места в памяти.
      Строка со спецификаторами "dd" и вовсе дублируется 3 раза, можно объявить её один раз как именованный массив.
      1. static const key_pickupfix_str_dd[] = !"dd";
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    11.07.2015
    Сообщений
    190
    Репутация:
    25 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Никогда бы не подумал, что этим неподдерживаемым старьём ещё кто-то пользуется. Нужно будет как-нибудь в репо компилятора Zeex'а поднять issue на счёт добавления мультиязычности.
    Ну, твой с Тракером компилятор я использую уже давно, иногда бывают моменты с рекурсией, Ваш компилятор это спокойно отлавливает, не говоря про обычный стандартизированный. Ну и плюс, русификация же. Было бы круто, если реализуете новую версию (которой скорей всего не будет)

  4. #24
    Аватар для whale
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.04.2014
    Сообщений
    74
    Репутация:
    17 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Никогда бы не подумал, что этим неподдерживаемым старьём ещё кто-то пользуется. Нужно будет как-нибудь в репо компилятора Zeex'а поднять issue на счёт добавления мультиязычности.



    Касаемо реализации инклуда:
    • Намерение использовать префиксы для всего и вся, чтобы избежать коллизий имён, похвально, но не совсем понятно, зачем нужен знак подчёркивания "_" в самом начале префикса "_key_pickupfix_". Разве без этого знака "key_pickupfix_" будет мало? Префиксы - это, конечно, хорошо, но важно также и не переусердствовать.

    • В названиях перечислений (e_PLAYER_PICKUP_DATA, e_PLAYER_PICKUP_DATA) нет префиксов.

    • Если для констант и функций соблюдается тот же стиль именования, как в инклудах SA-MP (т.е. названия констант большими буквами, функций - в CamelCase), то почему названия перечислений (которые по сути являются тегами) записываются большими буквами, как константы? (пример тега из SA-MP: PlayerText)

    • Непостоянство в стиле задания квалификатора static:
      1. static
      2. _key_pickupfix_playerPickupData[MAX_PLAYERS][e_PLAYER_PICKUP_DATA];
      3.  
      4. static const NULL_PLAYER_PICKUP_DATA[e_PLAYER_PICKUP_DATA] = {KEY_PICKUPFIX_INVALID_PICKUP_ID, KEY_PICKUPFIX_PICK_TYPE_INVALID, 0, false};

      Вообще в чём профит переносить всё, что после static или new, на новую строку? Нет, я правда хочу знать, потому что по мне это просто быссмысленная трата вертикального пространства, ухудшающая читаемость.

    • Строки в вызовах CallLocalFunction() можно сделать упакованными, чтобы занимали меньше места в памяти.
      Строка со спецификаторами "dd" и вовсе дублируется 3 раза, можно объявить её один раз как именованный массив.
      1. static const key_pickupfix_str_dd[] = !"dd";
    Благодарю за критику. Учту моменты, описанные тобою выше.
    По поводу переноса на новую строку после объявления - честно говоря, для меня это добавляет читабельность, особенно, когда переменных несколько. Возможно, это не лучшая практика и я ошибаюсь.

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Строка со спецификаторами "dd" и вовсе дублируется 3 раза, можно объявить её один раз как именованный массив.
    1. static const key_pickupfix_str_dd[] = !"dd";
    Это уже рил что-то из разряда извращений
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Это уже рил что-то из разряда извращений
    Не вижу в этом ничего плохого. Довольно старый приём, использующийся для рационального расхода памяти, в том числе для исключения дублирования строк в памяти скрипта (sscanf2, fixes.inc, TDW Vehicle, YSI).

    Цитата Сообщение от NichWell Посмотреть сообщение
    иногда бывают моменты с рекурсией, Ваш компилятор это спокойно отлавливает
    В форке Zeex'а такое тоже возможно с помощью ключа -R.

    Цитата Сообщение от NichWell Посмотреть сообщение
    Было бы круто, если реализуете новую версию (которой скорей всего не будет)
    С учётом всех изменений, которые произошли в форке Zeex'а за последние несколько лет (а именно на этом форке и основывается ruspawncc), проще в тот форк добавить нормальную поддержку мультиязычности. Что я и собираюсь в ближайшем будущем сделать, устное согласие от Tracker1 (ему по идее принадлежит частичное авторство над переведёнными сообщениями в ruspawncc) уже получено.

    Цитата Сообщение от Twixyck Посмотреть сообщение
    Возможно, это не лучшая практика и я ошибаюсь.
    Или ошибаюсь я, ибо многие популярные инклуды (взять хотя бы те, которые я перечислил парой цитат выше) тоже не грешат переносами после квалификаторов static, new, stock и т.д. Возможно, просто дело вкуса и не стоит заострять внимание на этом.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Не вижу в этом ничего плохого. Довольно старый приём, использующийся для рационального расхода памяти, в том числе для исключения дублирования строк в памяти скрипта
    Читабельность такого становится мягко говоря затруднительной. Да и странно видеть "рациональный" расход памяти для экономия четырёх ячеек, когда рядом продублированы строки гораздо большего размера ("OnPlayerPickUpPickup"). Хотя если серьёзно, тут во всех случаях сам результат даже не стоит затрат на это.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    11.07.2015
    Сообщений
    190
    Репутация:
    25 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    В форке Zeex'а такое тоже возможно с помощью ключа -R.


    С учётом всех изменений, которые произошли в форке Zeex'а за последние несколько лет (а именно на этом форке и основывается ruspawncc), проще в тот форк добавить нормальную поддержку мультиязычности. Что я и собираюсь в ближайшем будущем сделать, устное согласие от Tracker1 (ему по идее принадлежит частичное авторство над переведёнными сообщениями в ruspawncc) уже получено.
    Ну, с помощью ключа оно то конечно можно, но там не особо понятно, где рекурсия и слишком много выводит сообщений.
    У Вас всё коротко и просто: Обнаружена рекурсия. А мультиязычность это круто, будем ждать, спасибо.

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

    Статус
    Оффлайн
    Регистрация
    10.04.2014
    Сообщений
    74
    Репутация:
    17 ±
    UPD v1.2.1 - Убран знак подчёркивания ("_") у префикса. Добавлен префикс для перечислений.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Читабельность такого становится мягко говоря затруднительной
    Частично компенсируется заданием массиву такого названия, которое будет говорить о его содержимом (взять всё тот же приведённый мной выше пример: str_dd - !"dd").

    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Да и странно видеть "рациональный" расход памяти для экономия четырёх ячеек, когда рядом продублированы строки гораздо большего размера ("OnPlayerPickUpPickup").
    Я упомянул только те строки, что заметил первыми - не было смысла выискивать и перечислять все, ибо нетрудно догадаться, что любую дублирующуюся строку в инклуде можно объявить в одном экземпляре.

    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Хотя если серьёзно, тут во всех случаях сам результат даже не стоит затрат на это.
    Зависит от приоритетов у автора кода. Если нужно, чтобы выкладываемый в паблик код рационально расходовал ресурсы - вполне стоит того.
    В любом случае, учитывая давность этого приёма, а также то, сколько людей пользовались и коммитили в те же fixes.inc, YSI и sscanf2, публичного осуждения этот приём точно не вызовет. Ну, разве что редкие недовольные возгласы отдельных пользователей, которым чуждо всё, что хоть немного усложняет код - но и то не факт.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

 

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

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

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

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

Ваши права

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