Создание телепорта в Fable: The Lost Chapters
через редактор кода
Автор статьи: Torionel. Использованы материалы с fabletlcmod.com/wiki
Для начала вам понадобится любой редактор кода (например, Notepad++, хотя на худой конец подойдет и Блокнот Windows). Также будет нужен какой-нибудь объект для самого телепортера (вам нужно будет на чем-то щелкнуть в игре Tab'ом) и "объект-предназначение" (для этого можно использовать невидимые в игре маркеры). Оба объекта должны находиться в .tng-файле СТАРТОВОЙ локации.
Шаг 1. Получение координат
Откройте в своем редакторе кода FinalAlbion.wld и найдите карту, откуда будете телепортироваться.
Например:
NewMap 1;
MapX 3232;
MapY 3488;
LevelName "FinalAlbion\LookoutPoint.lev";
Это стартовая позиция. Теперь нужно найти карту, в которую вы будете телепортироваться.
Например:
NewMap 326;
MapX 4736;
MapY 5184;
LevelName "creature_hub.lev";
Запомните X-координаты локации, куда нужно телепортироваться, и вычтите из них X-координаты стартовой локации: в данном примере получится 4736 (Creature Hub) минус 3232 (LookoutPoint).
Теперь проделайте то же самое с Y-координатами: в нашем примере 5184 минус 3488.
Шаг 2. Применение координат
Подставьте полученные цифры в маркер или что-либо, что вы использовали как КОНЕЧНЫЙ объект.
PositionX 1504.00;
PositionY 1696.00;
Это будет выглядеть примерно так:
NewThing Marker;
Player 4;
UID 1844674187468630005444448;
DefinitionType "GAZE_OUT_OF_BUILDING_MARKER";
ScriptName NULL;
ScriptData "NULL";
ThingGamePersistent FALSE;
ThingLevelPersistent FALSE;
StartCTCPhysicsStandard;
PositionX 1504.00;
PositionY 1696.00;
PositionZ 12.32;
RHSetForwardX 0.927178;
RHSetForwardY -0.374605;
RHSetForwardZ 0.0;
RHSetUpX 0.000342;
RHSetUpY 0.000847;
RHSetUpZ 0.999994;
EndCTCPhysicsStandard;
StartCTCEditor;
EndCTCEditor;
StartCTCVillageMember;
VillageUID 197244689441620123;
EndCTCVillageMember;
Health 1.0;
EndThing;
Теперь пропишите в строчке EntranceConnectedToUID вашего телепортера идентификатор (UID) конечного объекта.
Например:
NewThing Object;
Player 4;
UID 36363632222229999777;
DefinitionType "OBJECT_OK_GARGOYLE_FEMALE_02";
CreateTC "CTCActionUseScriptedHook";
ScriptData "NULL";
ThingGamePersistent FALSE;
ThingLevelPersistent FALSE;
StartCTCPhysicsStandard;
PositionX 126.44458;
PositionY 75.484619;
PositionZ 30.163687;
RHSetForwardX -0.788017;
RHSetForwardY -0.615644;
RHSetForwardZ 0.0;
RHSetUpX 0.000301;
RHSetUpY -0.000385;
RHSetUpZ 0.999994;
EndCTCPhysicsStandard;
StartCTCEditor;
EndCTCEditor;
StartCTCActionUseScriptedHook;
Usable TRUE;
ReversedOnMiniMap FALSE;
HiddenOnMiniMap TRUE;
VersionNumber 1;
ForceConfirmation FALSE;
TeleportToRegionEntrance TRUE;
EntranceConnectedToUID 1844674187468630005444448;
SoundName "";
AnimationName "";
ReplacementObject 0;
EndCTCActionUseScriptedHook;
Health 1.0;
EndThing;
С помощью этого метода вы будете телепортированы точно в угол карты конечной локации. Чтобы перенестись в нужное вам место, нужно изменять в конечном объекте те самые координаты, которые мы получали вычитанием. Здесь придется экспериментировать, прибавляя или убавляя по 5 или 10 в каждой строке:
PositionX 1504.00;
PositionY 1696.00;
PositionZ 12.32;
...тогда вы получите лучшее представление о том, как это работает. Важно понимать, что эти координаты отличаются от координат остальных объектов в .tng-файле локации. Если те указывают на положение объекта в локации, то эти координаты в конечном объекте обозначают положение на "мировой" карте игры. Если перестараться с подстановкой, можно оказаться совсем в другой локации или добиться вылетов игры. Тем не менее, ничего сложного в этом нет.
Дополнительные параметры
Если вы добавите в строку ScriptData вашего телепортера значение "Teleport?", то при нажатии вместо автоматической телепортации будет появлятся диалог, запрашивающий разрешение.
Также обратите внимание на строчку HiddenOnMiniMap в скрипте вашего ТЕЛЕПОРТЕРА. Если значение установлено в 'FALSE', то ваш телепортер будет отображаться на карте белой отметкой, как простые переходы из локации в локацию. Если вам это не нужно, установите значение в 'TRUE'.
Больше интересного о Fable — в