Заговоры и приметы для хорошей торговли на рынке или в магазине. Призыв жителя с нужными параметрами

EXTREME_TRUCKER
Вещи, которые продают торговцы можно отредактировать(добавить/убрать) в файлах gamedata\configs\misc с именем trade_YYY.ltx, где YYY – это имя торговца(например trade_barman.ltx. Если после назв. предмета стоит NO TRADE, значит торговец это не продаёт(не покупает). Вместо NO TRADE нужно вписать желаемые числа (см.ниже).
Итак, поехали:
Структура файла на самом деле очень проста, под зачком; прописаны сами предметы, а после него – комментарий(чтоб понятно было). Например;Аммуниция.
В квадратные скобки заключены(), как бы сказать, “условия”. Лучше показать на примере:
В самом начале(практически) файла trade_barman.ltx идёт строка содержания , т.е. она означает, что ниже прописанные предметы торговец может купить.
Сами предметы например:
;Артефакты
af_medusa = 1, 0.3
af_cristall_flower = 1, 0.3

Или
;ADDONS
wpn_addon_scope = 0.7, 0.2
wpn_addon_scope_susat = 0.7, 0.2
Посмотрим какие ещё “условия” содержит этот файл и их значение:
- начальный ассортимент
- ассортимент, после выполнения квеста в тёмной долине
- ассортимент, после “выжигателя мозгов”
- цены по которым торговец(бармен в данн. сл.) продает в начале
- аналогично
Итак: чтобы добавить предмет к торговцу, после строки , находим интересующую нас категорию(а это может быть: ;Аммуниция/;Оружие/;Броники/;Медикаменты/;Еда и др.) и после всех прописанных в данной категории предметов добавляем ещё одну строчку для своего предмета(а именно название модели(т.к. оно совпадает с названием самого предмета) и после знака = параметры(о них чуть ниже)). Ну я так и знал что вы ничего не поймёте, поэтому пример:
Чтобы добавить бармену винтовку Гаусса, находим строки после условия -
;Оружие
wpn_pb = 3, 0.6
wpn_walther = 3, 0.6
wpn_mp5 = 3, 0.6
wpn_ak74u = 3, 0.5
и внизу прописываем wpn_gauss = N, n.n
*о значениях после знака = см. ниже.
Все имена оружия, амуниции, снаряжения и т.п. можно найти в папках gamedata\meshes\equipments,
gamedata\meshes\weapons, gamedata\meshes\food.
Заметьте, что wpn_gauss нужно писать без расширения.ogf
Значения:
После знака = у вальтера например стоит цифра 3, а после запятой – 0,6.
Первое, для гаусса у нас стоит N, это количество(в штуках) предметов. Т.е. если поставить значение 999, то у бармена будет 999 гауссов.
А второе:
1. В разделах supplies вторая цифра это вероятность появления данного предмета.
2. В разделе buy - первая цифра максимальная цена покупки, вторая минимальная (зависит от отношения торговца к Меченному - рейтинг, репутация)[Предположительно. – прим.]
3. Соответственно в разделах sell - первая цифра минимальная цена продажи, вторая - максимальная (точнее множитель на "истинную цену" предмета). Tnx GreyL.
В итоге должно получиться:
;Оружие
wpn_pb = 3, 0.6
wpn_walther = 3, 0.6
wpn_mp5 = 3, 0.6
wpn_ak74u = 3, 0.5
wpn_gauss = 6, 0.6
И тогда у торговца мы получим ровно 6 винтовок Гаусса.

При создании карт для майнкрафта у многих возникает желание создания квестов, то есть заданий для игроков — типа «Убей 5 зомби», «Добудь 3 алмаза» и т.д. Раньше игроки просто создавали задачи для игроков, а игрок сам должен был считать сколько он убил, сколько собрал, в-общем, сам должен контролировать выполнение квестов, при этом любое задание можно пропустить и перейти к следующему, согласитесь, это было совсем неправильно. Но времена меняются, в игре появились коммандные блоки и очень полезные , теперь в майнкрафте можно сделать практически всё, что угодно, но при знании программирования и желании изучать команды игры, о которых пишут не так часто. Об одной из возможностей я напишу в этой статье, а именно о том, как назначить товары, которые продаёт и покупает деревенский житель.

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

Мы будем использовать команду , чтобы призвать жителя с нужными нам товарами. Команды будут получаться достаточно длинными, поэтому не все они будут влезать в чат, в таком случае используем командный блок.

Призыв жителя с нужными товарами

/summon Villager ~ ~ ~ {Offers:{Recipes:[{maxUses:3,buy:{id:265,Count:8},sell:{id:266,Count:1}}]}}

Меняется максимум 3 раза, купит 8 железных слитков (id:265) за 1 золотой слиток (id:266).

Призыв с помощью коммандного блока

1. Получаем коммандный блок:

/give @p minecraft:command_block

2. Устанавливаем коммандный блок на землю, кликаем по нему правой кнопкой мыши, вводим нашу команду.

3. Рядом с коммандным блоком ставим рычаг, и «дергаем» его, житель призвался, удаляем блок и рычаг.

Другие возможности

1. Призыв жителя одной из 6-и профессий:

/summon Villager ~ ~ ~ {Profession:#}

Вместо # — вставляем от 0 до 5

2. Даём жителю имя:

/summon Villager ~ ~ ~ {CustomName:name,CustomNameVisible:1}

Вместо «name» — любое имя, лучше на английском, так будет меньше конфликтов, хотя и на русском можно.

3. Житель просит два товара

/summon Villager ~ ~ ~ {Offers:{Recipes:[{maxUses:#,buy:{id:#,Count:#,Damage:#},buyB:{id:#,Count:#,Damage:#},sell:{id:#,Count:#,Damage:#}}]}}

maxUses — сколько раз можно обмениваться
id — ID товара
Count — количество
Damage — Доп.ID (например, у досок, шерсти, стекла) или поврежденность предмета, можно удалить или поставить 0

4. Множественная торговля

/summon Villager ~ ~ ~ {Offers:{Recipes:[{maxUses:#,buy:{id:#},sell:{id:#}},{maxUses:1,buy:{id:118,tag:{display:{Name:No More Trades}}},sell:{id:118,tag:{display:{Name:No More Trades}}}}]}}

Сначала торговец продает что-то «maxUses» раз, затем начинает продавать что-то другое.

5. Сочетание всех свойств

/summon Villager ~ ~ ~ {CustomName:name,Profession:#,Offers:{Recipes:[{maxUses:#,buy:{id:#,Count:#,Damage:#},sell:{id:#,Count:#,Damage:#}},{maxUses:1,buy:{id:118,tag:{display:{Name:No More Trades}}},sell:{id:118,tag:{display:{Name:No More Trades}}}}]}}

Здесь главное не ошибиться и заполнить все правильно, иначе игра будет «Крашиться» и вылетать.

Эта статья посвящена созданию торговца, в конструкторе Creation Kit. Не просто торговца всего хлама, что можно подобрать в Скайриме, а эксклюзивного товара - драгоценных камней.

Версия: 1.0

Skyrim
Оглавление:

В роли торговца будет не новый персонаж, а аргонианин из самой игры..

Так и интересней делать и у НПС есть хоть какая-то своя жизнь.

ЧАСТЬ 1. Вступление

Откроем редактор и загрузим skyrim.esm. (после этого шага, уже можно дать название вашему моду, нажав пиктограмку дискетки).

Откроем набор "Actor", в фильтре напишем "Deekus".

В списке персонажей останется только нужный нам.

ПКМ(правая кнопка мышки) щелкнем на Дикуса и из контекстного меню, выберем "Use info".

Нам откроется форма, в которой есть вся информация о нужном НПС. Собственно, это меню применимо и к другим объектам из списка редактора и это ОЧЕНЬ удобный инструмент!

Двойной щечок на этом поле, откроет в окне рендеринга, местонахождение самого персонажа.

ЧАСТЬ 2. Контейнер

Чтоб отключить отображение маркеров, дыма и прочих спецэффектов, выделив окно рендеринга, нажимаем кнопку [M].

Выделяем бочку, рядом с персонажем

Нажимаем +[D] - это сделает дубликат бочки и переведет на нее выделение. Теперь бочку надо просто сместить в сторону. Ее лучше уменьшить, зачем, я расскажу позже. Чтоб уменьшить, зажав [s] и ЛКМ(левую кнопку мышки) поведите вниз и она уменьшится, вверх и она увеличится. Я сделал так:

Теперь, из этой бочки, будем делать наш основной контейнер, в который позже положим деньги(для расплаты с ГГ) и драгоценные камни.

Т.к. мы просто скопировали бочку, она является точной копией 100500 таких же бочек. Двойной щелчок на "нашей" бочке, откроет ее свойства.

Нам нужна кнопка , чтоб открылась форма, со свойствами БАЗОВОГО контейнера.

На этой форме, нам нужно изменить название контейнера, чтоб в редакторе появился новый контейнер.

Я задал имя(ID) "aaBarrelFood01" и вычистил его содержимое. Обратите внимание, чтоб была установлена галка [x] Respawn, это необходимо для того, чтоб через время(какое-то) у нашего продавца, появился новый товар и деньги.

Все, форму можно закрыть, согласившись с редактором, что это НОВЫЙ объект

Найти наш новый контейнер в редакторе.

Двойным щелчком откроем наш новый кнтейнер и перейдем в набор "Items" - "LeveledItems", где в фильтре введем "VendorGoldMisc"(можно и "VendorGold", собственно без разницы, нам нужен любой левельный "кошелек")

Двойной щелчок на объекте, раскроет форму его настройки.

Здесь нам нужно дать название новому объекту("aaVendorGoldDeekus"), выставить количество денег у продавца, для торговли с ГГ и нажать [ Ok ]. Выскочит форма вопрос/предупреждение([ Ок ] = создать новый объект, [ Cancel ] = переименовать старый). Нам нужен новый. *Вообще, примером хорошего тона, при создании модов, является создание НОВЫХ объектов, а не изменение старых, это позволит сократить конфликты между модами. Хотя бывают случаи, когда надо только изменять ванильный объект(например, мы будем изменять самого Дикуса, позже)

У нас появился в списке наш "кошелек", его нужно подхватить мышкой и перетащить в наш контейнер.

Теперь, когда у торговца есть деньги для покупки товара у ГГ, нам нужно дать торговцу товар.

Для этого, оставаясь в этом же наборе, в фильтре введем "LItemGems" и перетянем набор камней в наш контейнер.

По большому счету, с контейнером мы закончили. На форме настройки нашего нового контейнера нажимаем [ Ok ], форма закрывается, можно переходить к пакетам.

ЧАСТЬ 3. Формлист

Формлист - это набор(список), удовлетворяющих нас критериев. Этот лист определит, чем сможет торговать Дикус.

Открываем набор "Miscellaneous" - "FormList"(не забудьте очистить фильтр). Здесь в списке все списки(Бггг), которые присутствуют в игре. Тыцкнем ПКМ(где выделено зеленым) и выберем контекстное меню "New".

Откроется форма настройки объекта. Которой надо дать имя. Я дал имя "aaDeekusFormList". Закрывать ее не надо.

В эту форму мы добавим то, чем сможет торговать Дикус. Для этого надо перейти в набор "Miscellaneous" - "Keyword", в фильтре найти "vendorItemGem"и перетащить в наш список. Собственно, это и есть игровой список ВСЕХ драгоценных камней.

Теперь наш новый "список" можно закрыть, он уже не понадобится(если только вы не захотите добавить другие критерии выборки, чем сможет торговать Дикус.

ЧАСТЬ 4. Фракции

Переходим во набор "Character" - "Factions", в списке объектов ПКМ и выбираем контекстное меню "New".

Открывается форма управления фракцией. В ней надо перейти на вкладку "Vendor", отметить "[x] Vendor", это значит, что участник этой фракции торговец, отметить время, когда он будет торговать, я выставил с 9 до 19. За тем, надо указать радиус торговли. Зная, что этот НПС никуда с места стоянки не уходит, я поставил радиус 128(этого вполне хватит, для конкретной задачи).
Теперь надо выбрать созданный нами ранее список "aaDeekusFormList" в выпадающем списке "Vendor Buy/Sell List".

И! переходим к выбору контейнера, по кнопке . *Чтоб это можно было сделать, в окне рендера мы должны видеть наш контейнер*. Двойной щелчок ЛКМ на нашей бочке, определит наш новый контейнер. Все, с контейнером разобрались.

Теперь уделим внимание локации, чтоб тот радиус(128), который мы назначили ранее, имел центр. :)
Для этого щелкнем по кнопке "Location [ Edit ]". У нас откроется еще одна форма, в которой мы выберем "(x) Near Reference" и у нас станет доступна кнопка . Щелкним по этой кнопке и в окне рендеринга, двойным кликом выберем наш контейнер. Теперь нажимаем [ Ok ], форма закрывается.

Проверяем, что мы выбрали и что конструктор об этом теперь знает. Я выделил зеленым цветом те места, где названия поменяются автоматически, если было хоть что-то выбрано. Нажимаем [ Ok ]. Фракция готова к употреблению.

PS. Тут нужно было сделать еще одно действие, которое я не "сфотографировал". Нам нужно наш контейнер(маленьку бочку), ли опустить под землю, но тогда хитрые игроки, с помощью консоли к ней спутятся под землю и стырят все деньги и драгоценные камни у Крокодила Гены Дикуса. Или... я так делаю. сделать "матрешку". То есть контейнер, мышкой расположить внутри другого контейнера. Для этого мы его уменшали в начале мануала. Так игрок, даже воспользовавшись кодом "хождения сквозь стены", до нашего контейнера не доберется.. т.к. будет срабатывать внешний контейнер. Ну, тут уж зависит от вашего мастерства. Можно контейнер сделать чуточку меньше и расположить его по тем же координатам, что и контейнер, из которого мы делали наш. Это самый аккуратный способ.*

ЧАСТЬ 5. Редактируем НПС


Открываем нашего Дикуса и переходим во вкладку "AI Packages", ПКМ на окошке со списком пакетов и выбираем контекстное меню "Add". Открывается форма, на которой есть поле ввода(оно же фильтр) и список всех доступных пакетов. Нам нужен стандартный пакет торговли "DefaultServicesEditorLoc24x7". Начните набирать его название, чтоб отфильтровать ненужные.

За тем, по двойному щелчку мышки, он добавится в список АИПакетов. На этой вкладке все.


Теперь переходим на вкладку "Factions". В конкретном, именно этом случае!!! Есть пакет, который делает Дикуса по отношению к игроку неучтивым, то есть его реплики будут весьма грубыми. Я убрал этот пакет, т.к. ящерки в Скайриме, кроме как с "Прилетит вдруг волшебник, в голубом вертолете и бесплатно покажет", ни с чем другим не ассоциируются(будем считать, что это мой маленький каприз).

Теперь надо добавить созданную нами ранее фракцию "aa_DeekusJobMerchantFaction" и еще 2 фракции "JobMerchantFaction" и "JobStreetVendorFaction"

В итоге, набор фракций будет выглядеть так.

**Все же, решил спрятать бочку и наглядно показать как это сделать грамотно.

Двойной клик на каждой бочке вызовет форму редактирования объекта. Переходим на вкладку "3D Data". Черным отмечены названия(ID) объектов. Красным обозначены поля на ванильном объекте, который нам лучше вообще не сдвигать никуда, что не внести в наш мод информацию об изменении этого объекта. Зеленым выделены поля, куда надо скопировать данные из полей, выделенных красным. Это обычная копипаста.. выделил-скопировал-вставил.

Фиолетовм выделено поле, где задается общий размер объекта. я поставил 0.98. На скриншоте хорошо видны границы выделения объектов и что один больше, а другой меньше.
Теперь форму редактирования нашего контейнера закрываем по [ Ok ], а форму ванильного контейнера по [ Cancel ]

Торговцы:

Вещи, которые продают торговцы можно отредактировать(добавить/убрать) в файлах с именем [b]trade_YYY.ltx[.B], где [b]YYY[.B] – это имя торговца(например [b]trade_barman.ltx[.B])

Итак, поехали:

Структура файла на самом деле очень проста, под зачком; прописаны сами предметы, а после него – комментарий(чтоб понятно было). Например;Аммуниция.

В квадратные скобки заключены(), как бы сказать, “условия”. Лучше показать на примере:

В самом начале(практически) файла trade_barman.ltx идёт строка содержания , т.е. она означает, что ниже прописанные предметы торговец может купить.

Сами предметы например:

;Артефакты

af_medusa = 1, 0.3

af_cristall_flower = 1, 0.3

af_night_star = 1, 0.3

af_vyvert = 1, 0.3

af_gravi = 1, 0.3

af_gold_fish = 1, 0.3

af_blood = 1, 0.3

af_mincer_meat = 1, 0.3

wpn_addon_scope = 0.7, 0.2

wpn_addon_scope_susat = 0.7, 0.2

Посмотрим какие ещё “условия” содержит этот файл и их значение:

Начальный ассортимент

Ассортимент, после выполнения квеста в тёмной долине

Ассортимент, после “выжигателя мозгов”

Цены по которым торговец(бармен в данн. сл.) продает в начале

Аналогично

Итак: чтобы добавить предмет к торговцу, после строки , находим интересующую нас категорию(а это может быть: ;Аммуниция/;Оружие/;Броники/;Медикаменты/;Еда и др.) и после всех прописанных в данной категории предметов добавляем ещё одну строчку для своего предмета(а именно название модели(т.к. оно совпадает с названием самого предмета) и после знака = параметры(о них чуть ниже)). Ну я так и знал что вы ничего не поймёте, поэтому пример:

Чтобы добавить бармену винтовку Гаусса, находим строки после условия -

wpn_walther = 3, 0.6

wpn_mp5 = 3, 0.6

wpn_ak74u = 3, 0.5

и внизу прописываем wpn_gauss = N, n.n

*о значениях после знака = см. ниже.

Все имена оружия, амуниции, снаряжения и т.п. можно найти в папках gamedata\meshes\equipments,

gamedata\meshes\weapons, gamedata\meshes\food.

Заметьте, что wpn_gauss нужно писать без расширения.ogf

Значения:

После знака = у вальтера например стоит цифра 3, а после запятой – 0,6.

Первое, для гаусса у нас стоит N, это количество(в штуках) предметов. Т.е. если поставить значение 999, то у бармена будет 999 гауссов.

А второе:

1. В разделах supplies вторая цифра это вероятность появления данного предмета.

2. В разделе buy - первая цифра максимальная цена покупки, вторая минимальная (зависит от отношения торговца к Меченному - рейтинг, репутация)[Предположительно. – прим.]

3. Соответственно в разделах sell - первая цифра минимальная цена продажи, вторая - максимальная (точнее множитель на "истинную цену" предмета). Tnx GreyL.

В итоге должно получиться:

wpn_walther = 3, 0.6

wpn_mp5 = 3, 0.6

wpn_ak74u = 3, 0.5

wpn_gauss = 6, 0.6

И тогда у торговца мы получим ровно 6 винтовок Гаусса.

Создание рандомного выбора муз. заставки главного меню:

При заходе на экран главного меня муз. заставка будет выбираться случайно из добавленных вами.

1. В директорию gamedata\sounds\music\ положить два канальных ogg-файла с нужной музыкой, например: my_music_l.ogg (левый канал) и my_music_r.ogg (правый канал)

2. В текстовом редакторе открыть файл gamedata\config\ui\ui_mm_main.xml, найти в нем строку:

и заменить на:

3. В этом же файле найти строку:

music\wasteland2

и ниже нее выставить следующую строку:

5. Если требуется вставить больше муз. заставок, то в параметре random укажите их количество.

NPC покупают оружие:

Чтобы обычные сталкеры и др. npc могли покупать у ГГ оружие, нужно править файл gamedata\config\misc\trade_generic.ltx. Его структура точно такая же, как и у любого другого торговца.

После строки находим строку;Оружие и после неё у каждого вида ставим зачения N и n.n.

Можно например так:

wpn_pm = 0.08, 0.12

wpn_pb ;NO TRADE

wpn_fort = 0.08, 0.12

wpn_hpsa = 0.08, 0.12

wpn_beretta = 0.08, 0.12

wpn_walther = 0.08, 0.12

wpn_sig220 ;NO TRADE

А чтобы у npc продавалось оружие, нужно проделать тоже самое, только после строки

Метод я проверял, вроде как работает.

Чтобы после покупки персонаж не выкидывал купленное оружие(а также чтобы подбирал его с земли), в файле gamedata\config\creatures\m_stalker.ltx строку can_select_items = off меняем на can_select_items = on

и строку use_single_item_rule = on меняем на use_single_item_rule = off .

Файлы

Ассортимент товаров у торговцев хранится в файлах вида trade_[...].ltx, где... - системное имя торговца. Это файлы:
trade_barman.ltx - Бармен
trade_dolg.ltx - сержант Петренко на базе группировки "Долг"
trade_ecolog.ltx - Сахаров
trade_freedom.ltx - Скряга на базе группировки "Свобода"
trade_trader.ltx - Сидорович
trade_generic.ltx - обычный сталкер

Все они хранятся в папке:
...\S.T.A.L.K.E.R\gamedata\config\misc\...
Структура файла

Разберем структуру файла trade_barman.ltx:

buy_condition = barman_generic_buy
sell_condition = {+yan_labx16_switcher_primary_off} barman_after_brain_sell, {+bar_darklab_document_done} barman_after_darkvalley_sell, barman_start_sell
buy_supplies = { yan_labx16_switcher_primary_off} supplies_after_brain, { bar_darklab_document_done}
supplies_after_darkvalley, supplies_start

После этого идет раздел , содержащий предметы, которые бармен покупает.

Структура записи в этом разделе:
wpn_walther = 0.3, 0.1
0.3 - максимальная цена, по которой торговец купит предмет
0.1 - минимальная цена, по которой торговец купит предмет

Цена зависит от репутации игрока.

;"""Аммуниция"""
ammo_9x18_fmj = 15, 0.6
...

;"""Оружие"""
wpn_pb = 3, 0.6
...

;"""Броники"""
stalker_outfit = 3, 0.7
...

;"""Медикаменты"""
bandage = 5, 0.6
...

;"""Еда"""
bread = 10, 0.5
...

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

Теперь о структуре одной записи:
wpn_walther = 3, 0.6
wpn_walther - имя предмета, в данном случае - пистолет "Вальтер"
3 - количество предметов этого типа у торговца
0.6 - вероятность появления каждого из них

То есть если значения равны 4, 0.5, то это означает, что у торговца в ассортименте появятся два предмета этого типа.

Далее идет раздел . Рассмотрим структуру записи в нем:
wpn_walther = 2, 4
wpn_walther - имя предмета, в данном случае - пистолет "Вальтер"
Цена высчитываетя по формулае (2+4)/2 * базовую цену предмета*(МР).
Модифиакор Реакции(МР) - Цена зависит от репутации игрока. (по умолчанию = 1)
Расширяем ассортимент

Чтобы добавить в начальный ассортимент, например, винтовку FN2000, проделаем следующее:

1. Добавим её в раздел :
;Оружие
...
wpn_fn2000 = 2, 0.5

2. Добавим её в раздел :
;Оружие
...
wpn_fn2000 1, 3

Ну а чтобы оно не пропадало после выполнения важных заданий, запишите её и в ассортименты для выполненных условий.