в рюкзаке у ГГ лежит некий предмет "разбиралка", его надо выбросить и активировать, после чего появится меню: "Запихать в разбиралку оружие", "Разобрать оружие в разбиралке", "Подобрать разбиралку"? Просто что-то других идей по интерфейсу разбиралки нету...
Интерфейс-то тут дело нехитрое - хоть сообщение с кнопками можно сделать, хоть диалог с говорящим активатором. Интереснее вопрос что именно будет разбирать разбиралка и на какие запчасти. Тут слегка непонятно, любое оружие должно разбираться на одинаковые запчасти или разное оружие на разные? Количество винтиков и шпунтиков от любого оружия с любым состоянием должно быть разным? Вообще что это должно быть - ремонтный набор для любого ствола, собранный из раздербаненных оружий или ещё что-то?
Добавлено (10 Февраля 2015, 19:08) --------------------------------------------- Если ты (как и я ) до сих пор не созрел до использования ФОСЕ, то разбирать разные оружия на разные запчасти получится только для заранее известного набора оружий. Можно разбирать разные типы оружий на разные наборы запчастей по типам анимаций, но тут, к примеру, все пистолеты - простые и энергетические - относятся к одному типу анимации, так что и разбираться будут на одинаковые наборы, что не хорошо. С разбираемой бронёй же ещё добавляется проблема определить её состояние - такой функции среди стандартных нету.
Эх, а я уже придумал, как определять состояние засунутого в разбиралку оружия, выдавая его в руки вспомогательному неписю, незаметно возникающему за спиной ГГ во время разбирания только с целью подержать это оружие в руках. Правда, пришлось бы разбирать по одной штуке за раз. Думаешь, это было бы значительное усложнение?
Добавлено (11 Февраля 2015, 17:44) --------------------------------------------- А то ещё можно положить включенную разбиралку в рюкзак и пусть она там автоматически разбирает всё подобранное оружие, записанное в форм-листы.
Добавлено (11 Февраля 2015, 17:47) --------------------------------------------- И даже пусть сама чинит этими запчастями экипированное оружие или какое ей прикажут.
Добавлено (11 Февраля 2015, 17:49) --------------------------------------------- И даже пусть сама собирает оружие по окрестным вражьим карманам, разбирает и чинит!
А можно подробнее? Как это поможет определить износ оружия? И, до кучи, а зачем за спиной? Разве нельзя сделать интерьер скрытый, пусть непись там сидит?
Стандартная функция GetWeaponHealthPerc определяет состояние экипированного на актёра оружия. Если из разбиралки оружие переложить к безоружному актёру в инвентарь, то он немедленно его экипирует на себя (у него должны быть подходящие патроны). Тут можно определить состояние этого оружия, отобрать его и вернуть в разбиралку сколько-то там запчастей в зависимости от состояния. Но, как я уже говорил, скармливать стволы разбиралке придётся по одной штуке. Точнее, при использовании форм-листов, можно по одной штуке из каждого форм-листа, но к неписю они всё равно должны попадать по одному, чтобы он их все по очереди взял в руки. За спиной потому что я уже посмотрел как это работает с неписем, спрятанным в другой локации. GetWeaponHealthPerc при таком исполнении всегда возвращает 100%. Короче, получается незначительное такое усложненьице. А про автообыск поверженных врагов, автоизвлечение из них подходящего оружия, авторазбор (без определения состояния) и последующую автопочинку это я, как ни странно, не шутил, можно всё сделать стандартными средствами для заранее известного набора оружия. Можно, наверное, и автоопределение состояния организовать по описанному способу, но без форм-листов, с перебором по одной штуке. Только если в авторазбиралку угодит сразу много всего, то будет долго - пока непись всё руками перепробует. Автопропитие крышек, думаю, тоже можно устроить при желании.
А я и не знал... По идее не subject и не target, а Reference. Ведь условие-то у нас в объекте-сообщении, а не в скрипте на объекте-контайнере. Но надо пробовать, точно не скажу. Верннее на Reference-то сработает точно, а насчёт subject и target не уверен, может, тоже работает. Если subject и target не работают, а ссылка каждый раз разная, то надо в этом же блоке OnActivate сосчитать то, что требуется сосчитать, записать количество в какую-нибудь постороннюю доступную переменную (квестовую, глобальную или переменную на постоянной ссылке) и условием поставить эту переменную (GetQuestVariable, GetGlobalValue или GetScriptVariable соответственно).
Добавлено (12 Февраля 2015, 19:29) --------------------------------------------- Как вариант - в блоке OnActivate переложить всё из активируемого непостоянного контейнера в какой-нибудь постоянный и условием кнопок поставить количество вещей уже в постоянном.
выставить приблизительные значения по осям X Y Z. Можно сориентироваться по координатам соседнего объекта.
Помню, подсказывали, что для определения желаемых координат можно в игре залезть ногами на нужное место и консолью получить свои собственные координаты (player.GetPos x, player.GetPos y, player.GetPos z) и при необходимости углы (player.GetAngle x, player.GetAngle z, а игрек у актёров всегда 0).
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №698
| Тема: ВОПРОСЫ по моддингу
написано: 13 февраля 2015, 23:17
| Отредактировано: Joopeeter - 13 февраля 2015, 23:19
у "плоских" (или как там в GECK этот флажок называется) тварей вроде кентавра, который на косогоре стоит именно косо
А в Вегасе они разве стоят косо именно влево-вправо? А то в третьем только вперёд-назад. При этом, что интересно, как бы наклонно они ни стояли, угол икс у них тоже ноль. Не нолём икс становится только во время боя, когда кентавр смотрит вверх или вниз на противника.
Как я понял, эти флажки для того чтобы широкая моделька на склоне наклонялась в нужную сторону. А угол актёра, как я понял - это как повёрнут его "взгляд" вокруг какой-либо оси. Вокруг игрека он не повёрнут никак.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №700
| Тема: ВОПРОСЫ по моддингу
написано: 14 февраля 2015, 20:43
| Отредактировано: Joopeeter - 14 февраля 2015, 22:04
Мне кажется, NPC с текстурой интеркома на интерком всё равно похож не станет. В лучшем случае станет похож на NPC, зачем-то нарядившегося интеркомом. Как привязать. Очевидно, взять любой разговорчивый интерком и посмотреть как к нему привязано. Берём его (в разделе Talking Activators), кликаем правой кнопкой и смотрим Use Info. В верхней части окошка видим, какими другими объектами игры используется этот наш говорящий активатор - всё сплошь INFO в квестах, то есть эти самые диалоги. Двойным кликом открываем какой-нибудь из них и смотрим, как там что привязано в условиях. Подсказка. Привязано как к обычным NPC - через условие GetIsID.
Пробовал подгонять свой файл под стандартные настройки, но эффекта пока не добился
Что самое смешное, даже из родных игровых файлов новый объект Sound смастерить получается не всегда. Даже не все уже готовые Sound'ы воспроизводятся в ГЭККе, хотя в игре их слышно. Возможно, это как-то связано с тем, что для некоторых целей звуковые файлы должны содержать какие-то дополнительные данные (которые ещё неизвестно как туда вносятся). Например, такие данные должны быть у зацикленных звуков (loop) типа жужжания потрошителя и треска пулемётов.
Там вообще сложно. Зацикливается только часть звука - середина, и какую часть зацикливать как раз указывается в дополнительных данных (тех, которые неизвестно как вносятся).
MarkerRef.PlaceAtMe NPCBaseID NPC будет создан из воздуха как "чистая" копия базового непися, как если бы он был перетащен из окна объектов. Только респауниться, как предупреждает нас вики, не будет.
Если копия NPC создана и где-то стоит и мы с ней уже как-то провзаимодействовали (поговорили, навесили эффекты, изменили переменные или инвентарь), то надо тащить именно эту копию. NPCRef.MoveTo MarkerRef
Добавлено (23 Февраля 2015, 12:34) ---------------------------------------------
Цитата refusepit
это более понтовый путь, чем менять в редакторе ванильную локацию
Ну, ради понтов, конечно, чего только не сделаешь, но добавление в локацию NPC не ведёт к конфликтам с другими модами добавляющими что-то в локацию. Разве что в добавленную статику его воткнёшь...
Потому что добавленная копия, к счастью, не перезаписывает всю локацию и другие добавленные копии не стирает. Можно нечаянно поставить что-то на занятое место, это да, хоть и маловероятно. Здесь функция PlaceAtMe имеет небольшое преимущество - она, если вдруг что, не разместит непися в статике, а сдвинет на пустое место. Более вероятны не "конфликты перезаписи", а "конфликты поведения". То есть если кто-то населил бар "У руля" дикими гулями, а ты поставил туда девицу лёгкого поведения, то гули этого не оценят и разорвут её, даже пикнуть не успеет. Или если пакеты AI приказывают неписям сидеть на одном и том же стуле, то они запросто могут сесть один на другого. И т.п. От такого маркер не поможет.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №709
| Тема: ВОПРОСЫ по моддингу
написано: 7 марта 2015, 12:41
| Отредактировано: Joopeeter - 7 марта 2015, 12:44
Эта функция SetAV имеет такую особенность, что именённые с её помощью характеристики навсегда застревают на установленном значении. То есть, например, если скомандовать player.SetAV strenght 5, то так всю оставшуюся жизнь и будет 5, сколько водки ни пей и баффаута ни ешь. Здоровье, правда, на баффаут продолжает реагировать, но зато перестаёт повышаться с уровнем. SetAV обычно используют для характеристик типа aggression, confidence и variable. К характеристикам SPECIAL и производным от них эта функция применяется только в особых случаях, а на игроке только в очень-очень особых. Например, когда пленённый Отемом игрок выбалтывает всё, что от него требовали, то перед расстрелом и геймовером его здоровье устанавливается на единицу. Короче, мораль: для изменчивых характеристик следует пользоваться ModAV, DamageAV и RestoreAV.
SetAV, который вносит исправления в базовый объект
По описанию вносит в базовый, а по факту почему-то в одну только копию. Ни в уже имеющихся других копиях, ни в копиях, созданных после применения функции, никаких исправлений мне найти не удалось.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №711
| Тема: ВОПРОСЫ по моддингу
написано: 12 марта 2015, 15:43
| Отредактировано: Joopeeter - 12 марта 2015, 14:54
Только перелопатив все сколько-то там тысяч диалогов и переделав напрочь всю их структуру.
Короче, есть несравненно более простые способы заниматься английским.
Добавлено (12 Марта 2015, 18:26) --------------------------------------------- Да, в первом пункте придётся ещё для всех длинных фраз порезать пополам звуковые файлы и переделать соответствующим образом lip-файлы (движения губ). Мрак...
Добавлено (12 Марта 2015, 18:43) --------------------------------------------- Да, для первого пункта ещё можно приделать к каждой фразе сообщение-месседжбокс на другом языке, заодно и пауза будет. Но опять же тыщи и тыщи вручную...
Я, наоборот, не силён в логике, но матчасть такова, что никаких "параллельных" использований не получится. Хоть в топики диалогов, в отличие от остальных объектов, и можно дописывать ответы, не заменяя топик целиком, но в плагине-русификаторе ничего не дописано, там исправлены уже имеющиеся ответы. А игра берёт их из плагина. Но предположим, способ параллельно использовать есть. Вот непись, вот окно диалога, 150 символов. Где должен отображаться дополнительный текст? Где-нибудь тут, как-нибудь рядышком? Как сообщение? А кто его создаст и даст команду вывести на экран? Это можно сделать, но руками. Должно отображаться в окне диалога? Через строчку? Друг за другом? Это можно сделать, но руками. А если не влезает в 150 знаков? Как дополнительный неозвученный ответ? А кто этот дополнительный ответ будет вписывать в диалог? Можно вписать, но руками, руками.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №713
| Тема: Скрипты
написано: 12 марта 2015, 23:21
Собственно, это мы от тебя должны узнать. Оно не включается? Оно не выключается?
Раньше я б сказал, что "не так" два одинаковых блока, с одинаково отсутствующими дополнительными параметрами. Но, говорят, при компиляции редактор их склеивает, так что это вроде допустимо.
Добавлено (13 Марта 2015, 02:21) --------------------------------------------- Погадаю ещё. Оно должно шевелиться постоянно, а вместо этого шевельнулось раз и затихло?
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №714
| Тема: Скрипты
написано: 13 марта 2015, 00:39
На практике скрипт повешенный на этом активаторе вообще не исполняется.
Первая половина исполняется. А если не надеяться на то, что компилятор что-то там склеит, и самому поместить всё в один блок, то исполняется и вторая половина.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №715
| Тема: Скрипты
написано: 13 марта 2015, 16:03
В FalloutNV скрипт scn vGomorrahSlot01Script содержит строчку ShowSlotMachineMenuParams GomorrahCasinoData 1 60 0, при чем не пойму что за 60 и 0, а в скрипте от мода такая же строчка но выглядит так : ShowSlotMachineMenuParams GomorrahCasinoData 1 CasinoMillionCaps.RateCasinoChips 0.
Здесь изменяется максимальная ставка. Вместо фиксированного значения 60 крышек назначается какая-то переменная. К фишкам это отношения, похоже не имеет. А вот предупреждение Invalid Chip in CasinoData list, откуда бы оно там ни выскакивало, имеет. Неправильная фишка в объекте "казино"... То есто смотреть надо, что там переправлено в этих казино и их фишках (Miscellaneous - Casino и Miscellaneous - Casino Chip). Хм, фишка там в каждом казино одна на все виды развлечений. Почему тогда не работают только автоматы? В чём эта нерабочесть, кстати, выражается в смысле симптомов?
Добавлено (13 Марта 2015, 19:03) --------------------------------------------- Скачал, посмотрел. Мод простой как табуретка, ломаться там нечему. В казино ничего не трогали, кроме максимального выигрыша. В игре бага не наблюдал. Версия игры 1.4.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №716
| Тема: Скрипты
написано: 13 марта 2015, 17:30
небольшую статейку составить по правке в ГЕЕК в игра\настройки
Вкратце. Открываешь в ГЭКК окно Settings, смотришь туда и пытаешься сообразить, за что же могут отвечать настройки типа fPickupWeaponRangedMeleeDPSRatioThreshold или iNumberActorsGoThroughLoadDoorInCombat. По счастью, многие настройки описаны на ГЭКК-вики (тут). Меняешь какую-нибудь цифирку (сразу раз в десять для надёжности) и идёшь в игру смотреть, что же ты натворил. Чаще всего никаких изменений не видишь, потому что неправильно догадался о назначении настройки и смотришь не туда. Но иногда видишь. В ужасе бежишь обратно в ГЭКК и возвращаешь как было. Как-то так.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №718
| Тема: ВОПРОСЫ по моддингу
написано: 14 марта 2015, 07:57
| Отредактировано: Joopeeter - 14 марта 2015, 08:03
Например при редактировании ландшафта, когда земля опускается ниже уровня воды, то я не вижу на сколько низко я ее опустил и какой рельеф дна.
У меня другая проблема. Если включил редактор ландшафта и перелетел камерой на пару ячеек в сторону, вода пропадает. Тогда я вижу рельеф дна, а очертания берегов не вижу.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №719
| Тема: ВОПРОСЫ по моддингу
написано: 14 марта 2015, 11:30
| Отредактировано: Joopeeter - 14 марта 2015, 11:32
Не уверен... GenericDoorOpenedElsewhereSCRIPT, он единственно для того, чтобы игрок не смог открыть дверь руками - только выключателем ("эта дверь открывается не здесь"). Без него, если правильно назначить все эти ликедрефы и активейтпаренты, выключатели тоже работают.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №720
| Тема: ВОПРОСЫ по моддингу
написано: 14 марта 2015, 12:44
| Отредактировано: Joopeeter - 14 марта 2015, 12:49
Ещё про двери. По-хорошему, надо бы сделать так. Повесить на выключатель что-то типа такого
Код
ref MyLink ref MyLinksLink ref Self short State
Begin OnActivate
set MyLink to GetLinkedRef set MyLinksLink to MyLink.GetLinkedRef set Self to GetSelf if MyLink.GetOpenState>0 set State to MyLink.GetOpenState else set State to MyLinksLink.GetOpenState endif if State == 1 || State == 3 MyLink.Activate Self MyLinksLink.Activate Self Activate endif
End
Activate Parent'ы убрать, постоянными ссылками сделать оба выключателя и дверь. Всё это хозяйство слинковать треугольником - один выключатель к двери, дверь ко второму выключателю, второй выключатель к первому. Это чтобы нельзя было жать на выключатель и мигать лампочками, пока дверь открывается или закрывается.