Games — Помогите пофиксить баг, Js


Содержание

Форум

Справочник

Поиск по форуму
Расширенный поиск
К странице.

Купил шаблон GK MyStore.
Но обнаружил в нем противный баг.

Если убрать курсор с уже выпавшего подменю на любой другой элемент (кроме главного меню), то подменю остается на экране и не убирается.

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

JS код меню.zip (4.5 Кб, 1 просмотров)
Сообщение от Cammerariy Техподдержка Gavick отмалчивается.

Так им деньги плачены — пусть танцуют! Сообщение от ksa Так им деньги плачены — пусть танцуют!

Благодарю за совет

Однако изучение форума поддержки вызывает умиление — после диких плясок с оплатой, также обнаружилось, что ответы на запросы растягиваются на недели, а есть серьезная необходимость в быстром решении вопроса.

Посмотрите хотя бы, может вообще это неустранимо, или не является какой-то проблемой, ибо так и должно быть.

Я думаю что это все таки JS, поэтому сюда и написал, однако уверенности нет.

Надо исправить баг

У меня практика мне дали сайт и установили локал на мой нотбуке и дали задание исправить анимацию картинке смотрите на видео я показываю баг ну проблем такой я не умею пользоваться с js Мне сказали учи и практикавай но мне исправить не как не получается
вот как запустить локал
там надо исправить анимацию картинку что оно плавно уменьшался
баг- который надо исправить-
https://www.youtube.com/watch?v=ls-07gGH70g

запускайте на линукс։
анимацию js/node.js
README Инструкция

Useful git commands
1. git diff — to see your changes
2. git status — to see what files you have changed
3. git checkout* — revert your changes
4. git stash — revert your changes, but save the difference
5. git stash apply — apply stored difference

Баг с интерфейсом в лаунчере Эпик стор

Всем привет, у меня такая проблема: Где-то 3 мая, непонятно по какой причине баганулся интерфейс в лаунчере Эпик стора и он стал выглядеть вот так:

(и как вы сами уже догадались что помимо интерфейса в лаунчере вообще всё не работало) И самое интересное что ни перезапуск лаунчера, ни перезапуск ПК, ни восстановление файлов с помощью уснанавочника Эпик стора, ни переустановка лайнчера никак не решило эты проблему… В итоге через 6 часов долгих попыток я смог решить эту проблему, а именно нужно было удалить Эпик стор, зайти в реестр винды, удалить от туда всё связанное с Эпик стором, а потом заново установить Эпик стор… И поначалу (в течении 6 дней) всё работало нормально и интерфейс работал… но сегодня (9 мая) этот баг случился снова… И вот есть одна проблема… у меня интернет 30КБ/сек. (1ГБ скачивается 10 часов), и я могу точно сказать что я зае**** каждый раз из-за этого бага переустанавливать Эпик стор и по новой качать все игры (а хочу отметить что все игры которые есть у меня в лаунчере суммарно весят где-то 20 ГБ)… И вот из-за этого у меня возник такой вопрос: Есть ли безопасный способ исправить баг интерфейса Эпик стор без его переустановки? (чтобы не пришлось по новой качать игры)

Думаю, все возможные советы, которые тебе могли бы тут дать, ты и так сделал. Похоже на проблему битого кэша, и, делая переустановку, ты его, по сути, перестраиваешь. Почему он бьётся — непонятно, но возможно, что из-за низкой скорости загрузки или потерях пакетов загружаются ошибочные данные, которые клиент не умеет исправлять сам.

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

Плюс, обратись в поддержку.

Я не знаю, как это реализовано в EGS, но по-хорошему, удаление самого ланчера не должно удалять файлы игр, ты просто указываешь их расположение при повторной установке и ничего он не должен качать заново

Ну, а вот при удалении лаунчера Epic Games почему-то так же удаляются и игры и даже такой вариант как «скопировать файлы игр, а после переустановки лаунчера закинуть их обратно» не работает, лаунчер после переустановки нивкакую не хочет видеть те игры, файлы которых я перекинул обратно после переустановки лаунчера…

