Модератор форума: КсюXa, ApeX  
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)

Скрипты
a3apbi4  Offline  Сообщение №1 написано: 7 декабря 2010, 18:01



11
Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.




cruznik  Offline  Сообщение №1561 написано: 13 сентября 2016, 08:52



15
Неисключено)..Думаю что ты в общем то права..Ну попробую.На крайняк способ с 8значным числом тоже ничего.

Veldion  Offline  Сообщение №1562 написано: 15 сентября 2016, 02:40



268
Цитата cruznik

Можно еще попробовать выставить нулевое здоровье чтоб не ломалось


КсюXa-сан, тебе абсолютно верно кажется. "Нулевое здоровье" - это уже сломанный предмет / дохлый непись.

cruznik, как я говорил выставить нужно "нулевую защиту", а не "нулевое здоровье".

cruznik  Offline  Сообщение №1563 написано: 15 сентября 2016, 13:15



15
усек)

Zess  Offline  Сообщение №1564 написано: 6 ноября 2016, 15:01 | Отредактировано: Zess - 6 ноября 2016, 15:03



1
Решил добавить в Lozza's gasmasks (он же Gas Masks of the world), переделанного для Project Nevada, противогаз из другого мода и добавить ему визоры и эффекты дыхания как и остальным.
Проблема возникла с первым же скриптом, отвечающим за эффекты дыхания.
По сути туда просто нужно было добавить в соответствующие строчки наименование предмета (благо примеры имелись и косяков с орфографией не возникло), но при попытке сохранения в "чистом" GECK'е скрипт вообще отказывается сохраняться, а при попытке сохранить его в The G.E.C.K. PowerUp выдает ошибку "script command label not found" которая относится к строке скрипта, которую я вообще не трогал.
Самое интересное в том, что те же проблемы наблюдаются даже при попытке сохранить исходную версию скрипта.

ITU  Offline  Сообщение №1565 написано: 7 ноября 2016, 00:52 | Отредактировано: ITU - 7 ноября 2016, 00:59



995
Zess, что за скрипт? скинул бы, написал какую ошибку выдает, было бы проще подсказать
И да, скрипты оригинальной игры не все компилируются...
а еще бывает что некоторые мододелы прячут изходный код, удаляя или меняя в fnvedit
а еще могут быть что это команда из NVSE, запускать гекк  коммандой "nvse_loader -editor""

еще рекомендую http://www.nexusmods.com/newvegas/mods/41642/?
Ну или https://modgames.net/load/fallout_new_vegas/1/1/163-1-0-6230, но там powerup может старее версии быть

КсюXa  Offline  Сообщение №1566 написано: 24 ноября 2016, 15:18 | Отредактировано: КсюXa - 26 ноября 2016, 06:20


Гид по Мастерской


SOS!
Такая вот проблемка: скачала мод, позволяющий видеть игрока со стороны, когда он спит. Всё работает,  но не устраивает (лично меня) один момент: когда игрок спит - ускоряется течение времени. Звезды водят быстрый хоровод, луна пролетает по небосклону шустрым болидом... Автор это сделал для того, чтобы не смотреть целую минуту или две, ничего не делая, на спящего Курьера. А мне фиолетово, я могу и посмотреть. Начала ковыряться в скриптах, неделю тыкалась - ничего не получается. Может кто-нибудь из более понимающих людей подсказать, что надо сделать?
  Ну чтобы течение времени было стандартным во время сна. Скрипт, конечно, ого-го-го какой большой, но вдруг?

В строчке, которая выделена желтым, я меняла значения, но никакого эффекта.

Ой, всё...
MaxwellDemon  Offline  Сообщение №1567 написано: 24 ноября 2016, 17:15 | Отредактировано: MaxwellDemon - 24 ноября 2016, 17:16



104
КсюXa, есть глобальная переменная TimeScale, которая и задаёт скорость течения времени в игре. По умолчанию TimeScale == 30, отсюда вопрос - в каком диапазоне ты изменяла переменную скрипта SleepTimeScale? Если (судя по скрипту) ты сменила значение с 1890 на 1920 (при стандартном значении 30), думается мне - разница действительно будет незаметна глазу... Бегло просмотрев все действия в скрипте с переменной TimeScale - задаётся она (set TimeScale to ...) 3 раза, один раз на ускоренный и в двух случаях на стандартный.

Думается мне если написать ту строчку так:

Set SleepTimeScale to 30                        ; change the timescale 1890

