Тема для общих вопросов по моддингу игры. Возможно, что ответ на ваш вопрос уже есть в Картотеке.
Ой, всё...
Изменение репутации для пользователя Shtuka
Shtuka
Сообщение №1711
написано: 10 февраля 2016, 16:29
| Отредактировано: shtuka - 10 февраля 2016, 19:25
Благодарю за отзыв, если что и я помогу чем смогу, память о делах добрых твердая, а плагин просто приклею к основному своему(все DLCesm), тут пилю вобщем мод большой...
В скрипте нет функций ФОСЕ, зато есть посторонние патроны
Изменение репутации для пользователя Shtuka
Shtuka
Сообщение №1713
написано: 10 февраля 2016, 19:24
| Отредактировано: shtuka - 10 февраля 2016, 19:28
2Joopeeter, патроны моего мода и товарищей модмейкеров,они все боеспособны(проверенно). Может меня не так поняли про FOSE, суть такова: GECK не согласен сохранить мои изменения в этом скрипте из известного мода(вот исходник скрипта:
scn AmmoWeightScript
Short AT Short AWC
Begin GameMode set AT to Player.GetItemCount AmmoDart set AT to (AT + Player.GetItemCount AmmoBB) set AT to (AT + Player.GetItemCount Ammo5mm) set AWC to AT set AT to Player.GetItemCount Ammo10mm set AT to (AT + Player.GetItemCount Ammo32Caliber) set AT to (AT + Player.GetItemCount AmmoElectronChargePack) set AT to (AT + Player.GetItemCount AmmoSmallEnergyCell) set AT to (AT + Player.GetItemCount AmmoAlienPowerCell) set AT to (AT*3) set AWC to (AWC + AT) set AT to Player.GetItemCount AmmoRailwaySpikes set AT to (AT + Player.GetItemCount Ammo44magnum) set AT to (AT + Player.GetItemCount Ammo308Caliber) set AT to (AT + Player.GetItemCount Ammo556mm) set AT to (AT + Player.GetItemCount AmmoMicroFusionCell) set AT to (AT + Player.GetItemCount AmmoFlamerFuel) set AT to (AT*5) set AWC to (AWC + AT) set AT to Player.GetItemCount AmmoShotgunShell set AT to (AT + Player.GetItemCount AmmoMesmetronPowerCell) set AT to (AT*10) set AWC to (AWC + AT) set AT to Player.GetItemCount AmmoMissile set AT to (AT*100) set AWC to (AWC + AT) set AT to Player.GetItemCount ammoFatMan set AT to (AT*300) set AWC to (AWC + AT) if AWC > (Player.GetItemCount AmmoWeightCounter) set AWC to (AWC - Player.GetItemCount AmmoWeightCounter) Player.AddItem AmmoWeightCounter AWC 1 elseif AWC < (Player.GetItemCount AmmoWeightCounter) set AWC to (Player.GetItemCount AmmoWeightCounter - AWC) Player.RemoveItem AmmoWeightCounter AWC 1 endif End
), такое может быть, что не секрет по причине отсутствия редактора FOSE.
P.S. простые без расширителя сохраняет, причина все-таки в FOSE. Может поможете с моей просьбой?
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1714
написано: 10 февраля 2016, 21:18
| Отредактировано: Joopeeter - 10 февраля 2016, 21:18
простые без расширителя сохраняет, причина все-таки в FOSE.
Причина, подозреваю, в том, что скрипт ты в свой мод скопипастил, а патроны нет. И пытаешься скомпилировать, не загрузив в ГЭКК нужные мастера - это я сужу по тому, что ты предлагаешь кому-то сделать именно так.
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №1715
написано: 11 февраля 2016, 05:06
| Отредактировано: КсюXa - 11 февраля 2016, 07:14
скрипт ты в свой мод скопипастил, а патроны нет. И пытаешься скомпилировать, не загрузив в ГЭКК нужные мастера
Важно - почему именно мастера. А потому что если ты грузил в ГЕКК несколько плагинов-еспешников от своих друзей-мододелов, а затем в скрипте своего мода указал патрон из одного из этих еспешников, то скрипт В ПЕРВЫЙ РАЗ сохранится. Но зато в следующий раз, когда ты загрузишь в ГЕКК только свой еспешник, но забудешь загрузить еспешник-донор, то скрипт не найдет указанный патрон из донора и не сохранится. Потому что ГЕКК не умеет привязывать есп к есп и не сохраняет связи между ними. Именно поэтому донор должен быть мастером-файлом ESM, чтобы ГЕКК привязал его к твоему плагину и они всегда грузились в редактор и в игру вместе.
PS. И да, тебе пытались втолковать, что текст скрипта (ни твоего самопального, ни оригинального исходного) не содержит FOSE-команд и, соответственно, расширитель тут не нужен и значит он тут не при чем.
Ой, всё...
Изменение репутации для пользователя Shtuka
Shtuka
Сообщение №1716
написано: 20 февраля 2016, 17:51
| Отредактировано: shtuka - 20 февраля 2016, 17:47
Привет всем, КсюXa(вам отдельное за инфу),Joopeeter, спасибо вам. Благодаря вам нашел причину: ошибку на скрипт читал не внимательно, просто глаз уже замылило "Unknaw kommand" из-за FOSE, а было вот что: DLCAmmoAlien вместо DLC05AmmoAlien:dr: . Все остальное работает и правильно.
P.S. может быть Ipatow(загадочная личность) как раз на это намекал...
А зету не надо? Там же DLC05AmmoAlien
Добавлено (20 Февраля 2016, 20:51) --------------------------------------------- Привет. Мастера и гуру модмейка, пожалуйста, очень нужен ваш БОЛЬШОЙ опытный глаз на мой маленький скрипт. Скрипт маааааааленький и опыт в скриптах маааааленький, а мод нужен неглючьненький. Вообщем скрипт повесил на LvlFeralGhoul2(моя мод.копия базы LvlFeralGhoul). Далее множу LvlFeralGhoul2 по всей пустоши(перетаскивая ручками онного). И получаю (теоритически) по ночам зомбопокалипсис. Получится? Неглючненько?
scn 1WasteNightScriptName
ref npc
Begin GameMode
if GameHour > 8 && GameHour < 23 npc.disable endif if GameHour > 0 && GameHour < 8 npc.enable endif end
Это будет не ночной апокалипсис. Это исход всех гулей после восьми часов игры. Навсегда. Для проверки времени суток используется функция getcurrenttime.
====================== Мод "Нью-Йорк" на русском: 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
нужен ваш БОЛЬШОЙ опытный глаз на мой маленький скрипт
Маэстро указал принципиальную ошибку. А я, как гид, провожу в Картотеку Нужно сделать, как в этом примере. Только вместо лампочки - твой зомби. Ну и время ставь своё, нужное.
Ой, всё...
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1719
написано: 21 февраля 2016, 10:57
| Отредактировано: Joopeeter - 21 февраля 2016, 10:59
Это исход всех гулей после восьми часов игры. Навсегда.
При всём к Вам уважении, нет. По наблюдениям, GameHour вполне исправно возвращает время, ровно такое же, как GetCurrentTime. На вики, правда, упоминается, что в районе полуночи часы немного сбоят, на какие-то минуты, не критично.
КсюXa, принципиальная ошибка в другом. В скрипте дизэйблится и энэйблится реф-переменная, которой не задали никакого значения. То есть [пустое место].Enable, [пустое место].Disable. Скрипт на самом актёре, переменная там вообще не нужна. А непринципиальная ошибка в том, что вместо того чтобы включать и выключать зомби-откопалисис Enable Parent'ом, не спеша отслеживая время и расположение игрока в квестовом скрипте, автор наплодил по всей пустоши скриптованых актёров с гейммодами.
При всём к Вам уважении, нет. По наблюдениям, GameHour вполне исправно возвращает время, ровно такое же, как GetCurrentTime. На вики, правда, упоминается, что в районе полуночи часы немного сбоят, на какие-то минуты, не критично.
Да, конечно. Это я с GameDaysPassed спутал. Что касается полночи, если в момент перехода через 0 часов игрок спит или ждет, то результат может быть просто непредсказуем. Это уже по моим наблюдениям. Хотя, к поднятому вопросу это и не относится.
====================== Мод "Нью-Йорк" на русском: 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
Изменение репутации для пользователя Shtuka
Shtuka
Сообщение №1721
написано: 21 февраля 2016, 17:27
| Отредактировано: shtuka - 21 февраля 2016, 17:59
Привет Мастерам. Спасибо за помощь, правда малость запутался . Не понятно теперь что грамотней: 1)Ваш совет КсюXa, использовать тот скрипт вместо теперь исправленного моего:
scn 1WasteNightGhoulScriptName
Begin GameMode
if Getcurrenttime > 8 && Getcurrenttime < 23 disable endif if Getcurrenttime > 0 && Getcurrenttime < 8 enable endif end
2)Ваши рекомендации Joopeeter, использовать квест со скриптом:
автор наплодил по всей пустоши скриптованых актёров с гейммодами
P.S.Респавн существа заключенного в изначальный скрипт с GameHour, не происходил(не совсем абсолютно), а с GetCurrentTime осечек почти небыло.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1722
написано: 22 февраля 2016, 09:45
| Отредактировано: Joopeeter - 22 февраля 2016, 09:47
признателен буду за чуть более подробную информацию
Подвешиваешь где-нибудь в лёгком для поиска месте (например, в специально для этого созданной пустой ячейке) маркер. Даёшь ему RefID, например, zzMarkerRef. Расставляешь по пустоши обычных ванильных незаскриптованных гулей, привязываешь их всех к этому маркеру как к Enable Parent'у. Создаёшь квест, не забывашь отметить Start Game Enable, вешаешь на него скрипт наподобие такого:
Begin GameMode if GetCurrentTime < 8 if zzMarkerRef.GetDisabled zzMarkerRef.Enable endif else if zzMarkerRef.GetDisabled != 1 zzMarkerRef.Disable endif endif End
Недостатки: гули могут появляться и исчезать прямо перед носом; тела тоже появляются и исчезают. Достоинства: можно приделать к исчезающим гулям звук "чпок", будет смешно.
Можно привязать гулей не к одному маркеру, а скомпоновать в группы и привязать каждую к триггеру - по одному триггеру на несколько экстерьерных ячеек. Триггер бы в полночь и восемь утра проверял расстояние до игрока и в зависимости от результата включал-выключал гулей или ждал бы, пока игрок отбежит подальше. Но тела всё равно будут исчезать. Можно вообще по-другому. Накидать в укромных уголках маркеров, пусть на них вечером зарождаются гули и начинают бегать по окрестностям и всех кусать. А утром пусть бегут к себе в укромный уголок на маркер и там тихонько исчезают.
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №1723
написано: 22 февраля 2016, 15:17
| Отредактировано: КсюXa - 22 февраля 2016, 15:24
В моде "Зомби Апокалипсис" (кажется в нём, но может и в аналогичном) автор не поленился раскидать маркеров респауна, если не изменяет память, что-то около 8000 штук. Вот это терпение!!!
Считаю это перебор и не лорно, но терпение и в правду как у камня . У меня около 2000 вместе с тараканами. У гулей(разнообразил левельный список со всех DLC, и не стал их уродовать как в З.А.) спавн только возле бывших городов и в зонах с пов. рад. заражением. Тараканы вылазиют по всей остальной территории и они по фракции враги с гулями. И все это только ночью, темной ночью... вот он хороший геймплейный реализм. Но это лирика, а вот по существу: с утра начал переделывать как научил Joopeeter(СПАСИБО), пальцы уже сворачиваются от Enable Parent . Но терзает менявопрос, а поможет ли переделка снизить нагрузку на железо??? Потому-что по ночам игра начинала заметно подзаикивать, грешу на наличие скрипта в каждомтаракане и гуле...
по ночам игра начинала заметно подзаикивать, грешу на наличие скрипта в каждом таракане и гуле...
Так смысл Enable Parent'а и состоит в том, что не нужен каждому гулю ни скрипт, ни постоянная ссылка с RefID. Включаешь родителя - автоматом включаются привязанные ссылки, выключаешь - выключаются. А подзаикивает скорее всего от самого количества актёров. Каждый требует ресурс, правда, если стоит галка No Low Level Processing, то требует только когда находится в загруженной области. А в бою он вообще жрёт ресурс в три горла. Поэтому масштабные битвы, пусть даже это гули, давящие тараканов, нуждаются в специальной оптимизации - каждая индивидуально.
РеализЬм. 200 лет прошло, радиация давно пошла на убыль, природа самоочищается, а бесплодные гули и мутанты всё множатся и множатся... shtuka, если не совсем ясно про групповую обработку ссылок - то вот для наглядности скриншот
Ой, всё...
Изменение репутации для пользователя Shtuka
Shtuka
Сообщение №1728
написано: 23 февраля 2016, 16:32
| Отредактировано: shtuka - 23 февраля 2016, 18:52
Бойцы, поздравляю всех с празднмком! Желаю лихих побед, трофеев побогаче и верных женщин!
Цитата КсюXa
РеализЬм. 200 лет прошло, радиация давно пошла на убыль, природа самоочищается, а бесплодные гули и мутанты всё множатся и множатся...
Радиация в игре завышена, пусть, интересней игра, глобольную катастрофу надо чувствовать кожей. Из этого следует- пока живы люди будут и пополнения у гулей. А мутация не равно бесплодие, бесплодие один из вариантов мутации как и новыи вид существ, если приживутся! И зачем нужен "глухой" реализм. ЖИЗНЬ есть для этого. Его нодо добавлять для атмосферности, но аккуратно... Баланс компонентов геймплея- есть хорошая игра. Отдельное спасибо за скриншот.
Тараканы это особое, память с общаги... идешь ночью на кухню: хруп, хруп под ногами, свет щелк, и рыжий "ковер" который покрывал весь пол, мгновенно от центра к мебели и щелям в стенах полностью исчезал .
А пожалуй, соглашусь. Реализм. Убедил. Гули по ночам давят враждебных тараканов на кухне
Ребят,помогите пожалуйста сделать квест с событиями.Много раз объясняли как работать со временем,но не получается у меня,рукожоп я!Дайте квест в котором каждые 3 или более дней случается какое-то событие,желательно,что бы этот квест начинался по завершении предыдущего.Всю голову уже сломал готов об стену убиться.Помогите пожалуйста,очень нужен этот квест:(((
Квест, а точнее скрипт, сто лет уж как даден. Только вместо сообщения ставишь туда своё событие, а переменную в конце ставишь не на сто тыщ мильонов, а прибавляешь к ней свои три дня, или случайное число, или сколько там надо. Чтобы квест начинался после предыдущего, надо, как подсказывает КО, запустить его в конце предыдущего. Скажем, в результ-скрипте завершающей стадии. Там в стадиях, если отметить чек-бокс Complete Quest, появляется выпадающий список Next Quest, но я ни разу не видел, чтобы он использовался - все пишут StartQuest в результ-скрипте. Не знаю даже, работает ли эта фича или нет.
Joopeeter, В таком случае я рукожоп в плане оформления:)Я пробовал этот скрипт и ничего не вышло,по любому что-то не так сделал,это даже к бабке не ходи:)Распишите пожалуйста по пунктам куда его пихать что бы он работал???
А показать скрипт, который ты палюбому не так сделал - это религия не позволяет? Чтобы тебе в нём указали и разъяснили ТВОИ ошибки, дабы в дальнейшем их не совершать...
if DayX==0 set DayX to GameDaysPassed+1; Х нужное число дней elseif DayX>GameDaysPassed ;ничего не делать else set DayX to 1 ShowMessage AAATestQuestMessage TestQuestXmarker.enable endif
End
Вроде заработал,проверил Х-маркером Теперь другой вопрос :Как правильно сделать несколько событий? так?
scn AAATestQuestScript
float DayX
Begin GameMode
if DayX==0 set DayX to GameDaysPassed+1; Х нужное число дней elseif DayX>GameDaysPassed ;ничего не делать else set DayX to 1 ShowMessage Событие 1 TestQuestXmarker.enable else if DayX==1 set DayX to GameDaysPassed+1; Х нужное число дней elseif DayX>GameDaysPassed ;ничего не делать else set DayX to 2 ShowMessage Событие 2 TestQuestXmarker.enable endif endif End
И Сколько событий можно вписать в 1 скрипт?
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1735
написано: 1 марта 2016, 19:27
| Отредактировано: Joopeeter - 1 марта 2016, 20:15
Теперь другой вопрос :Как правильно сделать несколько событий?
У меня тоже вопрос: как нам понять, что именно ты хочешь? Чтобы события 1 и 2 произошли с интервалом в день и больше не повторялись? Чтобы событие 1 произошло через день, а событие 2 - через два дня после первого? Чтобы они чередовались раз-два-раз-два? Как я телепатию ни напрягаю, из твоего скрипта ни шиша не ясно.
Joopeeter, Так,по порядку!Вот скрипт который работает:
scn AAATestQuestScript
float DayX
Begin GameMode
if DayX==0 set DayX to GameDaysPassed+1; Х нужное число дней elseif DayX>GameDaysPassed ;ничего не делать else set DayX to 1 ShowMessage AAATestQuestMessage StopQuest AAATestWastelandStoriesQuest endif
End
Теперь:Я хочу сделать,что бы события происходили не повторяясь и последовательно 1;2;3....! 1-е событие через 1 день от начала квеста,2-е событие через 2 дня от начала квеста и т.д.
Вообще этот скрипт хочу использовать для того,что бы независимо от ГГ на пустошах появлялись постепенно новые жители!(Прошел день включили Х-маркер с привязанным к нему домом и тремя НПС и т.д.)
Теперь нужно сделать как-то так,что бы события не повторялись (не появлялось по 200 раз одно и тоже сообщение и т.д.) Как это сделать?
Вот вроде подробнее расписал,надеюсь теперь будет понятно.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1737
написано: 2 марта 2016, 12:16
| Отредактировано: Joopeeter - 2 марта 2016, 12:29
Я хочу сделать,что бы события происходили не повторяясь и последовательно 1;2;3....! 1-е событие через 1 день от начала квеста,2-е событие через 2 дня от начала квеста и т.д. ... Теперь нужно сделать как-то так,что бы события не повторялись (не появлялось по 200 раз одно и тоже сообщение и т.д.) Как это сделать?
Можно как обычно. Завести в квесте переменную, пусть каждому событию соответствует своё значение переменной. Ну и дальше if переменная == номер такой-то происходит событие номер такой-то set переменная to номер другой elseif переменная == номер другой происходит событие номер другой set переменная to номер следующий elseif... endif Но я предлагаю такую схему. Делаешь квест, в стадиях которого будут происходить твои события. Пусть будет zzEventsQuest. На нём скрипт:
Код
float DayX float EventInterval short EventNumber
Begin GameMode
if DayX == 0 set EventInterval to 1 ;допустим, первое событие случится через сутки, потом можно поменять периодичность set DayX to GameDaysPassed + EventInterval elseif DayX > GameDaysPassed ; ждём, ничего не делаем else SetStage zzEventsQuest EventNumber ; при установке стадии квеста её результ-скрипт срабатывает прямо здесь, посередине другого скрипта set DayX to GameDaysPassed + EventInterval endif
End
Для каждого события делаешь в квесте отдельную стадию с интервалом 5. То есть придумал первое событие - создал нулевую стадию, придумал второе - создал пятую и т.д. Это чтобы можно было потом воткнуть между готовыми событиями новое, не перенумеровывая все последующие. Стадии создаёшь по мере придумки событий, про запас забивать номера не надо. В результ-скрипте стадии первым делом пишешь
Код
set zzEventsQuest.EventNumber to zzEventsQuest.EventNumber + 5
и дальше делаешь всё, что душа пожелает. В том числе можно поменять время до следующего события - переменную EventInterval. Можно и прямо прописать номер следующего события, но тогда копипастить результ-скрипты из стадии в стадию будет не так удобно. Если возникла нужда вставить событие в середину между имеющимися, то, естественно, придётся включить ненадолго голову и прописать номер прямо. И в результ-скрипте предыдущей стадии тоже не забыть подправить. Схема, как мне кажется, будет удобна тем, что можно добавлять события, не переписывая каждый раз квестовый скрипт и не раздувая его на десятки экранов. Стадий всего 255, что даёт нам 51 событие в квесте. Если не хватило, то в результ-скрипте 255-ой стадии останавливаешь квест и запускаешь следующий, сделанный по той же схеме.
Всем привет , сижу вот пытаюсь сделать лифт как в дополнении Anchorage ( когда спускаешься на аванпост изгоев ) , и там оказался скрипт , в общем я в этом скрипте заменил что надо и все вроде бы работает , он отправляет меня в интерьер , проигрывается анимация спуска , в общем все как в дополнении , потом он с таким же успехом поднимает на верх , но в конце анимации почему то не отправляет обратно в интерьер из которого я пришел . В общем если кто понимает в скриптах , посмотрите пожалуйста в чем проблема ? Вот сам скрипт собсна .
(моя версия)
scn aaaOvsElevatorSCRIPT
; this script contrls the elevator on the aaaOvsAvanpost side of things
short state ; 0 = not running, at top ; 1 = going down ; 2 = not running, at bottom ; 3 = going UP ref actronaut
begin onActivate
set actronaut to getActionRef
if actronaut == player if state == 2 set state to 3 aOvsElevShaft.playgroup backward 0 ; send the elevator back up aOvsElevGate.playgroup backward 0 ; raise the little gate .playgroup forward 0 ; play my little switch anim else ; do nothing endif else ; if not the player actronaut.activate aOvsGenDoor
endif
end
begin gameMode
if state == 0 ; run once to establish correct state aOvsElevShaft.playgroup forward 0 ; jump right into running the elevator aOvsElevGate.playgroup forward 0 ; lower gate with it. set state to 1 endif
if aOvsElevShaft.isAnimPlaying forward == 0 ; when the anim is finished....
set state to 2
endif
endif
if state == 3 if aOvsElevShaft.isAnimPlaying backward == 0 aOvsGenDoor.activate player ; send player through to Bailey's Crossroads set state to 0 endif endif
end
(Вот исходный скрипт)
scn DLC02ElevatorSCRIPT
; this script contrls the elevator on the DLC02VSS01 side of things
short state ; 0 = not running, at top ; 1 = going down ; 2 = not running, at bottom ; 3 = going UP ref actronaut
begin onActivate
set actronaut to getActionRef
if actronaut == player if state == 2 set state to 3 DLC02ElevShaft.playgroup backward 0 ; send the elevator back up DLC02ElevGate.playgroup backward 0 ; raise the little gate .playgroup forward 0 ; play my little switch anim else ; do nothing endif else ; if not the player actronaut.activate DLC02VSStoBaileys
endif
end
begin gameMode
if DLC02LD.elevFlag == 1 ; if we're flagged to run by the global var
if state == 0 ; run once to establish correct state DLC02ElevShaft.playgroup forward 0 ; jump right into running the elevator DLC02ElevGate.playgroup forward 0 ; lower gate with it. set state to 1 endif
if DLC02ElevShaft.isAnimPlaying forward == 0 ; when the anim is finished....
set DLC02LD.elevFlag to 0 set state to 2
endif
endif
if state == 3 if DLC02ElevShaft.isAnimPlaying backward == 0 DLC02VSStoBaileys.activate player ; send player through to Bailey's Crossroads set state to 0 endif endif
if DLC02ElevShaft.isAnimPlaying forward == 1 || DLC02ElevShaft.isAnimPlaying backward == 1 triggerHitShader 0.1 setRumble 0.15 0.1 0.01 ; going for a low, constant rumble endif
end
За ранее спасибо
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1740
написано: 4 марта 2016, 07:41
| Отредактировано: Joopeeter - 4 марта 2016, 07:42