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

Скрипты
a3apbi4  Offline  Сообщение №1 написано: 7 Декабрь 2010, 21:01



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




Spalny_Vagon  Offline  Сообщение №871 написано: 10 Декабрь 2012, 01:27


Мастер


Цитата valambar

А как такая функция звучит?


Я не знаю, что конкретно Вы хотите проверить. Как пишется функция, с помощью которой можно проверить, висит ли на ком-либо какой-нибудь эффект (любой, а не только actor-effect), я уже показал в сообщении #881. А звучит примерно так: "из спел тагет". :)

======================
Мод "Нью-Йорк" на русском: 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
valambar  Offline  Сообщение №872 написано: 13 Декабрь 2012, 22:58



485
В общем, продолжил я поиски. Сначала попробовал наложить скрипт на вещь. Оказалось, что сохраняется скрипт только при употреблениии функции GetDisease SleepDeprivation600 (это я для примера взял). В общем, суть скрипта выглядела так:

if player.GetDisease SleepDeprivation600 == 1
player.UnequipItem IDmyitem
endif

Все это было в блоке Gamemode

Скрипт сохранился, но в игре ничего не срабатвывало - как вещь была надета, так и осталась.

Попробовал сделать это частью квестового скрипта - то же самое, другие команды этого скрипта срабатывали, а это - нет.

Попробовал всунут этот блок в базовый эффект с ассоциированным итемом Скрипт в блоке ScriptEffectUpdate, добавил его в актор-эффект самой депривации сна - тоже не работало.

Где это вообще может сработать и как?

Graf  Offline  Сообщение №873 написано: 14 Декабрь 2012, 00:19



179
valambar, не понятно что именно нужно, сурипт будет с разными функциями работать. Тебе при какой нужно снятие брони? Что должно произойти для снятия одежды?

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Spalny_Vagon  Offline  Сообщение №874 написано: 14 Декабрь 2012, 02:44


Мастер


Цитата valambar

Скрипт сохранился, но в игре ничего не срабатвывало - как вещь была надета, так и осталась.


А попробуйте спросить у движка напрямую, какой у ГГ текущий голод:
if player.getAV hunger >= 600

======================
Мод "Нью-Йорк" на русском: 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
valambar  Offline  Сообщение №875 написано: 14 Декабрь 2012, 17:46 | Отредактировано: valambar - 14 Декабрь 2012, 17:48



485
Цитата Graf

valambar, не понятно что именно нужно, сурипт будет с разными функциями работать. Тебе при какой нужно снятие брони? Что должно произойти для снятия одежды?



Определенный уровень потребности в сне - конкретно критическая депривация.

ITU  Offline  Сообщение №876 написано: 15 Декабрь 2012, 19:18



995
напомните где можно глянуть каким коммандой работы вырубаются.
Мистер памошник отрубает свой гравитационный двигатель и садитсяю
или саму комманду

Spalny_Vagon  Offline  Сообщение №877 написано: 15 Декабрь 2012, 23:05


Мастер


Цитата ITU

или саму комманду


SetUnconscious 1
Посмотреть можно perk "роботехник", в частности.

======================
Мод "Нью-Йорк" на русском: 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
Solid_Snake  Offline  Сообщение №878 написано: 17 Декабрь 2012, 22:08


Extremely Solid


289
Добрый вечер!
Возможно ли сделать так, чтобы на существо (Босса) не действовали консольные команды, такие как Kill, Disable и прочие? Хочу сделать что-то вроде защиты от читов для определенного босса :D


Кто успел - тот утащил.
Asedael  Offline  Сообщение №879 написано: 17 Декабрь 2012, 22:40



Solid_Snake, если честно, сделать можно - но что мешает взять debug_mega_pistol и просто застрелить этого босса?

Solid_Snake  Offline  Сообщение №880 написано: 17 Декабрь 2012, 22:46


Extremely Solid


289
Cascade,
А я допустим, в плагине с боссом изменю этот пистолет и поставлю ему урон 0 ^_^


Кто успел - тот утащил.
JupiterJour  Offline  Сообщение №881 написано: 17 Декабрь 2012, 22:58


_


Против Kill и Disable вот так можно:

Но этот способ также оживит убитого или развоплощённого не с консоли, а каким-либо скриптом.
Ещё можно было сделать, чтобы после оживления здоровье сбрасывалось на тот уровень, который был до применения Kill, но я намеренно не стал - смерть читерам! :)

Solid_Snake  Offline  Сообщение №882 написано: 17 Декабрь 2012, 23:27


Extremely Solid


289
Joopeeter,
Вот это мне подходит, спасибо большое! ^_^
Надоело уже все время броню делать, да к Доку ее ложить, надо придумать что-то новое! Мвухахаха! lol


Кто успел - тот утащил.
RustWays  Offline  Сообщение №883 написано: 30 Декабрь 2012, 19:38



scn RaTestExSCRIPT

float Timer
float timerLimit
short step
short timerOn
short doShockwave1x
short doGlassBurst1x
short controlsLocked
float controlsTimer

begin onLoad

set timerLimit to 20

end

