МАГИСТЕРИУМ в T3Ed:   создать, избавиться, исправить

Автор Tiens, 28 сентября 2009 13:06:40

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

Serge

Mattine или Сам себе режиссер Ч.3
Еще немного о пути
Открываем свойства последнего действия  Properties>>Path>>PathStyle, отвечает за конфигурацию пути по которому перемещается камера.
PATHSTYLE_Linear  –  линейный.
PATHSTYLE_Bеzier – кривая Безье.
С первым все просто, перемещение по прямой из точки А в точку Б. Второе немного сложнее, кривая Безья является касательной к двум прямым, соответственно и ее форма задается положением этих прямых в пространстве.
Для последнего действия меняем PathStyle на PATHSTYLE_Bеzier, и смотрим в окно редактора. Желтая линия связывает два InterpolationPoint – это текущая конфигурация пути,  и еще  из каждого  InterpolationPoint выходит бирюзовая линия с белым кружком. С помощью этих прямых мы будем менять форму кривой. Щелкните на одном из белых кружков и, удерживая Ctrl+ЛКМ, переместите. Видите форма кривой меняется, теперь тоже самое со вторым кружком. Добейтесь чего-нибудь похожего на рисунок внизу.

Воспользуемся Preview и еще раз просмотрим сцену, на последнем действии камера движется по кривой, но все также смотрит не туда.
Ориентация камеры
Открываем вкладку Tools. Здесь у нас еще не исследована кнопка Add Look Target . На карте появится актер LookTarget (выглядит как красно-белая мишень). С помощью этого актера можно заставить камеру сфокусироваться на конкретной точке. Перемещаем LookTarget поближе к двери, мы же ее снимаем.
Выбираем второе действие и переходим на вкладку Sub Actions.  Add New SubAction в списке выбираем SubActionOrientation. В свойствах Properties>>Orientation>>CamOrientation>> CamOrientation выбираем CAMORIENT_LookAtActor(камера будет смотреть на указанный актер). На карте выбираем актер LookTarge и жмем Use напротив строки LookAt, чтобы указать на какой актер смотреть камере.
Снова воспользуемся Preview. Теперь камера ориентирована на дверь постоянно.
Поддействия
Так, теперь добавим небольшой наезд камеры.  Это делается с помощью поддействия FOV. Подробнее о поддействиях и FOV в частности.
Поддействия это наложение эффектов на конкретное действие. Сначала выбирается действие, а затем, перейдя на вкладку  Sub Action,  добавляем поддействия через кнопку Add New SubAction.
SceneSpeed
Отвечает за скорость выполнения сцены, она не зависит от скорости игры. Можно создать эффект резкого  движения камеры или, наоборот, "крадущейся" камеры.  Однако  это никаким образом не влияет на что-либо вне сцены . Это означает, что события сцены не будут при этом происходить быстрее, изменится только скорость движения камеры.
Строка  Min указывает на скорость, которой должна обладать камера в самом начале выполнения поддействия (по умолчанию равно 1), а Max отвечает за скорость движения в конце поддействия.
GameSpeed
Это поддействие позволяет контролировать общую скорость игры.   Поле  Min отвечает за начальную скорость игры (по умолчанию равно 1), а Max  за конечную.
Orientation
Немного о нем написано выше, а теперь подробнее.
Позволяет развернуть камеру в нужном положении.
None – камера сохраняет предыдущее направление
LookAtActor – камера смотрит на указанный актер
FacePath - камера будет смотреть по направлению движения
Interpolate - камера изменит свое направление между значениями Rotation исходной точки интерполяции и конечной точки.
В поле EaseInTime задается время за которое произойдет разворот камеры, если равно 0 то мгновенно. Если разворот происходит в неверном направленни то, нужно изменить значение bReverse на  1.
FOV
Плавно изменяет угол обзора , для создания зума. Поле Min отвечает за исходное значение FOV, а Max - за конечное. Нормальное значение FOV в игре равно 85. Значения ниже нормального уменьшают площадь видимости экрана, но при этом все объекты выглядят увеличенными, что создает эффект приближения. Значения FOV выше 85, наоборот, зрительно отдаляют предметы, а объекты, расположенные по краям экрана становятся немного растянутыми. Максимальное, доступное значение FOV колеблется в пределах 170-180.
Trigger
Запускает событие указанное в строке EventName.
Fade
Затемнение и осветление экрана в/из определенного цвета. Цвет выбирается в поле FadeColor. По умолчанию он установлен равным черному цвету.
Переменная  bFadeOut  отвечает за оветление и затемнение, если  false – то  экран будет осветляться, иначе (true) - затемняться.
И немного о времени. Для каждого поддействия время  начинается с момента запуска действия в состав которого они входят. В разделе Time две переменных. Delay – сколько времени пройдет в сцене с момента запуска действия прежде чем запустится поддействие. Duration – продолжительность поддействия.
Итак добавим наезд камеры на дверь.  Выбираем второе действие (ActionPause) и добавляем FOV. Меняем значения параметров Min=85, Мax=125, Duration=2.
Как запустить сцену в игре?
Самый простой способ через скрипт. Action  у него должен быть
Start matinee scene tagged [String], где String название сцены.
Еще одна важная деталь если на карте есть сцена, то нельзя использовать Distance Fog иначе ничего не будет видно.
Вот  и все. Все что не описано здесь изучается методом "тыка".

