Итак, для чего это нужно - просто заспаунить постройки и неговорящих npc с фиолетовой аурой может каждый дурак. Но как сделать, чтобы спаунились стражи, чтобы показывало уровень штрафа за убийство?
Все в tng-файлах локаций, finalalbion.wld и в REGION entry в game.bin. Нет нужды объяснять знающим моддерам, зачем нужен REGION в game.bin)) Но вы должны убедиться, что у локации, в которой вы построите город, указан какой-либо REGION в finalalbion.wld.
Т.е. проверяем, чтобы у локации присутствовала похожая строка в wld-файле:
RegionName "PrisonSecretPassageExterior";
NewDisplayName "TXT_REGION_SECRET_PASSAGE_EXTERNAL";
RegionDef "REGION_SECRET_PASSAGE_EXTERNAL"; - вот эта вот строка
MiniMapGraphic MINIMAP_PRISONSECRETPASSAGEEXTERIOR;
MiniMapScale 1.0;
MiniMapOffsetX 1.0;
MiniMapOffsetY -31.0;
WorldMapOffsetX 1021.0;
WorldMapOffsetY 335.0;
NameGraphicOffsetX 0.0;
NameGraphicOffsetY 0.0;
ContainsMap "FinalAlbion\PrisonSecretPassageExterior.lev";
SeesMap "FinalAlbion\PrisonSecretPassageExterior_Filler_01.lev";
EndRegion;
Так вот, сама механика:
- находим в tng любой уже имеющейся в игре деревни скрипт, начинающийся с NewThing Village; (юзаем поиск блокнота, эта штука там всего одна). Вы должны скопировать скрипт в свою локацию. Насчет координат - по идее, лучше заменить на новые. И сгенерировать новый UID обязательно. Если все правильно сделаете, в локации автоматически появятся стражники. После этого:
если нужно заспаунить дом - спауньте, в villageUID в CBox указывает ID своего скопированного скрипта. Если, допустим, вы заспаунили дом из Оуквэйла, и VILLAGE script взяли из Белогорья, то это, скорее всего, не сработает (у меня не хочет). Поэтому спауним те дома, которые "подходят" под тип VILLAGE (Белогорские дома с белогорским скриптом и т.д.). После спауна дома, если вы соблюдали все инструкции, в нем уже будет жить npc. Можно добавить ему и мебель - для этого нужно указать то ли UID дома в CTCOwnedEntity предмета, то ли UID хозяина)) хрен его знает, но это работает 100%.
если вам нужно заспаунить отдельного "бездомного" npc, указывайте в его VillageUID все тот же uid вставленного скрипта. В CBox эта функция не пашет, так что ручками - через блокнот - (вставляем
VillageUID xxxxxxxxxxxxxxxxxxxx;
EndCTCVillageMember;
после координат NPC)
Если вам нужно заспаунить бочонок, при разбивании которого люди будут ругаться:
вставляем в villageuid бочонка uid из вставленного скрипта (опять же, МОЖНО через CBox).
И последнее - штрафы. Все это - в REGION данной локации.
Строки 955B43EC и 1DC7E2A3 (сразу после SoundMap) указывают на запрещение на ношение оружия и использование магии (как в Бауэрстоуне). Ставим 1 если нужно, и 0 - если нафиг.
UseVillageTime - если значение 1, если я не ошибаюсь, то глашатай будет кричать по утрам и на закате (всем знакомо? "лааавки открываааются!").
Поставьте единицы в UseCrimes и Display Crimes, и при хулиганстве будет появлятся табличка штрафа.
И да, если возникнут вопросы:
я использовал этот скрипт (вместе с домами из Оуквэйла, естественно)
Player 4;
UID 18446741874686296575;
DefinitionType "VILLAGE_OAKVALE";
ScriptName V_OakVale;
ScriptData "NULL";
ThingGamePersistent TRUE;
ThingLevelPersistent TRUE;
Health 0.00000;
ObjectScale 1.00000;
StartCTCPhysicsStandard;
PositionX 87.57080;
PositionY 115.36840;
PositionZ 9.37355;
RHSetForwardX 0.00000;
RHSetForwardY 0.99999;
RHSetForwardZ 0.00000;
RHSetUpX 0.00000;
RHSetUpY 0.00000;
RHSetUpZ 0.99999;
EndCTCPhysicsStandard;
StartCTCVillage;
HasBeenInitiallyPopulated FALSE;
FramePlayerLastSeenByGuard -4528509;
Limbo FALSE;
IsEnemyBecauseOfCrime FALSE;
CurrentIsHeroCriminal FALSE;
EndCTCVillage;
StartCTCEnemy;
FriendsWithEverythingFlag FALSE;
EnableFollowersEnemyProxy TRUE;
FactionName "";
EndCTCEnemy;
StartCTCCreatureOpinionOfHero;
InteractedFlag FALSE;
GreetedFlag FALSE;
LastOpinionReactionFrame 0;
NumberOfTimesHit 0.0;
ToleranceToBeingHitOverride -1.0;
FrameToDecayNumberOfTimesHit 2147483647;
ForcedAttitude 18;
HeroOpinionEnemy FALSE;
EndCTCCreatureOpinionOfHero;
EndThing;