begin onActivate
if IsActionRef player == 1
if step == 0
playgroup forward 0
set step to 1
Activate

elseif step == 2
set controlsTimer to 30
set controlsLocked to 1
DisablePlayerControls
playgroup backward 0
set step to 3
endif
endif
end

begin gameMode

if controlsLocked == 1
if controlsTimer <= 0
set controlsLocked to -1
EnablePlayerControls
else
set controlsTimer to controlsTimer - getSecondsPassed
endif
endif

if step == 1 && isAnimPlaying == 0
playgroup left 0
set step to 2
elseif step == 3 && isAnimPlaying == 0
MarkerRef.placeatme 40mmGrenadeExplosion
imod MegatonNukeISFX
playgroup backward 1
set timerOn to 1
set Timer to 0

player.playIdle MS11ShieldsEyes

set step to 4

endif

if timerOn == 1

if Timer >= timerLimit
set timerOn to 0
player.stoplook

elseif Timer > 4.11 && doGlassburst1x == 0
set doGlassBurst1x to 1

elseif Timer > 4.9 && doShockwave1x == 0
MarkerRef.placeAtMe RGreExpl
player.playIdle MS11MTHitHeadA
set doShockwave1x to 1

elseif Timer > 8

elseif Timer < timerLimit
set Timer to (Timer + getSecondsPassed)
endif

endif

end

Скажите в чем проблема?
Пытаюсь сохранить-никак. Делал по совету графа...
RGreExpl имя маркера
40mmGrenadeExplosion имя взрыва.



Как сделать триггер перемещения: входишь в триггер, выходишь в другом месте?

Galko  Offline  Сообщение №884 написано: 31 Декабрь 2012, 09:48


GALAктическая мартышка


Цитата The_Riff

Пытаюсь сохранить-никак.


А при сохранении редактор скриптов на какую линию ругается? ну, типа там: бла-бла-бла, на line 6 какая-то фигня.

Ваше счастье, что я не ваше счастье
RustWays  Offline  Сообщение №885 написано: 31 Декабрь 2012, 13:27 | Отредактировано: The_Riff - 31 Декабрь 2012, 13:54



Цитата Galko

А при сохранении редактор скриптов на какую линию ругается


Нет. Редактор твой, ни на что не жалуется.

Поставил глюкоправ: MarkerRef.placeatme RGreExpl строка.

Spalny_Vagon  Offline  Сообщение №886 написано: 31 Декабрь 2012, 14:53


Мастер


Цитата The_Riff

MarkerRef.placeatme RGreExpl строка.


Если ругается именно на эту строку, значит либо MarkerRef отсутствует в списке persistent reference, либо RGreExpl в списке базовых имен. Скорее всего, последнее.

======================
Мод "Нью-Йорк" на русском: 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
RustWays  Offline  Сообщение №887 написано: 1 Январь 2013, 17:38



Spalny_Vagon, да я уже разобрался. Надо было МаркерРеф на "РГанВзрыв" поменять.

Добавлено (01.01.2013, 16:08)
---------------------------------------------

Цитата Galko

moveto [refID маркера]


Код
scn AAARFromLa

Begin OnTriggerEnter player
player.moveto ToLAA
End

Like that? Не работает(

Добавлено (01.01.2013, 17:38)
---------------------------------------------
И еще: есть ли команда на автоматический переход от третьего лица?


Graf  Offline  Сообщение №888 написано: 3 Январь 2013, 02:25



179
The_Riff, есть, она как бы нвсе, tapcontrol 13.

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
RustWays  Offline  Сообщение №889 написано: 3 Январь 2013, 15:05



Цитата The_Riff

scn AAARFromLa

Begin OnTriggerEnter player
player.moveto ToLAA
End


Graf, А с этим поможешь?

Graf  Offline  Сообщение №890 написано: 3 Январь 2013, 18:27



179
The_Riff, а на что телепортируется? На чем стоит реф ссылка?

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
RustWays  Offline  Сообщение №891 написано: 3 Январь 2013, 22:19



А реф стоит на Xmarkerheading в который по моим расчетам должна произойти телепортация.
Может я просто неправильно делаю тригер? Но я не умею его делать.

Galko  Offline  Сообщение №892 написано: 3 Январь 2013, 22:57 | Отредактировано: Galko - 3 Январь 2013, 23:33


GALAктическая мартышка


Цитата The_Riff

Может я просто неправильно делаю тригер? Но я не умею его делать.


Грузишь в рендер ту локацию, куда должен телепортироваться игрок. Скидываешь туда и размещаешь, где задумал, маркер, хоть х-маркер, хоть маркер хединг. Разница между ними только в направлении взгляда игрока, когда он переместится к этому маркеру. Если стоит Х-маркер, то игрок после попадания на этот маркер будет по умолчанию обращен лицом к Мекке к северу. А если стоит хединг-маркер - то будет обращен лицом туда, куда указывает стрелка на маркере. Короче: скинул маркер - дал ему реф-имя ToLAA как у тебя в скрипте (правда, обычно сначала создают\размещают и дают имена реф-объектам, а уж потом их начинают прописывать\указывать в создаваемых скриптах, но раз уж у тебя уже есть скрипт...). Потом грузишь в рендер ту локацию, откуда будет телепортироваться игрок. Выбираешь место, приближаешь поближе. После на панели инструментов выбираешь кнопку создания триггеров, эта та кнопка, на которой нарисован куб с буквой Т внутри. В рендере очерчиваешь курсором при нажатой ЛКМ квадрат на земле, отпускаешь кнопку, и слегка двигаешь мышью вверх, чтобы квадрат вытянулся до куба. Снова клик ЛКМ - выскакивает окно с предложением выбрать активатор для этого триггера. Отмечаешь там чек-пойнт New, вписываешь в строку ID своё любое новое имя (на инглиш) затем в строке Script этого активатора (там будет стоять слово NONE) справа от неё жмешь кнопку с нарисованными тремя точками, т.е. - создать новый скрипт. Откроется редактор скриптов. Пишешь скрипт, как у тебя описан выше:
scn AAARFromLa

Begin OnTriggerEnter player
player.moveto ToLAA
End

Сохраняешь скрипт, потом жмешь ОК в окне активатора. Окно закроется. Затем тут же, в рендере, в локации с этим новым триггером кликаешь дважды на этом триггере (курсор должен иметь вид простого крестика, но не крестика в рамке!!) и в открывшемся окне настроек этого триггера жмешь кнопку Edit Base. Откроется окно твоего нового активатора и в этом окне в строчке Script выбираешь в выпадающем списке свой, только что созданный, скрипт AAARFromLa. Закрываешь все окна, сохраняешь плагин. Все должно работать, я только что проверила. :)