[Исправлено: Serge, 10 окт. 2010 21:28]

Tiens

#46
ВОПРОС:   Я хочу сделать следующее: Гарретт безоружный. Он должен найти мешок со своим оружием - нож, лук (как в оригинале Тюрьма). И купить отмычки в магазине (как в ФМ "Evicted"). Как это сделать?

ИТАК, сценарий миссии:
старт - Гарретт безоружен и без отмычек
цели - 1) найти мешок с оружием (инвентарь Гарретта); 2) купить отмычки в магазине

ДЕЛАЕМ МЕШОК С ОРУЖИЕМ:
1) Помещаем на карту активный объект Equipment Sack из Actor Browser (он находится в World Obj -> Set Dressing -> SQ Set Dressing). Он уже настроен так, как нам нужно, поэтому править его свойства в самом Actor Browser мы не будем.

2) Прямо на карте открываем свойства мешка и добавляем ему новый скрипт:
SCRIPT "Tiens_GetGarrettInventory":
COND.:
- When I'm frobbed by player
ACT.:
- Add [15] [Broadhead Arrow] objects to the player inventory
- Add [15] [Water Arrow] objects to the player inventory
- Add [15] [Garrett Dagger] objects to the player inventory
- Add [15] [Garrett Blackjack] objects to the player inventory
- Delay [0.10] GAME seconds
- Delete linked objects [MYSELF]


Учти, что в этом скрипте нет строчки про проигрывание звука. Это для того, чтобы не перекрывался звук выполненной цели. Но если будет слишком тихо, то, конечно, звук всегда можно добавить.

Также учти, что мой скрипт дает Гарретту только кинжал, дубинку, 15 водяных и 15 боевых стрел. Если тебе надо что-то еще, сверяй названия нужных тебе предметов с теми названиями, что ты добавляешь в Default Inventory. Иначе игра может глюкнуть и инвентарь вообще работать не будет.

3) Теперь надо очистить Default Inventory в свойствах Level Properties, ребилдинг и пробный тест.


ДЕЛАЕМ ОТМЫЧКИ ДЛЯ МАГАЗИНА:
У Гарретта две отмычки, но продавать мы будем только одну. Вторая будет "поддельной" и просто исчезнет в момент покупки.
Учти, что на проверочной карте обязательно должны быть: оба вида магазинов, какой-нить лут, запертый сундук.

I. Активируемая отмычка:
1) Открываем Actor Browser и в World Obj -> Inventory Object -> Garrett Exclusive -> ищем эктор Garrett Lockpick Right. Создаем "дочерний" эктор GarrettLockpick_STORE и добавляем ему следующие свойства:
- Highlight -> Highlight Dist = 128
- Inventory -> Inventory Type = eIT_SPECIAL_ITEM
- Store -> bOnlyBuyOnce = TRUE
- Store -> Store Price = 25
(или сколько тебе надо)

2) Делаем так, чтобы этот объект можно было размещать на карте:
выделяем название GarrettLockpick_STORE -> щелкаем ПКМ -> строка Placable/Unplacable -> перед названием нашей отмычки появится звездочка.

3) Также добавляем этому объекту скрипт:
SCRIPT "Tiens_BuyLockpicks":
COND.:
- When linked objects [MYSELF] are purchased from a store
ACT.:
- Set flag [PlayerCanLockpick] to [TRUE] expires on map change [FALSE] expires on mission [-1]


4) Теперь надо сохранить все изменения в файл gamesys. В главном меню Actor Browser щелкнуть на File -> Export All Scripts и File -> Save Selected Packages.

