Задать вопрос
  • Как удалить динамически созданный блок?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Не разбираясь во всех ваших хитросплетениях, давайте просто отдебажим ваш код:

    1. const modal = new Modal(document.querySelector('.modal'));

      Это то, что выполнится первым. В конструктор передается результат поиска элемента. Если элемент не найден, то querySelector выдаст null. Очевидно. Здесь нет проверок на null, но будем надеяться, что в теле конструктора они точно есть. Ну или хотя бы есть полная уверенность, что элемент с таким классом обязательно есть на странице.
    2. Входим в конструктор:
      this.modalElement = modalElement;
      // .......
      this.modalElement.querySelector(..................);

      И здесь происходит ошибка. Странно, проверки на null нигде нет. И судя по тексту ошибки, вы пытаетесь вызвать метод querySelector переменной modalElement, которая имеет значение null. Следовательно, в самом начале элемента с классом modal не было на странице.
    Ответ написан
    5 комментариев
  • Возможно ли пробиться в геймдев?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Возможно, но вы должны понять, чем вы вообще хотите заниматься, и целенаправленно идти именно в этом направлении. Из вопроса это не понятно. Может быть, художником, или переводчиком, или юристом? Есть ли реальный опыт или только мечта?

    Проще всего войти в геймдев джуном тестером. Но это ни разу не любой бомж с улицы. Еще можно попробовать себя джуном геймдизайнером. В обоих случаях нужен богатый игровой опыт и знание игр вообще. Но я уверен, что вы не знаете, что делают на этих должностях. Тестер - это не тот, кто целый день играет в игры. А геймдизайнер - не тот, кто придумывает клевые идеи и ему за это платят.

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

    К примеру, вы хотите быть у руля, т.е. вам нравится менеджмент. Возможен такой путь: сначала в тестеры, потом в лида отдела тестеров, потом в ПМы, потом в геймдизы или сразу в продюсеры. Выше продюсера уже никого нет, разве что спонсор. И тут вы вдруг понимаете, что продюсер - не самый главный, а всего лишь человек, у которого своя роль, свои обязанности и своя зона ответственности. Ошибка в том, что вы не знали, чего хотели, в итоге - разочарование.

    Можете предтсавить, что геймдев - это бетонная стена. Пробиться головой через неё нельзя. Но можно купить перфоратор, это будет означать соответствующее образование, а в идеале - реальные достижения. Тогда вы сможете сделать отверстие и шагнуть на ту сторону стены. Инструменты возьмите с собой, там дальше будут другие стены.

    Входных точек в геймдев существует много, но бетон - есть бетон. Это не масло и не хлеб. Глотать пыль не очень приятно. Хотите что-то попроще - идите в другую сферу.
    Ответ написан
    Комментировать
  • Как понять, что не нравится Хрому в одинаковых символах?

    dollar
    @dollar Автор вопроса
    Делай добро и бросай его в воду.
    В общем, это невидимый символ с кодом 8207 (Right-to-left mark).
    Ответ написан
    Комментировать
  • Как сделать уничтожение двух объектов по истечению времени на Юнити?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Как исправить проблему

    Исправление проблем в плохо работающей программе (игре) называется отладка. Процесс отладки - это поиск, т.е. последовательность проверок и экспериментов, в ходе которой копится информация, которая в итоге помогает догадаться, где и какая ошибка допущена.

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

    Знаю, что ответ слишком общий, но он вам и правда подходит. Как тот ни бесполезно и нравоучительно звучит, но мой совет - учитесь отлаживать.

    На данный момент вы задали 0 вопросов, включая этот. Почему ноль? Вопрос-то вы вроде как задали, но результат не описали. Вы сказали, что вам надо (чтобы враг и пуля удалялись), но не сказали, что на данный момент есть. Враг удаляется, а пуля - нет? Пуля удаляется, а враг - нет? Игра вообще не запускается из-за попытки сделать эту фичу? Пуля проходит насквозь? Пуля отскакивает, как от бетона, и падает на пол? Любая из этих подсказок была бы первым шагом и помогла бы уменьшить проблему в 2 или даже в 10 раз. Но вы эту подсказку не дали, так что проблема может заключаться, в чем угодно. В этом случае вам можно помочь либо телепатией (угадыванием), либо сделав вашу задачу с нуля, не беря в расчет ваши наработки.

    Но даже если будет 1 подсказка, этого будет не достаточно. Как я сказал выше, нужно несколько подсказок. И где искать следующую, зависит от того, где вы нашли предыдущую. Так что вы и только вы можете этим заниматься. Через Тостер это будет в формате "попробуй так - сделал, вышло то-то - тогда проверь это - ок, выдало такое - значит, здесь исправь" и т.д.

    Код в данном случае не очень помогает, и я уже сказал почему. Потому что проблема (которая не описана) может быть, где угодно, даже вне этого кода.

    UPD:
    Non-invocable member 'GameObject' cannot be used like a method.

    Спасибо за добавление описания ошибок в текст вопроса. Теперь гораздо понятнее, что происходит (это аж 4 подсказки), но ответить однозначно всё равно нельзя. Потому что они вроде как очевидны, их описание говорит само за себя, но, тем не менее, вопрос всё ещё актуален. Это говорит о недостатке знаний в C# или в английском языке. Пройдусь кратко:
    1. Trigger вы используете, но нигде не объявили. И компилятор жалуется, что не знает, что это такое. Возможно, вы хотите что-то проверить и вам по смыслу понятно, что это должно быть (какой-то "триггер"), но компилятор не знает английского, для него это лишь идентификатор какой-то сущности - переменной ли, функции ли, и так далее. Кроме того, даже человеческий программист зайдёт здесь в тупик, потому что не ясно, к чему относится ваше Trigger("Ammo"), равно как и Collision("Enemy"). Если у вас в игре много врагов и пуль, то что эта строчка может значить? Коллизию всех со всеми? Или что? Когда (если) вы глубже поймете язык C# и вообще ООП, то узнаете, что есть классы, объекты и их методы. И что методы обычно вызываются не сами по себе, а применительно к какому-то объекту, да хотя бы к текущему (но в текущему такого метода нет). Объяснять "в целом" можно долго, но я не смогу в ответ запихнуть учебник по C#.
    2. Collision - здесь компилятор сообщает, что этот идентификатор ему знаком, но вы его используете не так, как задумано.
    3. GameObject - аналогично предыдущему, это знакомо компилятору, но так нельзя, это не функция.
    4. GameObjcet - а здесь компилятор говорит, как и в первом сообщении, что вы нигде не объявили этот идентификатор. Очевидно, что там просто опечатка. Это как раз тот пример, когда, занимаясь отладкой, вы должны догадаться об этом. Ведь, GameObject это вот прям основное слово в Unity, но компилятор его не знает? Что? Как так? И если исключить невозможное, то остается почти единственный вариант - опечатка. Вот так просто.
    Ответ написан
    2 комментария
  • Дополнение для Хрома, что бы заданные вкладки были ярко выделены?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Типа этого?
    Ответ написан
    Комментировать
  • Как сделать подмену размера экрана?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нужно запустить виртуальную машину. В ней вы настраиваете размер (виртуального) экрана штатными средствами, а далее в ней можно запускать браузер. Также есть всякие новомодные онлайн сервисы, но это такое себе решение, не для всех задач.
    Ответ написан
    Комментировать
  • Какая разница между объектами (или набором обьектов) и ассоциативным массивом?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В JavaScript разницы нету. А вообще обычно разница в том, что объект может иметь методы, которые можно вызывать в контексте объекта. В том числе конструктор. В JavaScript, соответственно, есть прототипы. Но ирония в том, что массив в JavaScript - это тоже объект. Вообще этот язык исторически тянет кучу дикости с древних времен, а нам с этим жить. Хотя если строго формально, то ассоциативных массивов в JS нет.
    Ответ написан
    3 комментария
  • Что означает "?v=1" при подключении .css?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Означает, что какая бы ни была кеширующая система на сервере и на клиенте, добавление такой фигни форсирует кеш (почти) без вариантов, потому что это как бы другой файл. То есть если что-то изменили в css, можно это добавить, и в новой страничке загрузится новая версия css, а не из кеша.
    Ответ написан
    4 комментария
  • Стоит ли долго оставаться эникеем в большой компании?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Если з/п высокая и устраивает, то стоит.
    По ходу дела можно учиться.
    Трогать руками оборудование смысла нет. Работа сис. админа - это чтение документации. Руками разве что провод обжать, а если больше, то это уже монтажник. Так что изучайте сети и прочее, а там видно будет
    Ответ написан
  • Нужна помощь в создании скрипта?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Погуглите DOM
    Ответ написан
    Комментировать
  • Что лучше обновить?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    А кроме игр что?
    Вообще я бы выбирал между а) купить оперативки да побольше и б) ничего не покупать. А зачем? Работает же. Или чего-то не хватает? Если всё ок, отложи до пока не сломается, а это случится.
    Ответ написан
  • Почему так легко украсть чужие куки firefox?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Поэтому я запускаю браузер из под другого пользователя с определенными правами. Если вирус в самом браузере, то он не получит доступа к системе. А программы пользователя, соответственно, не могут получить доступ к рабочей папке браузера. Лишь админский доступ даёт возможность украсть, но это уж сам виноват, как говорится.
    Ответ написан
    3 комментария
  • Как скрыть отображение адреса всех ссылок в браузере одним скриптом?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    document.querySelectorAll('a').forEach(a=>{
    	if(!a.href || !(a.href.indexOf('http')===0)) return;
    	let href = a.href;
    	a.removeAttribute('href');
    	a.addEventListener('click',e=>{
    		location.href = href;
    	});
    });

    Но этот скрипт испортит некоторые хитрые кнопки. Так что надо доделывать либо под конкретный сайт, либо думать, как определять кнопки в универсальном варианте скрипта.
    Немного улучшенный вариант:

    Но нет предела совершенству. Улучшать можно бесконечно.
    document.querySelectorAll('a').forEach(a=>{
    	//a.style.backgroundColor = 'red'; //красным проигнорированные
    	if (a.href && a.href.indexOf('javascript:') === 0) {
    		//a.style.backgroundColor = '#ff0'; //желтым скриптованные ссылки
    		let eval_str = a.href.substr(11);
    		a.addEventListener('click',e=>{
    			eval(eval_str);
    		});
    		a.removeAttribute('href');
    		return;
    	}
    	if(!a.href || !(a.href.indexOf('http')===0)) return;
    	let c = a.className;
    	if (c.indexOf('button') > -1 || c.indexOf('btn') > -1 || c.indexOf('like') > -1 || c.indexOf('reply') > -1) return;
    	if (a.querySelector('svg') || a.querySelector('img')) return;
    	if (a.style.borderRadius) return;
    	//a.style.backgroundColor = '#0f0'; //зеленым очищенные ссылки
    	let href = a.href;
    	a.removeAttribute('href');
    	a.addEventListener('click',e=>{
    		location.href = href;
    	});
    });
    Ответ написан
    5 комментариев
  • Сбор игровых данных, не нарушаю ли я закон?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Есть три основных варианта:
    1. Вы собираете персональные данные, и пользователь дал вам на это разрешение (хранение и обработку, а также передачу третьим лицам согласно вашим целям, всё в соглашении должно быть). Можно при установке игры сделать отдельный экран с галочкой, которая по умолчанию включена.
    2. Вы собираете НЕ персональные данные, а просто обезличенные или обобщенные. И пофиг на согласие клиента.
    3. Вы вообще ни при чем. Просто делаете инструмент для сбора данных и снимаете с себя ответственность. И дальше каждый владелец сервера уже сам решает, включать или не включать этот инструмент при заходе на сервер игрока. Здесь тоже желательна какая-то оферта, но уже с владельцами серверов.


    А дальше сами решайте, какой именно ваш вариант. Мы же не знаем, что за данные, и что у вас там в качестве идентификатора. Или, может, вы просто количество передаёте (идеальный вариант, кстати, типа у вас играло сегодня 1000 человек, без id, но польза так себе). Можете ли вы быть уверены, что пользователь не получит клиент в обход соглашения на сайте (друг принёс на флешке).
    Ответ написан
    Комментировать
  • Ошибка cs1525 с термином int, как исправить?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    set { animator.SetInteger("State", (int)value); }
    Вы же преобразуете к целому входное значение value, а "State" - это просто имя, его не нужно трогать, тем более таким образом.
    Ответ написан
    Комментировать
  • Как получить атрибут выбранного option'а?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Попробуйте так:
    document.getElementById("myselect").addEventListener("change",
      function () {
        let opt;
        for(let i=0;i<this.children.length;i++){
          let child = this.children[i];
          if(this.value == child.value) {
            opt = child;
            break;
          }
        }
        if(!opt)return;
        let for_attr = opt.getAttribute("data-price") || "???";
        document.getElementById('mydiv').innerHTML = "Вес брутто*: "
            + for_attr;
      }
    );
    Ответ написан
  • Google tables график не строится из значения ЕСЛИОШИБКА?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Ноль без кавычек попробуйте.
    Ответ написан
    1 комментарий
  • Примеры игр на blueprint в unreal engine? Какие возможности?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Без программирования сделать нормальную игру невозможно.

    Даже blueprint'ы по сути являются, хоть и визуальным, но программированием. Там у вас будут названия переменных (свойств), их типы, включая числовые типы, собственно сами числа, операции над ними, логические операции, ветвления и т.д. Всё, как в программировании, только вместо 2+2 будет визуальная схема. В каком-то смысле текст программы даже проще писать и воспринимать, если привыкнуть (хотя к С++ придётся долго привыкать с нуля).
    Ответ написан
    Комментировать
  • Функции проведения JSON?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Нет. Готовых функций нет.

    Хотя сделать такое не сложно. Главное, знать, что хотеть. Из ваших примеров это ни разу не очевидно. В них не прослеживается закономерность и куча несостыковок. Вероятно, вы очень спешили, когда их составляли. Так что я даже не уверен, что вы сами знаете, что вам нужно. Но зато я уверен, что как только вы начнете делать (или начнете составлять ТЗ), то сразу поймете, что вам нужно, а что не нужно.

    Когда сделаете свою функцию, не поленитесь вернуться в этот вопрос и проверить, насколько же сильно результат функции отличается от ваших примеров.
    Ответ написан
    2 комментария