18.02.2021 02:55
 5просмотров 286 41

Скрипт под новую шапку

СКРИПТ ТУТ

Тестируйте, пишите впечатления, предложения, недочеты. Последних как раз хватает, сегодня кучу говнокода с этими таймерами написал.

Скрипт будет постепенно обновляться и дорабатываться.

Завтра поправлю код, починю баги и сниму видос по скрипту.

хайрез
Комментарии
21 / 19.02.2021 16:09 / Мифист [15] ?
Ловите пятиминутку ненависти. Ну, в смысле -- критики. Вот прям конкретно распишу.))
Первые два пункта лулзов ради, остальное всерьез.)

1) Код всяко лучше админского, ей-ей, но не шибко. Иначе говоря, вы б прекрасно вписались в админский коллектив.)

2) Если уж не гнушаетесь самоиронии, то приписку "#говнокод" стоило поместить в самое начало.)

3) ES6 совершенно не годится для конечных скриптов в браузере юзера. Многие до сих пор используют старые браузеры, на секундочку. Вот сложно было через компилятор код пропустить? Понты, блин.)

4) В первых строках, в инфо-блоке для TM, читаем: "https{0,1}" вместо адекватного "https?". И тут же на конце: ".+". Зачем движок лишней проверкой нагружать? Словом, первые строки -- первый звоночек.)

5) Далее: выход из функции при наличии "cgame" в адресе. Следует добавить еще проверку на страницу выполнения квеста и на главную страницу (heroeswm.ru/).

6) "settings['isDarkTheme']". Скажите, а чем вас так смущает обычная точечная нотация, тем паче учитывая, что в отношении встроенных объектов вы используете именно ее? Непоследовательность, отсутствие стремления к порядку -- звоночек номер два.

7) Во всем коде, в однотипных, подчеркиваю, конструкциях, используется то один вид кавычек, то другой. Примерно то же можно сказать о завершающей ";": она то есть, то ее нет. Вот как бы сущая мелочь на самом-то деле, но явно же отсылает к предыдущему пункту.

  • 7.1) Алсо: элементы с ID ищутся то через функцию "$", то через обычный "document.querySelector" (почему не "getElementById"? Ай-яй, о производительности не думаем). Ну и про "$" отдельно. Сразу видно, что вы ее у всяких хочух позаимствовали: иначе б расширили под любые селекторы.)

8) "classList.value". Вы это серьезно? Нет, в самом деле?))

9) "outerHTML.toString()". Данное свойство как бы и так строку возвращает.

10) "let timeCount = isPremium ? 60 : 60". Вы сделали мой день.))

11) "let destinationOffset = +3". Унарный плюс для тех, кто в бронетанке?))

12) По части стилей: вы, как и админ, напихали везде ненужных флексов. И даже банальный строчный контент, причем в блоках с ФИКСИРОВАННОЙ высотой, тоже выравниваете флексами. Ad absurdum.

13) Раз уж типа переделываете с нуля, то, Христа ради, сделайте все субменюшки частью самой шапки, удалите лишние обработчики и отображайте через CSS. Админу за это прям по голове настучать хочется.

14) Зачем, добавляя таблицу стилей, отдельным элементам вы все же прописываете стили в атрибут? Режим админа включен, называется.) Можно подумать, над кодом целый табор поработал.

15) Ну и самое главное, пожалуй: таймеры. Работа с таймерами здесь самое слабое место. Вот примеры для наглядности:

  • 15.1) "let timePlace = $('hwm_time')". Почему переменная не закеширована? Вы понимаете, что каждую секунду почем зря делаете запросы к DOM? Каждую секунду, круг за кругом. Ума не приложу, где такому учат сегодня.))

  • 15.2) "new Date().getTime()". Опять же: учитывая бесконечную рекурсию, это не гуд. Ведь есть же добрый производительный "Date.now()".

  • 15.3) Функция "hwmDateToHuman" для ведущего нуля излишне громоздка. Оптимальное решение задачи такое: "('0' + нужное_значение).slice(-2)", безо всяких ненужных проверок.

  • 15.4) Все таймеры продолжают тикать даже при нулях на счетчиках.