5) Теперь перемещаемся в магазин и заменяем какой-нибудь из товаров (например, флягу с маслом) на нашу отмычку. Прямо на карте добавляем ей свойства:
- Render -> Draw Scale = 1.25 - это сделает отмычку более заметной
- Store -> Store Window Number = 8 (как у фляги с маслом) - чтобы подсвечивание предмета в магазине не глючило

II. Поддельная отмычка:
1) Берем меш другой отмычки из Static Mesh Browser и вставляем его на карту рядом с первой (на прилавок магазина). Добавляем ему свойство Render -> Draw Scale = 1.25 - чтобы отмычки были одного размера.

2) Также добавляем следующий скрипт:
SCRIPT "Tiens_HideLockpicks":
COND.:
- When flag [PlayerCanLockpick] is set to [TRUE]
ACT.:
- Delay [0.10] GAME seconds
- Set [bOutOfWorld] to [TRUE] on linked objects of [MYSELF]


3) Теперь ребилдинг и тест.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС:   У меня створки дверей в одном проёме открываются в разные стороны. Пробовал перевернуть её, но тогда ручки торчат вверх ногами. Что делать?
Из руководства Комага:
Прямо на карте выделяешь одну из дверей - щелкаешь ПКМ - "Actor Links" - связь "HingedAttachment" - открыть "Properties" – "Physics" – "m_hingeAxis" изменить "Z" с 1 на -1 или наоборот с -1 на 1.

Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС:   Что отвечает за наличие оружия у NPC и как можно выбрать, что именно он будет носить - меч или волшебную палочку? Где это настраивается?
Чтобы сменить (либо добавить) оружие, надо вызвать диалоговое окно "Edit Weapon Loadout". Для этого:
1) выделяешь NPC на карте (либо в Actor Browser) и щелкаешь ПКМ. В списке выбираешь строку "Edit Weapon Loadout".
2) В открывшемся окне выделяешь строчку с точкой, к которой будет прицеплено оружие (например, RightHip_Pickpocket), и жмешь кнопку "Make Local".
3) Среди появившихся кнопок находишь "Add Item To Slot" и в открывшемся окошке выбираешь оружие. Кстати, также там можно выбрать некоторые предметы для "обчищения карманов", например, кошельки.
4) Теперь жми "ОК" и "Done". Если ты все это проделывал в Actor Browser, то экспортируй скрипты, чтобы сохранить изменения. Если прямо на карте, то больше ничего не нужно. NPC автоматически поймет, что у него за оружие и как им воевать. Т.е. если дать горожанину "глифомёт" хранителей, то он будет активно из него стрелять.
Единственное ограничение: если у данного вида NPC нет подходящей для данного оружия анимации (например, у горожанина для оружия Гамалл), то этот NPC не будет этим оружием пользоваться.
5) Теперь ребилдинг и тест.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС:   Как использовать это "диалоговое окно" (синее поле с текстом и кнопкой ОК в нижней части экрана)? Как его сделать?
Как использовать? Да как тебе вздумается. :) Это прекрасная замена озвучки и выручалочка, если глючат цели. Гарретт услышал, увидел, подумал... Гарретту сказали... Два NPC поговорили...
Единственный минус: используй их экономно, а то тестеры жалуются, что больно много читать приходится.
Как сделать? Нужны две вещи:
А) Добавь в свой скрипт в раздел ACTIONS строку:
- Popup a window with text from the file [бла-бла-бла.txt]
А в качестве CONDITIONS может быть почти что угодно: игрок пересёк вольюм, взял что-то, подошел к NPC, либо флаг сменился, другой скрипт послал команду, NPC что-то сделал... и т.д., и т.п.

Б) В папке ...\CONTENT\T3\Books\English создай новый файл "бла-бла-бла.sch" (название файла должно совпадать с названием в скрипте) со следующим сожержанием:
-------------------------------------------------------------
VERSION 2.0
TextEntry
бла-бла-бла   -> надпись должна совпадать с названием в скрипте и с именем данного файла
lang_english 2004-03-12 10:43:53 "<font=Papyrus12>\n<dc=191,183,255>\nWelcome to the training mission... \n"
lang_french 2004-04-29 11:47:38 "<font=Papyrus12>\n<dc=191,183,255>\nДобро пожаловать в учебную миссию!... \n"
-------------------------------------------------------------
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

#50
КАРМАННЫЙ ФОНАРИК для Гарретта, туториал

Изначально я создала этот фонарик для своей миссии из мини-кампании "The Cabal", но я уверена, что он будет очень полезен в других ФМках для TDS. Я знаю, что некий аналог карманного фонаря уже реализован в миссии Silence от CrackedGear. Я пыталась отыскать туториал, но не нашла. Из-за чего и решила представить свой собственный способ.

