Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.
Обнаружил, что не знаю как заметить cellchange (interiors в основном). Пока спасаюсь сравнением числа npc (getNumRef 42), но это очень несерьезно. Потребность в обнаружении уровня "лучше перебдеть" (надо приостанавливать секунд на 5 скрипт чтобы пц не "получал по морде" ещё до окончания загрузки локации, знаете же эту "особенность" движка - ещё крутится "загрузка", а события уже продолжаются). (EDIT: 25jul) прочитал про menumode 1007 ("loading") - буду пробовать.
Ещё вопрос -- у одного неглупого человека увидел "rand 1000 1" (штук 6 вхождений), показалось странным, в документации на nvse сказано просто "randmin max". Из 10 вызовов получил 10 раз по 1 (nvse3b2). Может, в предыдущих версиях была какая-то особенность? Или мне писать ему об ошибке? (у него такой гигантский многолетний ongoing, что неудобно "лаять на неправильное дерево" ;))
Begin GameMode if getdead == 1 && doOnce == 0 set doOnce to 1 set Timer to 120 endif
if (Timer > 0) && (doOnce == 1) set Timer to (Timer - GetSecondsPassed) elseif (doOnce == 1) aaaAttackMarkerREFF007.PlaceAtMe LvlFiend2MeleeVarNVaaa008 1, 250, 1 set doOnce to 2 endif End ---------------------------------------------------------------------------
Изменение репутации для пользователя tundruck73
tundruck73Offline
Сообщение №964
написано: 26 июля 2013, 00:38
| Отредактировано: tundruck73 - 26 июля 2013, 01:04
Ну так сделай пакет для этого рейдера с маршрутом и давай ему после появления или сразу пропиши, он и будет блуждать, а маршрут задается именно в пакете АИ. Вроде так.
Frostik, даешь своему рейдеру пакет Patrol, предварительно расставив по нужному маршруту XMarker`ы. Соединяешь последовательно эти маркеры через их Linked Ref, в пакете указываешь в качестве цели первый из маркеров. В Patrol Data маркеров можно настроить время нахождения непися на каждом из маркеров и еще много чего. Если в пакете будет выбрана какая-нибудь анимация, на каждом из маркеров непись будет ее проигрывать. Вот, собственно, и все.
Добрый вечер! Ме нужна помощь со скриптом! Нужно чтобы при захождении Главного Героя в определенную локацию или тиггер, он мог двигаться только в присяди. Буду очень благодарен!
Нужно чтобы при захождении Главного Героя в определенную локацию или тиггер, он мог двигаться только в присяди.
Spalny_Vagon, а если при входе в локации или триггер, заставить непися выполнять AI пакет, в котором включена галка Always Sneak (всегда красться). Я не знаю работает она или нет, но что такая есть я знаю.
Мы вышли из дома, когда во всех... Поздно вышли!
Изменение репутации для пользователя Spalny_Vagon
Spalny_VagonOffline
Сообщение №972
написано: 28 июля 2013, 08:57
| Отредактировано: Spalny_Vagon - 28 июля 2013, 08:58
заставить непися выполнять AI пакет, в котором включена галка Always Sneak (всегда красться).
Речь шла о ГГ, а не о НPC. У ГГ можно отключить возможность красться командой disablePlayerlControl с параметром. А отключить возможность прямохождения нельзя. Его тоже можно заставить выполнять АИ-пакет с галкой sneak, но в этом случае надо будет полностью отключать управление игроком. Что еще можно сделать, я не знаю. Ну, разве что убить, если он вдруг встанет там, где не положено.
====================== Мод "Нью-Йорк" на русском: 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
Жаль, но все равно спасибо! И мне нужна помощь ещё с одним скриптом. Вряд ли этот скрипт будет сложным. Нужно сделать что-то наподобие лифта, нужно чтобы при активации он ехал вниз или вверх, в зависимости от того, где он сейчас находиться. Подобный скрипт я видел в FALLOUT 3, лифт в монументе Вашингтона, но здесь будет гораздо проще, ведь в движение будет всего 2 предмета. Скрипты сложная вещь, поэтому я прощу помощи у вас. Помогите пожалуйста!
Изменение репутации для пользователя KAIN48
KAIN48Offline
Сообщение №974
написано: 28 июля 2013, 14:40
| Отредактировано: KAIN48 - 28 июля 2013, 14:42
SerG_8 привет! Graf делал лифт, в котором платформа поднимает игрока вверх после включения выключателя, и отпускает вниз после активации второго выключателя. Насколько я помню платформа движется вместе с коллизией, поэтому игрок может свободно перемещаться в пределах платформы во время подъёма. Лифт в Монументе Вашингтона сделан по другому, вроде там игрока лишают управления и он может только осматриваться вокруг. Не помню! Поправьте если ошибаюсь. А лифт Graf работает, как настоящий лифт. Это ссылка на архив с моделью и тестовым esp Скачать Лифт находится в Гаморе Если будешь искать в GECK введи в поле фильтра aaaTestElevator и выбери ALL в дереве папок окна Object Window Найдуться - сам лифт aaaTestElevator - обрати внимание модель Movable Static, если будешь менять модель на свою делай из неё же, сменив путь к своёму nif. Насколько я помню модель из раздела статика работать не будет. Там же будут найдены два скрипта и два выключателя на которых и "висят" эти скрипты. И ещё есть один XMarker (aaaTestElevatorMarker01Ref) Скрипты на вид не особо сложные - наверное разберёшься. Я не смог! Но у меня личная неприязнь с ними! Если будут вопросы спрашивай у Graf здесь Сайт Правда он давно на MG не был, наверное занят. Пока.
Я как-то глядел на Обливион через Construction Set, так там вроде подъёмники - обычные анимированые активаторы, проигрывают при активации PlayGroup forward и PlayGroup backward, никаких особых хитростей. Интересно, куда они делись в Фоллауте?
Вот, появился новый вопрос: имеется скрипт (не мой)
Код
scn TTWCG00Script
short iMessageShown short iMessageToShow short iButtonPressed short iAwaitingInput short iGameChoice ;1 = start in NV, 2 = Start in CW short iDoOnce float fTimer
begin gamemode
; After player move to TTWPlayerStartMakerREF, gamemode starts. Now pick the real start if (iMessageShown) else if (iMessageToShow == 0) set iMessageShown to 1 set iAwaitingInput to 1 set fTimer to 5 ShowMessage TTWNewGameStartMSG elseif (iMessageToShow == 1) ;Timed out or interupted by another messagebox so buttonpressed invalid set iMessageShown to 2 set iAwaitingInput to 1 set fTimer to 5 ShowMessage TTWNewGameStartTryAgainMSG ;Explain to player so they don't think we're stupid. endif endif
if (iAwaitingInput) set iButtonPressed to GetButtonPressed if (iButtonPressed > -1) set iAwaitingInput to 0
if (iMessageShown) if (iButtonPressed == 0) ;New Vegas set iGameChoice to 0 setstage VCG00 0 elseif(iButtonPressed == 1) ;Fallout 3 set iGameChoice to 0 setstage CG00V101 0 endif endif endif endif
if (fTimer > 0) set fTimer to fTimer - GetSecondsPassed else if (iGameChoice == 0) set iMessageToShow to 1 set iMessageShown to 0 set iAwaitingInput to 0 endif endif
if (iGameChoice) StopQuest TTWCG00 endif
end
Как я понял, мессадж TTWNewGameStartMSG появляется лишь раз, когда скрипт активируется в первый раз. Надо сделать так, чтобы этот мессадж появлялся и при второй активации скрипта. Как это сделать? Ещё меня смущает остановка квеста TTWCG00, она же тоже повлияет?
Изменение репутации для пользователя Artem13
Artem13Offline
Сообщение №978
написано: 16 сентября 2013, 15:51
| Отредактировано: Artem13 - 16 сентября 2013, 15:51
Вис, вторая и последующие активации данного скрипта будут во втором и последующем фреймах (кадрах). Т.е. фактически регулярно пока ты находишься в игре и не открыто ни одно меню (инвентарь, крафт, диалог и прочие). Поэтому пока ты не расскажешь, в какие моменты ты хочешь активировать скрипт, толком тебе посоветовать ничего нельзя. И на чем скрипт то висит?
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя Вис
ВисOffline
Сообщение №979
написано: 16 сентября 2013, 17:15
| Отредактировано: Вис - 16 сентября 2013, 17:17
На квесте. Рассказываю всё в подробностях: этот мод для выбора пустоши в начале игры (если установлен TTW). А мне нужно, чтобы это сообщение появлялось ещё раз при активации двери.
А мне нужно, чтобы это сообщение появлялось ещё раз при активации двери.
Тогда ориентировочно так: 1. Создаешь копию скрипта и меняешь его тип с Quest на Object (если не ошибаюсь) 2. Изменяешь имя скрипта и немного правишь его:
Код
scn TTWCG00DoorScript
short iMessageShown short iMessageToShow short iButtonPressed short iAwaitingInput short iGameChoice ;1 = start in NV, 2 = Start in CW short iDoOnce float fTimer
begin OnActivate player
if (iMessageShown) else if (iMessageToShow == 0) set iMessageShown to 1 set iAwaitingInput to 1 set fTimer to 5 ShowMessage TTWNewGameStartMSG elseif (iMessageToShow == 1) ;Timed out or interupted by another messagebox so buttonpressed invalid set iMessageShown to 2 set iAwaitingInput to 1 set fTimer to 5 ShowMessage TTWNewGameStartTryAgainMSG ;Explain to player so they don't think we're stupid. endif endif end
begin gamemode
if (iAwaitingInput) set iButtonPressed to GetButtonPressed if (iButtonPressed > -1) set iAwaitingInput to 0
if (iMessageShown) if (iButtonPressed == 0) ;New Vegas set iGameChoice to 0 setstage VCG00 0 elseif(iButtonPressed == 1) ;Fallout 3 set iGameChoice to 0 setstage CG00V101 0 endif endif endif endif
if (fTimer > 0) set fTimer to fTimer - GetSecondsPassed else if (iGameChoice == 0) set iMessageToShow to 1 set iMessageShown to 0 set iAwaitingInput to 0 endif endif
if (iGameChoice) StopQuest TTWCG00 endif
end
После чего вешаешь скрипт на нужную дверь.
Касательно остановки квеста ничего не скажу - я не знаю, что там в нем делается. В крайнкм случае из одного из вариантов уберёшь эти три строки.
Добавлено (16.09.2013, 21:32) --------------------------------------------- Да, забыл уточнить - при таком варианте скрипты не знают о выборе, сделанном игроком в другом скрипте. Насколько я понял, тебя такое устроит.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Такой вот вопрос: можно ли, не использую экстендер, создать полную копию игрока? В моде, имеется в виду. Типа: зашел в триггер и тут же неподалеку возник двойник. В такой же одежде, какая на игроке в данный момент.
Galko, скорее всего можно, только вот насчет лица не знаю как, а шмот вроде можно проследить и обычными скриптами без экстендера. Это лирический вопрос или надо озадачиться решением ? Galko, ты еще играешь в вегас ? А 3й фол ? Ведь играешь наверно НПС Женского рода ? Нужна будет твоя помощь тогда.
Galko, няз, нет. Без НВСЕ запомнить экипировку игрока очень сложно - это нужно перебрать ВСЕ возможные предметы. А если учесть возможность использования предметов из модов, то вообще никак. Что касается внешности - тут я пас, не разбирался я с этим. Теоретически, параметры игрока где-то хранятся. Можно ли их практически применить к новому неписю - хз.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Внешность неважна. Двойник - это не совсем верно выразилась. Мне главное - чтоб одежда была такой же. Ну и пол. Расу и пол я знаю как "скопировать", а вот текущую экипировку...
Цитата djsave
Galko, ты еще играешь в вегас ? А 3й фол ? Ведь играешь наверно НПС Женского рода ?
в Фол уже отыгралась. Бегаю только по Нью-Йорку, который Большое яблоко. А в Вегас почти не начинала. Слегка нырнула в игру и всё. Не понравилось. Играю женским персонажем, ога.
Добавлено (18.09.2013, 18:04) --------------------------------------------- А, нее, вру... Я ж в Вегасе прошла ДедМани и Блюз Старого Мира.
Бегаю только по Нью-Йорку, который Большое яблоко.
Ога это 3й Фол значит - великолепно, значит жертву одну уже нашел.... я позже тогда в личку стукну или в бункере опишу. А насчет двойника без расширителя скриптов, можно попробовать, но прямого решения нет, надо искать ухищрения и смотреть что получиться. Может можно это сделать как то сюжетно ?
Не подскажете образец такого скрипта: при входе в игру игрок через 3(4, 5 и т.д.)дней получает какое-то там сообщение. Мне просто важно узнать, как правильно организовать этот таймер. Заранее благодарю.
Death is the old debt, which sooner or later will have to pay. This is as good a day to die as any, but at your funeral nobody will come. Your way in hell you'll have to do yourself... Happy journey! Alright, guys, all will be there, but you before...
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №987
написано: 20 сентября 2013, 18:00
| Отредактировано: Joopeeter - 20 сентября 2013, 18:32
С помощью глобальной переменной GameDaysPassed (сколько дней прошло с начала игры). В простейшем виде:
Код
scn zzQuestScript
short DayX
Begin GameMode
if DayX==0 set DayX to GameDaysPassed+X; где Х - нужное число дней elseif DayX>GameDaysPassed ;ничего не делать else set DayX to 10000000 ShowMessage zzMessage endif
End
где zzMessage - ID сообщения
Скрипт вешается на квест. Если скрипт больше ничего не делает, то можно даже затормозить его Script Processing Delay до 15-20 секунд (10 игровых минут). Также если под это дело выделен специальный квест и он больше ни для чего не используется, нужно после вывода сообщения остановить его, то есть под ShowMessage вписать
Death is the old debt, which sooner or later will have to pay. This is as good a day to die as any, but at your funeral nobody will come. Your way in hell you'll have to do yourself... Happy journey! Alright, guys, all will be there, but you before...
Joopeeter, не работает. сообщение вылетает сразу после загрузки любого сейва.
Death is the old debt, which sooner or later will have to pay. This is as good a day to die as any, but at your funeral nobody will come. Your way in hell you'll have to do yourself... Happy journey! Alright, guys, all will be there, but you before...