Спаун телепортера через Блокнот (сложный метод) / скрипт телепортера |
Автор статьи: Torionel. Использованы материалы статьи с fabletlcmod.com/wiki |
Эта статья о том, как сделать из какого-либо объекта телепортер, переносящий Героя в нужное место в нужной локации. Используя этот метод, вы можете попасть куда угодно.
Для начала вам понадобится какой-нибудь объект для самого телепортера (вам ведь нужно будет на чем-то щелкнуть 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 координаты стартовой локации: (Creature Hub) 4736 минус 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'.