По большому счету, фонарик состоит из двух частей: объект в инвентаре игрока и лампочка (источник света), прикрепленная к телу Гарретта. Всякий раз, когда игрок "использует" объект в инвентаре, свет загорается или тухнет.

ШАГИ:

1) открой Actor Browser, добавь новый объект в категорию WorldObj/InventoryObject/PowerUp/Potion/ и назови его "PocketLight". Сделай его "placable" (т.е. размещаемым на карте). Настрой его свойства следующим образом:

* Inventory:
    - bCanUseWhileClimbing = False
    - bDeleteOnUse = False
    - bDontUseOnFullHealth = False
    - bIsInventory = True
    - bIsStackable = False
    - HelpText = <string=T_InventoryHelpTextPocketLight>
    - InvName = <string=t_PocketLight>
    - InvType = eIT_ITEM
    - MaxInventoryStack = 0

* Render:
    - ObjectMesh = GENHndLntrn1A (Default)   ->   это меш фонарика из Mesh Browser, категория "Light"

* Scripts:
    - TriggerScripts:
       -- PickUpPowerupSound   ->   Это родной скрипт. Предназначен для того, чтобы проигрывался звук, когда игрок подбирает фонарик.

2) добавь этому объекту два новых скрипта под названиями "PocketLight" и "HelpPopUpPocketLight":

* Scripts:
    - TriggerScripts:

[1] PocketLight:
    cond.:
    - When I am used in a way from the inventory
    act.:
    - Send trigger message [PocketLight]
    - Reset script conditions and actions

[2] HelpPopUpPocketLight:
    cond.:
    - Query if flag [HelpTextPocketLightDone] is set to [FALSE]
    - Logic [OR] operator
            - When I am frobbed by player
            - When [PocketLight] count in inventory becomes [Greater Than][0]
    act.:
    - Set flag [HelpTextPocketLightDone] to [TRUE] expires on map change [FALSE] expires on mission [20]
    - Popup a window with text from the file [InvHelp_PocketLight.txt]

Соответственно, создаем и флаг "HelpTextPocketLightDone", и текстовый файл "InvHelp_PocketLight.sch" (в папке ...\CONTENT\T3\Books\English).

Содержание файла "InvHelp_PocketLight.sch":

-----------------------
VERSION 2.0
TextEntry
InvHelp_PoсketLight
lang_english 2004-03-08 10:25:16 "<font=Papyrus12>\n<dc=191,183,255>\n<shadow=0,0,0>\n<jc><string=t_PocketLight><p><jc><string=T_InventoryHelpTextPocketLight>\n"
lang_french 2004-03-08 10:25:16 "<font=Papyrus12>\n<dc=191,183,255>\n<shadow=0,0,0>\n<jc><string=t_PocketLight><p><jc><string=T_InventoryHelpTextPocketLight>\n"
lang_italian 2004-03-08 10:25:16 "<font=Papyrus12>\n<dc=191,183,255>\n<shadow=0,0,0>\n<jc><string=t_PocketLight><p><jc><string=T_InventoryHelpTextPocketLight>\n"
lang_german 2004-03-08 10:25:16 "<font=Papyrus12>\n<dc=191,183,255>\n<shadow=0,0,0>\n<jc><string=t_PocketLight><p><jc><string=T_InventoryHelpTextPocketLight>\n"
-----------------------

Также, пока не забыли, добавляем в файл Inventory.sch (в папке ...\CONTENT\T3\Books\English\String_Tags) название нового предмета и текст помощи к нему:

-----------------------
TextEntry
t_PoсketLight
lang_english 2004-02-29 21:48:00 "Pocket Lamp"
lang_french 2004-03-22 12:07:22 "Фонарик"
lang_german 2004-03-11 14:03:15 "Taschenlaterne"
lang_italian 2004-03-26 06:36:55 "Lanterna tascabile"

TextEntry
T_InventoryHelpTextPoсketLight
lang_english 2004-02-29 21:48:00 "The Pocket Lamp will illuminate any night for you."
lang_french 2004-03-26 06:50:20 "Фонарик осветит для Вас любую ночь."
lang_german 2004-03-20 17:14:06 "Die Taschenlampe erhellt die Umgebung."
lang_italian 2004-03-25 07:28:12 "La lampada tascabile illuminerа le tenebre."
-----------------------

3) теперь открой категорию WorldObj/Light_/FlameLight/OilLamp/, создай новый источник света и назови его "GarrettPocketLightBulb". Сделай его "placable" (т.е. размещаемым на карте). Настрой его свойства следующим образом:

