Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.
ITU, если так, то хотя бы первый опрос убери в первый if.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Теоретически одного опроса на входе должно быть достаточно - всё равно кусок кода для меню нижнего уровня обработается в следующем фрейме после нового опроса. А скрипт компактнее и удобочитаемее становится. Надо смотреть, почему там двойное нажатие по сути отрабатывалось.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №724
написано: 25 мая 2012, 14:54
| Отредактировано: Joopeeter - 25 мая 2012, 14:55
Неа. Изменение LevMenuT сработает только в следующем фрейме, т.к. анализ его идёт в верхнем уровне и все присвоения внутри его иф/елзеиф.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Будьте добры, подскажите пожалуйста, как сделать главного героя бессмертным (без tgm). Я использовал один из ваших скриптов: scn GoodNPCScript BEGIN OnHit if (GetActorValue Health < 35) Resurrect endif ResetHealth END
Но корректно он действует лишь на иных npc. галочка у Essential действует схожим образом.
Jack_of_Blades, не проще ли сделать какую-то шмотку с бешенной защитой и эффектом регена и увеличение ХП? еще незнаю работает ли на ГГ SetEssential Player 1 можно так же как и лечение ГГ
Нет нет. Я хочу сделать нечто по типу умер и воскрес, а не tgm через GECK
Добавлено (31.05.2012, 22:34) --------------------------------------------- Весь косяк в камере и то, что гг после воскрешения стоит как манекен вместо того, чтобы поваляться пару секунд и дальше пойти
Всем привет. Подскажите плиз малограмотному. Вот есть стандартный скрипт на открывание двери убежища:
Code
scn GenericControlPodScript ;See V112 for generic setup.
short mode ref myLink
begin onActivate if IsActionRef player == 1 set myLink to getLinkedRef ;the linked ref should be the door. if ((myLink.getOpenState == 3) || (myLink.getOpenState == 1)) && mode != 2 ;door closed or open playgroup Forward 0 ;pull handle out set mode to 2 activate myLink ;activate all the things that this is an activate parent of - klaxon light and activator. endif endif end
begin gameMode
if (mode == 2) if (isAnimPlaying == 0) set myLink to getLinkedRef ;the linked ref should be the door. playgroup Left 1 ;pull handle down set mode to 3 myLink.activate player endif endif
end
а так же есть пара REF'ов (элементарная мигалка и её свечение). Как заставить рефы включаться вместе с открыванием двери, а после гаснуть через заданный промежуток времени? Простая активация - это получилось. А вот с отключением - никак. Помогите, кому не сложно. Заранее благодарен.
Изменение репутации для пользователя ITU
ITUOffline
Сообщение №734
написано: 20 июня 2012, 14:35
| Отредактировано: ITU - 21 июня 2012, 08:08
begin onActivate if IsActionRef player == 1 set myLink to getLinkedRef ;the linked ref should be the door. if ((myLink.getOpenState == 3) || (myLink.getOpenState == 1)) && mode != 2 ;door closed or open
playgroup Forward 0 set timer to 5 set mode to 2 activate myLink ;activate all the things that this is an activate parent of - klaxon light and activator. endif endif
end
begin gameMode
if (mode == 2) &&(timer > 0) set timer to timer - GetSecondsPassed else if (isAnimPlaying == 0) set myLink to getLinkedRef ;the linked ref should be the door.
playgroup Left 1 ;pull handle down set mode to 3 myLink.activate player endif endif
Но другое: один из рефов - Klaxon. Это "мигалка". Т.е. он должен быть виден всегда. Но он анимированный, т.е. мне бы включать и отключать его анимацию. Сорри за тафтологию.
один из рефов - Klaxon. Это "мигалка". Т.е. он должен быть виден всегда. Но он анимированный, т.е. мне бы включать и отключать его анимацию.
В стандартном мигалкином скрипте (KlaxonLightScript) уже всё есть для включения-выключения, нужно только назназначить ей Activation Parent и каждый раз при его активации либо включится, либо выключится. В том же скрипте можно подглядеть и команду на выключение - PlayGroup backward 0.
В стандартном мигалкином скрипте (KlaxonLightScript) уже всё есть для включения-выключения, нужно только назназначить ей Activation Parent и каждый раз при его активации либо включится, либо выключится. В том же скрипте можно подглядеть и команду на выключение - PlayGroup backward 0.
За подсказку спасибо. Но как это всё свести вместе? Задачка вроде простейшая: при активации пульта управления дверью убежища, ессно открывается дверь, но ещё хотелось бы, чтоб автоматом включался этот клаксон, а секунд через 15 бы гас. А в этом варианте либо-либо.
Изменение репутации для пользователя ITU
ITUOffline
Сообщение №738
написано: 21 июня 2012, 07:53
| Отредактировано: ITU - 21 июня 2012, 08:03
Добавлено (21.06.2012, 12:05) --------------------------------------------- Попробую спросить иначе. Как связать меж собой три реально представленых в игре готовых объекта: пульт управления дверью убежища, саму дверь и "Klaxon.nif". дверь с пультом - там всё просто, скрипты уже прописаны. Так как добавить в готовый скрипт активацию этого клаксона с отключением его с задержкой по времени? Первый вариант с таймером работает прекрасно, но один ньюанс: он активирует не "включение и вращение" мигалки, а только "вращение", мигалка оказывается "включеной" по умолчанию, т.е. уже светиться. Я просто запутался, решение наверняка простейшее.
Менять надо скрипт не на выключателе, а на мигалке! scn zzzKlaxonLightScript
float timer short state ; 0 = off, 1 = flashing
begin OnLoad if state == 1 playgroup left 0 else playgroup backward 0 endif end
begin onActivate set timer to 10 if state == 1 set state to 0 playgroup backward 0 else set state to 1 playgroup forward 1 endif end
begin gamemode
if state == 1 if timer>0 set timer to timer - GetSecondsPassed else playgroup backward 0 set state to 0 endif if isAnimPlaying == 0 playgroup left 0 endif endif
Привет всем! Подскажите пожалуйста скрипт, начала игры в новом месте, не в доме в дока, а в другой локации. Как в модах с альтернативным началом. Я ещё сам поищу, если найду напишу пока. Пока. Нашёл для Fallout 3 теперь новая задача открыть esp. Fallout 3 то не установлен!
нашёл написанный вариант скрипта с таким комментарием Graf
Хм, прийдётся делать около трёх новых квестов.
Код:
short State short Button short StartOption float Delay
begin GameMode if State == 0 set Delay to GetSecondsPassed set Delay to 2 set State to 2 elseif State == 2 set Delay to Delay - GetSecondsPassed if Delay <= 0 set State to 3 ShowMessage aaaMessageStartSelect endif elseif State == 3 set Button to GetButtonPressed if Button > -1 set State to 2 StopQuest AltStartSelector if iButton == 0 set StartOption to 1 setstage CG01 0 elseif iButton == 1 set StartOption to 2 set gameyear to 2274 set gamemonth to 7 set gameday to 3 set gamehour to 10 Player.MoveTo aaaStartMarker EnablePlayerControls ClearNoActivationSound SetPCYoung 0 StartQuest aaaStart endif endif endif end
ShowMessage aaaStartSelect ; сообщение при старте игры (выбор) if iButton == 0 ; продолжить обычный старт elseif iButton == 1 ; начать новую линейку квестов
; Выбор времени в котором находится player set gameyear to 2274 ; год set gamemonth to 7 ; месяц set gameday to 3 ; день set gamehour to 10 ; время Player.MoveTo aaaStartMarker ; перемещение на маркер EnablePlayerControls ClearNoActivationSound SetPCYoung 0 StartQuest aaaStart ;Установка стадии 0
Это скрипт на первый квест.
Обезательно сделаешь пройденным квест у доктора Митчела.
А как сделать квест у доктора Митчела пройденным и зачем нужны три квеста?
Квестов нужно ровно столько, сколько совесть позволит. В простейшем случае можно обойтись одним квестом и одним скриптом, который по очереди покажет все меню создания персонажа и выкинет игрока пинком под зад куда-нибудь в игровой мир. А чтобы нормально оформить генерацию персонажа, не уступающую оригиналу, да ещё потом логично и красиво увязать новое начало с основным сюжетом (если не предполагается вообще заменить его весь на новый), может и трёх квестов не хватить. Да ещё, как пить дать, придётся лезть в оригинальные квесты и скрипты. И даже лучше, по-моему, переиначить оригинальный стартовый квест под свои нужды. Ведь понятно, что если игрок подключил мод с альтернативным началом, то не для того, чтобы начинать опять по-старому.
на все надо каждую вещь смотреть и вписывать, просто дать это много много текста оружие и одежда имеет урон, поэтому либо писать скрипт узнавание урона и добавление вещи с этим уроном в контейнер, что еще больше по размерам скрипт и больше нагрузку на комп, либо использовать NVSE Стандартный скрипт сортировки одной вещи:
Code
Short Count
Begin OnActivate Set Count to (Player.GetItemCount ид_вещи) Player.RemoveItem ид_вещи Count 1 реф_контенера.AddItem ид_вещи Count 1 end
Привет всем! Помогите пожалуйста разобрать с тем, как можно сделать оружие сверхпрочным. Я нашел такие функции: На оф сайте GetWeaponHealth, но без описания А в игре есть if player.getHealthPercentage < .5 И set WeapHealth to WeapHealth + 15 Можно написать скрипт, что при состоянии износа оружия 50 процентов производилась замена на новое в инвентаре игрока? Если можно напишите пожалуйста. Я пробовал в Weapon Health сделать 999999, после закрытия окна и нового открытия там стало 100000000 А на карабине в игре вот такая картинка Где значение жизни (состояния) я не понял! Пока.
Привет всем! Помогите пожалуйста разобрать с тем, как можно сделать оружие сверхпрочным. Я нашел такие функции: На оф сайте GetWeaponHealth, но без описания А в игре есть if player.getHealthPercentage < .5 И set WeapHealth to WeapHealth + 15 Можно написать скрипт, что при состоянии износа оружия 50 процентов производилась замена на новое в инвентаре игрока?
if player.getHealthPercentage < .5 - это здоровье ГГ, а не оружия. GetWeaponHealthPerc - состояние оружия, которое находится у актера в руках. if player.GetWeaponHealthPerc < 50 - это проверка состояния оружия у игрока. Какое именно оружие в руках у ГГ Вы без НВСЕ не узнаете, хотя я могу и ошибаться. Поэтому оружие проще не заменять, а лечить:
Code
if player.GetWeaponHealthPerc < 50 player.SetWeaponHealthPerc 50 endif
Примерно так, в игре не проверял. Еще раз напоминаю, речь идет не об оружии в инвентаре, а о сurrently equipped. Строка состояния оружия - белая полоска внизу, справа от ССТ.
====================== Мод "Нью-Йорк" на русском: 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