Скрипт будет работать "в холостую", при этом не меняя скорость течения времени вообще.

КсюXa  Offline  Сообщение №1568 написано: 25 ноября 2016, 14:37 | Отредактировано: КсюXa - 26 ноября 2016, 06:17


Гид по Мастерской


MaxwellDemon, попробовала сделать Set SleepTimeScale to 30
Сработало наполовину. Ну то есть - небо с луной стали вращаться с нормальной скоростью, а вот временная шкала стала глючить.
  При стандартном сне появляется черный экран и шкала времени. Ложишься, к примеру, в 8 часов вечера, задаешь время сна - 12 часов, спишь, ползунок шкалы двигается. В 8 утра - пробуждение, шкала и черный экран исчезают, появляется игрок. Если посмотреть на часы и на местность вокруг после пробуждения - да, 8 утра на дворе.
  В моде при стандартных его настройках, когда ложишься спать - черный экран не появляется, а игрок сразу ложится в кровать. Только после этого появляется шкала времени (прямо поверх изображения, без черного экрана) и можно указать длительность. Указываешь, жмешь "Спать" - шкала исчезает и на экране только игрок в кроватке. Ложишься в 8 вечера на 12 часов - вокруг все быстро вертится, сам сон проходит в реальном времени быстрее, чем стандартный сон, но неписи вокруг не убыстряются, изменение скорости течения времени их не затрагивает. И игрок просыпается спустя 12 часов примерно в положенное время, где-то  в 7-45 - 8-15 . (есть небольшое расхождение).
  При значении в 30, как оказалось - время вокруг вроде течет стандартно, небо и луна вращаются как положено. Но время сна по реальному времени осталось очень коротким (что, впрочем, меня устраивает), но вот временная шкала сбивается очень и очень сильно. Лег спать в 8 вечера на 12 часов, полежал в кроватке, проснулся, посмотрел на часы (во время сна шкала не показывается) - а по часам прошло всего 2 часа и время сейчас 10 утра. И вокруг визуально - всё тоже утреннее, солнце на 10 утра. Хотя, может быть, это шкала глючит - указываешь спать 12 часов, а реально срабатывает сон на 2 часа. Поэтому так быстро и просыпаешься.
  Что-то где-то еще меняется. Смотрела остальные скрипты мода, но там чистая топография - повернуть игрока туда, подсунуть ложного игрока туда... И ничего связанного с изменением таймера.
Сам мод, если чё.

Вот и сижу, чешу репу...

Ой, всё...
JupiterJour  Offline  Сообщение №1569 написано: 30 ноября 2016, 20:42


_


Цитата КсюXa

При значении в 30, как оказалось - время вокруг вроде течет стандартно, небо и луна вращаются как положено. Но время сна по реальному времени осталось очень коротким (что, впрочем, меня устраивает), но вот временная шкала сбивается очень и очень сильно. Лег спать в 8 вечера на 12 часов, полежал в кроватке, проснулся, посмотрел на часы (во время сна шкала не показывается) - а по часам прошло всего 2 часа и время сейчас 10 утра. И вокруг визуально - всё тоже утреннее, солнце на 10 утра. Хотя, может быть, это шкала глючит - указываешь спать 12 часов, а реально срабатывает сон на 2 часа. Поэтому так быстро и просыпаешься.


Там, насколько я понял, имитация дрыхнущего плеера контролируется таймером реального времени (переменная TimerD)
А увеличенная глобальная TimeScale и таймер так подогнаны друг к другу, чтобы за время сна пролетало положенное количество часов игрового времени.
Set TimerD to (SelSleeptTime - 1) * 2 ; set the timer to the selected double sleeptime in seconds
Ты замедляешь "сонное" игровое время до 30. Соответственно за то же число реальных секунд фальшивого сна проходит меньше игрового времени, чем при "сонном" времени 1920. Тогда для соответствия надо либо увеличить таймер, подогнав его к TimeScale == 30 (наверное, тогда и сама успеешь вздремнуть, пока игрок спит :) ), либо вернуть 1920 на место, либо подобрать какое-то компромиссное соотношение таймера и времени.

BsX  Offline  Сообщение №1570 написано: 1 декабря 2016, 12:46 | Отредактировано: BsX - 1 декабря 2016, 12:51


Полковник с парада


33
Повесил я этот скрипт на источник света, чтобы он работал днем и не работал ночью:

