Перейти к контенту

Создание нового НПС


Рекомендуемые сообщения

В каком смысле простой?если что то типо что можешь рассказать то пропиши вот это #include "gameplay\character_dialogs.xml" после строки <start_dialog>hello_dialog</start_dialog> в профиле нпс ^_^

Изменено пользователем ツМаLinK@ツ
Ссылка на комментарий

Привет всем! Ребят, такой вопрос, делаю уникального "Боцман"а,_спавню его на локации предбанник_(с помощью СДК 0.4)_(единственная лока, которую добавил к оригиналу тч), когда прописываю его в "характер_деск_ескейп", он норм спавнится на предбаннике, но когда я его хочу прописать в "характер_деск_предбанник"_(создал новый файл), то получается вылет на загрузке создания новой игры. Нету id "predbannik_bocman". Без этого нпс игра запускалась с новой (предбанник) локацией без проблем._Где же надо прописать этот id, или сам файл character_desc_predbannik.xml??? спасибо! 

 

Закрыл вопрос, при новой локации нужно указывать в system.ltx ...файл, а вернее название файла "character_desc_имя_локи".

Изменено пользователем Kirgudu
Ссылка на комментарий

Как можно заспавнить группу бандитов на базе нейтралов, чтобы сталкеры там не спавнились. А то уже надоело их убивать.(за 800 человек перешло)

DimiDrolUA.gif
Ссылка на комментарий

В шапке написано довольно грамотно, но есть пара вопросов:

1. Если мод, в который я хочу добавить НПС сделан на площадке АМК, то можно ли использовать эти функции?

2. Как сделать НПС бессмертным?

Изменено пользователем Micha_Pulemiot

Лучше умереть стоя, чем жить на коленях (Эрнесто Че Гевара).
Выживаю в NLC-7.
Кто не рискует - у того утром не болит голова от шампанского.

Ссылка на комментарий

[............]

А как сделать чтобы НПС смотрел в определенную сторону?

Изменено пользователем HellRatz
Добавлено  HellRatz,

Оверквоттинг запрещен. Устный пред.

Добавлено  Murarius,

Правила цитирования - здесь.

Ссылка на комментарий

 

 

А как сделать чтобы НПС смотрел в определенную сторону?

Слишком не конкретный вопрос. Если так-же не конкретно ответить, то:

 - если НПС находится под логикой, то в соответствующей схеме прописать ему куда смотреть. Как - зависит от схемы;

 - если имелось в виду просто направление, куда будет смотреть НПС после спавна, то задать нужный direction в all.spawn или с помощью нет-пакета.

Ссылка на комментарий

А как сделать чтобы НПС смотрел в определенную сторону?

Через ACDC распаковываеш all.spawn добавляешь секцию НПС-а и меняешь position-коордмнаты спавна и direction-направление взгляда

Ребят, а что вписать в "имя_торговца"?

название ващего традера например

 

trade = misc\trade_esc_unik_npc.ltx
Ссылка на комментарий

ТЧ 1.0006 + НС

Уважаемые, подскажите пожалуйста, каким образом можно изменить НПС его смарт после спавна его скриптом. Пытаюсь делать так:

--self - это смарт, куда я хочу поместить НПС (он создан в all.spawn), spawn_section==esc_stalker_respawn_1 - взял любого от фонаря из конфигов
local obj = alife():create(spawn_section,self.position,self.m_level_vertex_id,self.m_game_vertex_id) 
if not (IAmAStalker[obj:clsid()] or IAmAMonster[obj:clsid()]) then --не-не-не
          alife():release(obj)
          return false
end
--тут надо задать смарт
local npcPacket=m_netpk.get(obj)
if npcPacket:isOk() then
         local packetData=npcPacket:get()
	 local custom=amk.parse_custom_data(packetData.custom_data)
	 if not custom.smart_terrains then
                 custom.smart_terrains={}
	 end
	 custom.smart_terrains[self.gparams.type]=tostring(true)
	 packetData.custom_data=amk.gen_custom_data(custom)
	 npcPacket:set(packetData)
	 obj:brain():update()
else --с нетпакетом чёто не то
 	 return false
end
					
get_console():execute("load ~~~ name: ".. tostring(obj:name()))
get_console():execute("load ~~~ online: ".. tostring(obj.online))
get_console():execute("load ~~~ smart_terrain_id: ".. tostring(obj:smart_terrain_id()))
local st=alife():object(obj:smart_terrain_id())
if st then
         get_console():execute("load ~~~ smart_terrain: ".. tostring(st:clsid()==clsid.smart_terrain))
         get_console():execute("load ~~~ smart_terrain_name: ".. st:name())
end

 

 

