возможно ли отследить, что игрок что-то купил или продал торговцу?
Не очень. Как минимум потому, что по ходу торговли предметы могут перекладываться слева направо и справа налево неоднократно - причём они именно перекладываются из одного инвентаря в другой. При согласии на сделку второй инвентарь каждого из торгующих падает в первый, при отказе эти вторые падают в первые инвентари напротив, но в любом случае это уже не перемещение предметов из инвентаря в инвентарь, а слияние инвентарей. Поведение OnAdd и OnDrop по ходу бартера трансцендентально и сопровождается взрывами и пожарами.
Почему "не очень", а не "нет" - потому что ты с некоторой натугой можешь по входу в менюмод бартера переписать всё, что есть у ГГ (для скрипта существует ровно один вид массивов - формлисты - но, извратившись, можно это обойти), а по выходу в гейммод ещё раз пересчитать и проверить, изменилось ли что-то.
Почему "не очень", а не "нет" - потому что ты с некоторой натугой можешь по входу в менюмод бартера переписать всё, что есть у ГГ (для скрипта существует ровно один вид массивов - формлисты - но, извратившись, можно это обойти), а по выходу в гейммод ещё раз пересчитать и проверить, изменилось ли что-то.
Можно поподробней? Желательно с примерами (можно с использованием FOSE).
Можно поподробней? Желательно с примерами (можно с использованием FOSE).
Ну, без FOSE просто невозможно определить, что лежит в карманах у ГГ (100% если оно из заранее неизвестного мода). В цикле (функции Label и Goto) перебираем (функции GetFirstRef по типу 201 и GetNextRef) инвентарные предметы, лежащие в кармане у ГГ заносим в список (понадобится весь набор функций, начинающихся с List), их количество симулируем количеством токенов в отдельном контейнере, их прочность отражаем прочностью этих токенов - так запоминается состояние инвентаря. Сравнивается аналогично. Натужно, извращённо, но реализуемо...
Ребят выручайте Создаю диалог с роботом) Всё норм но есть один -. Нельзя попрощаться с ним. С человеком всё отлично а с существом из диалога не выйти( Что делать?
Добавлено (19.09.2012, 12:21) --------------------------------------------- Так, поняв что со всем этим разобраться в одиночку не получится, решил плюнуть на этот бартер (хотя это бы очень пригодилось моду). Теперь такой вопрос - можно ли отследить, что ГГ починил оружие? Такое чувство, что всё вновь упрётся в
В цикле (функции Label и Goto) перебираем (функции GetFirstRef по типу 201 и GetNextRef) инвентарные предметы, лежащие в кармане у ГГ заносим в список (понадобится весь набор функций, начинающихся с List), их количество симулируем количеством токенов в отдельном контейнере, их прочность отражаем прочностью этих токенов - так запоминается состояние инвентаря. Сравнивается аналогично.
Добавлено (21.09.2012, 20:20) --------------------------------------------- Так теперь такой вопрос: создал ветку диалога с 3 разветвлениями, но одно из них не работает - условия выполняются (у ГГ должно быть >=500 крышек), но эта ветка не появляется. Укажите, пожалуйста, где моя ошибка. P.S. В условии с крышками стоит Run on Target.
rizys-mod, Спасибо! Вновь вопрос: как я понял функция GetPCMiscStat "Mines Disarmed" отвечает за кол-во обезвреженных мин. Нужно сделать так, чтобы при заходе в игру моя переменная повышалась на кол-во обезвреженных мин. Сам код понятен
Code
Set Переменная to GetPCMiscStat "Mines Disarmed"
Затем нужно в зависимости от переменной сделать так, чтобы когда первый раз вошёл в игру взрывчатка повышалась на определённое кол-во. Это тоже понятно:
Code
short DoOnce
Set Переменная to GetPCMiscStat "Mines Disarmed" If Переменная>=10 && Переменная<20 Player.ModAV explosition 1 Set DoOnce to1 esleIf Переменная>=20 && Переменная<30 Player.ModAV explosition 2 Set DoOnce to1 elseIf Переменная>=30 && Переменная<40 Player.ModAV explosition 3 Set DoOnce to1 END
И так далее. А с каждым новым десятком взрывчатка должна повысится на 1. Но ведь тогда взрывчатка будет увеличиваться каждые 5 секунд (т.к. квестовый ГеймМод), а нужно чтобы она увеличилась лишь 1 раз, а потом когда достигнет следующей отметки повысится ещё раз. Например: GetPCMiscStat "Mines Disarmed" равно 31, значит взрывчатка повышается на 3. Потом, когда GetPCMiscStat "Mines Disarmed" доходит до 40, взрывчатка повышается на один и т.д.
И так далее. Но ведь тогда взрывчатка будет увеличиваться каждые 5 секунд (т.к. квестовый ГеймМод)
Во-первых, квестовый скрипт не обязательно делает один оборот в 5 секунд - ты можешь поставить и 0.1 секунды, и 100 секунд... Во-вторых, проблему c повторной выдачей скилла ты создаёшь сам. Почему бы не написать что-то в духе
Code
SCRIPTNAME DisarmerQuestScript SHORT Awarded BEGIN GameMode IF (GetPCMiscStat "Mines Disarmed") > (Awarded * 10 + 9) SET Awarded TO Awarded +1 Player.ModActorValue Explosives 1 ENDIF END
Вис, разумеется, этот блок вертится без передышки. Как только количество обезвреженных мин набрало очередной десяток (на самом деле я бы там сделал сильно тормозящую в росте функцию - в идеале логарифм - иначе первая же тысяча обезвреженных мин отсыплет игроку +100 - но это неважно и это тебе решать), очко в скилл выдаётся и одновременно меняется значение, с которым сравнивается число разминированного. Ты замечаешь, что и левая, и правая часть сравнения увеличиваются?
Изменение репутации для пользователя Вис
ВисOffline
Сообщение №586
написано: 22 сентября 2012, 09:42
| Отредактировано: Вис - 22 сентября 2012, 09:49
Масштаб времени - псевдо-глобальная-переменная TimeScale, которой можно присваивать значение как любой другой. По умолчанию там, помнится, 30 (т.е. две минуты реала - час игрового мира, 48 минут - сутки).
Изменение репутации для пользователя rizys-mod
rizys-modOffline
Сообщение №589
написано: 23 сентября 2012, 11:54
| Отредактировано: rizys-mod - 23 сентября 2012, 11:56
имелось ввиду именно чтобы вокруг все медленно двигалось.
Тип этой псевдопеременной - Float. То есть значения наподобие 0.125 (время в игре в восемь раз медленнее реального времени, в котором двигается ГГ) совершенно законны.
Как то оно не замедлело время... Наверно вы меня не поняли. Нужно что-то этакое как "замедлителя времени" я попробовал сделать как вы сказали, но время не замедлилось. Есть такой мод, называется "bullet time" наподобие этого мне нужно.
Команда "Rizys-mod" - разработка плагинов на Fallout.
Как то оно не замедлело время... Наверно вы меня не поняли. Нужно что-то этакое как "замедлителя времени" я попробовал сделать как вы сказали, но время не замедлилось. Есть такой мод, называется "bullet time" наподобие этого мне нужно.
Я понял, но поскольку сам никогда не интересовался реализацией замедленного движения, я перепутал два временных механизма. Скачал, посмотрел. Bullet Time построен на функции SetGlobalTimeMultiplier.
Здравствуйте.У меня есть 3 вопроса. 1)Как сделать чтоб через терминал можно было покупать постройки(снимаются деньги и появляется постройка в определёном месте)? 2)Как сделать так чтоб пушка из анкориджа среляла 1 раз когда намёш на кнопку и в определёное место? 3)Можно сделать в редакторе чтоб было видно несколько ячеек а не одну?
eng2033, 1)В разделе Script result пишется: Player.RemoveItem 000000f 2000 ExampleBulidingRef.Enable У постройки выставить аналогичный в скрипте Reference Id. 2)Не помню никакой пушки, однако, можете создать активатор, на него повесить скрипт, с командой PlaceAtMe. На место выстрела поставить XMarkerHeading, изначально прописав у него Reference Id. В скрипте на активатор прописать (с режимом GameMode, и используя переменную в режиме OnActivate)
бла-бла-бла...
Begin GameMode
If RunIt == 1 ExampleExplosionPlaceRef.PlaceAtMe MegatonNukeExplosion (или выбрать любой взрыв себе по вкусу в разделе Explosions)
бла-бла-бла...
3) Так нельзя. Можно лишь открыть несколько редакторов одновременно. Для сего нужно поменять значения в файле Geckprefs.ini (или в похожем про ГЕКК, уже не помню), а вот какое - гугл в помощь, я уже призабыл.
Изменение репутации для пользователя eng2033
eng2033Offline
Сообщение №596
написано: 29 сентября 2012, 15:24
| Отредактировано: eng2033 - 29 сентября 2012, 15:29
Sazan_Theme 1)спасибо. 2)Эти китайские 3 арт пушки надо взорвать в первой миссий в анкоридже,я ток делал чтоб они среляли как задумано авторами но там ток тригер его невыключить и пухи будут срелять пока их не взорвёш. Про скрипты можно поподробней,а то я в скриптах неочень понимаю,ток начинаю разбираться. 3)Я делал потом если в них загружать плагины одновремено вылет один из гекков. У меня есть ещё вопрос,почему если обьединять несколько статиков в коллекцию они становятся невидимыми(не все)?
2)Эти китайские 3 арт пушки надо взорвать в первой миссий в анкоридже,я ток делал чтоб они среляли как задумано авторами но там ток тригер его невыключить и пухи будут срелять пока их не взорвёш.
Вот скрипт на активатор:
Code
Short DoOnce
Begin OnActivate if DoOnce == 0 AnchOverlookGunRef.playgroup Forward 1 MarkerRef.PlaceAtMe DLC02GunBatteryImpactExplosion 1 Set DoOnce to 1 endif End
AnchOverlookGunRef - Reference ссылка пушки MarkerRef - Referencz ссылка маркера XMarkerHeading (на нем будет взрыв DLC02GunBatteryImpactExplosion из анкориджа)
Команда "Rizys-mod" - разработка плагинов на Fallout.
объединяю комбинацией Ctrl+G,а они исчезают токо если они из длк. А за активатор спс. И ещё заставить работать DLC05ZetaLaserAim (лазер пушки смерти из 5 длк)