* Actor:
    - bNotMovablePhysics = False
    - bNotMovableRender = False

* Lighting:
    - FleshLightType = FL_OmniNoShadow
    - LightColor:
      -> LightBrightness = 65
      -> LightHue = 24
      -> LightSaturation = 149
    - LightShape:
      -> LightRadius = 16, все другие позиции = 0

* Render:
    - CastShadows = ShadowCasting_False
    - ObjectMesh = INVarrowBROADHEADicon(Default)   ->   это меш иконки боевой стрелы из категории "INV_WEAPON_UI/GarretInventory"

4) добавь этому источнику света два новых скрипта под названиями "GarrettPocketLightBulb" и "GarrettPocketLightBulb_OnStartToFalse":

* Scripts:
    - TriggerScripts:

[1] GarrettPocketLightBulb:
    cond.:
    - Received trigger message [PocketLight]
    act.:
    - Delay [0.01] GAME seconds
    - Toggle [bLightOn] on linked objects of type [MYSELF]
    - Reset script conditions and actions

[2] GarrettPocketLightBulb_OnStartToFalse:
    cond.:
    - When map starts, arriving from a different map
    act.:
    - Delay [0.01] GAME seconds
    - Set [bLightOn] to [False] on linked objects of [MYSELF]
    - Reset script conditions and actions

5) теперь вернись к объекту "PocketLight" и добавь ему новую связь "RiggidAttachment" (т.е. Link от "PocketLight" к "GarrettPocketLightBulb"). Настрой свойства этой связи:

* Attachment:
    - m_attachmentBone = CENTER
    - m_parentBone = CENTER

* Lifetime:
    - bDeleteChildOnDeath = True

6) теперь найдем тело игрока. Иди в категорию Pawn/PlayerPawn/Garrett/, выдели "PlayerGarrett" и добавь ему новую связь "RiggidAttachment" (т.е. Link от "PlayerGarrett" к "GarrettPocketLightBulb"). Настрой свойства этой связи:

* Attachment:
    - m_attachmentBone = CENTER
    - m_parentBone = Garrett L Hand

7) теперь надо экспортировать все скрипты (File -> Export all scripts), всё сохранить (File -> Save all packages) и закрыть Actor Browser.

Это всё. Теперь можно размещать новый фонарик на карте или в инвентаре Default Inventory. Для этого надо использовать объект "PocketLight".

НА ЗАМЕТКУ:

Единственным замеченным глюком было то, что при включении/выключении фонаря (т.е. нажатии клавиши "USE", когда в инвентаре выбран фонарь) Гарретт проигрывает такую же анимацию, как при бросании бомбы-вспышки, и звучит такой же звук. Честно говоря, я не собираюсь от этого глюка избавляться. Мне удобнее, чтобы были и этот звук, и эта анимация, поскольку это помогает контролировать момент "применения" предмета. А значит, и подсказать, как избавиться от этого глюка, тоже не смогу.

ДОБАВЛЕНО ПОЗЖЕ:
Для того, чтобы сделать твой фонарь по-настоящему уникальным, можно в категории Properties - Render - ObjectMesh использовать в качестве меша 3-D модели, изготовленные фанами (например, вот такие светильники).
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОСЫ ПО ТУТОРИАЛУ:

ВОПРОС: Я никак не могу вставить флаг "HelpTextPocketLightDone" во второй срипт. Что не так?

Просто сначала надо создать флаг в списке флагов, и только потом вставлять его в скрипт. Для этого сверни (или просто уменьши) окно со скриптами и открой в главном меню -> View -> Global Variables -> окно Flags. В открывшемся окошке впиши имя флага и жми "ADD" и "ОК". Теперь перейди в окно со криптом и добавляй только что созданный флаг.


ВОПРОС: Никак не могу найти этого "- Logic [OR] operator"...
 
В Trigger Conditions, в папке Scripts, вторая позиция.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОСЫ ПО ТУТОРИАЛУ:

ЦИТАТА:   5) теперь вернись к объекту "PocketLight" и добавь ему новую связь "RiggidAttachment" (т.е. Link от "PocketLight" к "GarrettPocketLightBulb").
ВОПРОС:   А как это сделать? Это в Actor Browser творить надо?