Уже обращался 3 мая (когда впервые и столкнулся с этой проблемой), но пока что никакой помощи от техподдержки нету (прислали только письмо на почту в стиле «Здравствуйте . *бла-бла-бла*… спасибо что обратились к нам, мы перенаправили ваше сообщение в технический отдел»)…

Девять способов как пофиксить баг Apex Legends вылетает без ошибки

В этой статье мы расскажем вам как пофиксить баг когда выбивает без ошибки Apex Legends.


Apex Legends вылетает без ошибки

Мы расскажем вам о девяти возможных способах — как решить проблему, когда вас выбивает из игры но ошибку не показывает:

Перезагрузите игру

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

Деактивировать некоторые функции Origin

Одна маленькая хитрость, которая может сработать для исправления сбоя, — деактивировать настройку в вашем Origin клиенте, которая называется Origin In-Game. Вот как:

Шаг 1. Откройте «Origin-in-game» «Настройки» в строке меню.

Шаг 2: Затем нажмите на вкладку Origin в игре, которая находится справа.

Шаг 3: Здесь вы должны увидеть параметр «Origin Origin In-Game» с небольшим переключателем в правой части. Не забудьте отключить это (как показано на рисунке ниже)

Переустановите Origin

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

Шаг 1: Продолжайте и удалите Origin с вашего компьютера. Если вы на Windows 10 Перейдите в панель управления и нажмите «Удалить программу» в разделе «Программы». Далее нажмите «Происхождение», затем нажмите «Удалить».

После того, как вы полностью удалили Origin с вашего устройства, перейдите на страницу Получить последнюю версию Origin и выберите свою платформу: Windows или Mac.

Нажмите кнопку «Загрузить», чтобы загрузить последнюю версию Origin. После завершения загрузки и установки последней версии вы можете попытаться проверить, прекратились ли сбои Apex Legends.

Починить игру в Origin

Другой простой, но эффективный способ исправить любые ошибки в любой игре — просто «починить» игру в своем клиенте Origin. Вот как:

Шаг 1. Перейдите в свой клиент Origin и выберите опцию «Моя библиотека игр».

Шаг 2: Далее просто щелкните правой кнопкой мыши игру Apex Legends и выберите «Восстановить игру».

Обновите драйвера

Точно так же, как важно поддерживать ваше программное обеспечение в актуальном состоянии, ваш GPU должен время от времени обновляться с помощью последних драйверов, чтобы поддерживать его в оптимальном состоянии. Я приведу ссылку на последнюю страницу драйверов для NVIDIA, AMD, Intel здесь ниже. Вы можете нажать на нее и перейти на страницу, а затем приступить к установке последних версий драйверов. Если вы используете другой тип графического процессора, то простой поиск Google по марке графического процессора + «последние загрузки драйверов» должен открыть страницу драйверов. Выберите подходящую страницу драйверов для вашего GPU здесь:

Цукерберг рекомендует:  C# - Оплата курса C#. Разработка мини игр через Яндекс.Деньги

• Если вы используете графический процессор NVIDIA.

• Если вы используете графический процессор AMD.

• Если вы используете графический процессор Intel. После того, как вы загрузили и установили последние версии драйверов, вы можете еще раз протестировать игру, чтобы убедиться — вылетает ли она без ошибок.

