Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.
markfordelete сработает только для этого маркера или для всех привязанных к нему объектов тоже?
Если у тебя этот маркер родитель для множества объектов, то они полностью все наследуют, значит все дети тоже отвалятся. А зачем удалять то ? Можно просто отключить. Hellraiser, а куда ушла симпатичная обезьянка ? Неужели ее эта киса прогнала ?
Беседка рекомендует так делать. При отключении объектов, которые больше не будут использоваться в игре, делать им markfordelete.
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...
При отключении они всё-равно загружаются в память при загрузке локации. После пометки для удаления, они при загрузке игнорируются и в память не попадают.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя Hellraiser
HellraiserOffline
Сообщение №1114
написано: 8 ноября 2013, 14:08
| Отредактировано: Hellraiser - 8 ноября 2013, 14:11
они при загрузке игнорируются и в память не попадают.
Вот, вот. Ну так что, господа. Нужно отдельно прописывать markfordelete для каждого объекта, задисейбленного xmarker'oм в таком случае, как у меня?
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...
Hellraiser, А вот хз, надо рыться на вики по поводу х-маркеров. Теоретически, та должен быть свой отдельный спец. механизм для этого дела.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя Artem13
Artem13Offline
Сообщение №1116
написано: 8 ноября 2013, 14:49
| Отредактировано: Artem13 - 8 ноября 2013, 14:51
Galko, боюсь, что нет. Кмк, наследуют они как раз только видимость. Не даром же вкладка называется "Enable Parent". И вероятнее всего удалится только маркер.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя Hellraiser
HellraiserOffline
Сообщение №1117
написано: 8 ноября 2013, 14:59
| Отредактировано: Hellraiser - 8 ноября 2013, 15:02
Galko, да, да, тетя Галла. Вот так... Достали уроды... Превратился из доброго обезьяна в... По поводу объектов - хотелось бы надеяться. Так не хочется писанину в скриптах разводить...
Добавлено (08 Ноября 2013, 18:59) --------------------------------------------- Artem13, спасибо. Пороюсь. Мне всегда нравилось ваше мнение - не блистающее безапелляционностью и т.д. Кроме шуток.
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...
Попытайся, но я ничего конкретного не нашёл. Максимум это По MarkForDelete вообще голяк В смысле ничего стОящего.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Artem13, да, я это читал, потому и задал этот вопрос.
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...
Я сейчас не помню где я брал информацию по объектам, но почему то мне кажется что если дочерний объект наследует все свойства родителя то он наследует именно все свойства родителя. То что это используется только для включения и отключения объекта то это не более чем самый частый вариант. Проверить бы это точно опытным путем ... но вот как ?
Проверить бы это точно опытным путем ... но вот как ?
Знал бы я как проверить, не спрашивал бы.
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...
если дочерний объект наследует все свойства родителя то он наследует именно все свойства родителя
Это справедливо для ООП. Но здесь маркер не является родителем. Здесь он лишь ассоциирован с одним/несколькими объектами. А вот каков механизм этой ассоциации - хз.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
В принципе проверить можно одним способом, это взять какой то объект, да такой что бы его присутствие было заметно и методом его пыток убедиться что с ним происходит. Кстати вот еще мысль - можно взять несколько объектов с одним родителем и после их удаления послать команду Енайбле на один из удаленных объектов, теоретически если объект был удален то он уже не должен появиться, поскольку его уже не существует. Да для чистоты эксперимента можно удалить один объект напрямую, без всяких родителей, и попытаться потом его воскресить, что покажет результат ??? А ведь именно так и можно попробовать узнать что и как происходит. Попробуйте сами, я сейчас по самое небалуйся сижу с дизайнами для дома и голова кругом идет.
Кстати вот еще мысль - можно взять несколько объектов с одним родителем и после их удаления послать команду Енайбле на один из удаленных объектов, теоретически если объект был удален то он уже не должен появиться, поскольку его уже не существует. Да для чистоты эксперимента можно удалить один объект напрямую, без всяких родителей, и попытаться потом его воскресить, что покажет результат ??? А ведь именно так и можно попробовать узнать что и как происходит. Попробуйте сами, я сейчас по самое небалуйся сижу с дизайнами для дома и голова кругом идет.
На объекты, имеющие enable parent команды enable-disable уже не действуют. Поэтому никому ничего пробовать не надо.
====================== Мод "Нью-Йорк" на русском: 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
Изменение репутации для пользователя Hellraiser
HellraiserOffline
Сообщение №1125
написано: 12 ноября 2013, 11:45
| Отредактировано: Hellraiser - 12 ноября 2013, 11:50
Spalny_Vagon, абсолютно верно. Так оно и есть. У меня вот такой вопрос к вам - если я допустим, дохожу до нужного момента срабатывания квеста - диссаблю маркер и удаляю его командой markfordelete, а потом попробую через консоль вызвать какой-нибудь предмет (предварительно посмотрев его ID в игре), привязанный к нему. Это скажет хоть косвенно о том, что меня интересует? По идее, если свойства маркера полностью распространяются на его "детишек", то эти объекты уже не должны вызываться, так как их уже не существует? Так? Или глупость сказал?
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...
Изменение репутации для пользователя Spalny_Vagon
Spalny_VagonOffline
Сообщение №1126
написано: 12 ноября 2013, 14:04
| Отредактировано: Spalny_Vagon - 12 ноября 2013, 14:06
По идее, если свойства маркера полностью распространяются на его "детишек", то эти объекты уже не должны вызываться, так как их уже не существует? Т
Не все свойства маркера распространяются на "детишек". А на вопрос, как вызвать объект, если его enable parent уже не существует, Вам уже ответили. Вот что говорит по этому поводу Беседка: "If Enable is called on a reference with an Enable Parent, it will have no effect." Если не секрет, а что за необходимость удалить все? Единственная практическая разница между спрятанным и удаленным объектом заключается в том, что у удаленных объектов скрипты полностью останавливаются. Что же касается занимаемой памяти, то в одном месте Беседка пишет, что объекты и в самом деле удаляются, а буквально через один абзац уже пишет, что удаляются только выброшенные и вновь созданные с помощью функции placeatme, а все, что было расставлено в esm или esp файлах на самом деле не удаляется. Получается, что отмечать markfordelete имеет смысл только то, что имеет свои скрипты, например, триггеры, однако у меня по этому поводу полной ясности нет.
====================== Мод "Нью-Йорк" на русском: 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
Изменение репутации для пользователя Hellraiser
HellraiserOffline
Сообщение №1127
написано: 12 ноября 2013, 14:48
| Отредактировано: Hellraiser - 12 ноября 2013, 14:51
Spalny_Vagon, Cпасибо за ответ! Просто я хотел провести некую оптимизацию - объектов довольно много и снести их из памяти совсем было бы неплохо, тем более, что локации сами по себе достаточно загружены, а тут еще и "мусор" будет подгружаться, который уже отработал свою роль в пьесе.
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...
Мне нужно как-то сделать так чтобы после определенного события в уровневый (вещевой) список добавлялся новый предмет. Но как это сделать? Есть функция AddItemToLeveledList которая вроде должна эта делать, но рабочая ли она? Проверил - в обоих играх она не используется, пробовал использовать в скрипте
Код
AddItemToLeveledList LevelItemID ArmorID 1 1 .100 ; (значения пробовал менять и на другие)
скрипт исправно сохраняется, однако в игре эффекта нет...Тупик?
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №1129
написано: 15 декабря 2013, 05:57
| Отредактировано: Joopeeter - 15 декабря 2013, 06:18
Самозарождение бронек и мячиков будет только при благопроиятном сочетании флагов контейнера и зоны и только при обновлении или при первой загрузке локации, а не при срабатывании функции. Или если только в этот конкретный экземпляр контейнера положить список с помощью AddItem.
Я испробовал еще несколько способов, и уже сам стал думать в том же направлении...Значится моя идея неосуществима, даже Script Extender перетряхнул, там тоже нет ничего подходящего. Жаль. --- Нет, AddItem не годится, потому что у меня именно НЕ конкретный контейнер. --- но все же спасибо за разъяснения!
Script Extender перетряхнул, там тоже нет ничего подходящего
Перетряхни ещё раз. Совершенно точно помню, что тут неоднократно упоминалось обшаривание местности экстендером. И причём даже в связи с раскладыванием чего-то там по контейнерам с одновременной пометкой их токенами.
YikxX, [ActorID.]UnEquipItem ObjectIDNoEquipFlagHideEquipMessage - формат команды
UnequipItem ObjectID 1 1 - снять предмет
AddItem ObjectID 1 1 - добавить предмет
RemoveItem ObjectID 1 1 - удалить предмет
Последняя единичка в каждой строке указывает на то, что соответствующее сообщение при этих действиях будет скрыто.
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...
Hellraiser, за последнюю единичку спасибо - не знал о такой фишке. А по остальному - ObjectID неизвестен, на ГГ может быть любая броня, на голове любая шапка, а за спиной - любое оружие. И их надо снять, независимо от ObjectID. Такое возможно?
Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
GetEquippedObject Функция добавляется FOSE (NVSE для FNV). Возвращает базовый объект (Editor ID) предмета находящегося в указанном слоте. Синтаксис: (ref) ref.GetEquippedObject equipmentSlot:int или (ref) ref.GetEqObj equipmentSlot:int Пример: ref ArmorID set ArmorID to buddyref.GetEquippedObject 2 Возвращает в переменную ArmorID базовое EditorID значение одетой на Бадди (слот 2) одежды.
0 - голова (head) 1 - волосы (hair) 2 - верхней части тела (сюда входят торс, ноги и руки до кистей. В общем - upper body.) 3 - левая рука (left hand) 4 - правая рука (right hand) 5 - оружие (weapon) 6 - Пип-Бой (pip boy) 7 - рюкзак (backpack) 8 - ожерелье (necklace) 9 - повязка на голову (headband) 10 - шляпа (hat) 11 - очки (eyeglasses) 12 - украшение в носу (nosering) 13 - украшение в ушах (earrings) 14 - маска (mask) 15 - галстук (choker) 16 - объект во рту (mouth object) 17 - дополнение к телу 1 (body addon 1) 18 - дополнение к телу 2 (body addon 2)
...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...