Конечно, в Actor Browser. Найди объект "PocketLight", выдели его, щелкни ПКМ -> Show Links -> откроется окошко "Object Links" -> жми кнопку "Add Link" -> откроется окно "Create Link" -> в списке "Link Types" выбери "RiggidAttachment", а ниже, в окне "TO", впиши вручную: "GarrettPocketLightBulb". Окошко "FROM" уже должно быть заполнено автоматически (там должно быть написано "PocketLight"). Дальше жми ОК.


ВОПРОС:   Кстати, а можно ведь в свойствах фонарика выставить тень? Это что-то глобально поменяет?
                   * Lighting:
                   - FleshLightType = FL_Omni


Конечно, поменяет.

Во-первых, начинает глючить тень самого Гарретта. Из-за особенностей анимации источник света постоянно то ныряет в тело Гарретта, то выныривает из него. Избавиться от тени Гарретта нельзя, хотя можно отрегулировать точку крепления так, чтобы источник света всегда был вне тела.

Во-вторых, источник света с тенью, намертво прикрепленный к игроку, это сильный удар по производительности. Даже если рядом нет теней и свет потушен. А FPS у третьего Вора и так слабое место.

В-третьих, чтобы получить видимый эффект, тебе придется добавить тени абсолютно ВСЕМ предметам на уровне. Ты же не знаешь, где именно игрок включит фонарь? Так вот, с таким количеством теней твоя миссия либо откажется сохраняться, либо FPS будет столь низок, что миссия не пойдет даже на супер-компьютере НАСА. Правда, есть вероятность, что если в миссии ВООБЩЕ не будет других источников света, но большая часть предметов будет с тенями, - например, какие-нибудь катакомбы - то в такой миссии даже с карманным фонарем, способным отбрасывать тень, производительность останется в норме.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

#53
ВОПРОС:   Почему у меня на карту не добавляются некоторые предметы? Например, ручная свечка хаммерита, некоторые столы, хранительская утварь и прочее.

1) если это статичный мэш из Mesh Browser, то добавляться обязаны, т.е. они должны быть видимы и в редакторе, и в игре.

2) если это активный предмет из Actor Browser, то тоже должны добавляться и должны быть видны в режиме редактора, но могут исчезать в игровом режиме, если срабатывает какой-нибудь скрипт в личном перечне скриптов этого объекта.

Ты скрипты открываешь? Смотришь, что они означают? Переводишь? У Комага написано, как создать свой скрипт. Тем же способом можно просто просмотреть скрипт, не изменяя его - после просмотра жми Cancel и не сохраняй список скриптов.

Вот ссылки на полный перечень ВСЕХ conditions и actions в скриптах. Переведи для себя оба этих списка (хотя бы приблизительно, оставив на будущее все вопросы), держи этот перечень поближе и ты будешь понимать, что ждать от каждого скрипта, просто открыв его.
http://www.ttlg.com/wiki/index.php?title=Scripting_conditions
http://www.ttlg.com/wiki/index.php?title=Scripting_Actions

3) если это любая хрень, какую ты пытаешься вставить в свою карту, после копирования её из оригинальной, то тут может быть только два подводных камня:

- у некоторых объектов в свойствах прописано название группы, к которой он приписан на данной карте. При копировании может случиться глюк и вставленные тобой копии оригинальных объектов могут визуально исчезнуть с карты в редакторе, но быть видимыми в игровом режиме. Чтобы скопированные объекты не изчезали, надо сделать следующее. Сразу после вставки объекта (не снимая выделения!!!), лезешь в свойства вещи и вставляешь (или правишь) свойство Objects/Group. Цель - удалить ВСЁ из графы напротив этого свойства, чтобы она была пустая. Чтобы редактор не тупил, я обычно сначала печатаю в графе слово "none", а затем удаляю это слово, чтоб осталась только чистая строка.

- также скопированные объекты могут быть видимыми в редакторе, но исчезать в игровом режиме потому, что у них задействовано свойство LoadFilter/ObjectLoadFilter. Так понимаю, его как-то использовали для системы дней в Т3 и он регулирует, в какие дни какие группы объектов имеют право быть на карте. Чтобы ничего не исчезало, это свойство надо удалить.

4) и если у тебя ничто из вышеперечисленного, то проверь, чтоб было в свойствах Advanced/bOutOfWorld = False. Если вместо False у тебя стоит True, то предмет виден в редакторе, но не виден в игре.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС:   Как можно замутить, чтобы при прикосновении к какой либо вещи, Гарретту наносился урон (примерно как ожог от костра)? Похожее в ФМ Valley делал Flux, когда на дверь было подано напряжение.

Прицепи к ней вот этот скрипт:

COND:
- When I am frobbed by player

ACT:
- Apply [2.00] units of stimulus [StimulusType_Fire] to linked object [Player]
- Reset script conditions and actions

 
Работает даже на обычном меше. Главное, чтобы эта вещь подсвечивалась (раздел Highlight, свойство HighlightDist = 128).

Ты можешь задать тот уровень урона, какой тебе хочется. Не переусердствуй, а то Гарретт отбросит копыта от первого же контакта, а игрока хватит удар.  :biggrin:

Кстати, при испытаниях в GAME-MOD Гарретт от ожогов не стонет, но, по идее, во время обычной игры должен. Так что эту деталь тебе надо будет проверить самому.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС:   А что в твоих объяснениях значит "проверить ребилдинг"?

Не ПРОВЕРИТЬ, а ПРОВЕСТИ ребилдинг. Это то, о чем постоянно твердит Комаг:

-------------------------------------------------------------------------
Find the "Build All" button... near the joystick – a blue-green cube next to a light bulb.

Найди кнопку "Построить всё (Build All)" рядом с джойстиком - синевато-зеленый куб с зажженной лампочкой.
-------------------------------------------------------------------------

Комаг часто говорит - rebuild your map. Вот откуда "ребилдинг". Ну не "перестройкой" же это звать?!  :biggrin:

Без регулярного ребилдинга тестовый режим нормально работать не будет. Причем, я предпочитаю именно "Build All" вместо быстрого "Build Flesh BSP" - надежнее.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС:   Молот-лут имеет в свойствах имя "t_holysymbol", в файле "Inventory.sch" он читается как:
-----------------------------------
TextEntry
t_holysymbol
lang_english 2004-02-29 21:48:00 "Holy Hammer"
lang_french 2004-04-15 18:37:06 "Святой Молот"
-----------------------------------
Но в игре, когда берёшь его, на экране появляется надпись "Добыча". Чем это вызвано?


Имя лута показывается на экране только, если это Special Loot. Для всего остального будет надпись "Добыча". Заметь, что в списке украденного этот молот будет отражаться с именем "Святой Молот" вне зависимости, Special Loot это или нет.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС:   Вот отсюда (http://darkfate.ru/index.cgi?show=files/editors/t3ed/models) я скачал 3D-модели предметов, сделанные фанами. Они годятся для TDS? Как их теперь добавить в Mesh Browser в редакторе?

Да, в архивах есть модели с расширением TIM, а значит, они должны подойти. Чтобы редактор T3Ed добавил их в Mesh Browser, достаточно создать свою подпапку (например, с именем "CUSTOM_OBJECTS") в папке ...\CONTENT\T3\StaticMeshes и скопировать туда все TIM-файлы. После этого можно запустить редактор.

Если редактор уже открыт, то в Mesh Browser можно нажать кнопку "Reload meshes", и редактор "увидит" новый меш. Однако, это довольно глючный способ - у нового меша может отказаться работать тень. Так что гораздо надежнее всё-таки закрыть T3Ed и снова его запустить.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС:   Я хочу, чтобы перед загрузкой главного меню проигрывался мой видео-ролик. Это возможно? Что для этого надо сделать?

Да, это возможно, но следует помнить, что у такого решения есть очень весомый недостаток - субтитры показываться не будут, даже если сделать для них правильный текстовый файл. Пока никто не смог исправить этот глюк. Так что приходится просто учитывать эту особенность при создании видео. Ролик, чтобы идеально воспринимался, должен быть чем-то вроде немой рекламы, с красивым видеорядом, но без голосового сопровождения или текста. Ну, или хотя бы чем-то близким к этому.

Итак, шаги:

1) переименовать видео, например, в "TitlesCABAL_engl_none_30.bik" и поместить его в папку VideoTextures

2) добавить в файл "user_patch.ini" следующие строки:
---------------------------
[XboxStartup]
ShowIntroMovies=True
ShortIntroMovies__t=d:\content\t3\VideoTextures\TitlesCABAL.bik

[PCStartup]
ShowIntroMovies=True
ShortIntroMovies__t=d:\content\t3\VideoTextures\TitlesCABAL.bik

[IntroMovieWindow]
Video=d:\content\t3\VideoTextures\TitlesCABAL.bik
---------------------------


ВОПРОС:   А как сделать, чтобы в качестве фона главного меню проигрывался мой видео-ролик?

Переименовать видео в "loopTop_01_engl_none_30.bik" и поместить его в папку VideoTextures, заменив родное видео.


ВОПРОС:   В главном меню, если некоторое время не трогать комп, периодически появляется заставка - черный экран с текстом и видео. Как сделать, чтобы там проигрывался мой текст и мой видео-ролик?