Удаляем все антивирусы и схожие программы

  1. Хорошо иметь на своих устройствах антивирусное программное обеспечение, поскольку оно помогает остановить все виды угроз, с которыми вы можете столкнуться в Интернете. Однако проблема с большинством этого программного обеспечения заключается в том, что пользователи часто устанавливают одновременно две формы антивирусного программного обеспечения, и это вызывает как замедление работы устройства, так и сбои приложений время от времени. Правда в том, что вам нужно только одно антивирусное решение, установленное и работающее одновременно. Если вы работаете в Windows, предустановленный Защитник Windows прекрасно работает для предотвращения всех видов угроз. Это также не замедляет работу ПК так, как это делает любое внешнее антивирусное ПО. Если вы работаете на Mac, Apple предустановила в нем мощные антивирусные решения, и очень маловероятно, что вы столкнетесь с вирусами и угрозами в Интернете, особенно с устройством Mac. Поэтому отключите любой дополнительный антивирус, который вы могли установить, и посмотрите, работает ли игра без сбоев.


  • Fps max 100

    1. Один небольшой трюк, который вы можете использовать, чтобы исправить игру, — установить ограничение на FPS вашей игры. Вот как вы это делаете:
      1. Шаг 1: Перейдите к своему Origin, затем к «Моей Игровой Библиотеке» и щелкните правой кнопкой мыши по игре «Apex Legends».
      2. Шаг 2: Затем нажмите «Свойства игры» и выберите «Дополнительно».
      3. Шаг 3: Наконец, все, что вам нужно сделать, это просто скопировать вставить «+ fps_max 100» (без кавычек) в аргументы командной строки.
      4. Готово.
  • Удалите Visual C++

    Одной из техник, которая работала для некоторых пользователей на официальных форумах EA по игре, было удаление всех программ «Microsoft Visual C ++» с ПК. Вот что они должны были сказать: Исправить сбой Apex Legends без ошибок

    Заметка Действуйте с осторожностью и не удаляйте ничего, что необходимо для работы вашего устройства. Обязательно сделайте резервную копию на всякий случай!

    Напишите в техническую поддержку EA по Apex Legends

    1. Если вы перепробовали все вышеперечисленное, начиная с обновлений и заканчивая небольшими изменениями, и все же обнаруживаете, что Apex Legends вылетает без ошибок, то лучшим вариантом будет либо дождаться нового обновления, которое может исправить, либо не исправить его, либо фактически попытайтесь заручиться поддержкой EA и сообщите им о проблеме. Это также может помочь в том, чтобы прокомментировать некоторые из того, что наши читатели ниже прокомментировали с их собственными исправлениями и что сработало для них.
  • Заключение

    Apex Legends — относительно новая игра, которой еще не исполнилось и полугода с момента ее выпуска. Уже с первого дня после релиза Апекс начал набирать бешеную популярность, однако на сегодняшний день игра находится в определенной стагнации.

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

    Будем надеяться, что в будущем ошибок будет меньше, ну или хотя бы их решение не будет занимать у нас драгоценное время.

    Пофиксили баг с квестом в ТФТ!

    Title
    1. Quote
    2. Login to comment
    3. Quote
    4. Edit
    5. Delete Deleted

    6. Are you sure
    7. Yes
    8. No
    9. Undelete
    10. View in Mod Tool

    Rioter Comments

    Source:

    Facechecking the brush is dangerous, and so is facechecking the web. Other websites may not be as well-warded as ours, so please use your best judgement when clicking on unknown links.

    You are going to:

    You are leaving LeagueofLegends.com

    Facechecking the brush is dangerous, and so is facechecking the web. Other websites may not be as well-warded as ours, so please use your best judgement when clicking on unknown links.

    Как исправить баг с play pause HTML5 в google chrome?

    При разработке радиоприёмника столкнулся с проблемой в google chrome. Именно в chrome, что самое поразительное, в остальных браузерах всё работает прекрасно. В chrome происходят 2 неведомых бага. Один явный, другой непонятно откуда взявшийся и даже нагуглить его не выходит. Сначала про приёмник:

    В нём есть переключалки станций — всего их около 20. Работает он на плагине buzz.js (сначала хотел сделать нативно через audio src , но потом начал копаться на stackoverflow и нашёл его, когда обнаружил в хроме первый баг с кэшированием звука).

    Баг №1: Он явный и загуглить его можно было. В консоль выпадала ошибка, а проигрывание прекращалось.

    Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause().

    Я нашёл багрепорт. Что странно — он закрыт, но судя по всему в официальном обновлении фикс не выкатили, ибо хром я обновлял пару недель назад, а ветка закрыта уже как с 8 месяцев. На форумах предлагают костыли, типа setTimeout . Не знаю как остальные ставили на это галки — лично мне не помогло. Скорее всего потому что в src у меня потоковые ссылки и с ними всё не так просто. Сталкивался ли кто-то с этим багом на практике? Как боролись?

    Исправили баг со ссылками на YouTube

    Как многие из вас заметили, у нас на сайте был баг со ссылками на YouTube — они не работали!

    Спасибо вам, что такие внимательные и сообщаете нам об ошибках на сайте.

    Исправили данный баг, теперь всё будет отлично!

    Большая просьба обновить ваши ссылки.

    Спасибо за понимание и что помогаете нашему ресурсу становиться лучше :)

    Обо всех ошибках, найденных на сайте, а также пожелания об улучшении ресурса можно прислать нам нажав на ссылку «Помоги сайту стать лучше» в шапке сайта.

    Нажми ссылку «Помоги сайту стать лучше» и напиши своё пожелание по улучшению ресурса. Спасибо!

    Пофиксили баг с квестом в ТФТ!

    Title


    1. Quote
    2. Login to comment
    3. Quote
    4. Edit
    5. Delete Deleted
    6. Are you sure
    7. Yes
    8. No
    9. Undelete
    10. View in Mod Tool

    Rioter Comments

    Source:

    Facechecking the brush is dangerous, and so is facechecking the web. Other websites may not be as well-warded as ours, so please use your best judgement when clicking on unknown links.

    You are going to:

    You are leaving LeagueofLegends.com

    Facechecking the brush is dangerous, and so is facechecking the web. Other websites may not be as well-warded as ours, so please use your best judgement when clicking on unknown links.

    Баг, который не удалось пофиксить, становится фичей. Словарик айтишника

    Фича – обособленный и самостоятельный кусок функционала приложения. Вот так просто, да.

    Эстимейт – время, отведённое на разработку той или иной фичи или спринта. Эстимейт задаёт сам девелопер, иногда контролирует тимлид. Обычно любая, даже самая незначительная правка, сразу оценивается в «два дня разработки». Ну, чтобы наверняка.

    Вы читаете этот материал благодаря ИТ-Академия Белхард

    Баг – собственно, неработающий аспект приложения. Соль в том, что официальное определение звучит как «отличие актуального результата от ожидаемого». Стоит ли говорить, что ожидания у всех разные. Никакие эстимейты на фикс багов не распространяются, баги можно фиксить день, неделю, месяц. Багам, которые не удалось пофиксить, официально присваивается статус фичи. Для людей, на полном серьёзе называющих баги «дефектами», существует отдельный котёл в айтишном аду.

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

    Цукерберг рекомендует:  Собираем данные с веб-страниц Java + Selenium

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

    Девелопер – программист, разработчик. Просто старое слово так круче звучит. Не путать со словом «айтишник» – потому что так уже можно назвать даже секретарей и уборщиков в IT-компаниях.

    Джуниор – самое младшее из званий в IT-иерархии. Только что пришедшие, новые сотрудники с явно небольшим багажом знаний, которые получают меньше, работают больше и становятся боксерской грушей для тренировки чувства юмора тех, кто выше «статусом». Далее следуют мид, сениор, тимлид и проджект менеджер, но до этого еще надо дожить.

    Фронтэнд/Бэкэнд – «лицевая» или «скрытая» часть приложения. В общем случае – клиент/сервер. Выражаясь более женскими терминами, фронтэдеры делают так, чтобы конечному пользователю было красиво и удобно, все вот эти свистелки-примочки и мятно-пастельные цвета. Бэкэнд – чтобы всё это «красиво» ещё и работало.

    Языки программирования (JavaScript, PHP, Java, Python, C#) – от выбора языка программирования зависит сфера дальнейшей деятельности. Есть языки, которые больше подходят для вэба, есть те, что удобнее для Android, iOS. В целом язык программирования это как религия. Если родители «верующие», то выбирают за тебя. Если же нет, то многочисленные фанатики будут рекламировать каждый свою секту.


    Аджайл – модная нынче методология разработки программного обеспечения, позволяющая разбивать процесс разработки на небольшие временные отрезки, для реализации конкретных фич. Один из постулатов гласит «работающий продукт важнее исчерпывающей документации», что и стало причиной бешеной популярности. Ибо обычно разницы между не исчерпывающей документацией и отсутствием её как таковой никто не видит.

    Спринт – тот самый небольшой отрезок времени из предыдущего определения. Спринт обычно длится 1-2 недели, имеет чёткий дедлайн и набор фичей для разработки, которые определяются и планируются в первый день спринта. Что позволяет как минимум один понедельник не работать, а просто сидеть и чесать языком. Лучшее изобретение человечества, сразу после втулки, которую можно смыть в унитаз.

    Демка – ритуал посвящения всей команды в то, что произошло с проектом за спринт. Обычно проводится в последний день спринта, то есть в пятницу. Изначально демка была задумана для поддержания духа и осведомлённости коллектива, сбора идей и мнений. На самом деле, это просто ещё один повод не работать, но уже в пятницу.

    Софтланч – тестовый запуск приложения, обычно на определённые страны типа Канады, Новой Зеландии и Австралии. Всё потому, что британские учёные доказали, что интересы этих стран «весьма специфичны» и совпадают с интересами стран, которые приносят больше всего денег. Самое приятное в софтланче – это корпоратив, который за ним следует, ведь сделанный проект – это действительно знаковое событие для команды. Для тех, кто говорит «софтлонч», тоже зарезервирован отдельный котёл.

    Продакшен – версия приложения или сервера, доступная конечному пользователю. Святая святых. По закону Мёрфи, продакшен наиболее уязвим с пятницы по воскресенье и в государственные праздники. И тогда или самый ответственный, или самый несчастный сотрудник бежит в офис и все исправляет. За это, само собой, не доплачивают.

    Спека – слэнговое название документации или технического задания. То, чего обычно нет.

    Апрувить – получать одобрение на какое-либо действие. Апрувят в основном изменения в работе фичи или какой-то баг, который решили не фиксить. Естественно, в спеку, если вам повезло и у вас она таки есть, полученные апрувы не вносят. После чего на демке или уже в продакшене появляется много интересных вопросов. Самодеятельность обычно не апрувят, в связи с чем вопросов появляется ещё больше.

    Фичеринг – одобрение и помощь в продвижении приложения от платформ. Большая плашка вверху магазина или просто возможность попасть на первую страницу. Удовольствия приносит столько же, сколько политикам, феминисткам и медиа – получение гранта. Цель и смысл жизни маленьких команд со своим продуктом. Является объективным критерием качества продукта. В отличие от гранта, кстати.

    ООО «ЕВРОПЕЙСКИЙ ЦЕНТР РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ»
    УНП 190681713

    Рефакторинг – переосмысление и «улучшение» исходного кода приложения. Любимое занятие девелоперов, пока никто не смотрит. Из-за этого часто горят эстимейты, но что поделать, когда вокруг работают сплошь перфекционисты! Почему «улучшение» в кавычках? Потому что когда в 11 часов вечера после очередного коммита тебе звонит тимлид и спрашивает, почему в продакшене ничего не работает, ты можешь быть смело ответить: «Нарефакторили».

    Исправление багов Skyrim. Восстановление связей

    Добавлено: 11 Октября 2014 в 18:13
    Просмотров: 15199 | Комментарии: 21

    Понравилось: 33 пользователям

    Я немного устал чинить чужие сохраненные игры, поэтому в этой статье расскажу, как самостоятельно исправить некоторые скриптовые баги в Skyrim.

    Кроме того, статья будет полезна моддерам, чтобы понять, как работает игра, и избежать популярных ошибок.

    Не путать с вылетами на рабочий стол!

    Сразу заявляю, что я не буду отвечать на наивные комментарии вида «Я просто делаю чистку с помощью SaveTool, и у меня все прекрасно«. Искренне надеюсь, что вы не столкнетесь с ситуацией, когда SaveTool окажется бесполезной. Но если столкнетесь, вспомните про эту статью.

    Я понимаю, что единицы на сайте знакомы с такими терминами из программирования, как «указатель», «инструкция» и т.д., поэтому начну с самых основ.

    Как чтение статьи, так и исправление сохраненок, требует от пользователя умения и желания ДУМАТЬ. Но я считаю, что с этим проблем нет, так как «нужда заставит». Перспектива потерять 600-часовое сохранение и начать все заново кого угодно заставит пошевелить извилинами.

    Кроме того, я кажется где-то слышал, что все жалуются, будто паззлы в Skyrim — недостаточно сложные? ) Что ж, вы можете воспринимать свою проблему как достойную головоломку

    Чтобы упросить вам задачу, я специально пометил места в статье, где пользователю придется ДУМАТЬ самостоятельно.

    Что такое скрипт?

    Скрипт в Skyrim — это программа, написанная на интерпретируемом языке, которая расширяет функционал объектов в игре.

    Тело скрипта, которое как раз вносит функционал, реагирует на игровые события и содержит всю полезную нагрузку, состоит из инструкций (набор инструкций еще называют байткодом). Тело получается из исходного кода путем компиляции (например, из CreationKit). ВСЕ скрипты, которые поставляются вместе с модами (не важно, в архиве они или нет), идут в форме скомпилированного байткода.

    Как и любая другая программа, скрипт должен обладать памятью. Переменные (свойства) скрипта составляют его долгосрочную память. Переменные могут хранить числа, а могут хранить идентификаторы других скриптов для связи с ними (переменные, которые хранят ID других скриптов, называются «указателями»).

    Как скрипты пишутся в сохраненную игру?

    Упрощенно, игра записывает в сейв нити (как часть Стекфреймов) и сущности.

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


    Сущность — это долгосрочная память скрипта. Каждый объект связан со своей скриптовой сущностью.

    Например, если у вас два одинаковых манекена в доме, то у вас будет две скриптовых сущности (каждая из которых привязана к своему манекену). Если вы активируете и добавите предмет в инвентарь, скриптовая сущность соответствующего манекена обработает событие и изменит свою память. Она будет помнить, что за объект находится в соответствующем слоте. Каждый раз, когда вы заходите в дом, скрипт надевает данный кусок брони на манекена.

    Но класс скрипта — один на все манекены (все манекены обрабатываются одинаково).

    Итак, баги скриптов бывают двух типов :

    Баг в самой логике скрипта (теле). В этом случае, надо пинать автора мода. Сами вы проблему не решите. После исправления, достаточно обновиться до новой версии мода.

    Баг, связанный с неправильной памятью скриптовой сущности (т.е. неправильным значением какой-либо переменной). При этом в оригинальном моде никаких багов нет. В этом случае, пинать автора бесполезно (и даже вредно), т.к. проблема ТОЛЬКО в вашем сохранении.

    Цукерберг рекомендует:  Разработка игр. С чего начать

    «Как такое может быть» — спросите вы? Дело в том, что доступ к памяти скриптов ничем не ограничен. Любой скрипт из любого мода может изменить переменные скрипта из другого мода, игра не запрещает этого делать.

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

    Также в некоторых ситуациях, игре не удается правильно заполнить значения указателей. Это может, например, возникнуть из-за хаотичной смены версий мода.

    Например, вы обновили мод до версии 2. Вам не понравилось — вы откатились до версии 1. Все хорошо, используются скрипты 1-ой версии, но память-то осталась от второй версии! Автор мода мог что-то поменять в структурах данных, сущности в вашем сохранении обновились, и память скриптов изменилась. Значения существующих скриптовых переменных НЕ меняются со сменой версии мода.

    Если что-то работает не так, как ожидается — скорее всего сбросились какие-то числовые параметры.

    Но чаще что-то просто не работает. Например, предметы не активируются . В чем может быть причина?

    Помните, я выше писал про «указатели» ? Указатель — это переменная, которая связывает одну скриптовую сущность с другой (хранит числовой идентификатор этой другой сущности). Зачем это вообще нужно?

    В случае с манекенами, всю работу делает один скрипт. Одного скрипта достаточно для отслеживать броню и одевать ее на манекена.

    Но в случае каких-то сложных квестов одного скрипта никогда не бывает достаточно. Работает сеть взаимосвязанных скриптов. Каждый из этих скриптов выполняет свою часть работы. Когда ему что-то нужно от другого скрипта, он посылает ему «сообщения» (вызывает функции этого скрипта). Но чтобы послать скрипту сообщения, он должен знать его идентификатор. Для этого как раз и существуют «указатели«. Они связывают скрипты друг с другом, чтобы те могли взаимодействовать.

    Что произойдет, если указатель потеряет свое значение по причинам, описанным выше? Связь оборвется, скрипты не смогут взаимодействовать друг с другом. Одни скрипты не будут отправлять сообщения, а другие не будут их получать, в результате — какая-то часть работы не будет выполнена (что вы, собственно, и наблюдаете в игре).

    Итак, мы знаем — чтобы восстановить работоспособность скриптов в этом случае, достаточно восстановить связи между скриптовыми сущностями. Как это сделать?

    Если память скрипта не содержит ничего важного, можно попробовать просто удалить сущность. Для этого подойдет как SaveTool, так и Papyrus Data Transfer (Script Scalpel). Вы должны определить имя скрипта и вручную указать его.

    Когда игра загружает отредактированный сейв, она видит, что что-то не сходится — сущности больше нет, хотя она должна быть привязана к объекту в игре (согласно информации в файле плагина .esp). После чего, игра восстанавливает скриптовую сущность с памятью по умолчанию (все переменные будут содержать те значения, которые изначально указал моддер). Это как раз и решает нашу проблему в большинстве случаев, т.к. изначально скрипты связаны друг с другом.

    Но что если память скрипта хранит важные данные, например, о прохождении квеста? При удалении, игра забудет эти данные, и игрок не сможет завершить квест. Или к примеру, моддер не заполняет значения изначально, и пишет скрипт, который выставит их при определенном событии. В этом случае — удаление скрипта не является решением.

    Восстановление связей вручную

    SaveTool не умеет редактировать переменные, поэтому потребуется скачать Papyrus Data Transfer.

    Рассмотрим реальный случай, когда игрок не может снять печать и освободить Серану из гроба (Жаровни не вообще никак не реагируют, когда их активируют).

    В первую очередь, нужно понять, что за скрипт привязан к активатору «Жаровня». Если подумать , то можно понять, что в английской версии активаторы носят название Brazier, поэтому попробуем просто загрузить секцию в PDT и поискать скрипты с таким названием на вкладке «Скриптовые данные» (используйте строку поиска внизу). В случаях, когда название активатора не совпадает с названием скрипта, можно открыть CreationKit, найти активатор и посмотреть, какой конкретно скрипт к нему привязан.

    Успех! Мы нашли класс DLC1VQ01PuzzleBrazierScript.

    Посмотрим на одну из сущностей. Опасения подтвердились, видим два указателя (Pointer), которые содержат значение 0 (то есть не указывают ни на один из скриптов).

    Всего в сохранении 5 сущностей DLC1VQ01PuzzleBrazierScript (очевидно, потому что в загадке используется 5 жаровней). Видим, что у каждой из них имеется данная проблема.

    Из названий (mainScript — «Главный Скрипт» и puzzleController) можно логически догадаться, что это ненормально, они ДОЛЖНЫ на что-то указывать, чтобы вся схема работала.

    Теперь нужно подумать и догадаться, ID каких конкретно скриптов эти переменные должны содержать.

    У mainScript стоит тип скрипта DLC1VQ01PuzzleController. Попробуем вбить это название в поиск и посмотреть, что за скрипты есть с таким классом. Видим одну единственную сущность.

    Очевидно, у нас просто нет никаких других вариантов. Все переменные mainScript с типом данных DLC1VQ01PuzzleController должны указывать на данную сущность.

    Но у нас остается переменная puzzleController, логика подсказывает (да, в этом месте надо подумать), что она также должна указывать на DLC1VQ01PuzzleController (зачем авторы это сделали, непонятно. но скорее всего, переменная с этим именем была добавлена неофициальным патчем). Чтобы окончательно убедиться, давайте попробуем найти такую переменную в другом скрипте.

    Из названия класса и переменных DLC1VQ01PuzzleController, следует, что это скрипт, который управляет головоломкой. В нем должны быть ссылки на другие скрипты, которые задействованы в паззле.

    Ага, видим скрипт, связанный с кнопкой DLC1VQ01PuzzleButtonScript. Двойной щелчок и мы попадаем на сущность. Граф зависимостей подтверждает нашу гипотезу: puzzleController должен указывать на DLC1VQ01PuzzleController.

    Давайте подумаем и посмотрим, какие еще скрипты головоломки лишены связей. Возвращаемся к DLC1VQ01PuzzleController. С кнопкой все нормально. Кроме кнопки и жаровней, у нас есть еще скрипт Гроба. Двойной щелчок на указателе puzzleCoffin и мы попадаем на скрипт DLC1VQ01PuzzleCoffinScript.

    Видим, что он страдает той же проблемой, что и Brazier. mainScript ни на что не указывает. Кроме того, видим указатель Serana (очевидно, должен указывать на скрипт Сераны), который тоже пустой!

    Итого, у нас есть 6 скриптов с пустыми указателями. 5 жаровней, каждая из которых содержит по два указателя с нулевым значением. И скрипт гроба, который содержит два пустых указателя (один должен быть связан с Сераной, другой — с контроллером головоломки).

    Для начала нужно сделать фильтр, который подскажет инструменту, какие именно переменные можно менять.

    Идем в DLC1VQ01PuzzleCoffinScript. Правой кнопкой мыши по mainScript — инструмент добавит переменную в фильтр.

    Аналогично поступаем DLC1VQ01PuzzleBrazierScript (достаточно сделать для одной жаровни).

    Далее, мы должны выбрать скрипт, на которые переменные должны указывать. Идем на DLC1VQ01PuzzleController и встаем на заголовок (который содержит ScriptID).

    Далее выбираем опцию «Значение Переменной» (Set Variables).

    Видим такое окно:

    Инструмент автоматически заполнил >подумать , то можно понять, что при нажатии на кнопку «Изменить«, исправится только 1 жаровня из 5.

    Нам нужен фильтр, который охватит ВСЕ 5 сущностей (т.е. весь класс). Для этого достаточно убрать RefID из фильтра. Вот так это будет выглядеть:

    Нажимаем «Изменить». Переменные mainScript теперь содержат верное значение. В логе можно увидеть, что операция затронула 6 переменных.

    Аналогично действуем с puzzleController

    Итак, у нас остается пустой указатель на Серану. Но как узнать ее скрипт? Можно подумать и поискать похожий указатель где-нибудь по соседству. Далеко ходить не пришлось — если выйти обратно в контроллер головоломки, можно увидеть переменную SeranaRef

    Двойной щелчок, и инструмент переносит нас на скрипт DLC1SeranaLevelingScript, видим, что скрипты из других модов и ресурсов тоже ссылаются на него как на Серану, а значит — это наш клиент.

    Указатель на Серану в скрипте DLC1VQ01PuzzleCoffinScript выставляется аналогично:

    Связи восстановлены, теперь скрипты могут снова взаимодействовать между собой.

    Загружаем игру — баг исчез, жаровни двигаются!
    Серана спасена!

    Если загрузить новое сохранение в PDT, можно четко увидеть различия на графе зависимостей

    Связи скрипта Жаровни, до и после:

    Связи скрипта Гроба, до и после:

    Более подробно про редактирование переменных можно посмотреть на видео:

    Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих