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

Скрипты
a3apbi4  Offline  Сообщение №1 написано: 7 декабря 2010, 18:01



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




djsave  Offline  Сообщение №1111 написано: 8 ноября 2013, 12:44


=TMG= TeamModingGames


505
Цитата Hellraiser

markfordelete сработает только для этого маркера или для всех привязанных к нему объектов тоже?


Если у тебя этот маркер родитель для множества объектов, то они полностью все наследуют, значит все дети тоже отвалятся.
А зачем удалять то ? Можно просто отключить.
Hellraiser, а куда ушла симпатичная обезьянка ? Неужели ее эта киса прогнала ?

=TMG= Team Moding Games
Hellraiser  Offline  Сообщение №1112 написано: 8 ноября 2013, 13:39


Dr. Moreau


djsave

А зачем удалять то ? Можно просто отключить.

Беседка рекомендует так делать. При отключении объектов, которые больше не будут использоваться в игре, делать им 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...
Artem13  Offline  Сообщение №1113 написано: 8 ноября 2013, 13:48


Mercenaries. Со смертью на ты.


Цитата djsave

А зачем удалять то ? Можно просто отключить.


При отключении они всё-равно загружаются в память при загрузке локации. После пометки для удаления, они при загрузке игнорируются и в память не попадают.

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Hellraiser  Offline  Сообщение №1114 написано: 8 ноября 2013, 14:08 | Отредактировано: Hellraiser - 8 ноября 2013, 14:11


Dr. Moreau



они при загрузке игнорируются и в память не попадают.

Вот, вот.
Ну так что, господа. Нужно отдельно прописывать 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...
Artem13  Offline  Сообщение №1115 написано: 8 ноября 2013, 14:42


Mercenaries. Со смертью на ты.


Hellraiser, А вот хз, надо рыться на вики по поводу х-маркеров. Теоретически, та должен быть свой отдельный спец. механизм для этого дела.

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Artem13  Offline  Сообщение №1116 написано: 8 ноября 2013, 14:49 | Отредактировано: Artem13 - 8 ноября 2013, 14:51


Mercenaries. Со смертью на ты.


Galko, боюсь, что нет. Кмк, наследуют они как раз только видимость. Не даром же вкладка называется "Enable Parent". И вероятнее всего удалится только маркер.

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Hellraiser  Offline  Сообщение №1117 написано: 8 ноября 2013, 14:59 | Отредактировано: Hellraiser - 8 ноября 2013, 15:02


Dr. Moreau


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...
Artem13  Offline  Сообщение №1118 написано: 8 ноября 2013, 16:01


Mercenaries. Со смертью на ты.


Цитата Hellraiser

Пороюсь.


Попытайся, но я ничего конкретного не нашёл. Максимум это По MarkForDelete вообще голяк :( В смысле ничего стОящего.

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Hellraiser  Offline  Сообщение №1119 написано: 8 ноября 2013, 17:36


Dr. Moreau


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...
djsave  Offline  Сообщение №1120 написано: 8 ноября 2013, 21:20


=TMG= TeamModingGames


505
Я сейчас не помню где я брал информацию по объектам, но почему то мне кажется что если дочерний объект наследует все свойства родителя то он наследует именно все свойства родителя. То что это используется только для включения и отключения объекта то это не более чем самый частый вариант. Проверить бы это точно опытным путем ... но вот как ?

=TMG= Team Moding Games
Hellraiser  Offline  Сообщение №1121 написано: 9 ноября 2013, 00:55 | Отредактировано: Hellraiser - 9 ноября 2013, 00:55


Dr. Moreau


djsave,

Проверить бы это точно опытным путем ... но вот как ?
Знал бы я как проверить, не спрашивал бы.  :)

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...
Artem13  Offline  Сообщение №1122 написано: 9 ноября 2013, 12:42


Mercenaries. Со смертью на ты.


Цитата djsave

если дочерний объект наследует все свойства родителя то он наследует именно все свойства родителя


Это справедливо для ООП. Но здесь маркер не является родителем. Здесь он лишь ассоциирован с одним/несколькими объектами. А вот каков механизм этой ассоциации - хз.

<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a>
Да, мы бандиты и бродяги, как злословит молва,
Мы попадаем в передряги, помня эти слова.
Смотри вперед и не сдавайся ты на милость судьбе!
Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
djsave  Offline  Сообщение №1123 написано: 11 ноября 2013, 13:44


=TMG= TeamModingGames


505
В принципе проверить можно одним способом, это взять какой то объект, да такой что бы его присутствие было заметно и методом его пыток убедиться что с ним происходит.
Кстати вот еще мысль - можно взять несколько объектов с одним родителем и после их удаления послать команду Енайбле на один из удаленных объектов, теоретически если объект был удален то он уже не должен появиться, поскольку его уже не существует. Да для чистоты эксперимента можно удалить один объект напрямую, без всяких родителей, и попытаться потом его воскресить, что покажет результат ??? А ведь именно так и можно попробовать узнать что и как происходит. Попробуйте сами, я сейчас по самое небалуйся сижу с дизайнами для дома и голова кругом идет.

=TMG= Team Moding Games
Spalny_Vagon  Offline  Сообщение №1124 написано: 11 ноября 2013, 15:22


Мастер


Цитата djsave

Кстати вот еще мысль - можно взять несколько объектов с одним родителем и после их удаления послать команду Енайбле на один из удаленных объектов, теоретически если объект был удален то он уже не должен появиться, поскольку его уже не существует. Да для чистоты эксперимента можно удалить один объект напрямую, без всяких родителей, и попытаться потом его воскресить, что покажет результат ??? А ведь именно так и можно попробовать узнать что и как происходит. Попробуйте сами, я сейчас по самое небалуйся сижу с дизайнами для дома и голова кругом идет.


На объекты, имеющие 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  Offline  Сообщение №1125 написано: 12 ноября 2013, 11:45 | Отредактировано: Hellraiser - 12 ноября 2013, 11:50


Dr. Moreau


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  Offline  Сообщение №1126 написано: 12 ноября 2013, 14:04 | Отредактировано: Spalny_Vagon - 12 ноября 2013, 14:06


Мастер


Цитата Hellraiser

По идее, если свойства маркера полностью распространяются на его "детишек", то эти объекты уже не должны вызываться, так как их уже не существует? Т


Не все свойства маркера распространяются на "детишек". А на вопрос, как вызвать объект, если его 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  Offline  Сообщение №1127 написано: 12 ноября 2013, 14:48 | Отредактировано: Hellraiser - 12 ноября 2013, 14:51


Dr. Moreau


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...
Quazar  Offline  Сообщение №1128 написано: 15 декабря 2013, 00:31



446
Привет всем! И вопрос к знатокам.

Мне нужно как-то сделать так чтобы после определенного события в уровневый (вещевой) список добавлялся новый предмет. Но как это сделать? Есть функция AddItemToLeveledList которая вроде должна эта делать, но рабочая ли она? Проверил - в обоих играх она не используется, пробовал использовать в скрипте

Код
AddItemToLeveledList LevelItemID ArmorID 1 1 .100 ; (значения пробовал менять и на другие)


скрипт исправно сохраняется, однако в игре эффекта нет...Тупик?

JupiterJour  Offline  Сообщение №1129 написано: 15 декабря 2013, 05:57 | Отредактировано: Joopeeter - 15 декабря 2013, 06:18


_


Цитата QuazarX

.100


Учитывая, что в Нью-Вегасе на этом месте пишутся проценты, состояньице так себе.

---------------------------------------------
И с неотмеченным Use All всё прекрасно добавляется. По крайней мере одиночные предметы.

Quazar  Offline  Сообщение №1130 написано: 15 декабря 2013, 06:38 | Отредактировано: QuazarX - 15 декабря 2013, 06:52



446
Цитата Joopeeter

состояньице так себе.

я в курсе что состояние маленькое, но вопрос не в этом...

----

Напишу еще что скрипт относится к F3, а не к NV, если это важно. Просто здесь есть специальная тема по скриптам, сюда и спросил...

JupiterJour  Offline  Сообщение №1131 написано: 15 декабря 2013, 07:30 | Отредактировано: Joopeeter - 15 декабря 2013, 07:36


_


Цитата QuazarX

скрипт относится к F3, а не к NV, если это важно.


Важно только в том смысле будет ли состояние 10% или 0.1%.

Quazar  Offline  Сообщение №1132 написано: 15 декабря 2013, 08:11 | Отредактировано: QuazarX - 15 декабря 2013, 08:20



446
Цитата Joopeeter

Самозарождение бронек и мячиков будет только при благопроиятном сочетании флагов контейнера и зоны и только при обновлении или при первой загрузке локации, а не при срабатывании функции. Или если только в этот конкретный экземпляр контейнера положить список с помощью AddItem.

 Я испробовал еще несколько способов, и уже сам стал думать в том же направлении...Значится моя идея неосуществима, даже Script Extender перетряхнул, там тоже нет ничего подходящего. Жаль.
---
Нет, AddItem не годится, потому что у меня именно НЕ конкретный контейнер.
---
но все же спасибо за разъяснения!

JupiterJour  Offline  Сообщение №1133 написано: 15 декабря 2013, 08:36


_


Цитата QuazarX

Script Extender перетряхнул, там тоже нет ничего подходящего


Перетряхни ещё раз. Совершенно точно помню, что тут неоднократно упоминалось обшаривание местности экстендером. И причём даже в связи с раскладыванием чего-то там по контейнерам с одновременной пометкой их токенами.

RustWays  Offline  Сообщение №1134 написано: 15 декабря 2013, 10:06



Script Extender умеет "обшаривать". У одного модмейкера через расширитель вообше рандомно раскидываются предметы интерьера

Tipoksfall  Offline  Сообщение №1135 написано: 15 декабря 2013, 19:49



73
Обшаривания всегда делаются через http://fose.silverlock.org/fose_command_doc.html
getfirstref getnextref  список вариантов в Form Type Id

YikxX  Offline  Сообщение №1136 написано: 20 декабря 2013, 22:32


Местный Дон Кихот Ламанчский


Приветствую всех!

Как скриптом снять с ГГныча одежду, головной убор и оружие, но чтобы они остались в инвентаре? В Картотеке что-то не нашел ответа. :(

Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
Graf  Offline  Сообщение №1137 написано: 20 декабря 2013, 23:41



179
YikxX
player.unequipitem Armor 1 1
 Вроде так.

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Hellraiser  Offline  Сообщение №1138 написано: 21 декабря 2013, 01:05 | Отредактировано: Hellraiser - 21 декабря 2013, 01:13


Dr. Moreau


YikxX,
[ActorID.]UnEquipItem ObjectID NoEquipFlag HideEquipMessage - формат команды

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...
YikxX  Offline  Сообщение №1139 написано: 21 декабря 2013, 01:46


Местный Дон Кихот Ламанчский


Hellraiser, за последнюю единичку спасибо - не знал о такой фишке. А по остальному - ObjectID неизвестен, на ГГ может быть любая броня, на голове любая шапка, а за спиной - любое оружие. И их надо снять, независимо от ObjectID. Такое возможно?

Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
Graf  Offline  Сообщение №1140 написано: 21 декабря 2013, 02:32



179
YikxX, через нвсе:

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)

...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Форум » Fallout: New Vegas » Мастерская » Скрипты (Вопросы и ответы)
Поиск:





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