ШАГИ:

1) В файле T3UI.ini (папка System) меняем следующие значения:

[IntroMovieWindow]   -   имя раздела, где задается видео для заставки
Video=d:\content\t3\VideoTextures\TitlesCABAL.bik   -   вставить имя своего видео-файла

[IntroMovieQuoteWindow]   -   имя раздела, где задается цвет текста на экране-заставке
TextColor_R=169   -   показатель для Red
TextColor_G=144   -   показатель для Green
TextColor_B=92   -   показатель для Blue

Здесь надо варьировать все три показателя, поскольку они все одновременно влияют на конечный цвет текста. Например, чтобы получить ярко-красный, надо выставить показатели R, G и B равными 255, 0 и 0 соответственно. Значения для желаемого цвета можно взять из таблицы цветов RGB в Фотошопе.

Учти, что если файл T3UI.ini был изменен, то его необходимо включить в архив с миссией.

2) в файле Quotes.sch (папка ...\CONTENT\T3\Books\English\String_Tags) заменяем текст на свой:
---------------------------
TextEntry
T_IntroQuote
lang_english 2004-03-17 08:51:06 "Cry, Brethren, for the Betrayer is Come. Your Hands will be Crippled, and you will Perish as the Wretched Outcast in the Bleak Unwritten. And you will know the face of the Destroyer. \n\n- Recovered text from The Prophecitus, missing for 132 years"
lang_french 2004-03-29 08:01:15 "Рыдайте, Братья, ибо явился Предатель. Он искалечит вам руки, и вы канете в лету несчастными изгоями. Только тогда Предатель обратит вам свой лик. \n\n- Фрагмент из Профецитуса, считавшегося утерянным 132 года"
lang_german 2004-03-26 05:17:23 "Weinet, Brьder, denn der Verrдter wird kommen. Eure Hдnde werden verkrьppelt sein und ihr werdet wie erbдrmliche Aussдtzige verlцschen. Und dann werdet ihr das Gesicht des Zerstцrers kennen. \n\n- 132 Jahre verschollene Passage aus dem 'Prophecitus'"
lang_italian 2004-03-25 07:27:42 "Piangete, fratelli, poichй il traditore и giunto. Le vostre mani resteranno paralizzate, voi morirete come il reietto maledetto nelle fosche parole non scritte e conoscerete il volto del distruttore.\n\n- Testo recuperato da The Prophecitus, sparito per 132 anni\n"
---------------------------

3) Поместить своё видео в "TitlesCABAL.bik" и поместить его в папку VideoTextures.

АЛЬТЕРНАТИВНЫЙ ПУТЬ:
Если родной цвет текста заставки и так устраивает, а приготовленное видео предполагается показывать только в заставке, то можно обойтись и без файла T3UI.ini. Достаточно ввести свой текст в файле "Quotes.sch" и переименовать своё видео в "ThiefTrailerNoESRB_engl_none_30.bik".
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050

Tiens

ВОПРОС:   У тебя в The Oldstone Castle есть комната, где мебель летает, будто бы в неё вселился полтергейст. Как это сделано?

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

Итак, берем из Static Mesh Browser какой-нибудь меш и добавляем ему следующие свойства:

- Actor:
        * bNotMoveablePhysics = False
        * bNotMoveableRender = False

- Movement:
        * RotationRate:
                -> Pitch = 0
                -> Roll = 0
                -> Yaw = 90

- PhysicsAction:
        * SwingAction:
                -> MaxForce:
                        => X = 600
                        => Y = 500
                        => Z = 700

Благодаря MassimilianoGoi удалось доказать, что для того, чтобы этот трюк железно работал, должны быть выполнены эти условия:

1) нужно использовать только объекты STATIC MESH из Static Mesh Browser. Некоторые объекты из Actor Browser тоже будут "летать", но далеко не все. Это происходит из-за унаследованных свойств объектов. А вот Static Mesh будет "летать" в любом случае.

2) нужно поместить объект как можно выше в воздухе. Сам по себе меш не собирается взлетать вверх. По-настоящему, он всегда падает вниз, но т.к. его постоянно мотает из стороны в сторону, то он взлетает, поскольку стукается об стены.
Windows XP Professional SP3, Intel Core 2 CPU 6400 @ 2.13GHz each CPU (4.26GHz total), Random Access Memory 3.25Gb, NVIDIA GeForce 9600 GT, Motherboard ASUS P5KC, Monitor Resolution 1680x1050