Вверх Вниз


Модератор форума: Ipatow  
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Скрипты
a3apbi4  Offline Сообщение №1 написано: 07 Декабря 2010 в 21:01 | Отредактировано: ApeX - Среда, 16 Мая 2018, 19:38


Странник


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




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


Странник


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

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



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

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

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

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


Странник


15
усек)

Zess  Offline Сообщение №1564 написано: 06 Ноября 2016 в 18:01 | Отредактировано: Zess - Воскресенье, 06 Ноября 2016, 18: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 написано: 07 Ноября 2016 в 03:52 | Отредактировано: ITU - Понедельник, 07 Ноября 2016, 03:59



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

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

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


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


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

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

Раньше я мечтала, что приедет принц на белом коне и заберет меня. Теперь об этом мечтает мой муж…
MaxwellDemon  Offline Сообщение №1567 написано: 24 Ноября 2016 в 20:15 | Отредактировано: MaxwellDemon - Четверг, 24 Ноября 2016, 20: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 в 17:37 | Отредактировано: КсюXa - Суббота, 26 Ноября 2016, 09:17


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


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

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

Раньше я мечтала, что приедет принц на белом коне и заберет меня. Теперь об этом мечтает мой муж…
Joopeeter  Offline Сообщение №1569 написано: 30 Ноября 2016 в 23:42


_


966
Цитата КсюXa ()
сижу, чешу репу...

И как, помогает? :) В смысле актуально ещё?

Цитата Ксю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 написано: 01 Декабря 2016 в 15:46 | Отредактировано: BsX - Четверг, 01 Декабря 2016, 15:51


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


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

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

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

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


_


966
Цитата BsX ()
Свет начал просто мигать с огромной частотой.

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

BsX  Offline Сообщение №1572 написано: 02 Декабря 2016 в 04:30


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


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

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


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


1039
Цитата 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 написано: 02 Декабря 2016 в 07: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 написано: 02 Декабря 2016 в 09:33 | Отредактировано: КсюXa - Четверг, 01 Февраля 2018, 09:38


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


1039

Цитата BsX ()
ну вот так вот будет, получается.

Да. Нужно ведь одни и те же сутки считать от полуночи до полуночи, т.е. - с 0000 до 2400 часов. И цифры рассматривать именно в таком диапазоне, от 0 до 24.
Время с 10 утра до 9(21) вечера будет как (GetCurrentTime >= 10 утра И GetCurrentTime <= 21 вечера).
А все остальные часы в сутках  будут ИЛИ (или меньше 10 утра или больше 21 вечера)

ЗЫ. В Картотеке подправила.

Раньше я мечтала, что приедет принц на белом коне и заберет меня. Теперь об этом мечтает мой муж…
BsX  Offline Сообщение №1576 написано: 11 Декабря 2016 в 17:44


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


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

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


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


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

Раньше я мечтала, что приедет принц на белом коне и заберет меня. Теперь об этом мечтает мой муж…
BsX  Offline Сообщение №1578 написано: 12 Декабря 2016 в 08:29


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


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

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


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


Обращённый


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

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


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


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

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


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


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

Раньше я мечтала, что приедет принц на белом коне и заберет меня. Теперь об этом мечтает мой муж…
emo877  Offline Сообщение №1582 написано: 21 Декабря 2016 в 12:11



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

Artem13  Offline Сообщение №1583 написано: 21 Декабря 2016 в 12:36


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


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


Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
PRIME124  Offline Сообщение №1584 написано: 29 Апреля 2017 в 11:31



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

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


Мастер


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

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



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

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


Мастер


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

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



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

Ipatow  Offline Сообщение №1589 написано: 02 Мая 2017 в 03:30



2283
Цитата PRIME124 ()
как сделать плавное зажигание лампочки?

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

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


Странник


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

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

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