П.С. Я, конечно, выделываюсь, ага, но критика лишней не бывает.) Я вам явно даю понять, почему никогда не стал бы юзать подобные скрипты. Если работу админа оценивать на кол, то ваша работа -- на двоечку.
22 / 19.02.2021 17:01 / Гроза_ГВД [17] ?
Цитата
Я вам явно даю понять, почему никогда не стал бы юзать подобные скрипты

Щас бы скрипты по коду оценивать, а не по тому, что они делают

Цитата
Ума не приложу, где такому учат сегодня
Меня никто не учил. Это не язык программирования, которым я зарабатываю деньги. И использую его только для гвдшных скриптов

Замечания ок, но скрипты я делаю не для себя, а для пользователей. Для меня главное поддерживаемость и масштабируемость. Фронтенд ненавижу, никогда не буду с ним работать в реальной жизни
23 / 19.02.2021 18:12 / Sargonnas [17] ?
Гроза_ГВД, скрипт заработал, только у меня драконы не по нижней части шапки выравнены:

И ты говорил, что включишь поиск персонажей и кланов, на данный момент его нет, либо я не там смотрю.
24 / 19.02.2021 18:53 / Мифист [15] ?
Гроза_ГВД

Цитата
Щас бы скрипты по коду оценивать, а не по тому, что они делают
И не поспоришь.)

Цитата
Меня никто не учил.
Учил, не учил -- камень преткновения не в этом. Вы ж в конце концов свои знания и навыки откуда-то да почерпнули. И если уж активно юзаете ES6, то элементарные вещи и подавно понимать должны. Гуру, само собой, быть не обязаны, но элементарное, элементарное понимать...

Цитата
Для меня главное поддерживаемость
Вот есть у меня старенький ноут с ХР-шкой, так браузер на нем не обновляется уже лет сто как, потому что Chrome с ХР больше не работает. Ну так вот на энтом ноуте ваш скрипт слёту сгенерит ошибку. Да и стопицот неоптимизированных таймеров, вероятно, вызвали бы различной степени фризы.
Короче говоря, ратуя за поддерживаемость, вы меж тем не в ту сторону смотрите.

Цитата
Фронтенд ненавижу
Ну, это могу понять.)

В принципе, у меня всё. Можете не отвечать.)
25 / 19.02.2021 19:01 / Гроза_ГВД [17] ?
Sargonnas, смотри что в посте красной строчкой выделено. Не всё сразу
26 / 19.02.2021 19:05 / Гроза_ГВД [17] ?
Мифист,
Цитата
если уж активно юзаете ES6, то элементарные вещи и подавно понимать должны
Вообще не связанные понятия. Я до сих пор не полностью понимаю синтаксис джс.

Цитата
Для меня главное поддерживаемость
Я имел в виду поддерживаемость кода

Если у человека компьютер и браузер не могут поддерживать мои скрипты, то последнее, чем нужно этому человеку заниматься, это играть в гвд
27 / 19.02.2021 19:08 / Sargonnas [17] ?
Гроза_ГВД, не забудь про включаемые всплывающие уведомления/звуки об окончании таймеров.
28 / 19.02.2021 19:10 / Sargonnas [17] ?
Цитата: Мифист
Вот есть у меня старенький ноут с ХР-шкой, так браузер на нем не обновляется уже лет сто как, потому что Chrome с ХР больше не работает. Ну так вот на энтом ноуте ваш скрипт слёту сгенерит ошибку. Да и стопицот неоптимизированных таймеров, вероятно, вызвали бы различной степени фризы.
Динозавры должны умереть ©
29 / 19.02.2021 23:11 / Мифист [15] ?
Гроза_ГВД,
Цитата
Вообще не связанные понятия
Напрямую не связаны, да, но и только. Если человек пишет скрипты на 1000+ строк, значит он во всем этом явно же не первый день варится. А между тем вопрос о переменных и DOM-дереве -- это, считай, вершина айсберга. И потом, переменные штука такая, которая, пожалуй, во всех ЯП работает примерно одинаково.

