Как создать торговца
в Fable: The Lost Chapters

Автор статьи: Torionel

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

Способ 1

Товары торговца задаются в дефе CShopDef, и ссылка на него прописана в CREATURE торговца в файле game.bin.

Внутреннее устройство CShopDef

  1. Откройте CShopDef нужного торговца (можно взять из списка).
  2. Нажмите в новом окне на CShopDef.
  3. Первые пять полей можно пропустить: даже имея самые малые познания в английском можно понять, что там указывать.
  4. Перейдите к полю DefaultStock.
  5. В поле ItemForSell укажите ID нужного предмета (можно взять из списка).
  6. Значения остальных 14 полей под этим вы можете заполнить, скопировав значения из других CShopDef, или оставив то, что было. Нас здесь интересует только Amount In Stock (количество предмета в продаже) и Days Until Restocked (через сколько дней после покупки предмет снова появляется у торговца).
  7. Чтобы добавить еще один предмет в продажу, нажмите Add чуть выше поля, где указывали ID предмета.

Этот способ бесполезен для моддеров, потому что после установки fmp-файла с вашим торговцем и новыми предметами в CShopDef идентификаторы новых предметов не будут совпадать с копией игры, на которой вы делали мод. Хотя на вашей копии всё работать будет.

Способ 2

  1. Скачайте мод-исходник Scripted Shopkeeper и установите его.
  2. С помощью Chocolate Box (CBox) создайте этого торговца в нужной локации.
  3. Чтобы добавить в его ассортимент нужные предметы, поменяйте в его параметрах значения StockItemDefsKeys, StockItemDefsQuantity и StockItemDefsMaxStock.

Скрипт модифицированного торговца следующий:

NewThing AICreature;
Player 2;
UID  18446741873886729499;  
DefinitionType "CREATURE_TRADER_STOCKED_SCRIPTED";
ScriptName NULL;
ScriptData "NULL";
ThingGamePersistent FALSE;
ThingLevelPersistent FALSE;
StartCTCPhysicsNavigator;
PositionX 44.23291;
PositionY 121.32250;
PositionZ 31.91408;
RHSetForwardX 0.00000;
RHSetForwardY 1.00000;
RHSetForwardZ 0.00000;
RHSetUpX -0.00216;
RHSetUpY -0.00030;
RHSetUpZ 1.00000;

EndCTCPhysicsNavigator;
StartCTCTargeted;
Targetable TRUE;
EndCTCTargeted;
StartCTCContainerRewardHero;
EndCTCContainerRewardHero;
StartCTCEnemy;
FriendsWithEverythingFlag FALSE;
EnableFollowersEnemyProxy TRUE;
FactionName "";
EndCTCEnemy;
StartCTCShop;
StockItemDefsKeys[0] "OBJECT_****";
StockItemDefsQuantity[0] 1.0;
StockItemDefsMaxStock[0] 1.0;
StockItemDefsKeys[1] "OBJECT_****";
StockItemDefsQuantity[1] 1.0;
StockItemDefsMaxStock[1] 1.0;

EndCTCShop;
Health 200.0;
EnableCreatureAutoPlacing FALSE;
EndThing;

Если захотите вставить его с помощью редактора кода или Блокнота, красные значения надо обязательно изменить.

Больше интересного о Fable — в нашем Telegram-канале и чате