Буквально в двух шагах идёт похожее обсуждение (отсюда и ниже). Возможно, пригодится. P.S. Это не считая десятков, если не сотен, похожих обсуждений в древних и не очень древних глубинах форума.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №754
| Тема: Скрипты
написано: 10 июля 2015, 20:49
| Отредактировано: Joopeeter - 10 июля 2015, 20:55
Хоть и не меня спрашивали... Из художественного описания не совсем понятно, должен ли NPC отстреливаться не сходя с места или должен героически стоять столбом и не обращать внимания на пули. В первом случае нужен пакет (обычно Guard) с радиусом 0 и галкой Continue during combat. Во втором случае SetRestrained 1 в нужный момент. А то ещё можно вообще сделать его как деревянную статую (или бетонную, не знаю какой столб имелся ввиду). И вкопать в нужном месте.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №755
| Тема: Скрипты
написано: 10 июля 2015, 22:27
Краем уха слышал, что в скайримовском Папирусе таймеры вот так просто запускаются, останавливаются и ставятся на паузы. В Фоллауте всё это надо делать вручную. Функция GetSecondsPassed возвращает время, прошедшее с момента последнего вызова функции GetSecondsPassed том же скрипте. То есть если скрипт крутится 60 раз в секунду, то первый раз GetSecondsPassed будет 0, а потом где-то в районе 1/60 секунды.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №756
| Тема: Скрипты
написано: 11 июля 2015, 11:44
| Отредактировано: Joopeeter - 11 июля 2015, 11:45
В бою радиус охраны автоматически увеличивается на какую-то фиксированную величину (четыре ярда?), то есть и в позе Guard он всё равно не совсем как прибитый к полу стоит - особенно против рукопашного противника.
Хм, действительно не прибитый... 4 ярда пакета Guard, конечно, лучше, чем чуть ли не целая ячейка при других пакетах, но я ж помню, что получалась иногда и неподвижность Припоминая, что непись, находящийся в пути (пакеты Patrol и Travel) с установленной галкой Continue during combat, обычно всё-таки продолжает идти по маршруту, а не куда ему взбредёт, попробовал использовать это. Ставим рядом два маркера, слинковываем и запускаем непися в повторяющийся патруль с радиусом 0 и галкой Continue during combat. Если непися атаковать, он начинает быстро-быстро бегать между маркерами, постреливая в противника. Сближаем маркеры на расстояние 100-150 единиц. Атакованный непись перестаёт бегать и начинает постреливать, стоя на одном месте. В мирное время такой патруль выглядит как нервное расхаживание взад-вперёд. Сближаем маркеры ещё. Мирный непись перестаёт ходить, но если его атаковать, он начинает бегать искать укрытие. Также если установить Idle Time на маркерах (для снижения нервозности хождения), то непись, атакованный во время простоя на маркере, бежит искать укрытие. Take Cover Chance, возможно, отбивает желание у непися найти укрытие, но желание время от времени перебежать на ровном месте влево-вправо-вперёд-назад, насколько я заметил, остаётся.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №757
| Тема: Помощь по G.E.C.K.
написано: 19 июля 2015, 23:06
| Отредактировано: Joopeeter - 19 июля 2015, 23:07
можно ли в своём esp откатить некоторые изменения? Я менял кое-какие значения оружий, но сейчас хочу вернуть их в стандартное состояние.
Раз: простой случай. Наворотил дел в ГЭКК, сохранил, больше с тех пор эспешник не редактировал, дела не понравились, теперь надо все их отменить. ГЭКК делает бэкапы. Два: простой случай. Наворотил дел, не понравилось, надо вернуть оружие как было. В ГЭККе, конечно, есть возможность точечно удалить записи из эспешника через кнопку Details что в окошке Data. Возможно, кто-то даже способен отыскать там нужную запись... К счастью, хоть и немного не по теме, есть FO3Edit. Удаляя из esp записи об оружиях, тем самым отменяешь все сделанные в них правки и возвращаешь в первозданный вид. Три: запущенный случай. Дел наворотил, но вернуть в первоначальный вид надо только некоторые значения оружия. Откат тут заключается в загрузке в ГЭКК эспешника как активного и ручном возвращении кое-каких значений в стандартное состояние.
Да ещё с "тяжёлым" GetDistance'ом... Не могу смотреть на это молча Пожалуй, тот случай, когда экстендер в жилу - "сканирует и проверяет" как бишь его... GetFirstRef, GetNextRef... Ну, Ипатов лучше объяснит. Я б ещё маркер сделал бы живым. В смысле животным, только в виде маркера. SetRestrained 1 его на всякий случай и руби-пили сколько влезет. И прогресс рубки виден, и здоровье маркера само убывает, и топор изнашивается, и респаунятся дрова самостоятельно, и бензопилой быстрее чем ножичком получится без дополнительных скриптовых ухищрений. И карму можно снять за занесённые в Красную книгу виды.
Непись любит носить что ему самому больше нравится. А нравится ему у чего СУ и ПУ больше. И даже если скомандовать ему EquipItem [плохая одёжка] 1, всё равно так и норовит напялить что попрочнее. Так что для надёжности, я думаю, не лишним будет у него ненужное отбирать, а нужное возвращать. С учётом подводных камней, конечно же.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №761
| Тема: Скрипты
написано: 14 сентября 2015, 23:27
Недобитое животное-турель, например, никуда не разлетается, стоит где поставили. Пусть маркеры берут пример с него, а не с вороны какой-нибудь. Даже если маркер всё ж будет активатором, подсчёт ударов, я считаю, лучше всё равно перенести в Destruction Data. Чтобы всё-таки трудоёмкость пиления бензопилой и выкидухой различалась - реализм, чтоб его...
Сделал все как сказано, но когда пытаюсь привязать пульт к двери в Linked Ref там нет двери.
Это потому что там не сказано, что копию двери надо назначить постоянной ссылкой.
Добавлено (20 Сентября 2015, 15:06) --------------------------------------------- И объекты не надо плодить без нужды. Если не меняешь ни модель двери, ни другие её свойства, ни скрипт, то и дублировать её не нужно. Если не меняешь ни модель дверной открвалки, ни другие её свойства, ни скрипт (а скрипт а скрипт ты не меняешь - это стандартный GenericControlPodScript, только под другим названием), то и её дублировать тоже не нужно.
Ну хоть по образцу из Картотеки. Только вместо "при входе в игру" будет "при первом событии". То есть весь скрипт заворачиваем в дополнительное условие if-endif. Если под это дело создаётся отдельный квест, то можно дополнительных условий не ставить, а просто запускать его одновременно с первым событием. А вместо "получает сообщение" будет "второе событие". То есть вместо ShowMessage пишем что там требуется для наступления второго события.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №765
| Тема: Скрипты
написано: 25 сентября 2015, 14:03
Нет бы взять работающую пару дверь-открывалка, да скопипастить её в нужное место, чтоб она там работала точно так же. Или, ещё лучше, посмотреть чем работающая пара отличается от своей, и сделать в своей как в работающей. А так то ли взял статический пульт вместо активатора, то ли сделав свой активатор забыл дать ему имя в поле Name... Поди протелепать теперь...
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №766
| Тема: Помощь по моддингу
написано: 29 сентября 2015, 19:40
| Отредактировано: Joopeeter - 29 сентября 2015, 19:43
как можно сделать, чтобы один НПС мог лечить остальных в радиусе например в 1000?Например подходишь к врачу говоришь "Вылечи всех нуждающихся"-тот по очереди подходит и ставит манту:)Ну или хотя бы кого-то конкретного,например подходишь говоришь "Бобу нужна помощь вылечи его"-врач подходит и лечит??
Одного Бобу вылечить не проблема вообще. В результ-скрипте фразы "Бобу нужна помощь" активируешь у доктора какой-нибудь пакет, нацеленный на пациента, а в результ-скрипте пакета Боба исцеляешь, если тот ещё жив. То же самое с несколькими конкретными бобами - несколько пакетов по очереди. С неопределёнными "всеми нуждающимися" интереснее. Определить их мы можем , но назначить их целями пакета - нет. Обход неопределённого числа (больше одного) потенциальных пациентов пакетом Find тоже не получится - мы не можем пометить уже обойдённых, доктор будет доматываться всё время до одного и того же. Я бы сделал типа такого. После диалога "Лечи нуждающихся в радиусе 1000" под игрока помещаем фальшивый взрыв радиусом 1000 с эффектом-маркером. Эффект действует на неписей со здоровьем, скажем, меньше 50%, следующим образом. Во-первых, под непися помещается некий "материальный" маркер, например, активатор (ему не обязательно быть видимым). Во-вторых, неписю добавляется скриптовый пакет охранять своё текущее место расположения. В-третьих, некая переменная, хранящая число больных, увеличивается на единицу. У доктора после диалога активируется пакет Find, побуждающий его найти по ID маркер-активатор 1 штуку. По нахождении маркера у доктора активируется пакет Find, побуждающий его найти любого NPC 1 штуку, при этом он заговорит с найденным. А рядом с маркером как раз ошивается наш больной. В диалоге "Встань и иди" (должен быть диалог с высоким приоритетом) на всякий случай проверяем, тот ли больной (имеет ли на себе эффект-маркер), лечим его, снимаем эффект-маркер (а он забирает с собой "материальный" маркер и пакет охраны), вычитаем из числа пациентов единицу и если это число пока ещё больше нуля, снова отправляем доктора искать "материальный" маркер 1 штуку. Или даже без диалога, в результ-скрипте пактета. "Встань и иди" тоже можно в пакете прописать. Проще было бы отправлять всех страждущих в путешествие к врачу. Доктор в режиме поголовного исцеления бегает по полю боя и время от времени кастует на себя фальшивый взрыв с эффектом. Эффект добавляет полумёртвым неписям пакет идти лечиться. А доктор уже известен заранее и прописан в пакете.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №767
| Тема: Помощь по моддингу
написано: 30 сентября 2015, 10:38
| Отредактировано: Joopeeter - 30 сентября 2015, 10:44
Перепуганный НПС может забыть про устав и смыться с вверенного ему поста (маркера).
Ну значит шиш ему, а не пилюлю. Хотя вроде во время пакета Guard непись особо далеко от Guard location не убегает. Вот это вот хождение среди больных интереснее. Как отправить доктора к каким-то заранее неизвестным больным за шоколадками? Find с разрешённым воровством? А пациент ему морду не набьёт? Вообще, конечно, во время боя любой более-менее свободный пакет ненадёжен - доктор запросто может всё бросить и уйти на войну. То есть жёстко нацеленный обход пациентов пакетом Patrol будет продолжаться и в бою (с соответствующей галкой), и даже веселее - бегом-бегом. Понятно, что работает только с заранее известной группой, причём всем желательно быть в наличии поблизости. Отдельные пакеты Travel к каждому члену группы персонально тоже сработают. А вот Sandbox со случайными беседами типа "ну как твоя рука/нога/хвост" и лечением болящих собеседников - только в стационаре. Насчёт Find уверенности нет.
Добавлено (30 Сентября 2015, 13:38) --------------------------------------------- А то ещё можно действительно дать айболиту стимпакомёт и гранаты с цитрамоном, а больных записать во враждебную ему фракцию - пусть со злобной рожей и воплями "от меня не спрячешься!" пытается залечить их до смерти.
А куда деваться-то. Больных неписей искать надо? Надо. По мне, так взрывом проще, чем экстендером. И пакет тоже надо. Даже если лечиться больные будут на самом деле спеллом по таймауту, хоть какую-нибудь деятельность такой доктор-дармоед должен же изобразить...
Можно и без взрыва, актор-эффектом. В этом случае ГГ может просто двигаться вместе с доктором через очаг эпидемии, доктор выполняет обычный пакет следования или эскорта, а как только в радиусе действия цитрамоновых гранат появляется больной, атакует его.
А как актор-эффектом? Я как-то ковырялся с этой магией. Area объектных эффектов работала фиг поймёшь через раз, а у актор-эффектов, мне показалось, эта Area вообще отломана
Добавлено (01 Октября 2015, 22:06) --------------------------------------------- КсюXa, да-да, такой вырисовывается! А что, разве плох?
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №770
| Тема: Помощь по моддингу
написано: 6 октября 2015, 13:07
| Отредактировано: Joopeeter - 6 октября 2015, 13:46
Ох уж мне этот реализм. Учитывая, что Рад-икс - это препарат для приёма внутрь, очищать им воду от радиации даже менее реалистично, чем кипячением. Ладно, будем считать, что он убивает в воде радионуклиды, выжившие после термообработки Если без заморочек, то типа такого.
Код
scn SolarWP01Script
short Button short Wtr short Rdx
begin OnActivate
if ( IsActionRef Player == 1 ) ShowMessage SolarWPMsg00 endif
end
begin gamemode
set Button to GetButtonPressed
if ( Button == 0 ) set Wtr to ( Player.GetItemCount WaterUnpurified ) set Rdx to ( player.GetItemCount RadX ) if Wtr > 2 && Rdx > 0 Player.RemoveItem WaterUnpurified 3 1 Player.RemoveItem RadX 1 1 Player.AddItem WaterPurified 3 else ShowMessage SolarFailureMsg Wtr Rdx ShowMessage SolarWPMsg00 endif elseif ( Button == 1 ) activate
elseif ( Button == 2 ) ;Do Nothing endif
end
Сообщение SolarFailureMsg должно быть создано заранее (перед компиляцией скрипта) и должно выглядеть примерно так: "Бла-бла не хватает бла-бла. Сейчас у вас есть: грязная вода %.0f и Рад-икс %.0f"
Добавлено после. Всё время забываю, что кнопка Окей тоже типа нулевая кнопка. Поправил скрипт.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №771
| Тема: Помощь по моддингу
написано: 6 октября 2015, 14:38
| Отредактировано: Joopeeter - 6 октября 2015, 14:39
Напишу всё ж как с заморочками, а то три воды можно очистить одним рад-иксом, а две и одну нельзя. Нереалистично!
В сообщении SolarWPMsg00 пишем что-то типа "Имеется вода %.0f штук и Рад-икс %.0f штук" и делаем 5 кнопок.
0 - Очистить 3 бутылки, потратить 1 Рад-икс. Условия нулевой кнопки GetItemCount RadX > 0 AND GetItemCount WaterUnpurified >= 3
1 - Очистить 2 бутылки, потратить 1 Рад-икс. Условия GetItemCount RadX > 0 AND GetItemCount WaterUnpurified == 2
2 - Очистить 1 бутылку, потратить 1 Рад-икс. Условия GetItemCount RadX > 0 AND GetItemCount WaterUnpurified == 1
3 - Подобрать к себе в карман
4 - Оставить прибор в покое
Тогда скрипт на соларовом очистителе становится таким
Код
scn SolarWP01Script
short Button short Wtr short Rdx
begin OnActivate
if ( IsActionRef Player == 1 ) set Wtr to ( Player.GetItemCount WaterUnpurified ) set Rdx to ( player.GetItemCount RadX ) ShowMessage SolarWPMsg00 Wtr Rdx endif
Уже давно было замечено, что радиация в игре - штука волшебная. Так что можно взять хоть две кастрюли и громко постучать ими друг об друга. Радиация испугается и убежит, а реалистичность если и пострадает, то не сильно...
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №773
| Тема: ВОПРОСЫ по моддингу
написано: 8 октября 2015, 20:05
| Отредактировано: Joopeeter - 8 октября 2015, 20:06
Обычно за чистоту воды отвечает тип воды (выпадающий список Water Type), назначенный активатору. Ищем подходящий по виду активатор с подходящим типом воды, запоминаем название , выделяем в окне рендера неправильные активаторы, Ctrl+F, выбираем из списка правильный, подтверждаем замену выделенного. Если нет готового подходящего по всем параметрам - дублируем подходящий по виду путём замены ID, назначаем ему другой тип воды, далее всё так же. В типе воды за чистоту (при питье, но не при плавании) отвечает назначенный ему актор-эффект. То же самое, если нужен свой особый старательский особый тип - дублируем с заменой ID, настраиваем как надо, назначаем его активатору. Ну и так далее - можно так же копнуть и актор-эффект, и базовый эффект. Это так в обычной чистой игре. Как оно там во всяких реализмах, где на каждом кусту по скрипту - хэ его зэ.
что обозначает значение -1, хоть вот из скрипта строка set ms08Fin.endSceneStage to -1? Чем отличается от 0?
Переменная использовалась как условие в диалогах и пакетах финальной сценки с Харкнесом и Зиммером. Сценка кончилась, переменная осталась, и ей, чтобы не мешалась под ногами, присвоили значение, которое ни в одном диалоге или пакете не используется. Могли и -77 присвоить с тем же успехом.
KAIN48, я чего кричал-то. Захожу утром в Мастерскую - а тут Каин. А потом бац - и оффлайн, и ни строчки, на тебя не похоже Ну самое главное - живой-здоровый. А то ведь всякое в голову лезет, сам понимаешь...