Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Создание нового торговца
GAMEINATOR forums > S.T.A.L.K.E.R. > S.T.A.L.K.E.R. Архив > S.T.A.L.K.E.R. Архив по модификациям
fuego
Видел недавно мод, который помимо многих опций добавляет торговца в Припяти. Можете подсказать как замутить нового торговца, или прописать торговлю, например, Волку. Заранее спасибо
Woland
Читай ]]>здесь]]>, ]]>здесь]]> и ]]>здесь]]>, может поможет.
fuego
Цитата
Теперь берем любой скрипт спавна NPC, вгоняем туда имя секции из spawn_sections.ltx и ву-а-ля.

Где этот скрипт спавна НПЦ находится?
И еще: торговлю писать в ххх gulag.scrip?
Кугуар
Хм. Интересно. Кстати я новичок в этом деле но как изменять файлы? Мож какая-то программа нужна?
fuego
Цитата
Кстати я новичок в этом деле но как изменять файлы? Мож какая-то программа нужна?

если файлы .ltx или .script - то достаточно и блокнота
Arhet
Woland наврал человеку((

В общем так делается. беру код аж из беты SRP)))

[80131]
name=agr_ratcatcher
section_name=stalker_trader - указываешь на то, что это торговец.
position= -197.00810241699,2.4792649745941,95.399490356445
direction=0,0,0
money=5000
character_profile= agr_ratcatcher

game_vertex_id= 678
distance = 10
level_vertex_id=40287
object_flags=0xffffffbf
custom_data=<<END
[logic]
trade = misc\trade_ratcatcher.ltx - указываешь путь к файлу с товарами.

END
; cse_visual properties
visual_name = actors\dolg\stalker_do_nauchniy
; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_squad = 0
g_group = 0
health = 1
dynamic_out_restrictions =
dynamic_in_restrictions =
upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0

upd:position = -197.00810241699,2.4792649745941,95.399490356445

upd:o_model = 0
upd:o_torso = -3,0,0
upd:g_team = 0
upd:g_squad = 0
upd:g_group = 0
upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0
predicate5 = 0,1,2,0,1
predicate4 = 0,0,1,0
upd:start_dialog =