Код
scn AAATestLampScript
Begin GameMode
  if GetCurrentTime >= 10 || GetCurrentTime <= 21 && GetDisabled == 1
   Enable
  elseif GetCurrentTime >=21 || GetCurrentTime <= 10 && GetDisabled == 0
   Disable
endif
End

Свет начал просто мигать с огромной частотой.

Я тебя проинтегрировал, я тебя и продифференцирую...
JupiterJour  Offline  Сообщение №1571 написано: 1 декабря 2016, 16:54


_


Цитата BsX

Свет начал просто мигать с огромной частотой.


Что по утрам, спросонья, конечно приводит в некоторое замешательство, а поздним вечером вообще может напугать до смерти :D
Вот рассмотрим 8 утра, например. Оно меньше, чем 10 утра или оно меньше, чем 9 вечера?

BsX  Offline  Сообщение №1572 написано: 2 декабря 2016, 01:30


Полковник с парада


33
Joopeeter, меньше, чем 10 утра.

Я тебя проинтегрировал, я тебя и продифференцирую...
КсюXa  Offline  Сообщение №1573 написано: 2 декабря 2016, 02:31 | Отредактировано: КсюXa - 3 декабря 2016, 12:59


Гид по Мастерской


Цитата BsX

меньше, чем 10 утра.

и одновременно меньше, чем 9 вечера  ;)

 Некоторое время они не реагировали. Эдик курил, пуская дым в потолок, Витька неподвижно лежал на животе, а Роман бессмысленно смотрел на меня. Потом глаза его расширились.
- Полночь! - сказал он страшным шепотом.
Все вскочили.
(с)

   Ты рассматриваешь 8 утра, так, как будто распорядок дня таков: утро, день, вечер, ночь, новое утро и считаешь, что 8 часов нового утра больше чем 9 часов предыдущего вечера. Но ведь эти девять вечера остались в прошлых сутках! В полночь отчет начался заново. И в новых сутках 8 часов этого нового утра сравниваются уже с 9-ю вечера ЭТИХ новых суток и они меньше (8 < 21).
  К тому же у тебя стоит оператор "|| (Или)". Для примера опять же возьмем текущий момент 8 утра и посмотрим, что делает скрипт в этот момент времени:

Если 8 утра >=10 утра (неверно) ИЛИ 8 утра <= 21 вечера (верно) И если отключено (верно. Был изначально отключен)
включить лампу (Включает)
иначе если 8 утра >= 21 вечера (неверно) ИЛИ 8 утра <= 10 утра (верно) И если включено (верно. Был включен в предыдущей строке)
выключить лампу (выключает)

Упрощаем выражение, убрав подчеркнутое (как проигнорированное движком из-за неверности на данный момент) и получаем:

Если (8 утра <= 21 вечера (верно) И если отключено) (верно. Был изначально отключен)
включить лампу (Включает)
иначе если  (8 утра <= 10 утра (верно) И если включено) (верно. Был включен в предыдущей строке)
выключить лампу (выключает)

  Итог: обе строки скрипта одновременно в текущий момент соответствуют истине, обе срабатывают по очереди и оно так и получается - входит-выходит вкл\выкл каждую секунду. Первая включила - вторая тут же выключила. Первая обиделась и снова включила - вторая сказала - "Нет, моё" и снова выключила.

ЗЫ. Походу, в оригинальном скрипте из Картотеки происходит то же самое. Проверять на практике лень.

Ой, всё...
BsX  Offline  Сообщение №1574 написано: 2 декабря 2016, 04:01


Полковник с парада


33
КсюXa, да, в оригинальном то же самое. Я проверил сразу.

Добавлено (02 Декабря 2016, 07:01)
---------------------------------------------
КсюXa, ну вот так вот будет, получается.
 

Код
if GetCurrentTime >= 8 && GetCurrentTime <= 21 && GetDisabled == 1
    Enable
   elseif GetCurrentTime >= 21 || GetCurrentTime <=8 && GetDisabled == 0
    Disable

Я тебя проинтегрировал, я тебя и продифференцирую...
КсюXa  Offline  Сообщение №1575 написано: 2 декабря 2016, 06:33 | Отредактировано: КсюXa - 1 февраля 2018, 06:38


Гид по Мастерской



Ой, всё...
BsX  Offline  Сообщение №1576 написано: 11 декабря 2016, 14:44


Полковник с парада


33
Я создал рубильник, который включает источники света. Как сделать, чтобы он через какое-то время отключался?