Цитата
Если у человека компьютер и браузер не могут поддерживать мои скрипты, то последнее, чем нужно этому человеку заниматься, это играть в гвд
Сущая истина. Благо я с таких компьютеров не играю и не работаю. Пример был всего лишь намеком на то, что ваш скрипт в теории может не поддерживаться у доброй части сообщества, для которого вы, казалось бы, и пишете. На предыдущей странице вам, кстати, прямо об этом сказали: дескать, на Chrome 49 не работает. А не работает вот хотя бы и потому, что, например, "Object.entries", не единожды используемый вами в коде, пашет только с 54-ой версии того же браузера; в реальности же таких моментов намного больше, тысячи их.

Sargonnas,
Цитата
Динозавры должны умереть
Несомненно.
30 / 19.02.2021 23:40 / Гроза_ГВД [17] ?
Мифист, не нужно бросаться в крайности. Никто в здравом уме не будет поддерживать работоспособность для хрома, который работает на виндовс хп. Я и так пошел на компромисс и не использую fetch и matchAll.
31 / 20.02.2021 12:26 / Мифист [15] ?
Гроза_ГВД, всё, что работает на ХР, работает не только на ней. И дело тут вовсе не в системах, дело в браузерах. Однако, если для вас крайность -- поддерживать браузер 2016-го года, тогда как в мире до сих пор еще не умер окончательной смертью IE, то мне тут остается только развести руками. Когда б админ гвд везде и всюду юзал новый синтаксис и новые возможности языка, онлайн в игре явно был бы меньше процентов эдак на 20-30.

Ну да будет, впрочем, из пустого в порожнее. Адью, что ли.)
32 / 20.02.2021 17:34 / Paveza86 [17] ?
вроде пока что неплохо.

Особенно понравились:

- темная тема,
- текст вместо кнопок.

Но скрипт пока что не использую, так как нету "3 в 1", а это один из самых часто используемых скриптов...

Кстати, при отключении графического меню, темная тема остается :)

33 / 20.02.2021 18:04 / Windrunner [17] ?
Откройте форточку, тут слишком душно
34 / 20.02.2021 18:35 / Гроза_ГВД [17] ?
Paveza86, 3в1 и несколько других полезностей добавлю на следующей неделе)
35 / 21.02.2021 17:23 / Dlon [22] ?
Таймер с секундами плохо виден. Его бы поярче.
36 / 10.03.2021 16:55 / Rahaela [13] ?
Мифист, спасибо за первый комментарий, что быстро и понятно поправил
остальное надо думать

Гроза_ГВД, спасибо за скрипт,
драконов убрал, семиколоны убрал, на .-нотацию переставил
бум пилить
37 / 10.03.2021 16:56 / Rahaela [13] ?
3в1 и несколько других полезностей добавлю на следующей неделе)

38 / 11.03.2021 16:49 / Rahaela [13] ?
Гроза_ГВД,

Цитата: Гроза_ГВД

function getTimersTemplate()
зачем let timeCount в каждом if? обычно один раз декларируют и используют на протяжении всей ф-ции

Мифист,


Функция "hwmDateToHuman" для ведущего нуля излишне громоздка. Оптимальное решение задачи такое: "('0' + нужное_значение).slice(-2)", безо всяких ненужных проверок.

без проверок, зачем всегда 0 прилеплять?
39 / 14.03.2021 20:56 / лучезарный_маг [19] ?
А можно сделать кликабельным значки в верхнем левом углу экрана?. Например, значок работы, значок вступления в гт. На данный момент у меня они отображаются, но переход по ним по адресу назначения не доступен - т.е. они не кликабельны
40 / 23.04.2021 16:14 / WELK2 [18] ?
Установил HWM-UI-UX-MOD  но кнопка с меню с настройками скрипта не появилась, скрипты все отключал, браузер хром.

Возможность комментировать доступна после регистрации