Файлик с товарами создаешь аналогично тем что есть)
Woland
Цитата(Arhet @ Apr 25 2008, 20:52)
Woland наврал человеку((

Ну конечно... уж лучше взять кусок спавна из какой-то там беты и нихрена не объяснить куда его пихать... biggrin.gif


З.Ы. ИМХО нужно отходить от использования спавн-файла.
[empr]
А зачем отходить?..
Для чего он вообще тогда был придуман?..
Кугуар
Arhet,Скажи куда и что пихать?
Woland
Цитата([empr)
,Apr 26 2008, 10:18] А зачем отходить?..
Для чего он вообще тогда был придуман?..

Х.З... Наверное для обеспечения головняка моддерам biggrin.gif Но коль уж придумали метод спавна через скрипт - можно минимизировать его использование.
fuego
И все-таки? Это надо запихивать в all.spawn, или это есть скрипт спавна? Если да, то куда его совать?
Woland
Цитата(fuego @ Apr 26 2008, 22:24)
И все-таки? Это надо запихивать в all.spawn, или это есть скрипт спавна? Если да, то куда его совать?

ЭТО надо запихивать в all.spawn. В статье, которая находится по третьему данному мной линку, рассказывается как сделать без модификации all.spawn.
fuego
А вот это:
Цитата
Теперь берем любой скрипт спавна NPC, вгоняем туда имя секции из spawn_sections.ltx и ву-а-ля

где находится?
Кугуар
Нашел в ассортименте файлы NO TRADE. Их возможно добавить?
Arhet
Woland, ну укажи где в приведенной тобой статьях описывается именно добавление торговца.

half-катяра-life распаковать all.spawn прогой от бардака acdc и прописать. И прогой бардака же и скомпилировать.
Woland
Цитата(Arhet @ Apr 27 2008, 07:53)
Woland, ну укажи где в приведенной тобой статьях описывается именно добавление торговца.

Эээ... заметил одну трудность... unsure.gif Беру свои слова обратно rolleyes.gif Хотя имхо придумать решение можно (и даже нужно, но сейчас не до этого).
fuego
Блин, может кто-нить нормально, подробно и пошагово обьяснить как добавить торговца? Думаю это и другим пойдет на пользу (то-есть не ток мне)

Добавлено через 7 минут 49 секунд:

Еще одно:
Когда я попытался дать Волку логику (типа в скрипте в all.spawn прописал cfg = scripts\esc_wolf.ltx), мне игра дала вылет, с логом чет на счет Rebuild Spawn. В чем трабла?
Arhet
Бу -) Ты all.spawn распаковал?
Кугуар
Как прописать торговлю например Волку. Я пытался, но эффект распространялся ко всем сталкерам!
fuego
Цитата
[80131]
name=agr_ratcatcher
section_name=stalker_trader - указываешь на то, что это торговец.
position= -197.00810241699,2.4792649745941,95.399490356445
direction=0,0,0
money=5000
character_profile= agr_ratcatcher

game_vertex_id= 678
distance = 10
level_vertex_id=40287
object_flags=0xffffffbf
custom_data=<<END
[logic]
trade = misc\trade_ratcatcher.ltx - указываешь путь к файлу с товарами.

END
; cse_visual properties
visual_name = actors\dolg\stalker_do_nauchniy
; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_squad = 0
g_group = 0
health = 1
dynamic_out_restrictions =
dynamic_in_restrictions =
upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0

upd:position = -197.00810241699,2.4792649745941,95.399490356445

upd:o_model = 0
upd:o_torso = -3,0,0
upd:g_team = 0
upd:g_squad = 0
upd:g_group = 0
upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0
predicate5 = 0,1,2,0,1
predicate4 = 0,0,1,0
upd:start_dialog =

Файлик с товарами создаешь аналогично тем что есть)


А самого торгаша в симуляцию (character_desc_xxx.xml) надо добавлять?
Сталкероненавистник
Суйте этот кусок в ACDC и закумпильте!
A.B.
Есть две очень толковых статьи, но ссылки на другие сайты по Сталку давать нельзя. Думаю найдёшь.
1. Автор статьи меченый(стрелок).
......... Форум > S.T.A.L.K.E.R. ...... MOD > Школа моддинга > Создание NPC "привязанного к точке" без редактирования all.spawn.
2. Там же. Автор статьи SCRIPT. > Создание нового НПС.
Орион
Огромное спасибо Архету за то, что оставил тут подсказку о создании торговца smile.gif Как раз то, без чего не выйдет создание торговца)

Напишу небольшой тутор по созданию торговца на примере созданного мною Ворона-торговца (незадействованый греховец из мода СРП, кроме модели и профиля у него не был ни одной записи в моде), может кто-то его в вики выложит, т.к. я не шарю, как там статьи правильно редактировать.

И так. Сперва мы создаём профиль непися. Например, создаём файл character_desc_darkstalkers.xml по адресу gamedata\config\gameplay\
Создание нового файла не обязательно, но упрощает совмещение модов.
В созданном файле character_desc_darkstalkers.xml пишем профиль нового непися:
Цитата
<specific_character id="esc_dark_stalker_voron" no_random = "1">
<name>Ворон</name>
<icon>ui_npc_dark_voron</icon>
<map_icon x="0" y="0"></map_icon>
<bio>sim_stalker_novice_bio</bio>

<class>esc_dark_stalker_01</class> -- настраивает респавнер на класс персонажа для спавна разных моделей. т.к. мы спавним уникального непися, класс можно скопировать у сидор или взять любой другой у любого непися.
<community>dark_stalker</community>
<money min="500000" max="500000" infinitive="1"></money>

