Поэтому решение твоей проблемы только одно: заменить указанную анимацию на более адекватную - такую где подброс ствола происходит после того, как пуля уже попала в цель (или вообще без подброса) и пристрелять прицел по новой.
Я уже пробовал данный метод раньше - и действительно, проблема исчезала. Но вместе с ней исчезало прицеливание под IronSight, очень классное, кстати...
Изменение репутации для пользователя Ivan_Rozhkov
Ivan_RozhkovOffline
Сообщение №1562
написано: 13 августа 2015, 04:05
| Отредактировано: Ivan_Rozhkov - 13 августа 2015, 04:06
Здравствуйте, уважаемые мододелы. Возник вопрос: Нужно сделать в скрипте(квест) условие, что игрок спит и также узнать, сколько он проспал и в зависимости от того сколько часов он проспал сделать какое-нибудь действие. Пробовал IsPCSleeping, но он не работает.
Код
short DoOnce float timer
Begin gamemode
if (DoOnce == 0) set timer to GameDaysPassed if (player.isPCSleeping) set DoOnce to 1 else set DoOnce to 0 endif elseif (DoOnceSleep == 1) if (GameDaysPassed - timer >= 1/24) ;какое-нибудь действие elseif (GameDaysPassed - timer >= 1/12) ;и так до 24
В каком смысле не работает? Эта функция именно для того и предназначена, чтобы выявлять спит ГГ или нет. Применяется она без player и без точки. Просто if ispcleeping. Для того, чтобы узнать, какое время было выставлено на ползунке сна, есть GetPCSleepHours. Засекать время сна можно только во сне, т.е. в menumode. В gamemode ГГ не спит!
Код
short doonce short sileepingtime
begin menumode if ispcleeping && doOnce == 0 set doOnce to 1 set sileepingtime to GetPCSleepHours endif end
begin gamemode if doOnce == 1 if sleepingtime == 1 ;какое-нибудь действие elseif sleepingtime == 2 ;------------- endif set doonce to 0 set sleepingtime to 0 endif end
Если нужно рассчитать время "по факту" после сна, тогда засекать его нужно в момент начала сна, т.е. в menumode. Имейте в виду, что если скрипт с menumode вы повесите на какую-нибудь кровать, то работать он будет не зависимо от того, на какой кровати ГГ спит в этой или соседней ячейке. Также полезно не забывать, что игрока могут разбудить до того, как время вышло, в этом случае GetPCSleepHours будет не совпадать с реальным временем сна.
====================== Мод "Нью-Йорк" на русском: 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
Всем привет.Недавно скачал флягу убежища 13 и вот теперь хочу сделать ее функциональной.Подскажите пожалуйста как можно сделать, чтобы эту флягу можно было использовать несколько раз,например 5 (она в разряде помощи и исчезает после первого использования)?
как можно сделать, чтобы эту флягу можно было использовать несколько раз, например 5 (она в разряде помощи и исчезает после первого использования)?
Например, завести в глобальных переменных счётчик числа "зарядов" фляжки, и в каждом OnEquip минусовать и проверять, добавить ли ещё одну фляжку взамен используемой сейчас - или положить в карман предмет "совсем пустой фляжка да".
Ipatow, Я так и пытаюсь сделать но видимо не так что-то.В общем есть глобальная переменная CantineEmptyV13 равная нулю.Есть эффект использования фляжки:
Scn Cantine13EmptyScript
begin ScriptEffectStart player.additem CentieFoolV13 1 set CantineEmptyV13 to +1 end
И есть эффект добавления пустой фляжки:
scn CantineV13EmtyAdd
begin scripteffectstart additem CentieV13 1 end
На эффект добавления пустой фляжки хотел поставить условие Get GlobalValue == 5 Но не работает.Я понимаю,что скорее всего пропущена масса условий в скриптах,подскажите какие условия нужно добавить?
скорее всего пропущена масса условий в скриптах,подскажите какие условия нужно добавить?
Пропущено, судя по показанному, много чего... Например, в "set CantineEmptyV13 to +1" не сказано, к чему прибавляется единица - переменная просто выставляется в плюс единицу и всё. А вообще конструкция затейливая - одних скриптовых эффектов вон не меньше двух - так что по фрагментам восстановить, что ещё там не так, затруднительно.
Изменение репутации для пользователя ncrrainjer
ncrrainjerOffline
Сообщение №1568
написано: 14 сентября 2015, 15:15
| Отредактировано: ncrrainjer - 14 сентября 2015, 15:17
Ipatow, А правильно прибавлять так: set CantineEmptyV13 to CantineEmptyV13 +1? И еще проблема,в первом эффекте должна прибавляться полная фляжка (player.additem CentieFoolV13) но она либо не прибавляется,либо прибавляется один раз и все!
в первом эффекте должна прибавляться полная фляжка (player.additem CentieFoolV13) но она либо не прибавляется,либо прибавляется один раз и все!
Должна прибавляться, да. Если эффект вообще запускается - то прибавляется. Возможно, что и один раз - зависит от параметров эффекта, которые ты не указал... Вообще, для чего тебе два скриптовых эффекта? Только ради того, чтобы заменить IF в скрипте условием на эффекте? Не думаю, что это рациональный подход... Я бы вместо двух скриптов использовал
BEGIN ScriptEffectStart IF CantineEmptyV13 > 3 ; выпито по крайней мере четыре, то есть пьём не менее чем пятый глоток Player.AddItem CentieV13 1 SET CantineEmptyV13 TO 0 ELSE Player.AddItem CentieFoolV13 1 SET CantineEmptyV13 TO CantineEmptyV13 + 1 ENDIF END
Всем здорово. Я тут нашел способ создавать катсцены в третьем Fallout. Для разговоров проставлен тайминг в скриптах. Также можно в катсценах использовать игрока, но он не будет разговаривать вообще, даже если использовать команду say. А так это тема делать такие вставки в моды, дабы разнообразить игровой процесс. Для теста взял финальную катсцену из GTA San Andreas.
Я тут нашел способ создавать катсцены в третьем Fallout
Ну, если твоим модам катсцены полезны - что б их не создавать? А если хочешь, чтобы в "фильмах" участвовал и разговаривал ГГ - просто клонируй его. Клоны немотой не болеют, а настоящий ГГ всё равно в это время работает оператором камеры и потому перед камерой появиться не может.
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №1573
написано: 15 сентября 2015, 04:46
| Отредактировано: КсюXa - 15 сентября 2015, 04:47
Я думаю, что трудозатраты были не слабые. Для того, чтобы такие сцены были уместны в каком-нибудь моде, сам мод должен быть о-го-го. Таким, как "Нью-Йорк", например.
====================== Мод "Нью-Йорк" на русском: 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
Изменение репутации для пользователя ncrrainjer
ncrrainjerOffline
Сообщение №1575
написано: 17 сентября 2015, 18:37
| Отредактировано: ncrrainjer - 17 сентября 2015, 18:39
Всем доброго времени суток,мне опять нужна помощь.В общем проблема такая: создал квест на уничтожение врага.Пометил сами цели (Супермутанты) Реф-именами,при уничтожении всех отмеченных НПС стадия квеста должна завершаться а следующая становиться активной.В самой стадии квеста где нужно убить НПС (в Резалт скрипте) прописываю скрипт: Begin gamemode if BoSQ1ML1Ref.getDead && BoSQ1ML2Ref.getDead && BoSQ1ML3Ref.getDead && BoSQ1ML4Ref.getDead && BoSQ1ML5Ref.getDead && BoSQ1ML6Ref.getDead && BoSQ1ML7Ref.getDead && BoSQ1ML8Ref.getDead && BoSQ1ML9Ref.getDead && BoSQ1ML10Ref.getDead && BoSQ1ML11Ref.getDead && BoSQ1ML12Ref.getDead && BoSQ1ML13Ref.getDead && BoSQ1ML14Ref.getDead setObjectiveCompleted BoS01Quest 4 1 SetObjectiveDisplayed BoS01Quest 6 1 endif end
До этого момента все работает нормально. Следующая стадия аналогично на уничтожение НПС (такой же скрипт).И вот тут начинается проблема стадии квеста не отмечаются как завершенные,а активируется сразу последняя стадия квеста игноря предидущие. Подскажите как это исправить?Можно ли прописывать подобные скрипты в нескольких стадиях одного квеста?Если нет,то как будет правильно?
В самой стадии квеста где нужно убить НПС (в Резалт скрипте) прописываю скрипт: Begin gamemode
Вообще, я помню, что эти всяческогого происхождения "результовые" скрипты (диалоги, пакеты, стадии квеста, перки.. где там ещё бывают эти странные скрипты без заголовков?) на самом деле для исполнения ловко всовываются в середину настоящих скриптов (в результате вызывая, например, конфликты имён переменных), определяемых системой невнятным способом... А поскольку правила синтаксиса интепретируют одноимённые блоки как один блок, непринуждённо продолжая какой-нибудь онтриггер следующим онтриггером... То, вероятно, гейммод в "результовом" скрипте куда-то там влипнет и, вполне возможно, отработает... Но вообще "результовые" скрипты по смыслу одноразовые, то есть не повторяющиеся автоматически.
При штатном использовании каждый result script определённой стадии квеста (лога в игре нет, но log entry в одной stage может быть описано множество, каждый со своим скриптом) исполняется один раз от начала до конца в момент вызова функции SetStage (очерёдность исполнения скриптов стадии, когда их больше одного, не документирована) - то есть перед выполнением следующей строчки того скрипта, который вызвал SetStage. Своего рода подобие подпрограммы, только параметры нельзя передать.
Предположительно, то, что ты хотел сделать, традиционно делается так. Скрипт самого квеста крутит гейммод-блок с примерно такой конструкцией:
IF LocalCounter == 0 SetObjectiveDisplayed 1 SET LocalCounter TO 1 ELSEIF LocalCounter ==1 IF сделано что надо для первого этапа SetObjectiveCompleted 1 SetObjectiveDisplayed 2 SET LocalCounter TO 2 ENDIF ELSEIF LocalCounter ==2 IF сделано что надо для второго этапа SetObjectiveCompleted 2 SetObjectiveDisplayed 3 SET LocalCounter TO 3 ENDIF ELSEIF повторяем столько раз, сколько этапов у квеста ENDIF
Стадии по такой технологии как бы и ни к чему...
Изменение репутации для пользователя ncrrainjer
ncrrainjerOffline
Сообщение №1577
написано: 18 сентября 2015, 03:00
| Отредактировано: ncrrainjer - 18 сентября 2015, 03:12
если я правильно понял,то скрипт с такой конструкцией вешается на сам квест?И что такое LocalCounter?
Да, как я и написал, такое пишется в скрипт самого квеста. Это просто переменная SHORT LocalCounter при запуске квеста инициализируется нулём, как и все переменные...
Изменение репутации для пользователя ncrrainjer
ncrrainjerOffline
Сообщение №1579
написано: 20 сентября 2015, 18:49
| Отредактировано: ncrrainjer - 18 сентября 2015, 15:50
Ipatow, Ясно,спасибо большое,буду пробовать.Еще вопрос такой,как создать ЛОД на свое игровое пространство?Я скопировал DCWarld15,но в отличии от оригинала дальние объекты не прорисовываются,Гек не хочет сам ЛОД создавать,пишет что создано,а на деле ничего не меняется. П.С. С ЛОДами вроде разобрался:)
Добавлено (20 Сентября 2015, 21:49) --------------------------------------------- Задался вопросом как сделать череду событий не зависящих от ГГ?Например как очиститель восстановили через неделю происходит какое-то событие,через две недели другое и т.д.Возможно ли такое сделать?И как?Нужно отдельный квест создавать чтобы все эти события туда вписывать?Если кто знает,помогите,очень надо:)))Заранее спасибо:)
Ну хоть по образцу из Картотеки. Только вместо "при входе в игру" будет "при первом событии". То есть весь скрипт заворачиваем в дополнительное условие if-endif. Если под это дело создаётся отдельный квест, то можно дополнительных условий не ставить, а просто запускать его одновременно с первым событием. А вместо "получает сообщение" будет "второе событие". То есть вместо ShowMessage пишем что там требуется для наступления второго события.
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №1581
написано: 29 сентября 2015, 11:58
| Отредактировано: КсюXa - 29 сентября 2015, 12:00
а в Фол3 такое оЧуЧение, что скрипт вообще не работает.
Может потому что две команды в скрипте, а именно getNumKeysPressed и getKeyPress - это экстендеровские функции? Скрипт не компилируется из-за них и, соответственно, не работает (если грузить плагин в редактор не через FOSE)
Всем привет,подскажите как можно сделать, чтобы один НПС мог лечить остальных в радиусе например в 1000?Например подходишь к врачу говоришь "Вылечи всех нуждающихся"-тот по очереди подходит и ставит манту:)Ну или хотя бы кого-то конкретного,например подходишь говоришь "Бобу нужна помощь вылечи его"-врач подходит и лечит??
Изменение репутации для пользователя Galko
GalkoOffline
Сообщение №1584
написано: 29 сентября 2015, 17:45
| Отредактировано: Galko - 29 сентября 2015, 17:52
один НПС мог лечить остальных в радиусе например в 1000?Например подходишь к врачу говоришь "Вылечи всех нуждающихся"-тот по очереди подходит и ставит манту
... а в это время ГГ стоит, зевая и поглядывая на часы, в ожидании, пока эта мать Тереза обойдет всех страждущих и немощных. Ибо уходить ему нельзя, потому как , если помнишь, - жизнь на Пустоши "кипит" только вокруг главгероя. Покинет тот локацию, отойдя на определенное расстояние - практически вся обстановка местности, вместе с персонажами выгружается из памяти, пакеты "замораживаются" и т.п.
Создаешь непися, даешь ему достаточное количество стимпаков. Создаешь квест с диалогом. В результ-скрипте диалога пишешь команду - [НеписьRef].CureAll 1000 (1000 - это радиус поиска заболевших) и ждешь конца лечения :lol:
.. а в это время ГГ стоит, зевая и поглядывая на часы, в ожидании, пока эта мать Тереза обойдет всех страждущих и немощных.
Да ты видела, как наш фельдшер стимпаки бросает? Не успеваешь договорить "Васе плохо" - а он уже метнул в Васю самонаводящийся шприц, не в бровь а в глаз! Поговаривают, у него и шприцемёт гатлинговый есть для массхила
Изменение репутации для пользователя Galko
GalkoOffline
Сообщение №1586
написано: 29 сентября 2015, 18:06
| Отредактировано: Galko - 29 сентября 2015, 18:07
Ну.... Так-то да. Но идея-то фонтанировала такая, чтобы не из пулеметамантумёта пациентов мочить, а по-старинке, со стетоскопом: - дышите-не дышите... Реализмъ, мать его. Иначе можно было бы вообще одной магией обойтись. Раззз - и все здоровы.
идея-то фонтанировала такая, чтобы не из пулеметамантумёта пациентов мочить, а по-старинке, со стетоскопом
Строго говоря... Оно ведь - дым, зеркала и ассистентка в купальнике в нашей профессии незаменимы... Да, могут оказаться не-Persistent и дохтур, и пациенты, и потому при выходе движение останавливается. Но ведь мы знаем, что на самом деле бегемот только пасть открывает, а поёт тоже крокодил. То есть на самом деле исцеление производится в момент завершения реплики разговора - доктор ещё идёт вразвалочку, нашаривая в кармане свой резиновый молоток, а на пациенте уже повис спелл, который его вылечит по таймауту. Поэтому если ГГ вышел на пару часиков, то по возвращении и пациенты здоровы, и все свидетели присягают, что - да, ходил дохтур, ходил-ходил, лечил-лечил!
как можно сделать, чтобы один НПС мог лечить остальных в радиусе например в 1000?Например подходишь к врачу говоришь "Вылечи всех нуждающихся"-тот по очереди подходит и ставит манту:)Ну или хотя бы кого-то конкретного,например подходишь говоришь "Бобу нужна помощь вылечи его"-врач подходит и лечит??
Одного Бобу вылечить не проблема вообще. В результ-скрипте фразы "Бобу нужна помощь" активируешь у доктора какой-нибудь пакет, нацеленный на пациента, а в результ-скрипте пакета Боба исцеляешь, если тот ещё жив. То же самое с несколькими конкретными бобами - несколько пакетов по очереди. С неопределёнными "всеми нуждающимися" интереснее. Определить их мы можем , но назначить их целями пакета - нет. Обход неопределённого числа (больше одного) потенциальных пациентов пакетом Find тоже не получится - мы не можем пометить уже обойдённых, доктор будет доматываться всё время до одного и того же. Я бы сделал типа такого. После диалога "Лечи нуждающихся в радиусе 1000" под игрока помещаем фальшивый взрыв радиусом 1000 с эффектом-маркером. Эффект действует на неписей со здоровьем, скажем, меньше 50%, следующим образом. Во-первых, под непися помещается некий "материальный" маркер, например, активатор (ему не обязательно быть видимым). Во-вторых, неписю добавляется скриптовый пакет охранять своё текущее место расположения. В-третьих, некая переменная, хранящая число больных, увеличивается на единицу. У доктора после диалога активируется пакет Find, побуждающий его найти по ID маркер-активатор 1 штуку. По нахождении маркера у доктора активируется пакет Find, побуждающий его найти любого NPC 1 штуку, при этом он заговорит с найденным. А рядом с маркером как раз ошивается наш больной. В диалоге "Встань и иди" (должен быть диалог с высоким приоритетом) на всякий случай проверяем, тот ли больной (имеет ли на себе эффект-маркер), лечим его, снимаем эффект-маркер (а он забирает с собой "материальный" маркер и пакет охраны), вычитаем из числа пациентов единицу и если это число пока ещё больше нуля, снова отправляем доктора искать "материальный" маркер 1 штуку. Или даже без диалога, в результ-скрипте пактета. "Встань и иди" тоже можно в пакете прописать. Проще было бы отправлять всех страждущих в путешествие к врачу. Доктор в режиме поголовного исцеления бегает по полю боя и время от времени кастует на себя фальшивый взрыв с эффектом. Эффект добавляет полумёртвым неписям пакет идти лечиться. А доктор уже известен заранее и прописан в пакете.