Ваше счастье, что я не ваше счастье
RustWays  Offline  Сообщение №893 написано: 4 Январь 2013, 00:01



Видимо проблема как раз в том, что создается не триг с буквой т. А вот рафы первоначально созданы по принципу: в тоннель, из тоннеля, в город, в городе. Проверю-отпишусь.
Скрипт-все-же идея намного лучше, чем у обсидианов с невидимыми дверьми.

Galko  Offline  Сообщение №894 написано: 4 Январь 2013, 05:46


GALAктическая мартышка


Цитата The_Riff

в том, что создается не триг с буквой т


Не поняла... Создаваться должен обычный полупрозрачный куб или параллелепипед, в зависимости от того, как ты его "растянешь". Без всяких букв Т на нем. Это только на кнопочке создания триггеров нарисована буква Т, чтобы отметить, что эта кнопочка служит для создания именно Триггеров.

Ваше счастье, что я не ваше счастье
Solid_Snake  Offline  Сообщение №895 написано: 5 Январь 2013, 07:59


Extremely Solid


289
Всем привет! Не поможете со скриптом? В общем задумка не много необычная. Нужно чтобы существо на грани смерти, к примеру когда здоровье меньше или равно 1 не умирало, а проиграло анимацию (Например падает на землю) и становится неуязвимым. Далее идет таймер на 60 секунд, после чего здоровье существа восстанавливается до максимума и он проигрывает вторую анимацию (Встает в свою обычную Idle позу). И далее продолжает заниматься своими делами. Если, что анимация есть.


Кто успел - тот утащил.
Graf  Offline  Сообщение №896 написано: 6 Январь 2013, 17:54



179
Solid_Snake, а не проще убивать и воскрешать через 60 сек?

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Solid_Snake  Offline  Сообщение №897 написано: 6 Январь 2013, 18:12


Extremely Solid


289
Graf,
Так при воскрешении существо появляется заново т.е. игроку будет видно как он создается из воздуха :D Я хочу чтобы он при воскрешении проигрывал анимацию "вставания с земли", а не тупо появлялся в Idle позе, когда он секунду назад не земле лежал.
Я тут подумал: а что если сделать его просто не убиваемым т.е. при смерти он будет без сознания, но при этом мне все еще нужно, чтобы он проиграл анимацию "А" когда он теряет сознание. А когда он приходит в сознание, то чтобы проигрывал анимацию "B". В итоге получаем: игрок его убивает, монстр падает на землю (Анимация "А") без сознания, проходит время и он встает(Анимация "B").
Можно-ли в скрипте задать проверку на состояние "без сознания"? И можно-ли увеличить время нахождения в состоянии "без сознания"? Я в скриптах бум-бум, но хочу реализовать свою задумку :D


Кто успел - тот утащил.
ITU  Offline  Сообщение №898 написано: 20 Январь 2013, 19:02



995
можно как-то определить какую сторону выбрал ГГ в главном сюжете. Йес мана, Хаоса, Цезаря или НКР ?

rizys-mod  Offline  Сообщение №899 написано: 22 Январь 2013, 15:24


Команда "Rizys-Mod"


250
ITU, а разве проверок на стадии нет? Я думаю разрабы как-то предусмотрели при определении.

Команда "Rizys-mod" - разработка плагинов на Fallout.
ITU  Offline  Сообщение №900 написано: 22 Январь 2013, 15:56



995
rizys-mod, стадия, на на то и стадия, что временная
по завершение квеста, квест копликт
думаю сделать по завершению пару квестов разных сторон сделать определение...

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





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