Я тебя проинтегрировал, я тебя и продифференцирую...
КсюXa  Offline  Сообщение №1577 написано: 11 декабря 2016, 15:55 | Отредактировано: КсюXa - 11 декабря 2016, 15:56


Гид по Мастерской


Цитата BsX

Я создал рубильник, который.....    Как сделать, чтобы он через какое-то время отключался?

Свет или рубильник? :D Вопрос задан как-то двояко и расплывчато.
Если свет, то через какое время? И как выключался - навсегда или на определенное время? И если выключился - то что его должно включать обратно - тот же рубильник или он сам автоматически?
Если рубильник (ну в смысле - активировал, а он через N-ое время исчез) - тут уже другое.

Ой, всё...
BsX  Offline  Сообщение №1578 написано: 12 декабря 2016, 05:29


Полковник с парада


33
КсюXa, ну я создал генератор, который нужно починить. Только после этого рубильник начинает работать и можно включить свет. Но мне нужно, чтобы после включения рубильника, через какое-то время "выбивало пробки" и все отключалось. И нужно было заново прожать рубильник. И, кстати да, я уэе все сделал.)

Добавлено (12 Декабря 2016, 08:29)
---------------------------------------------
КсюXa, а как сделать, чтобы после прохождения определенной точки все напарники возвращались на базу?


Я тебя проинтегрировал, я тебя и продифференцирую...
MaxwellDemon  Offline  Сообщение №1579 написано: 12 декабря 2016, 08:43



104
BsX, поведение задаётся с помощью AI Packages.

BsX  Offline  Сообщение №1580 написано: 12 декабря 2016, 09:48


Полковник с парада


33
MaxwellDemon, ну и как это сделать? Мне нужно, что когда я наживаю на дверь и перемещаюсь на локацию, все напарники сразу удалялись и возвращались на базу.

Я тебя проинтегрировал, я тебя и продифференцирую...
КсюXa  Offline  Сообщение №1581 написано: 12 декабря 2016, 10:22 | Отредактировано: КсюXa - 12 декабря 2016, 15:34


Гид по Мастерской


Цитата BsX

Мне нужно... все напарники

  Напарники ванильные или модовые? Тут ведь как - ванильных напарников отслеживают переменные из их квестового скрипта (нанят\не нанят, ждет\ не ждет и т.п.). Как их отсеивать - это можно посмотреть в скрипте телепортера на Большую Гору из ДЛС ОВБ.
 Модовый напарник может быть сделан без всего этого, чаще всего он просто тупо добавлен в команду и всё. В этом случае его просто скриптово выгоняем из команды. И он останется перед дверью. А чтобы непись ушел к себе домой - как было сказано, нужно дать ему принудительный пакет АИ с указанием, где его дом.
  Если напарник именно такой, просто член команды, (или ноги команды, уж не знаю...) - то при прохождении игрока сквозь дверь, в скрипт двери вписать команду отсева компаньонов. Для этого надо заранее создать АИ-пакет ХХХ типа Travel с указанием маркера, куда непись должен отправиться, маркер тоже заранее скинуть в нужное место. Пакет неписю в профиль не давать. А в скрипте двери вписать команды:
Непись Реф.SetPlayerTeammate 0
НеписьРеф.addscriptpackage XXX
НеписьРеф.evp
  Это заставит этого самого НеписяРеф переоценить свое поведение и выполнить новый пакет путешествия к маркеру.

Ой, всё...
emo877  Offline  Сообщение №1582 написано: 21 декабря 2016, 09:11



49
Про нужные\ненужные уточнения объекта захотелось спросить, теоретически.
Есть многолетний, давно уже "в среднем" работающий(на ~80%), большой мод (в составе большой системы), который тащит в одиночку явно неглупый человек (я пытаюсь сказать, что не команда "лебедь-рак-щука", и не "артистическая натура", от которой можно ожидать случайных взбрыков).
И там есть тема определения\классификации прикида пц\нпц, решаемая через скрипт-эффекты с сотнями GetEquipped {имяСпискаКатегорииШмота}.
Очень долго были именно 'безличные' GetEquipped - но несколько бет назад бОльшая часть их "обросла" префиксами (nActor.GetEquipped .., причем этот реф явно получен вначале, от getself).
** причем бОльшая - в очень странной пропорции: в самом начале каждого скрипта пара GetEquipped осталась "без рефов", а затем ~180 - "уточнились".
В тамошнем сопровождающем треде я не нашел комментариев на эту тему, а спрашивать - ну, отчасти стесняюсь "отвлекать ерундой", отчасти опасаюсь длинной переписки на английском (чел весьма коммуникабелен, да мой уровень слабоват и мало времени постоянно там висеть-чатиться).
Так что, по вашему - что могло подвигнуть автора на такое уточнение? Смешная версия "страховка от развеивания эффекта, раз так много проверок" не катит, эффект нарочно длинный, в конце скрипта явный dispel стоит.

