Прежде чем задавать вопрос - посмотрите в >> КАРТОТЕКЕ << Возможно, там уже есть готовый ответ.
Тема предназначена для общих вопросов. Прежде, чем тут что-то написать, посмотрите другие темы этого раздела. Вполне возможно, что они больше соответствуют тематике вашего вопроса.
Изменение репутации для пользователя FuriousFighter
Я перенес в игру два револьвера. Все нормально, кроме одного. При перезарядке я вижу, что ГГ сует в барабан не патроны, а воздух. Как исправить эту проблему??
Меня такой вопросик интересует - есть мод добавляющий новых неписей в новом шмоне. Я хочу "переодеть" этих неписей в броньку из другого мода. Как в ГЕККе это провернуть?
Маркус, Есть варианты. Если оба мода выполнены в виде файлов-плагинов esp (то есть имеют в качестве мастер-файла только основной файл falloutnv.esm), то тогда грузишь в ГЕКК оба мода ( с неписями и с броней). Мод с неписями назначаешь активным. Выбираешь нужную броню из другого мода, открываешь, меняешь ей айди. Закрываешь. При запросе о создании нового объекта отвечаешь - Да. И так с каждой броней. Потом сохраняешь плагин (раз у тебя активным был плагин с неписями, то изменения запишутся в него). Закрываешь ГЕКК, запускаешь снова. Грузишь только плагин с неписями, снова отметив его активным. После загрузки увидишь, что в этом плагине появились новые броньки из предыдущего мода. Раскидываешь их в инвентарь нужным неписям, удалив у них старую броню. Естественно, если впоследствие не планируется использовать отдельно мод с броней - то есп-файл этого мода можно удалить, НО (!) модели и текстуры брони нужно оставить в папке Дата. Если же мод-донор с броней имеет кроме falloutnv.esm свой мастер-файл esm (или же сам является мастер-файлом esm) то там примерно также нужно все делать. Только потом возникает необходимость отвязки лишних мастеров от плагина. Многие начинают путаться
Токое дело: возможно ли менять координаты локации или смещать весь мир относительно центра отчета. Дело в том, что я создал локу, но не посмотрел, какие у нее кординаты, и теперь не знаю что делать, так как по сути она(лока) должна быть в другом месте.
возможно ли менять координаты локации или смещать весь мир относительно центра отчета. Дело в том, что я создал локу, но не посмотрел, какие у нее кординаты, и теперь не знаю что делать, так как по сути она(лока) должна быть в другом месте.
Насколько я вижу, глядя в редактор, ответ и положительный, и отрицательный. Положительный в том смысле, что да, ты можешь изменить координаты локации внутри мира, и ты можешь подвинуть мир. Отрицательный - тебя же на самом деле интересует не локация, а то, что внутри неё находится - и у этих объектов координаты заданы в абсолютных цифрах, а не относительно локации, они останутся на месте, если ты выдернешь у них из-под ног локацию или мир...
Ipatow, ээм... Ну хоть что-то положительное) Можешь описать подробней как это сделать и остаются ли при этом все "бугорки" ландшавта?
А что касается объектов, то я поступлю не совсем как адекватный. То есть всем(большинству) я буду пересчитывать и переписывать координату, пока не перетащу все)) В принципе их можно и просто таскать по частям и стыкавать там, где это надо.
Страшнее всего в этом отношении навмеш - у каждого узла абсолютные координаты, и узлов этих в сетке может быть просто смерть. С хорошими некапризными объектами в этом проблемы быть не должно, терпение и аккуратность сделают ваши локации мягкими и шелковистыми. Сложность может быть по поводу persistent объектов, поскольку они в моде хранятся не в локации (туда объекты сложены в основном для удобства одновременной материализации - чтоб не перерывать весь мод, когда пришла пора воплотить локацию, а сгрести уже отсортированное), они сложены общей грудой для мира (раз постоянно материализованы, так адрес прописки движку не очень и интересен). При обилии persistent объектов может быть сложно искать, кто из них расположен на передвигаемой локации, чтобы поправить координаты.
Страшнее всего в этом отношении навмеш - у каждого узла абсолютные координаты, и узлов этих в сетке может быть просто смерть. С хорошими некапризными объектами в этом проблемы быть не должно, терпение и аккуратность сделают ваши локации мягкими и шелковистыми. Сложность может быть по поводу persistent объектов, поскольку они в моде хранятся не в локации (туда объекты сложены в основном для удобства одновременной материализации - чтоб не перерывать весь мод, когда пришла пора воплотить локацию, а сгрести уже отсортированное), они сложены общей грудой для мира (раз постоянно материализованы, так адрес прописки движку не очень и интересен). При обилии persistent объектов может быть сложно искать, кто из них расположен на передвигаемой локации, чтобы поправить координаты.
Не знаю, как у вас, в Вегасе, а в Фаллауте достаточно изменить World Map Offset Data, и все хозяйство из вашего мира переезжает вместе с ландшафтами, персистентами и навмешем на новое место того мира, частью которого он является. Т.е. весь мир как бы перемещается целиком. На самом деле, разумеется, он никуда не двигается, двигается (двигаются) только map-маркер (маркеры) на общей карте. Числа там иногда приходится ставить большие, например, чтобы сдвинуть Мегатонну к краю Пустошей, ей надо изменить координату тысяч на пятьдесят, если мне память не изменяет. Главная проблема при перетаскивании миров с места на место заключается в том, что окружающий пейзаж "за стеной" (если он виден) придется каждый раз переделывать.
====================== Мод "Нью-Йорк" на русском: https://modgames.net/load/fallout3/addon/new-york-bolshoe-yabloko/34-1-0-1294 Мод "Нью-Йорк" на английском: https://modgames.net/load/fallout3/kvesty/the-big-apple/23-1-0-19771
Как (если конечно не слишком зубодробительно) заставить неписей из определенной фракции носить модовую броньку взамен стандартной. Для примера - хочу "переодеть" Подрывников.
Как (если конечно не слишком зубодробительно) заставить неписей из определенной фракции носить модовую броньку взамен стандартной. Для примера - хочу "переодеть" Подрывников.
Привязать именно к фракции не очень практично - мне приходит в голову только универсальное решение с постоянным сканированием всех NPC, проверкой на их принадлежность к фракции и принудительным переодеванием. Это хлопотно, грузит систему, добавляет в игру нелепые чудеса и глюки - и это, скорее всего, не то, что нужно.
Как это сделано авторами игры? Например, подрывники наряжены в CondPowderGangerArmorAll [LVLI:00101C91] - если хочешь переодеть их всех разом, просто измени содержимое этого списка. Для всех групп с каким-то дресс-кодом (это не только одежда, но оружие и всякие карманные мелочи) авторы уже предусмотрели списки, изменение которых изменяет экипировку и инвентарь всей группы - довольно резонно этим воспользоваться.
Открыть ГЕКК, перейти в окно объектов, выбрать позицию ALL (показать все) и в вверху, в поле фильтра вбить название списка, которое тебе дал Ипатов, т.е. - CondPowderGangerArmorAll
Добавлено (10.07.2012, 20:23) --------------------------------------------- Если нужен список с другой одеждой - открывай непися, перейди в инвентарь, посмотри какую одежду он носит, проверь - это конкретная броня или список брони (LVLI) . Если список - запомни название (Editor ID). Перейди в раздел Leveled Items, найди по Editor ID нужный список, удали из него старую броню и перетяни туда новую, нужную тебе из раздела Armor
Насколько глупо смотрится затея навесить такой gamemode скрипт на достаточно распространенный (у торговцев) ingestible?
Begin GameMode Set rSlf to GetContainer if rSlf != player && rSlf.IsSpellTarget zDrugN == 0 ; спелл-эфф. одноименен ingestible rSlf.EquipItem zDrugN endif End
С одной стороны, списочные товары у них скорее всего не в инвентори, а в где-то расположеных контейнерах (в формулировке "где-то" содержится надежда, что скрипты на их содержимом не крутятся постоянно), а обычным неписям этот drug по дефолту не роздан. Со всех остальных сторон не могу отделаться от ощущения полной аморальности гейммоде-скриптов "на таблетках".
затея навесить такой gamemode скрипт на достаточно распространенный (у торговцев) ingestible
Насколько я знаю, инвентарные объекты, находящиеся в контейнере (в т.ч. инвентаре моба), не имеют RefID (функции NVSE, сканирующие инвентарь, присваивают объектам временные ID, действительные в пределах фрейма), а скрипты этих объектов не "крутятся" (никакой гейммоды-менюмоды, только триггерящиеся OnAdd/OnDrop/OnEquip и т.п.).
Возможно, я ошибаюсь, но сказанное легко проверяется...
SeLDeN, насколько я помню, функция BSA Create была в FOMM экспериментальной и работала через пень колоду. Весной тоже бился над этой проблемой, перерыл тучу форумов, включая иностранные, но ответа так и не нашел. Не видит игра собственноручно сделанные BSA, хоть тресни
emo877, Ipatow, гейммод очень даже крутится в инвентаре и в контейнере, но тут, думаю, можно и без него. Насколько я понял, скрипт принуждает неписей употребить и по мере протрезвления усугублять. Употребление можно перенести в блок OnAdd прям как есть, а усугубление - в ScriptEffectFinish с проверкой осталось там ещё или вчера всё допили.
Кстати, а что, интересно, будет, если принудить к употреблению не актёра, а холодильник, например? Возможно, стоит ещё проверить насчёт rSlf.IsActor.
списочные товары у них скорее всего не в инвентори, а в где-то расположеных контейнерах
Выражаясь точнее, продавец продаёт то, что есть у него в инвентаре, плюс содержимое Merchant Container этого экземпляра продавца, плюс содержимое всех близко расположенных контейнеров, принадлежащих этому продавцу. При этом содержимым одного и того же контейнера может одновременно торговать несколько продавцов - если их обязать пожирать товары, может быть не очень просто найти всё подлежащее съедению и всех едоков.
В некоторых случаях GetContainer врёт - например, после RemoveMe предмет уже лежит в новом контейнере, но ещё долгое время думает, что он всё ещё в старом.
Спасибо. То есть мне неспроста страшно стало (помянутые лабораторки проделать конечно стоит для прояснения). История вопроса соб-но такова - чтобы заставить 3х возможных ванильных ж-напарниц жрать выданные им пц таблетки "против всяких разных случаев" я вставил аналогичные по назначению куски в крутящиеся(с темпом ~5sc) на них квестскрипты. А более глобальный чел видимо захотел дать эту возможность всем нпц. А поскольку чел явно неглупый (офигенски большие работающие моды на LL делает) **, естественно я подумал что это я чегото не понимаю. После довыяснения (лабы) может самого спрошу, на что он расчитывает. (не раньше понедельника, оффлайн)
зы. ** и не из таких, которые на жалобы "лагает", отвечают "выкинь свой калькулятор"
Всех приветствую. В картотеке ответа не нашёл, так что прошу помощи. По какой причине GECK не видит GO-варианты (т.е. World Model) некоторых nif'ов (очки, маски и.т.д.) из Foll3? Точнее: в Model Data в столбце 3D Name выдаёт ошибку - Marker_error:0. В nif'scope всё ок. Как бороться? Заранее благодарен.
в Model Data в столбце 3D Name выдаёт ошибку - Marker_error:0. В nif'scope всё ок. Как бороться? Заранее благодарен.
Сама в шоке... При портации из Фол3 в вегас некоторых моделей, при попытке просмотра их в ГЕКК выдается сообщение об ошибке маркера. Такое бывает, когда модель добавляется в папку Дата при уже запущенном редакторе ГЕКК. Перезапуск ГЕККа убирает эту проблему и в игре модель показывается нормально. Если при перезапуске ГЕКК ошибка не исчезает - то проблема остается и в игре ( вместо модели в мире показывается ромб-восклицалка) С чем связано - так и непоняла
При портации из Фол3 в вегас некоторых моделей, при попытке просмотра их в ГЕКК выдается сообщение об ошибке маркера.
Назовите точно несколько файлов, вызывающих ошибку? Модели Fallout 3 сделаны местами неаккуратно (например, Armor\HeadGear\WastelandChild03\hatmale.nif), совсем не везде единообразно - и предрелизная отладка у них состояла не столько в исправлении ошибок, сколько в забивании шурупов молотком, лишь бы как-то держалось (например, когти смерти с body parts от супермутанта, поскольку BPD когтей не удалась, и BPD от супермутанта без ragdoll, поскольку куклу не получилось вполне подружить с хавоком)...
GECK в EditorWarnings.txt более подробно не пишет про эти ошибки?
Изменение репутации для пользователя Heartless
HeartlessOffline
Сообщение №1347
написано: 17 июля 2012, 15:19
| Отредактировано: BushWacker - 17 июля 2012, 15:32
Номер раз. Скрипт, насколько я понял, отвечающий за/помогающий при включении/выключении так. фонаря на оружии:
Code
scn xMoTaclightQuestScript ;MOVE LIGHTS IN FRONT OF PLAYER WHEN FLASHLIGHT IS ON ; Script by documn based on work by Pelinor
short dlinc short dlinc2 short height float dlx float dly float dlz float dllookangle float dlsinelookangle float dlcosinelookangle float dlang float dluign float dlsine float dlcosi short stage short whichlast
Short xOffset Short Yoffset
begin gamemode
;GET ANGLE INFO
Set xOffset to 10 Set yOffset to 75
set dluign to 1 set dlang to player.getangle z if dlang > 270 set dlang to dlang - 360 elseif dlang > 90 set dlang to dlang - 180 set dluign to -1 endif set dlsine to dluign * (sin dlang) set dlcosi to dluign * (cos dlang)
set dllookangle to player.getangle x set dlsinelookangle to (sin dllookangle) set dlcosinelookangle to (cos dllookangle)
;HEIGHT CORRECTION IF PLAYER IS SNEAKING if player.issneaking set height to 66 else set height to 92 endif
;MOVE LIGHTS set dlinc to 0 set dlinc2 to 50 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt2.moveto player dlt2.setpos x dlx dlt2.setpos y dly dlt2.setpos z dlz dlu2.moveto dlt2 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt3.moveto player dlt3.setpos x dlx dlt3.setpos y dly dlt3.setpos z dlz dlu3.moveto dlt3 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt4.moveto player dlt4.setpos x dlx dlt4.setpos y dly dlt4.setpos z dlz dlu4.moveto dlt4 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt5.moveto player dlt5.setpos x dlx dlt5.setpos y dly dlt5.setpos z dlz dlu5.moveto dlt5 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt6.moveto player dlt6.setpos x dlx dlt6.setpos y dly dlt6.setpos z dlz dlu6.moveto dlt6 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt7.moveto player dlt7.setpos x dlx dlt7.setpos y dly dlt7.setpos z dlz dlu7.moveto dlt7 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt8.moveto player dlt8.setpos x dlx dlt8.setpos y dly dlt8.setpos z dlz dlu8.moveto dlt8 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt9.moveto player dlt9.setpos x dlx dlt9.setpos y dly dlt9.setpos z dlz dlu9.moveto dlt9 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt10.moveto player dlt10.setpos x dlx dlt10.setpos y dly dlt10.setpos z dlz dlu10.moveto dlt10 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt11.moveto player dlt11.setpos x dlx dlt11.setpos y dly dlt11.setpos z dlz dlu11.moveto dlt11 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt12.moveto player dlt12.setpos x dlx dlt12.setpos y dly dlt12.setpos z dlz dlu12.moveto dlt12 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt13.moveto player dlt13.setpos x dlx dlt13.setpos y dly dlt13.setpos z dlz dlu13.moveto dlt13 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt14.moveto player dlt14.setpos x dlx dlt14.setpos y dly dlt14.setpos z dlz dlu14.moveto dlt14 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt15.moveto player dlt15.setpos x dlx dlt15.setpos y dly dlt15.setpos z dlz dlu15.moveto dlt15 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt16.moveto player dlt16.setpos x dlx dlt16.setpos y dly dlt16.setpos z dlz dlu16.moveto dlt16 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt17.moveto player dlt17.setpos x dlx dlt17.setpos y dly dlt17.setpos z dlz dlu17.moveto dlt17 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt18.moveto player dlt18.setpos x dlx dlt18.setpos y dly dlt18.setpos z dlz dlu18.moveto dlt18 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt19.moveto player dlt19.setpos x dlx dlt19.setpos y dly dlt19.setpos z dlz dlu19.moveto dlt19 set dlinc to dlinc + dlinc2 set dlx to player.getpos x + xOffset + (dlinc * dlsine * dlcosinelookangle) set dly to player.getpos y + yOffset + (dlinc * dlcosi * dlcosinelookangle) set dlz to player.getpos z + (height * player.getscale) + (-1 * dlinc * dlsinelookangle) dlt20.moveto player dlt20.setpos x dlx dlt20.setpos y dly dlt20.setpos z dlz dlu20.moveto dlt20
if player.getlos dlt5 == 0 set whichlast to 5 dltlast5.moveto dlt4 dlulast5.moveto dlt4 if player.getlos dlt4 == 0 dltlast5.moveto dlt3 dlulast5.moveto dlt3 if player.getlos dlt3 == 0 dltlast5.moveto dlt2 dlulast5.moveto dlt2 if player.getlos dlt2 == 0 dltlast5.moveto player dlulast5.moveto player endif endif endif else if player.getlos dlt10 == 0 set whichlast to 10 dltlast10.moveto dlt9 dlulast10.moveto dlt9 if player.getlos dlt9 == 0 dltlast10.moveto dlt8 dlulast10.moveto dlt8 if player.getlos dlt8 == 0 dltlast10.moveto dlt7 dlulast10.moveto dlt7 if player.getlos dlt7 == 0 dltlast10.moveto dlt6 dlulast10.moveto dlt6 if player.getlos dlt6 == 0 dltlast10.moveto dlt5 dlulast10.moveto dlt5 endif endif endif endif else if player.getlos dlt15 == 0 set whichlast to 15 dltlast15.moveto dlt14 dlulast15.moveto dlt14 if player.getlos dlt14 == 0 dltlast15.moveto dlt13 dlulast15.moveto dlt13 if player.getlos dlt13 == 0 dltlast15.moveto dlt12 dlulast15.moveto dlt12 if player.getlos dlt12 == 0 dltlast15.moveto dlt11 dlulast15.moveto dlt11 if player.getlos dlt11 == 0 dltlast15.moveto dlt10 dlulast15.moveto dlt10 endif endif endif endif else if player.getlos dlt20 == 0 set whichlast to 20 dltlast20.moveto dlt19 dlulast20.moveto dlt19 if player.getlos dlt19 == 0 dltlast20.moveto dlt18 dlulast20.moveto dlt18 if player.getlos dlt18 == 0 dltlast20.moveto dlt17 dlulast20.moveto dlt17 if player.getlos dlt17 == 0 dltlast20.moveto dlt16 dlulast20.moveto dlt16 if player.getlos dlt16 == 0 dltlast20.moveto dlt15 dlulast20.moveto dlt15 endif endif endif endif endif endif endif endif
;ENABLE LIGHTS if stage == 0 set stage to 1 dlu2.enable dlu3.enable dlu4.enable dlu5.enable dlu6.enable dlu7.enable dlu8.enable dlu9.enable dlu10.enable dlu11.enable dlu12.enable dlu13.enable dlu14.enable dlu15.enable dlu16.enable dlu17.enable dlu18.enable dlu19.enable dlu20.enable if whichlast == 5 dlulast10.moveto player 0 0 -5000 dlulast15.moveto player 0 0 -5000 dlulast20.moveto player 0 0 -5000 elseif whichlast == 10 dlulast5.moveto player 0 0 -5000 dlulast15.moveto player 0 0 -5000 dlulast20.moveto player 0 0 -5000 elseif whichlast == 15 dlulast10.moveto player 0 0 -5000 dlulast5.moveto player 0 0 -5000 dlulast20.moveto player 0 0 -5000 elseif whichlast == 20 dlulast10.moveto player 0 0 -5000 dlulast15.moveto player 0 0 -5000 dlulast5.moveto player 0 0 -5000 endif dlulast5.enable dlulast10.enable dlulast15.enable dlulast20.enable
else set stage to 0 dlt2.enable dlt3.enable dlt4.enable dlt5.enable dlt6.enable dlt7.enable dlt8.enable dlt9.enable dlt10.enable dlt11.enable dlt12.enable dlt13.enable dlt14.enable dlt15.enable dlt16.enable dlt17.enable dlt18.enable dlt19.enable dlt20.enable if whichlast == 5 dltlast10.moveto player 0 0 -5000 dltlast15.moveto player 0 0 -5000 dltlast20.moveto player 0 0 -5000 elseif whichlast == 10 dltlast5.moveto player 0 0 -5000 dltlast15.moveto player 0 0 -5000 dltlast20.moveto player 0 0 -5000 elseif whichlast == 15 dltlast10.moveto player 0 0 -5000 dltlast5.moveto player 0 0 -5000 dltlast20.moveto player 0 0 -5000 elseif whichlast == 20 dltlast10.moveto player 0 0 -5000 dltlast15.moveto player 0 0 -5000 dltlast5.moveto player 0 0 -5000 endif dltlast5.enable dltlast10.enable dltlast15.enable dltlast20.enable endif END
Отключение:
Code
scn xMoTacLightOFF
;TURN OFF LIGHTS Begin OnAdd player
;STOP QUESTS stopquest xMoTLQ
;DISABLE LIGHT REFS dlr2.moveto player 0 0 -10000 dlr3.moveto player 0 0 -10000 dlr4.moveto player 0 0 -10000 dlr5.moveto player 0 0 -10000 dlr6.moveto player 0 0 -10000 dlr7.moveto player 0 0 -10000 dlr8.moveto player 0 0 -10000 dlr9.moveto player 0 0 -10000 dlr10.moveto player 0 0 -10000 dlr11.moveto player 0 0 -10000 dlr12.moveto player 0 0 -10000 dlr13.moveto player 0 0 -10000 dlr14.moveto player 0 0 -10000 dlr15.moveto player 0 0 -10000 dlr16.moveto player 0 0 -10000 dlr17.moveto player 0 0 -10000 dlr18.moveto player 0 0 -10000 dlr19.moveto player 0 0 -10000 dlr20.moveto player 0 0 -10000 dlrlast5.moveto player 0 0 -10000 dlrlast10.moveto player 0 0 -10000 dlrlast15.moveto player 0 0 -10000 dlrlast20.moveto player 0 0 -10000
dls2.moveto player 0 0 -10000 dls3.moveto player 0 0 -10000 dls4.moveto player 0 0 -10000 dls5.moveto player 0 0 -10000 dls6.moveto player 0 0 -10000 dls7.moveto player 0 0 -10000 dls8.moveto player 0 0 -10000 dls9.moveto player 0 0 -10000 dls10.moveto player 0 0 -10000 dls11.moveto player 0 0 -10000 dls12.moveto player 0 0 -10000 dls13.moveto player 0 0 -10000 dls14.moveto player 0 0 -10000 dls15.moveto player 0 0 -10000 dls16.moveto player 0 0 -10000 dls17.moveto player 0 0 -10000 dls18.moveto player 0 0 -10000 dls19.moveto player 0 0 -10000 dls20.moveto player 0 0 -10000 dlslast5.moveto player 0 0 -10000 dlslast10.moveto player 0 0 -10000 dlslast15.moveto player 0 0 -10000 dlslast20.moveto player 0 0 -10000
dlt2.moveto player 0 0 -10000 dlt3.moveto player 0 0 -10000 dlt4.moveto player 0 0 -10000 dlt5.moveto player 0 0 -10000 dlt6.moveto player 0 0 -10000 dlt7.moveto player 0 0 -10000 dlt8.moveto player 0 0 -10000 dlt9.moveto player 0 0 -10000 dlt10.moveto player 0 0 -10000 dlt11.moveto player 0 0 -10000 dlt12.moveto player 0 0 -10000 dlt13.moveto player 0 0 -10000 dlt14.moveto player 0 0 -10000 dlt15.moveto player 0 0 -10000 dlt16.moveto player 0 0 -10000 dlt17.moveto player 0 0 -10000 dlt18.moveto player 0 0 -10000 dlt19.moveto player 0 0 -10000 dlt20.moveto player 0 0 -10000 dltlast5.moveto player 0 0 -10000 dltlast10.moveto player 0 0 -10000 dltlast15.moveto player 0 0 -10000 dltlast20.moveto player 0 0 -10000
dlu2.moveto player 0 0 -10000 dlu3.moveto player 0 0 -10000 dlu4.moveto player 0 0 -10000 dlu5.moveto player 0 0 -10000 dlu6.moveto player 0 0 -10000 dlu7.moveto player 0 0 -10000 dlu8.moveto player 0 0 -10000 dlu9.moveto player 0 0 -10000 dlu10.moveto player 0 0 -10000 dlu11.moveto player 0 0 -10000 dlu12.moveto player 0 0 -10000 dlu13.moveto player 0 0 -10000 dlu14.moveto player 0 0 -10000 dlu15.moveto player 0 0 -10000 dlu16.moveto player 0 0 -10000 dlu17.moveto player 0 0 -10000 dlu18.moveto player 0 0 -10000 dlu19.moveto player 0 0 -10000 dlu20.moveto player 0 0 -10000 dlulast5.moveto player 0 0 -10000 dlulast10.moveto player 0 0 -10000 dlulast15.moveto player 0 0 -10000 dlulast20.moveto player 0 0 -10000
removeme End
Из небезызвестного Book Of Earache. Собственно, вопрос: а нафига?! Было бы верхом наглости требовать объяснения всего этого чуда скриптинга, потому лишь смиренно прошу кратенького объяснения с изрядной долей профанации.
Номер два. Игра (или NVSE, не суть важно) позволяет использовать, к примеру, команды setweaponisautomatic, set SFmode, а также ещё куча различных «set», позволяющих временно изменить чуть ли не любой параметр оружия в руках PC. Внимание, вопрос. Есть ли команды, отвечающие за смену моделей и переключение флагов «Has scope» и «has night vision»?
В принципе, если ткнёте носом в место, где всё это написано на русском/английском — тоже буду благодарен
UPD: просмотрел документацию NVSE: setsightusage — это про оптику? Сам второй вопрос всё ещё в силе, т.к. документация по их же словам просроченная) И появился новый, номер три: обязательно ли удалять sighting node у оружия с оптикой? Точнее, чем это грозит?
>>> assert life == pain Traceback (most recent call last): File "<stdin>", line 1, in <module> AssertionError
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1348
написано: 17 июля 2012, 16:23
| Отредактировано: Joopeeter - 17 июля 2012, 16:24
BushWacker, это антигуманно - подсовывать такие скрипты на разбор. Понял только, что несколько десятков (если не сотен) каких-то реф-ссылок (предположительно лампочек) таскаются за игроком и друг за другом. Причём, если не трогали Script Processing Delay квеста, происходит это раз в пять секунд. В остальное время что, лампочки стоят на месте? Фонарик убежал, свет остался?
Причём, если не трогали Script Processing Delay квеста, происходит это раз в пять секунд. В остальное время что, лампочки стоят на месте? Фонарик убежал, свет остался?
BushWacker, помогли бы не скриншоты, а сведения о том, что из себя представляют перемещаемые ссылки dlt, dlu, dltlast и dlulast, есть ли на них какие-то свои скрипты, и отличается ли Script Processing Delay от дефолтного. Ну ладно, раз работает, то можно предположить, что квестовый скрипт всё же разогнали до нескольких десятков раз в секунду. Раз не падает FPS, можно предположить, что у тебя не ПК, а целая графическая станция что автору хватило совести запускать этот скриптомонстр не в каждом фрейме, а пореже. В общих чертах: В начале пара десятков каких-то объектов (похоже, вспомогательных) выстраиваются в ряд по направлению взгляда игрока, к каждому из них сразу же перемещается ещё по одному (видимо, лампочки). Потом несколько, я полагаю, дополнительных лампочек располагаются возле основных в зависимости от того, на какое расстояние может видеть игрок (мешают ли препятствия). Возможно, это для более яркого освещения предмета, в который упирается "луч". Лишнее, что не видит игрок, отправляется на 5000 единиц вниз, в ад, наверное. И так каждый раз - каждый фрейм или через один или через два фрейма. При выключении всё это хозяйство ухает аж на 10000 ед. вниз, а чтоб не вылезло, останавливается квест, в котором, надо думать, находится первый скрипт. Забавно, при выстраивании в ряд используется player.GetScale, как будто размер игрока может отличаться от единицы. Как-то так, хотя дополнительные скрипты на каких-либо из упомянутых объектов или просто на рядом лежащих (в инвентаре, к примеру) могут существенно влиять на картину.