Сейчас мы научимся создавать нового торговца - Петровича: 1.Для начала создадим нового NPC, к которому и привяжем функцию торговли. Cоздадим
описание нашего NPC, для этого в папке gamedata\config\gameplay
создадим xml файл, содержащий описание нашего торговца. Назовем его к
примеру Character_unique_by_qwerty111.xml (вообще называть можно как угодно). В нем пишем:
<xml> <specific_character id="petrovich_trader" team_default = "1"> <name>Петрович</name> <icon>ui_npc_u_stalker_sv_balon_1</icon> <map_icon x="1" y="4"></map_icon> <bio>petrovich_trader</bio>
<class>petrovich_trader</class> <community>stalker</community> <money min="100000" max="110000" infinitive="1"></money> <terrain_sect>stalker_terrain</terrain_sect>
<rank>730</rank> <reputation>96</reputation> <visual>actors\svoboda\stalker_sv_balon_1</visual> <snd_config>characters_voice\human_02\freedom\</snd_config> <crouch_type>-1</crouch_type>
<supplies> [spawn] \n wpn_sig220 \n ammo_11.43x23_hydro = 1 \n wpn_sig550 \n ammo_5.56x45_ap = 1 \n </supplies>
<start_dialog>hello_dialog</start_dialog> </specific_character>
</xml> За тем прописываем его в npc_profile.xml(gamedata\config\gameplay), т.е под строчкой Новые Профиля пишем: <character id="petrovich_trader"> <class>petrovich_trader</class> <specific_character>petrovich_trader</specific_character> </character> После этого регистрируем описание нашего торговца в файле gamedata\config\system.ltx В секцию [profiles] дописываем в конец после запятой Character_unique_by_qwerty111. 3.Чтобы персонаж появился, нужно его заспавнить, для этого: В папке gamedata\config\creatures есть замечательный файл spawn_sections.ltx Будем править его. Дабы не путаться потом, в самое его начало пишем:
[petrovich_trader_spawn]:stalker_trader character_profile = petrovich_trader spec_rank = veteran community = stalker use_single_item_rule = off can_select_items = off custom_data = scripts\petrovich_trader.ltx Далее создаем скрипт с названием, например my_spawns.script в папке gamedata\scripts\ Прописываем в него функцию:
function petrovich_trader_spwn1() local obj local a = vector() -- Задаем тип переменной local dir = db.actor:direction()
a.x = -246.51 -- координата X a.y = -19.52 -- высота Y a.z = -144.60 -- координата Z
obj = alife():create("petrovich_trader_spawn",a,13193,8,65535) alife():create_ammo("ammo_9x18_fmj", obj.position, obj.m_level_vertex_id, obj.m_game_vertex_id, obj.id, 20) -- число патронов, которые будут спавнится при убиистве Петровича end
Открываем
блокнотом escape_dialog.script(gamedata\scripts\) и там в диалоге с
Сидоровичем, например, после квеста с флешкой Шустрого, функция: "function give_wounded_flash(first_speaker,second_speaker)" (Можно впринципе в любой диалог) вставляем:
my_spawns.petrovich_trader_spwn1()
вот так будет выглядеть разговор с Сидером:
function give_wounded_flash(first_speaker, second_speaker) dialogs.relocate_item_section(second_speaker, "esc_wounded_flash", "out") dialogs.relocate_money(second_speaker, 1500, "in" ) my_spawns.petrovich_trader_spwn1() -- Вызов Петровича end Т.е
наш персонаж появится только после выполнения задания с флешкой
Шустрого, и когда Сидорович выдаст вам деньги за это задание, а торговец
появляется по нашим координатам рядом с лагерем новичков. 4.Теперь в папке \gamedata\config\scripts создаем файл petrovich_trader.ltx Этот файл является проводником к файлу торговли и логикой персонажа. И в нем пишем: [logic] trade = misc\trade_petrovich.ltx active = remark
[remark] anim = wait
5.Теперь создаем в папке \gamedata\config\misc файл trade_petrovich.ltx Это и есть файл торговли. И в начале пишем: [trader] buy_condition = petrovich_generic_buy sell_condition = petrovich_start_sell buy_supplies = supplies_start
и потом как у других торговцев,т.е у бармена например [barman_generic_buy], а у нас будет [petrovich_generic_buy] Если
кому то не понятно можете посмотреть мой файл торговли: [Гости не могут
видеть ссылки,регистрация не отнимет много времени :) ]
Поясню некоторые нюансы: 1. <specific_character id="petrovich_trader" team_default = "1"> <name>Петрович</name> <icon>ui_npc_u_stalker_sv_balon_1</icon> <map_icon x="1" y="4"></map_icon> <bio>petrovich_trader</bio>
<class>petrovich_trader</class> <community>stalker</community> -- группировка, которая будет указана при разговоре с ним <money
min="100000" max="110000" infinitive="1"></money> -- деньги,
на которые он покупает оружие и все, что принесет на продажу сам игрок <terrain_sect>stalker_terrain</terrain_sect>
<rank>730</rank> <reputation>96</reputation> <visual>actors\svoboda\stalker_sv_balon_1</visual> --модель героя, можно поменять, указав путь другой модели <snd_config>characters_voice\human_02\freedom\</snd_config> -- озвучка, тоже можно заменить на другую <crouch_type>-1</crouch_type> --оставлять также, не трогать
<supplies> [spawn] \n wpn_sig220 \n ammo_11.43x23_hydro = 1 \n wpn_sig550 \n ammo_5.56x45_ap = 1 \n </supplies>
<start_dialog>hello_dialog</start_dialog> </specific_character>
2. <character
id="petrovich_trader"> --id указывайте тот, который указан в
созданном файле описания торговца (предыдущий пункт), т.е. можно назвать
как угодно торговца, но id сохранять в каждом файле <class>petrovich_trader</class> <specific_character>petrovich_trader</specific_character> </character>
Quote В секцию [profiles] дописываем в конец после запятой Character_unique_by_qwerty111
Т.е. дописываем название файла описания торговца (см. в 1 пункте)
3. [petrovich_trader_spawn]:stalker_trader character_profile
= petrovich_trader -- это наш id, который будет использоваться в файлах
как ссылка на нашего персонажа, типа, связки spec_rank = veteran community = stalker use_single_item_rule = off can_select_items = off custom_data = scripts\petrovich_trader.ltx
Quote (qwerty111) Далее создаем скрипт с названием, например my_spawns.script в папке gamedata\scripts\
Называйте
как угодно, главное потом в файле
escape_dialog.script(gamedata\scripts\) укажите в функции function
give_wounded_flash(first_speaker,second_speaker) ссылку на ваш скрипт.
Например, в указанном здесь my_spawns.petrovich_trader_spwn1() , где
my_spawns. - наш созданный скрипт, а petrovich_trader_spwn1() -
выполнение функции в этом скрипте.
4. [logic] trade = misc\trade_petrovich.ltx --указываем на созданный файл торговца (где и будет находится ассортимент оружия) active = remark
[remark] anim = wait
Диалог не видно здесь(
|