<rank>1000</rank>
<reputation>-553</reputation>

<visual>actors\dark_stalker\dark_stalker_voron</visual>
<snd_config>characters_voice\human_01\monolith\</snd_config>
<crouch_type>-1</crouch_type>
<panic_treshold>0</panic_treshold>
<supplies>
[spawn] \n
wpn_dark_gauss \n
ammo_gauss \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_drugs.xml" \n
#include "gameplay\character_food.xml"
</supplies>

#include "gameplay\character_criticals_3.xml"

<start_dialog>hello_dialog_dark_stalker</start_dialog>
<actor_dialog>dm_cool_info_dialog</actor_dialog>
<actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog>
<actor_dialog>join_dark</actor_dialog>
</specific_character>

Выделенный красным цветом сегмент - обязателен для создания торговца.
Выделенный синим цветом сегмент - бессконечные деньги. Указанная сумма не позволяет продать неписю хабара, большую по стоимости, чем это число.

Профиль создан, пара стандартных диалогов, взятых у любого другого профиля, дописать не составит труда. Я ничего не менял в своём коде. Лезем в npc_profile.xml, который находится в той же папке. Где-нить внизу делаем запись:
Цитата
<character id="esc_dark_stalker_voron">
<class>esc_dark_stalker_01</class> -- настраивает респавнер на класс персонажа для спавна разных моделей. т.к. мы спавним уникального непися, класс можно скопировать у сидор или взять любой другой у любого непися.
<specific_character>esc_dark_stalker_voron</specific_character> -- ссылка на профиль нашего непися.
</character>


Непись создан. Теперь надо вводить его в симуляцию. Открываем файл gamedata\config\creatures\spawn_sections.ltx и прописываем в конце:
Код
[esc_dark_stalker_voron]:stalker_trader - дописать суффикс торговца... хотя у меня и без него всё работало =)
$spawn                =  "respawn\esc_dark_stalker_voron" - опция спавна для Левел Едитора
character_profile    = esc_dark_stalker_voron - профиль непися
spec_rank = regular
community = dark_stalker - группировка


Не помню, надо ли писать отдельный конфиг файл для введения нового непися, по аналогии с m_person.ltx потому пропущу этот момент. Если надо - допишу smile.gif

Дальше, самое нудное - спавн. Спасибо Arhet'y за пример. Для спавна, качаем прогу acdc от bardak'a и декомпилим all.spawn (надеюсь active perl все скачали, как написанов ридми декомпилера, иначе толку от проги бардака нуль) и в понравившемся месте делаем запись с уникальным номером. Я заспавнил на Кордоне:
Код
[8796]
; cse_abstract properties
section_name = stalker_trader -- метка, что сталкер является торговцем
name = dark_stalker_voron -- имя любое, вроде бы; где оно используется не знаю
position = -215.67399597168,-20.403390884355,-151.03227233887 -- местоположение на игровой карте
direction = 0.0445535257458687,-0.000645029998850077,0.0144814234226942

; cse_alife_trader_abstract properties
character_profile = esc_dark_stalker_voron

; cse_alife_object properties
game_vertex_id = 61 -- геймвертекс, без него спавнер не будет знать, на какой именно карте и в какой её части спавнить объект
distance = 3.5
level_vertex_id = 42599 -- левелвертекс, без него спавнер не будет знать, в именно какой части карты спавнить объект
object_flags = 0xfffffffb
custom_data = <<END
[logic]
cfg = scripts\esc_voron.ltx -- конфиг с логикой
[smart_terrains]
none = true -- смарт террейн; если создаёте статического торговца - лучше не выставлять смарт террейн; если хотите бродягу - пишите по аналогии с другими неписями

[spawn]
wpn_dark_gauss -- спавним в инвентаре всё, что хотим
END
story_id = 9958 - уникальный стори_ид для меток на карте