судя по логам - после записи нетпакета и brain():update() он как был взят смартом esc_lager так и остался.

Благодарю за любую информацию.

Изменено пользователем Winsor
Ссылка на комментарий

 

 

Уважаемые, подскажите пожалуйста, каким образом можно изменить НПС его смарт после спавна его скриптом

Ну во первых разберемся, что за смарт может быть у непися при скриптовом спавне ? А смарт у него может быть только тот, что будет прописан в кастом-дате с помощью правки нет-пакета. Соответственно, зачем лезть в дебри, которыми рулит xr_logic, xr_gulag и собственно движок ? Значительно проще, в эту самую кастом-дату, прописать необходимую логику...

  • Согласен 1
Ссылка на комментарий

Хм. я собственно так и сделал - но смарт все равно остается не тот который я ему назначил в кастомдате, так же мне пока непонятно на основании каких критериев вообще назначается смарт НПС, у которого в кастомдате до этого не было указано ни смарта, ни none=true.

 

P.S. если все таки , уважаемый UnLoaded - если Ваш ответ был сарказмом - поделитесь какой либо информацией, что именно в  xr_logic, xr_gulag отвечает за назначение смарта НПС, у которого в конфиге о смарте нет ничего.

 

Благодарю!

Ссылка на комментарий

Если на момент загрузки сэйва у непися в custom data не было ничего - пойдет в террейн с наименьшим id, который подходит по группировке и рангу и в котором есть свободное место.

Если было - пойдет туда, где, опять же, есть место, который подходит по группировке и рангу, и который подходит по условию в custom data.

 

"что именно в xr_logic, xr_gulag отвечает за назначение смарта НПС" - все.

  • Спасибо 1
Ссылка на комментарий

 

 

но смарт все равно остается не тот который я ему назначил в кастомдате

Значит что-то не то(или с ошибкой) прописано в кастом-дате. Или, с учетом сказаного выше DC, нет места в целевом гулаге или не проходит в него по каким-то критериям.

  • Спасибо 1
Ссылка на комментарий

Место есть в целевом гулаге, по критериям подходит , в кастомдате параметры правильные.

Тонкость в том что при создании, т.е. alife:create данных в кастомдате не было и у объекта НПС поле smart_terrain_conditions пустое, по условиям смарта - он подходит под любой. А при добавлении в кастомдату через нетпакет конкретного смарта после вызова obj:brain():update() само собой не происходит ни перечитывания поля smart_terrain_conditions, ни повторного вызова se_smart_terrain:enabled. и в результате объект, даже имея в кастомдате правильный параметр, остается в старом гулагосмарте. вызов se_smart_terrain:register_npc помещает НПС в смарт, но при этом у НПС не появляется данные этого смарта. сложно сказать, к чему это может привести, так что в таком вызове тоже толку 0.

 

Уважаемые, есть ли у Вас опыт в назначении смарта уже заспавненному НПС с заменой кастомдаты? Либо надо сразу менять smart_terrainid в нетпакете? Или еще какие способы?

Благодарю!

Ссылка на комментарий

 

 

А при добавлении в кастомдату через нет-пакет конкретного смарта после вызова obj:brain():update() само собой не происходит ни перечитывания поля smart_terrain_conditions, ни повторного вызова se_smart_terrain:enabled

Попробуй закомментить в вышеприведенном тобой фрагменте строку obj:brain():update().

 

И еще: я не в курсе, но может быть поле кастом-даты в нет-пакете непися является "read_only" ? Если так, то простой перезаписью в нет-пакете не обойтись. В модуле от Artos есть вроде возможность менять абстрактную часть пакета...

Ссылка на комментарий

Вопрос по логике НПС.

Значит заспавнил нового нпс на свалке, на кладбище заброшенной технике. С логикой remark - всё нормально стоит на месте, но если прописываю логику  walker то он уходит на край локации хотя точка walker_stay_at_position_walk указывает ему совсем на другие координаты. 

[walker_stay_at_position_walk]


points = p0
p0:name = name00
p0:flags = 0x1
p0:position = -62.83,-0.47,-220.61
p0:game_vertex_id = 252
p0:level_vertex_id = 208345

[walker_stay_at_position_look]
points = p0
p0:name = name00
p0:flags = 0x1
p0:position = -46.40,0.19,-216.69
p0:game_vertex_id = 252
p0:level_vertex_id = 208345

 

[logic]
active = walker@stay_at_position
danger = danger_ignore

[danger_ignore]
ignore_distance = 5

[walker@stay_at_position]
path_walk = walker_stay_at_position_walk
path_look = walker_stay_at_position_look

 

В чём причина его ухода не туда куда нужно?

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

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...