Перейти к содержанию

Вис691

Управление проектами
  • Публикаций

    1 539
  • Пожертвование

    0,00 ₽ 
  • Зарегистрирован

  • Посещение

  • Победитель дней

    67

Весь контент Вис691

  1. Как-то так: ref rLinkedCollision begin OnDeath let rLinkedCollision := GetLinkedRef if rLinkedCollision ; если есть коллизия, т.е. реф не пустой rLinkedCollision.disable endif end Не уверен, правда, что прямо так сработает, но можно попробовать.
  2. Попробуйте вот так A Devil's Wish_fixes.esp
  3. Нет, ни разу не пользовался. Ну и интересные способы создания ярлыков вы используете. Достаточно просто в папке с игрой найти fose_loader.exe, нажать правой кнопкой мыши -> создать ярлык. Ну а потом ПКМ по созданному ярлыку и уже туда дописывайте -editor. На этом сайте должен быть самый обычный. Можно взять отсюда
  4. Обращайте внимание на ошибки - там же написано, что у вас какой-то "не такой" Geck.exe. Вероятно, нужен самый обыкновенный. Ну хотя бы скриншотик того, что в ярлык прописали. Я не могу из ниоткуда догадаться, что пошло не так Рискну предположить, что виной этому не Нексус...
  5. Ну там вроде сказано следующее: т.е. можно вручную папку FOSE закинуть в папку Data, слив содержимое. Сам ГЕКК уже должен быть установлен - это лишь плагин. Причём конфликтует с PowerUp. Запускать ГЕКК либо с поддержкой FOSE, либо в опциональных файлах лежит некий патчер, который всё сделает за вас. Если по первому пути пойдёте, то просто создаёте ярлык fose_loader.exe (не редактора!) и в графе объект допишите -editor (перед дефисом стоит пробел). Ну и запукайте ГЕКК через этот ярлык. P.S. Сам этот плагин не ставил, всю информацию чисто по описанию с нексуса привёл. Кроме создания ярлыка, это я и сам делал.
  6. https://geckwiki.com/index.php?title=Category:Functions
  7. Всем привет. Недавно ко мне обратился AllanMetropol18 с просьбой помочь ему с небольшим скриптом. Не раскрывая подробностей (да-да, кое-что готовится к релизу), скажу лишь, что есть набор предметов (пускай типа хлам) и у одного из НПС есть один из этих предметов в инвентаре. Для того чтобы было интереснее, будем считать, что какой из предметов конкретно попал к НПС, определялось случайным образом. Вопрос был предельно прост - можно ли в определённый момент времени (для простоты будем считать, что по завершению какого-нибудь квеста) передать этот предмет игроку? Т.к. НПС был ванильным, я предположил, что этот предмет добавляется в его инвентарь через какой-то скрипт. И, конечно, моя идея заключалась в том, чтобы найти этот скрипт, найти момент передачи и запомнить, какой из предметов был выбран рандомом. Затем, в нужный момент времени просто передаём наш запомненный предмет игроку. Звучит невероятно просто, не правда ли? Как выяснилось, существовала небольшая проблема - исходники всех скриптов были вырезаны автором мода... Несложно догадаться, что это несколько усложнило задачу. Что же делать. есть ли выход? Предлагаю вашему вниманию финальный фрагмент кода. Естественно, заработало всё не с первого раза, а т.к. тестами в игре занимался не я, то процесс немного затянулся. scn aaaCoolScriptName array_var aItems array_var Entry ref rItem begin GameMode let aItems := NPCRef.GetAllItemRefs 31 ; получить список предметов типа хлам в инвентаре НПС forEach Entry <- aItems ; цикл по всем объектам массива let rItem := Entry["value"] ; получить ref предмета if (rItem.IsInList ItemsList) ; проверить, что предмет есть в списке let rItem := rItem.gbo ; получить базовый объект NPCRef.RemoveItemTarget rItem Player 1 1 ; передать предмет игроку, сбросить владельца break ; выйти из цикла endif loop End В принципе, из комментариев должно быть всё понятно, но давайте всё же кратко пройдёмся по коду. Первым делом мы получаем список всех предметов из инвентаря НПС: let aItems := NPCRef.GetAllItemRefs 31 31 здесь задаёт тип возвращаемых предметов - в нашем случае хлам. Если ничего не указать, то вернётся массив из абсолютно всех предметов, которые есть у НПС. Подробнее про функцию и её параметры тут. Кстати, заметьте, что здесь мы собираем именно ref'ы предметов, а не их базовые объекты. Почему так, станет понятно позднее. Начинаем цикл, вытягиваем ref из массива. Тут всё стандартно. Если кому нужно подробнее, то идите сюда. А вот и причина использования ref'ов: if (rItem.IsInList ItemsList) Дело в том, что на базовых объектах данная функция отказывается работать, о чём можно понять по странице из вики. На самом деле есть альтернатива из плагина NX, которая сработает и с базовым объектом, но это лишняя зависимость, при том не самая популярная. У меня, например, этого плагина нет. А у вас? ItemsList - это form list из всех объектов, из которого и выбирается случайный. В моде он уже существовал, но создать его в случае необходимости несложно. Соответственно, мы проверяем, есть ли текущий предмет из инвентаря в этом списке. Если нет, то переходим к следующему предмету. Если да, то это и есть наш искомый, случайный предмет, который мы ищем. В таком случае мы находим его базовый объект через GBO (GetBaseObject) и передаём игроку: NPCRef.RemoveItemTarget rItem Player 1 1 Да, это JIP, но он-то уж наверняка у всех есть. Да и в моде наверняка идёт, как одно из требований. Однако никто не мешает разделить на 2 команды: NPCRef.removeItem и player.addItem. Тут уже выбирайте сами. После этого из цикла выходим через break - проверять остальные предметы нам не надо. Ну вот в общем-то и всё. Запихните этот скрипт туда. куда нужно и вы восхитительны. Точнее я восхитителен
  8. Вис691

    Новый год - новые цели!

    Всем привет! Опять я немного задержался с записью в блоге, увы. В любом случае, спешу поздравить всех уже с прошедшим, но ещё не забытым, Новым Годом! Желаю побольше крышек, верных компаньонов и красочных побед на пустошах. Ну а я, пожалуй, отчитаюсь за то, что было сделано, что не было сделано и что планируется сделать. В конце прошлой записи я пообещал всем закончить то, что давно хотел сделать. В принципе, я считаю, что обещание я выполнил. Мой квест выходит на финишную прямую - осталось добавить несколько деталей, концовку и украсить всё это различными мелочами для разнообразия. С одной стороны, осталось немного, с другой стороны - мелочи отнимут кучу времени, мне кажется. Ну и протестировать всё надо, но этим я стараюсь заниматься параллельно с разработкой. В этот раз не хочу давать никаких сроков, но, думаю, к следующей записи в августе многое уже будет сделано. Почему так медленно, раз осталось немного? Ах, на это есть всё те же 2 причины: работа и учёба. И если с первой всё более-менее ясно, то со второй пока что ничего не понятно. Дело в том, что следующий семестр является последним в бакалавриате, а значит придётся писать диплом. И мне бы хотелось написать его хорошо. А на это нужно время, причём много. Ибо даже когда знаешь, что писать, трудно придумать, как это написать. Но сейчас не об этом. Касаемо второй идеи, которая у меня зародилась, хотелось бы отметить следующее. Во-первых, я думал над ней, причём немало. У меня в голове зародилась концепция самого квеста, локации и контента. Думаю, что в скором времени я поделюсь этой идеей с остальными, и мы решим, что с ней делать. В принципе, я считаю, что работы там не очень много, основная проблема - это придумать историю. К сожалению, особых спойлеров дать не могу, скажу лишь, что там придётся работать головой и, возможно, бумагой с ручкой. В общем не всем зайдёт Напоследок хотел бы задать вам, читателям, вопрос. Помните The Pitt для Fallout 3? А точнее часть, где нужно было собирать стальные чушки? Для квеста было достаточно найти всего 10, но ведь их там было куда больше. Да что уж там говорить, находите больше, получаете больше наград! Лично мне очень понравилось бегать и искать эти самые чушки по всей локации. Особенно круто было то, что локация многоуровневая. Вопрос, собственно, вот в чём: понравилось ли вам и хотите ли вы чего-то подобного в Гранд-Каньоне? Опрос прикладываю, голосуйте. Думаю, если народ будет за, то мы сможем уговорить Магнума А на этом у меня всё. Ещё раз всех с праздником, отдохните на выходных! Встретимся в августе.
  9. Или пользоваться Ctrl-F на странице со списком функций
  10. Исправлять ошибки - это, конечно, хорошо, но главное - не допускать новых . Без понятия, что это за реф такой, но скорее всего тут имелось в виду SetDestroyed. Соответственно, верным решением будет не закомментировать, а исправить строку.
  11. Помощь бывает разная. Это моя школа, я тут учитель и максимум могу помочь советом или посмотреть на что-то готовое, но, возможно, неработающее. Писать что-то за кого-то я уже не хочу, да и не могу в связи с отсутствием времени. Если где-то уже есть подобный функционал, то предлагаю попытаться разобраться в нём. Хотя чтение чужого кода зачастую бывает непростой задачей, даже если ты в этом что-то понимаешь. Ну уж и грамотным скриптологом я себя точно не назову)
  12. Чтобы я мог хоть как-то помочь, нужно чуть подробнее рассказать про то, что готово и в каком оно виде. Так, я понимаю сами лучи и фонарь уже есть? Если да, то в каком это всё виде? Я с оружием никогда не работал, так что особого представления, как эти лучи и фонари работают у меня нет. С иконками и подавно не подскажу. Вроде там всё на альфа-канале завязано, но могу ошибаться. Навскидку нашёл вот такой краткий туториал.
  13. Спрашивай, если работать не будет - разберёмся)
  14. elseif Stage == 4 && (Player.GetDistance XRocketTestBaseLocation < 5000 || Player.GetDistance XRocketTestBaseLocationDC < 5000)
  15. Версия 0.14.11.12

    4 394 раза скачали

    Набор утилит для модмейкеров, пользователей, создателей... Один клик - установка мода и его удаления, порядок загрузки ESP. Редактирования BSA. Cоздание и извлечения SDP редактирование. И многое другое. Установка: Запустить exe файл и следовать установке
  16. Приходит ГГ в магазин, а там на полках/витринах пусто. Заходит к себе домой, расставляет предметы по локации, украшает полочки, а потом раз - и всё исчезает) В любом случае, задумку уловил, и вот, как бы я её реализовывал. Вначале нам нужно получить все объекты нужного типа. Сделать это можно при помощи GetRefs. На странице есть ссылка на коды различных типов, так что подобрать нужные не проблема. Чего я не знаю - это значение значения 201:Inventory Object. Есть шанс, что это прямо то, что нужно и охватывает прямо всё-всё-всё, но надо тестировать. Если нет, то придётся по очереди по каждому типу (оружие, броня, медикаменты - всё есть на странице) проходить. Также советую обратить внимание на "passing -1 will use the uGridsToLoad value from Fallout.ini to calculate this". Дальше идём по всем элементам массива через Foreach (опять же, на странице пример есть) и просто их disable, как уже верно было замечено. Можно проверок всяких добавить, например, на то, что предмет ещё не отключён (зачем нам один и тот же предмет мучить и отключать по миллиону раз?). Теперь куда это всё прицепить? Скрипты в воздухе висеть не могут. Самый очевидный вариант это загнать всё это дело в квест, и крутить, крутить, крутить с проверкой на изменение локации. Но это ужасный вариант, так делать не стоит. Тут нужно обратиться к Event'ам, а конкретно к OnCellEnter. Таким образом подсчёт будет происходить только во время смены ячейки, т.е. единожды. К сожалению, я не могу предсказать, насколько сильно подобная штука будет грузить игру, но в теории должно потянуть. Это был минимальный экскурс в направление, куда копать. Дальше всё зависит от текущих навыков, но если что всегда можно задать мне вопросы, показать нерабочий код и т.д. Удачи
  17. Можно поинтересоваться, а какого использование такого скрипта? В любом случае, нужно чуть больше информации. Это должно работать со всеми ячейками (включая и экстерьеры), в которые входит игрок? Пропадать должны какие-то определённые объекты или всё, что может поднять игрок (оружие, броня, медикаменты и т.д.)? В общем, чем больше подробных деталей сообщите, тем мне проще будет.
  18. Это как? Все предметы хлама из локации пропасть должны что ли?
  19. Вис691

    Время перемен

    Привет всем, кто читает эту запись! Сегодня 32-ое августа (я же обещал эту запись в августе), а значит пришло время поделиться тем, что успело накопиться за эти 8 месяцев. Буду честен, сделал я немного, но на то есть свои причины. Но обо всём по порядку. Напомню, что я работаю над своим детективном квестом. К сожалению, жизнь меня не одарила способностями к сочинению и написанию чего-либо, поэтому диалогами занимаюсь не я. Пишет их всё тот же незаменимый Паха007, я же после этого потихоньку переношу их в игру. И весь этот процесс шёл довольно гладко, пока... Пока я не столкнулся с работой с AI пакетами. И тут повлияли даже не сами пакеты, а попытки сделать ситуацию более-менее реалистичной, продумать все детали и просчитать все потенциальные действия игрока. И, не знаю почему, это просто сломало меня. Может, я посчитал, что потребуется больше времени, чем у меня было на тот момент, может, что-то не получилось и я решил отложить разбор на потом, - я уже даже не помню. В любом случае, этот кусок и по сей день висит на мне мёртвым грузом. Однако работа не ограничилась только лишь диалогами. Одним из нововведений, например, стала небольшая фишка, использование которой будет как и в моём квесте, так и за его пределами. Не хочу спойлерить детали, ибо иначе я раскрою все свои карты, и когда вы будете играть, ничего нового для себя не найдёте. Также я поработал над уликами для квеста и над, уже не раз упомянутом ранее, блокнотом детектива. Последний, кстати, вроде бы практически готов, но никогда нельзя быть уверенным на 100%. Ну а теперь, пожалуй, о факторах, сказавшихся на столь медленную работу от меня. Основная причина остаётся неизменной - это отсутствие мотивации. Я уже не раз говорил, что моддинг уже не приносит мне былого удовольствия, как, скажем, лет 6 назад. Поэтому, когда у меня появляется свободное время, я предпочитаю его тратить на что-то другое. Ну а с тех пор как я начал работать, о свободном времени приходится только мечтать. В любом случае, я не собираюсь останавливаться на полпути и подводить ребят. Я обещаю себе и всем вам, что до 2020 года я разберусь с текущими задачами. У меня, кстати, есть даже одна идея для ещё одного квеста. Тематика пересекается с одним из моих увлечений в реальной жизни, а сложность реализации будет полностью зависеть от того, захочу ли я чего-то масштабного (а-ля целая история с локациями) или же решу ограничиться чем-то поменьше. Однако основная суть от этого зависеть никак не будет, и я постараюсь сделать выбор, исходя из рациональной оценки моих сил, желания и возможностей. Однако до этого ещё нужно дойти, так что забегать вперёд пока что рано. До новых встреч, друзья. Надеюсь, что следующий пост будет более оптимистичным
  20. Вис691

    В уходящем 2018ом...

    Ох, ну раз ждёте, то можно и сделать!
  21. Вис691

    В уходящем 2018ом...

    Доброго времени суток, друзья. Если вы читаете эту запись, то вы прошли нетрудный (но немного заковыристый) квест по нахождению блогов на этом сайте В качестве награды за выполнение сего квеста вы получаете немного спойлеров по Гранд-Каньону. Приступим! Начнём, пожалуй, с того, за что отвечаю лично я. В течение последних месяцев я не так много работал над модом, не буду скрывать. Учёба и другие хобби отбирали практически всё свободное время. Однако в то же время могу заверить, что и делать по большому счёту особо и нечего. Прежде чем вы побежите в комментарии кричать: "В смысле нечего? Ты там совсем зажрался что ли?? У нас тут поле непаханое из различных задач, а ему делать нечего!", я постараюсь объяснить. Дело в том, что разработка той части, за которую я отвечаю, ведётся не только мной. Огромный вклад в разработку моего квеста вносит Паха007. Он согласился помочь с написанием диалогов для персонажей, когда я находился в кризисе. У меня получилось написать диалогов для пары человек за несколько месяцев - он же написал раз в 5 больше за более короткий срок. К сожалению, этого всё ещё не достаточно, а продолжать квест без диалогов я не могу. Однако торопить я никого не собираюсь - у Паши и своих забот хватает. Например, он переносит в игру сценарий RaggaL'a, который придумал не какой-то квест на 15 минут, а целую нелинейную сюжетную цепочку. О других достижениях Паши и других членов команды мы поговорим чуть ниже. А пока давайте вернёмся к тому, чем же я всё-таки занимался. После переработки блокнота и переноса всех диалогов в игру, я отправился дорабатывать саму механику Крэпса. Методом проб и ошибок во время стрима мне удалось запилить систему, отключающую рост потребностей во время игры. Теперь ваш персонаж может чувствовать себя максимально комфортно. Дополнительно разработан специальный перк (точнее его концепт, записанный у меня в блокноте), который вы получите в ходе игры. Ну и напоследок, для неудачных бросков добавлены небольшие сообщения в углу экрана, чтобы хоть как-то компенсировать ожидание. Неудачный бросок - это когда кубик падает на ребро и приходится его перебрасывать. К сожалению, изменить движок нельзя, поэтому кубики довольно часто остаются на ребре. Перейдём к более значимым достижениям. Ребята в этом году продвинулись очень далеко. "Карта крутится, квесты мутятся!" - так кратко можно описать прогресс. А если более серьёзно, то благодаря Юре наша относительно пустая территория заполнилась различными поселениями, локациями, дорогами, мостами и всем-всем-всем. Не, я серьёзно не представляю, как у него это выходит - все мои попытки в даже самый маленький интерьер заканчивались через час-два, а на выходе получалось что-то ужасное (если вообще что-то получалось). Тут же речь в первую очередь идёт об открытых пространствах, которые, на мой взгляд, ещё труднее проектировать. Количество часов, потраченных на эту работу, измеряется в десятках, а то и в сотнях! Подобными показателями также может похвастаться уже упомянутый выше Паша. Дополнительные квесты, основные квесты, главная сюжетная линия... Мало того, что всё это нужно придумать, это ещё нужно внести в игру! И, поверьте, это делается не за 5 минут. Видя весь этот процесс изнутри, я стал самым главным фанатом Гранд-Каньона, выход которого я жду всё больше и больше. Я специально стараюсь не влезать в обсуждения сюжетных аспектов - я всё равно ничего интересного не смогу предложить - я хочу после выхода лично окунуться в тот мир, который мы делаем. С одной стороны, я рад, что отвечаю за столь небольшую часть мода - это спасает меня от спойлеров, но в то же время я не справляюсь и с ней, и это меня огорчает. Вот такие неоднозначные итоги года я могу подвести для себя. Надеюсь, вы дочитали до этого момента, потому что в данном абзаце я хочу поздравить всех с наступающим праздником. От всей души поздравляю каждого с Новым Годом и желаю воплотить все ваши мечты и достичь всех целей в следующем, 2019ом, году! Увидимся в августе
  22. Не очень я понял, что подразумевается под "лимит на ремонт в 300%", также не очень ясно, что подразумевается под заменой, т.е. как этот процесс должен выглядеть. В любом случае, это явно что-то нетривиальное, поэтому надеяться на что-то больше, чем какие-то советы, тут не стоит. Это всё-таки школа, а в ней учителя за учеников работу не делают)
  23. Извиняюсь, что так поздно отвечаю. Первый скрипт: scn aaaGoldenBottleCapPressSCRIPT Begin OnActivate If Player.GetItemCount NVDLC01GoldBar >= 1 Player.RemoveItem NVDLC01GoldBar 1 If Player.GetItemCount aaEnclaveGold >= 1 // Сработает ТОЛЬКО, если у игрока есть NVDLC01GoldBar Player.RemoveItem aaEnclaveGold 1 // Сработает ТОЛЬКО, если у игрока есть NVDLC01GoldBar И aaEnclaveGold PlaySound WPNThisMachineReloadPt1 // Аналогично предыдущей строке Player.AddItem aaaGoldenBottleCapFixedValue 500 // Аналогично предыдущей строке else showmessage aaaGoldenBottleCapFailureMessage // Сработает только, если у игрока НЕТ aaEnclaveGold EndIf EndIf End В общем, думаю, нетрудно заметить, что тут всё очень плохо. Работает явно не так, как должно. Второй скрипт: там особых ошибок не вижу, только вот он сработает сразу и для NVDLC01GoldBar, и для aaEnclaveGold одновременно. Вариант от Магнума: этот скрипт тоже сработает, но уже для одного из NVDLC01GoldBar и aaEnclaveGold, что, вероятнее всего, и является тем, чем надо.
  24. А, ну это моя ошибка. В описание к Нью Вегасовскому ГЕККу добавил, а к ГЕККу из трёхи - нет. Пункт 2.

×
×
  • Создать...