; cse_visual properties
visual_name = actors\dark_stalker\dark_stalker_voron -- внешний вид, указать путь к .ogf модели, без окончания формата файла!

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_group = 0
health = 2
dynamic_out_restrictions =
dynamic_in_restrictions =

upd:health = 2
upd:timestamp = 0
upd:creature_flags = 0
upd:position = -215.67399597168,-20.403390884355,-151.03227233887 -- те же координаты, что и в секции position
upd:o_model = 0
upd:o_torso = 0,0,0
upd:g_team = 0
upd:g_squad = 0
upd:g_group = 0

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 2,2,1,2,0
predicate4 = 2,2,1,2

; cse_ph_skeleton properties

upd:start_dialog =

; se_stalker properties


Спавн файл еще рано собирать!

Далее, создаём файл конфиг торговца, который указали в спавне - gamedata\config\scripts\esc_voron.ltx и пишем в нём:
Код
[logic]
active = walker
trade = misc\trade_voron.ltx -- файл торговли, создаётся по аналогии с существующими
trader_flags = 0 - флаг трейдера
inv_max_weight = 10000 -- вес инвентаря торговца
on_death = death

[walker]
path_walk = esc_sin_voron_walk -- привязка вейпоинта, чтобы трейдер стоял на месте или двигался по определённому курсу
path_look = esc_sin_voron_look -- куда смотрит непись
meet = meet -- параметры реакции непися на встречу с актором

[meet]
use = true
use_wpn = true -- перезаряжает оружие
meet_talk_enabled = true


Теперь лезем за скриптом от бардака и снимаем координаты местоположения нашего непися. У кого нету скрипта, копируем в gamedata/scripts/ui_main_menu.script этот скрипт:
Код
function main_menu:OnButton_credits_clicked()
local text
local vid
local gvid
local a = vector()  
local text
a = db.actor:position()  
vid = db.actor:level_vertex_id()  
gvid = db.actor:game_vertex_id()  
text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid
news_manager.send_tip(db.actor, text, nil, nil, 30000)
end

Заходим в игру, ищем нужное нам место (ногами или деморекордом) и жмём из меню кнопку CREDITS и мы услышим звуковой сигнал, после чего выходим в игру из меню, и в строке сообщений высветиться вся инфа. Всё - F12 или на бумажку списываем полученные координаты.

Создаём вейпоинты и лукпоинты. И так, мы сняли координаты мест, где хотим видеть торговца и где мы хотим, чтобы он ходил - теперь в разобранном all.spawn ищите файл way_*левел*.ltx и туда пишем данные. Я приведу пример свой, опять таки. В файле way_l01_escape.ltx пишем:
Код
[esc_sin_voron_look] -- имя, которые мы записали в gamedata\config\scripts\esc_voron.ltx
points = p0,p1
p0:name = wp00
p0:flags = 0x1
p0:position = -205.306793212891,-20.4855155944824,-150.415893554688
p0:game_vertex_id = 46
p0:level_vertex_id = 54218

p1:name = wp01
p1:flags = 0x1
p1:position = -207.645278930664,-20.2700958251953,-146.980590820313
p1:game_vertex_id = 61
p1:level_vertex_id = 45276


[esc_sin_voron_walk] -- имя, которые мы записали в gamedata\config\scripts\esc_voron.ltx
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = -215.67399597168,-20.403390884355,-151.03227233887
p0:game_vertex_id = 47
p0:level_vertex_id = 37503


Если нужно создать несколько вейпоинтов - смотри по аналогии с уже существующими.

После всего этого собираем all.spawn и стартуем новую игру. Лично у меня всё прекрасно работало smile.gif Если где есть неточности - говорите, исправлю.. писал ночью, мог что-то упустить)
Орион
Удалите кто-нить мой предыдущий пост. Написал полноценную статью по спавну нового торговца.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.