Artem13  Offline  Сообщение №1583 написано: 21 декабря 2016, 09:36


Mercenaries. Со смертью на ты.


emo877, обычно персонализация - страховка не от развеивания, а наоборот, от наложения на ненужные объекты. Видимо были случаи, когда в процессе работы скрипта подхватывался посторонний актор. Поэтому в начале и оставлены безликие - они после старта отрабатывают быстро и сбойнуть не успевают. Это чисто моё мнение, ессно.

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
PRIME124  Offline  Сообщение №1584 написано: 29 апреля 2017, 08:31



31
Здравствуйте, нужна помощь со скриптом включения/выключения света при определенном времени суток в игре (для фонарей на улице). Сам скрипт простенький и его образец в интернете я нашел. Но осталось два вопроса:
1) Как сделать, чтобы свет включался плавно (плавное нарастание яркости)?
2) Как сделать, чтобы вместе с появлением лампочки появлялся и эффект свечения, типа FXLightBeam или FXLightGlow?
Я хотел сделать скрипт аналогичный как в Нью-Вегасе, где и лампочка и эффект свечения привязаны к Х-Маркеру, ему присвоено имя и это имя упоминается в скрипте включения/выключения света, но там скрипт очень сложный. Буду очень благодарен за помощь.

tundruck73  Offline  Сообщение №1585 написано: 29 апреля 2017, 11:40 | Отредактировано: tundruck73 - 29 апреля 2017, 11:44



Я привязывал все источники света и "световые эффекты" типа LightBeam к маркеру (не забывая отметить чек-бокс initially disabled), давал ему уникальное имя, потом писал скрипт и вешал его на квест. В скрипте много разных маркеров упомянуто, ибо много локаций освещено, тот, который на моей картинке, в их числе:

Мосье, же не манж па сис жур...
Умер 23.04.2019
PRIME124  Offline  Сообщение №1586 написано: 29 апреля 2017, 12:50



31
tundruck73, я понял, то есть точно также как и в Нью-Вегасе. Просто там в скрипте много чего написано было, я не понял что там нужно было, а что нет. В твоем же примере всё понятно. Всё сводится к тому, что при достижении определенного времени происходит активация Х-маркера и привязанных к нему объектов. Я так понял?
Остался еще 1 вопрос - как сделать плавное зажигание лампочки?

tundruck73  Offline  Сообщение №1587 написано: 29 апреля 2017, 13:04



Да, все верно. Что касается плавного зажигания, то оно и так получается слегка растянутым по времени, так что, я полагаю, не нужно ничего дополнительно придумывать.

Мосье, же не манж па сис жур...
Умер 23.04.2019
PRIME124  Offline  Сообщение №1588 написано: 30 апреля 2017, 08:23



31
tundruck73, да нет, он резко включается. Ну да ладно, спасибо за помощь. А о плавном зажигании лампочки может кто-то другой подскажет.

Ipatow  Offline  Сообщение №1589 написано: 2 мая 2017, 00:30



Цитата PRIME124

как сделать плавное зажигание лампочки?


Плавное включение уличных фонарей при наступлении темноты делается при помощи использования солнечного света. На небе солнце заходит, в фонарях солнце восходит. Солнце для фонарей помещается в специальную погоду (например, [WTHR:000BC39B]). Эта погода назначается специальному региону (например, [REGN:000BC39D]). Хорошо его в отдельный мир засунуть (например, [WRLD:000B3625]). Для использования этот регион прописывается на закладку Emittance экземпляра (reference) любимого фонаря типа Light.

DEBILBOY  Offline  Сообщение №1590 написано: 16 июня 2017, 17:17



2
Доброго времени суток. Мне вдруг стало интересна одна вешь - возможно ли привязать эффект увеличения роста (на подобие команды "setscale") к силовой броне?
К примеру рост обычного персонажа равен 1, а если он наденет силовую броню, то его рост станет 1.3

P.S. я плохо разбираюсь в моддинге, работе со скриптами, поэтому и отправился сюда.

Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск:





Ответ на жалобу смотрите в разделе жалоб