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

Вис691

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

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

    0.00 руб 
  • Зарегистрирован

  • Посещение

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

    59

Вис691 стал победителем дня 13 ноября 2019

Вис691 имел наиболее популярный контент!

Репутация

562 Очень добрый

Информация о Вис691

  • Звание
    Старожил
  • День рождения 19.08.1998

Контакты

  • Сайт
    https://www.youtube.com/user/zazaza691

Информация

  • Пол
    Мужчина
  • Город
    Москва

Посетители профиля

2 221 просмотр профиля
  1. Нет, ни разу не пользовался. Ну и интересные способы создания ярлыков вы используете. Достаточно просто в папке с игрой найти fose_loader.exe, нажать правой кнопкой мыши -> создать ярлык. Ну а потом ПКМ по созданному ярлыку и уже туда дописывайте -editor. На этом сайте должен быть самый обычный. Можно взять отсюда
  2. Обращайте внимание на ошибки - там же написано, что у вас какой-то "не такой" Geck.exe. Вероятно, нужен самый обыкновенный. Ну хотя бы скриншотик того, что в ярлык прописали. Я не могу из ниоткуда догадаться, что пошло не так Рискну предположить, что виной этому не Нексус...
  3. Ну там вроде сказано следующее: т.е. можно вручную папку FOSE закинуть в папку Data, слив содержимое. Сам ГЕКК уже должен быть установлен - это лишь плагин. Причём конфликтует с PowerUp. Запускать ГЕКК либо с поддержкой FOSE, либо в опциональных файлах лежит некий патчер, который всё сделает за вас. Если по первому пути пойдёте, то просто создаёте ярлык fose_loader.exe (не редактора!) и в графе объект допишите -editor (перед дефисом стоит пробел). Ну и запукайте ГЕКК через этот ярлык. P.S. Сам этот плагин не ставил, всю информацию чисто по описанию с нексуса привёл. Кроме создания ярлыка, это я и сам делал.
  4. https://geckwiki.com/index.php?title=Category:Functions
  5. Всем привет. Недавно ко мне обратился 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 - проверять остальные предметы нам не надо. Ну вот в общем-то и всё. Запихните этот скрипт туда. куда нужно и вы восхитительны. Точнее я восхитителен
  6. Вис691

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

    Всем привет! Опять я немного задержался с записью в блоге, увы. В любом случае, спешу поздравить всех уже с прошедшим, но ещё не забытым, Новым Годом! Желаю побольше крышек, верных компаньонов и красочных побед на пустошах. Ну а я, пожалуй, отчитаюсь за то, что было сделано, что не было сделано и что планируется сделать. В конце прошлой записи я пообещал всем закончить то, что давно хотел сделать. В принципе, я считаю, что обещание я выполнил. Мой квест выходит на финишную прямую - осталось добавить несколько деталей, концовку и украсить всё это различными мелочами для разнообразия. С одной стороны, осталось немного, с другой стороны - мелочи отнимут кучу времени, мне кажется. Ну и протестировать всё надо, но этим я стараюсь заниматься параллельно с разработкой. В этот раз не хочу давать никаких сроков, но, думаю, к следующей записи в августе многое уже будет сделано. Почему так медленно, раз осталось немного? Ах, на это есть всё те же 2 причины: работа и учёба. И если с первой всё более-менее ясно, то со второй пока что ничего не понятно. Дело в том, что следующий семестр является последним в бакалавриате, а значит придётся писать диплом. И мне бы хотелось написать его хорошо. А на это нужно время, причём много. Ибо даже когда знаешь, что писать, трудно придумать, как это написать. Но сейчас не об этом. Касаемо второй идеи, которая у меня зародилась, хотелось бы отметить следующее. Во-первых, я думал над ней, причём немало. У меня в голове зародилась концепция самого квеста, локации и контента. Думаю, что в скором времени я поделюсь этой идеей с остальными, и мы решим, что с ней делать. В принципе, я считаю, что работы там не очень много, основная проблема - это придумать историю. К сожалению, особых спойлеров дать не могу, скажу лишь, что там придётся работать головой и, возможно, бумагой с ручкой. В общем не всем зайдёт Напоследок хотел бы задать вам, читателям, вопрос. Помните The Pitt для Fallout 3? А точнее часть, где нужно было собирать стальные чушки? Для квеста было достаточно найти всего 10, но ведь их там было куда больше. Да что уж там говорить, находите больше, получаете больше наград! Лично мне очень понравилось бегать и искать эти самые чушки по всей локации. Особенно круто было то, что локация многоуровневая. Вопрос, собственно, вот в чём: понравилось ли вам и хотите ли вы чего-то подобного в Гранд-Каньоне? Опрос прикладываю, голосуйте. Думаю, если народ будет за, то мы сможем уговорить Магнума А на этом у меня всё. Ещё раз всех с праздником, отдохните на выходных! Встретимся в августе.
  7. Помощь бывает разная. Это моя школа, я тут учитель и максимум могу помочь советом или посмотреть на что-то готовое, но, возможно, неработающее. Писать что-то за кого-то я уже не хочу, да и не могу в связи с отсутствием времени. Если где-то уже есть подобный функционал, то предлагаю попытаться разобраться в нём. Хотя чтение чужого кода зачастую бывает непростой задачей, даже если ты в этом что-то понимаешь. Ну уж и грамотным скриптологом я себя точно не назову)
  8. Чтобы я мог хоть как-то помочь, нужно чуть подробнее рассказать про то, что готово и в каком оно виде. Так, я понимаю сами лучи и фонарь уже есть? Если да, то в каком это всё виде? Я с оружием никогда не работал, так что особого представления, как эти лучи и фонари работают у меня нет. С иконками и подавно не подскажу. Вроде там всё на альфа-канале завязано, но могу ошибаться. Навскидку нашёл вот такой краткий туториал.
  9. Спрашивай, если работать не будет - разберёмся)
  10. elseif Stage == 4 && (Player.GetDistance XRocketTestBaseLocation < 5000 || Player.GetDistance XRocketTestBaseLocationDC < 5000)
  11. Приходит ГГ в магазин, а там на полках/витринах пусто. Заходит к себе домой, расставляет предметы по локации, украшает полочки, а потом раз - и всё исчезает) В любом случае, задумку уловил, и вот, как бы я её реализовывал. Вначале нам нужно получить все объекты нужного типа. Сделать это можно при помощи GetRefs. На странице есть ссылка на коды различных типов, так что подобрать нужные не проблема. Чего я не знаю - это значение значения 201:Inventory Object. Есть шанс, что это прямо то, что нужно и охватывает прямо всё-всё-всё, но надо тестировать. Если нет, то придётся по очереди по каждому типу (оружие, броня, медикаменты - всё есть на странице) проходить. Также советую обратить внимание на "passing -1 will use the uGridsToLoad value from Fallout.ini to calculate this". Дальше идём по всем элементам массива через Foreach (опять же, на странице пример есть) и просто их disable, как уже верно было замечено. Можно проверок всяких добавить, например, на то, что предмет ещё не отключён (зачем нам один и тот же предмет мучить и отключать по миллиону раз?). Теперь куда это всё прицепить? Скрипты в воздухе висеть не могут. Самый очевидный вариант это загнать всё это дело в квест, и крутить, крутить, крутить с проверкой на изменение локации. Но это ужасный вариант, так делать не стоит. Тут нужно обратиться к Event'ам, а конкретно к OnCellEnter. Таким образом подсчёт будет происходить только во время смены ячейки, т.е. единожды. К сожалению, я не могу предсказать, насколько сильно подобная штука будет грузить игру, но в теории должно потянуть. Это был минимальный экскурс в направление, куда копать. Дальше всё зависит от текущих навыков, но если что всегда можно задать мне вопросы, показать нерабочий код и т.д. Удачи
  12. Можно поинтересоваться, а какого использование такого скрипта? В любом случае, нужно чуть больше информации. Это должно работать со всеми ячейками (включая и экстерьеры), в которые входит игрок? Пропадать должны какие-то определённые объекты или всё, что может поднять игрок (оружие, броня, медикаменты и т.д.)? В общем, чем больше подробных деталей сообщите, тем мне проще будет.
  13. Это как? Все предметы хлама из локации пропасть должны что ли?
  14. Вис691

    Мягкие подушечки и ностальгунство

    Если логотип был разработан в 47-м, то на картинке слева (без пяточков которая) неоригинальная упаковка?
×
×
  • Создать...