Точнее - переоценка. Обычно она раз в сколько-то там секунд, а эта функция заставляет сделать её прям сейчас. Если под условия подходит текущий пакет - он продолжится (не перезапустится!), если другой - запустится другой, в общем - обычная переоценка, но строго в нужный момент.
Ну я ищу более легкий способ, и удалить колизию в нископе с пару моделей как-то проще =)) Но понадеелся, что есть ещё более простой способ!
Чёрт, а я уж решил было, что нашёл единомышленника - любителя всё делать в ГЭКК. Тем не менее ответ был дан на вопрос в том виде, как он был сформулирован. В другой раз ставь задачу точнее: в Нифскоп то-то и то-то делается в 10 кликов, кто меньше?
текущий пакет отменяется (в частности, сбрасывается пакет, назначенный экземпляру моба с помощью AddScriptPackage), и активируется первый из пакетов, условия которого выполнены
Точно ли? Ведь если выбирается опять тот же пакет, то результ-скрипт On Begin у него не срабатывает.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №184
| Тема: ВОПРОСЫ по моддингу
написано: 13 октября 2012, 18:16
| Отредактировано: Joopeeter - 13 октября 2012, 18:20
Сделать его ч0рным-преч0рным, точнее сделать чёрным туман (который Fog в настройках ячейки). Clip Dist, Pow, Near и Far по вкусу, в вашингтонском метро, например, дистанция 8700, дальний туман на сотню меньше, а сила затуманивания в районе единицы.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №185
| Тема: Скрипты
написано: 15 октября 2012, 19:02
| Отредактировано: Joopeeter - 15 октября 2012, 19:11
Это может быть связано с endif между elseif'ами, которые проверяют Choice насчёт Choice ==0 и Choice ==1. Хм, ScriptEffectStart и GameMode в одном скрипте? O_o
А чего с квестом-то мудрить? Можно на том самом терминале объявить переменную, значение которой меняется в результ-скрипте нужной кнопки, и условие - GetScriptVariable. Только надо будет отметить галку Persistent Reference на копии и дать ей RefID. Хотя в вопросе было
Цитата Cleric
долез до нужной по квесту кнопки
так что да, раз квест со стадиями всё равно уже есть... Или так:
scn zzScript
short Blocked
Begin OnActivate
if Blocked==0 Activate else ShowMessage zzMessage; типа "Всё, доигрался" endif
End
А в результ-скрипте будет
set [RefID терминала].Blocked to 1
zzMessage надо создать заранее.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №188
| Тема: Скрипты
написано: 21 октября 2012, 07:00
| Отредактировано: Joopeeter - 21 октября 2012, 07:17
есть ли возможность как-то выделить в скрипте предмет, относящийся к разделу MiscItem? Можно было бы использовать тип блока Begin OnEquip для этих целей, но в отличии от былых времен, этот тип блока уже не работает для MiscItem, а переводить предмет в раздел Armor или Weapon как-то совсем неохота, сам предмет по стилистике для этих разделов вовсе не годится. Использовать функцию GetItemCount тоже не то, она просто отмечает предмет в интвентаре, но не дает возможности работать конкретно с ним
Ну, раз его не выцепишь снаружи, можно подобраться изнутри. Вот эта конструкция работает с одним "но": после использования предмет исчезает и заново появляется в инвентаре только после закрытия пип-боя.
set Btn to GetButtonPressed if Btn==0 ; тут делаем что надо player.AddItem zzItem 1 1; zzItem - это тот предмет. Disable MarkForDelete endif
End
Как видим, "активация" правым кликом. И как это ни странно, при замене гейммода на менюмод конструкция работает всё с тем же самым "но". Поведение в инвентаре сразу нескольких зизиайтемов не проверялось.
Но вообще-то это, конечно, извращение. Размещение активируемых предметов в "Помощи" - действительно общая практика, так что все уже привыкли, что книги, таблетки и бутерброды там в одной куче.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №192
| Тема: Скрипты
написано: 24 октября 2012, 02:42
Смотрю на свой скрипт, смотрю на твой, э-э-э... неужели проще? Ладно, но одну вещь необходимо в него добавить: MarkForDelete, потому что надо "думать, как динозавр" окончательно избавляться от использованных MiscItem'ов.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №193
| Тема: Скрипты
написано: 24 октября 2012, 14:18
Посмотрел чуть внимательней и вот стало интересно: а без переменной stAr будет работать? Просто я раз видел подобную конструкцию (с IsKeyPressed и переменной, реагирующей на нажатие/отпускание кнопки) в блоке GameMode. Она там была, как выяснилось, для того, чтобы скрипт при нажатии срабатывал однократно, а тут вроде OnDrop и так прогоняется всего один раз. Это так, из любопытства вопрос, сам-то я ФОСЕ не пользуюсь.
Цитата Demolir
предметы визуально не удаляются.
Главное, чтоб наоборот, не дублировались. А то сталкивался с таким глюком при манипуляциях с заскриптованными предметами в инвентаре.
Ах да, коллизия... Похоже, активаторы без коллизии не активируются. Что не имевшие её изначально, что потерявшие во время движения - без разницы. Я про ванильные, нередактированные модели. Наверное придётся делать финт ушами: триггер, а на нём скрипт, подсовывающий что-то очень маленькое (активатор, уменьшенный до нуля) прямо под нос игроку, пока тот в триггере.
Begin OnTrigger player [что-то очень маленькоеRef].MoveTo player 30 30 150; оффсеты взяты приблизительно End
Добавлено (27.10.2012, 07:08) --------------------------------------------- Чёрт, совсем забыл, надо так :
Никогда раньше не обращал внимания (т.к. "реалистичность" - предпоследнее, что меня волнует в Фоллауте), а сейчас вот в связи с вопросом немного поэкспериментировал и заметил, что "расчленяющее" оружие (у которого не установлено No Dismember/Explode в поле On Hit), похоже, не разделяется по вероятности отрыва/взрыва частей тела. То есть если настроить игру чтобы бошки-руки-ноги не отлетали от автоматной пули, то непися (кроме первого) и ядерной бомбой не разорвёшь. И наоборот, если весь непись будет разлетаться от бомбы, то будет и от пули. Почему "кроме первого". Оружие с выбранным Explode Only почему-то в обязательном порядке разрывает непися, которому не повезло подвернуться под руку первым после подключения мода, даже с шансами, выставленными в один процент. Экспериментировал, правда, неточно, без подсчётов, на субъективных ощущениях. Пробовал различные комбинации шансов, задаваемых в Body Part Data и в Game Settings. Игра - Fallout 3.
Компромисс - это понятно, у меня у самого во время игры подключена компромиссная снижалка расчленёнки через настройки iCombat...Chance. Не реализму ради, а просто надоедает после энного прохождения (или это оттого и надоедает, что не реалистично? ). Реже от пули, реже и от гранаты - да и фиг с ней, как я уже говорил, меня это мало волнует. А вот что непонятно, так это как влиять на игровые настройки из скрипта. Что-то в стандартных функциях не нашёл. Опять экстендер? Кстати, тогда ради этого самого реализма надо как-то выделить из пулевого оружия способное оторвать или "взорвать" что-нибудь (за счёт бешеной скорострельности, здорового калибра и т.п.). Баня точно так же регулируется настройками вида iMess... . Точно так же можно ими настроить чтобы взрывалось всегда или не взрывалось никогда.
Добавлено (03.11.2012, 13:17) --------------------------------------------- И кстати, насчёт "в момент взрыва". Можно ли засечь этот момент не трогая сам объект "взрыв" и всунуть скрипт между взрывом и нанесением повреждения со всеми сопутствующими отрываниями?
Добавлено (03.11.2012, 13:24) --------------------------------------------- А вообще, что-то мне подсказывает, что суровые реалисты уже как-то решили эту "проблему" и выложили результат на Нексус.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №200
| Тема: ВОПРОСЫ по моддингу
написано: 4 ноября 2012, 06:07
| Отредактировано: Joopeeter - 4 ноября 2012, 06:08
Ну, если взрыв не вылавливается, можно попробовать выловить его жертвы и разорвать их посмертно (ужас, что я пишу?):
ref Target
Begin GameMode
;тут как-то определяем жертву if Target.GetDead if Target.GetCauseOfDeath==0 Target.KillActor Target 0 ;и дальше так же все части тела, чтоб вообще вдребезги, или сделать рандомно endif endif
End
Вопрос как определить жертву. Я попытался через player.GetCombatTarget - очень ненадёжно, к тому же работает только на убитых игроком. Может, этот экстендер через этот свой GetFirstRef/GetNextRef неписей и монстров ловит получше, чем взрывы?
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №201
| Тема: ВОПРОСЫ по моддингу
написано: 4 ноября 2012, 13:59
| Отредактировано: Joopeeter - 4 ноября 2012, 14:00
Скрипт у меня был Object. Крутился на предмете в инвентаре у игрока. Но возможно, дело было не только в том, что player.GetCombatTarget не слишком подходит для этой цели. Под "Set Target to This", я так понял, ты имел ввиду, что раз цель не определяется снаружи, надо чтобы она сама себя определяла. То есть наложить на неё эффект. Без экстедера я сдаделал следующим образом: Сделал "оружейный" Object Effect на основе базового с таким скриптом
ref Self
Begin ScriptEffectStart
set Self to GetSelf if GetCauseOfDeath==0 KillActor Self 0 endif
End
Сделал фальшивый взрыв zzExplosion, у которого ничего нет, только радиус 2000, Enchantment (мой эффект) и пустой IS Mod. Разогнанный (Delay 0.2 сек.) квестовый скрипт то и дело "взрывал" этот взрыв под игроком
Begin GameMode player.PlaceAtMe zzExplosion End
Таким образом, все в радиусе 2000 должны были после смерти, если она была от взрыва, разлетаться на мелкие ошмётки. Должны были, но не разлетались. Оказалось, что GetCauseOfDeath возвращает всё, что угодно, кроме настоящей причины смерти, вплоть до -1 (ещё не помер) на вполне мёртвом неписе. Заменяю GetCauseOfDeath на просто GetDead - всё фурычит. Чёрт, обидно, могло ведь, зараза, работать. И главное, в ГЭКК-вики про это ни слова, только в обсуждении какой-то бедолага жалуется, что у него не пашет.
В третьем Фолле переменные стиля боя, походу, используются только как условие в диалоге - что ответит компаньон, когда скажешь ему использовать то или другое оружие (причём ответы ничем особо не различаются) . А "агрессивной" переменной в третьем нету. Тоже, наверное, для чего-нибудь в этом роде.
фразе "гав-гав" соответствует анимация LooseDogBarkDouble.
А как их синхронизировать? Я сейчас пробовал (только на тройном гавке) - сперва брешет, а потом пасть разевает, что ничем не отличается от тупо PlayIdle+PlaySound.
На самом деле, при тройном лае всё не так плохо. Анимация начинается и заканчивается чуть позднее звука. Если не придираться, то нормально выглядит. Случайно обнаружил смешной эффект. Хотел сделать, чтобы пёс брехал не куда смотрит, а на игрока. Сделал пакет диалога для скриптовой выдачи, отметил в нём флаг Always Run, чтобы поэнергичней поворачивался, а ни условий не прописал, ни Say Once у фразы не поставил. Так эта дворняга начала везде за мной гоняться с лаем, того и гляди за ногу тяпнет! И не шуганёшь её никак, точь-в-точь вздорная дворняга.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №205
| Тема: ВОПРОСЫ по моддингу
написано: 4 ноября 2012, 19:10
| Отредактировано: Joopeeter - 4 ноября 2012, 19:13
Нет, смысл был именно в GetCauseOfDeath. Убит непись взрывом - быстренько его раздербаниваем, убит ещё чем-нибудь - не трогаем. А что он просто мёртвый, так это и GetDead корректно определяется.
Добавлено (05.11.2012, 06:06) --------------------------------------------- Кстати, блок OnActivate в твоём скрипте делает всё ровно то же самое, что и обычная активация. Разве что только предотвращает активацию неигроком. Там у тебя что, всякие прохожие донимают напарника вопросами?
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №207
| Тема: Помощь по моддингу
написано: 5 ноября 2012, 08:22
| Отредактировано: Joopeeter - 5 ноября 2012, 08:23
Вис, тут по соседству обсуждение одного вопроса плавно перешло как раз на убитых взрывом. Результаты, правда, не обнадёживают, но может что и пригодится.
А кто обещал окончательный вариант? Там просто выяснилось, что функция GetCauseofDeath работает фигово, вот и всё. Можешь, конечно, сам попытаться, глядишь, тебе больше повезёт.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №209
| Тема: Помощь по моддингу
написано: 5 ноября 2012, 15:59
| Отредактировано: Joopeeter - 5 ноября 2012, 16:02
Почитал бы повнимательней то обсуждение, там как раз в одном скрипте было. И в Картотеке есть. Для кого KAIN48 старается? Насчёт падения почитай вот эту тему, там поднимался этот вопрос. Также что-то такое есть в Картотеке. И ещё отсюдадосюда. Может, и ещё где было.
Добавлено (05.11.2012, 19:59) --------------------------------------------- Чтобы все эти дела происходили при входе в триггер есть блок OnTriggerEnter. Здоровье сшибается функцией DamageActorValue.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №210
| Тема: Скрипты
написано: 8 ноября 2012, 14:01
| Отредактировано: Joopeeter - 8 ноября 2012, 14:03