GSC|MOD-Народный портал модостроения
PDA
Гость - Гости
Дата: 17.11.2017
Непрочитанных ЛС:
Гость - Гости
В Зоне: -дней
Пропуск №:
Гость - Гости
День рождения:
Ваш IP: 54.198.2.110
Музыка S.T.A.L.K.E.R.
Мини-чат
Друзья сайта
Наш опрос
Оцените мой сайт
Всего ответов: 1154
Статистика
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Uk 
Форум » Модостроение » Модостроение от А до Я » All.spawn. Создание NPC
All.spawn. Создание NPC
РостянДата: Вторник, 19.03.2013, 22:48 | Сообщение # 1
Руководитель команды модостроителей UM-ST-MOD Team
Группа: Администраторы.
Сообщений: 130
Репутация: 300
Статус: Offline
Что,как,зачем
Итак, я хочу рассказать вам как создать NPC через all.spawn.
Метод был выявлен мною путем проб и ошибок.
Конечно же у вас появился вопрос: « Ну а зачем же мучатся с all.spawn, если можно сделать тоже самое через скрипт?».
Ответ: Хоть этот способ и не такой быстрый и легкий, но у него есть свои плюсы, необходимые многим, один из них - мы можем задать story id нашему NPC.(Можно прописать в секции нпс которого спауните в низу в файле spawn_sections.ltx Пример:story_id = 10000) "А что дает нам это?"
Много чего, ну для примера - мы сможем поставить отметку на него. Я не буду объяснять такие простые вещи как декомпиляция all.spawn и остальное, но если же вы все таки не знаете как, пишите мне в лс на Гейменаторе(stalkers-life, или Идиот)
Итак, хватит лишних слов, перейдем к работе...

Работаем!!!С помощью ACDC декомпилируем all.spawn
Получаем кучу файлов типа : alife_l01_escape , way_l01_escape и тд.
Создадим нового непися на Кордоне. Открываем alife_l01_escape, и крутим в самый низ.
Если у вас чистая игра и вы ничего не делали в Олл спавне то посленяя секция у вас будет под номером 869. Добавляем туда вот такой код(в конец):
 
Код
[870]; cse_abstract properties
section_name = stalker
name = noobikposition = -172.21215820313,-19.941787719727,-161.09272766113
direction = 0,0,0  

; cse_alife_trader_abstract properties
money = 5000
character_profile = esc_noobik  

; cse_alife_object properties
game_vertex_id = 52
distance = 0level_vertex_id = 76655
object_flags = 0xffffffbf
custom_data = <<END  

[logic]cfg = scripts\noobik_logic.ltx

   
; cse
[smart_terrains]
none = trueEND

story_id = 10000  

; cse_visual properties
visual_name = actors\soldier\soldier_beret_1  

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 2
health = 1

dynamic_out_restrictions =
dynamic_in_restrictions =  

upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = -172.21215820313,-19.941787719727,-161.09272766113
upd:o_model = 0upd:o_torso = 0.028013030067086,0,0.9996075630188
upd:g_team = 0upd:g_squad = 1
upd:g_group = 2  

; cse_alife_monster_abstract properties  

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

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

; cse_ph_skeleton properties  

upd:start_dialog =  

; se_stalker properties
 Разъясню некоторые пункты, чтобы в след. раз не пришлось прибегать к тутору.

 
Код
section_name = stalker -//это для игры тут пишется к примеру если ето у тебя сталкера или бандюки то должно быть section_name = stalker
name = noobik -//пишем что хотим
position = -172.21215820313,-19.941787719727,-161.09272766113 -//позиция
direction = 0,0,0 -// направление взгляда(можно писать всегда нули)  
   

; cse_alife_trader_abstract properties
money = 5000 -//его бабло
character_profile = esc_noobik -//ссылка на профиль в character_desc_локация(раз создаем в алайф эскейп значит и профиль будет искатсья в чарактер_деск_ескейп)  
   

; cse_alife_object properties
game_vertex_id = 52 -// гейм вертекс
distance = 0
level_vertex_id = 76655 -//левел вертекс
object_flags = 0xffffffbf
custom_data = <<END  
   

[logic]cfg = scripts\noobik_logic.ltx -// ссылка на логику  
   

; cse[smart_terrains]
none = trueEND

story_id = 10000 -//его стори айди
   
; cse_visual propertiesvisual_name = actors\soldier\soldier_beret_1 -// его визуал  
   

upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = -172.21215820313,-19.941787719727,-161.09272766113 -//опять пишем позициюupd:o_model = 0
upd:o_torso = 0.028013030067086,0,0.9996075630188
upd:g_team = 0
upd:g_squad = 1
upd:g_group = 2  
   

upd:next_game_vertex_id = 65535-//честно не знаю что это, я всегда пишу эти цифрыupd:prev_game_vertex_id = 65535-//не знаю, но пишем всегда это
upd:distance_from_point = 0
upd:distance_to_point = 0


 Компилируем, получаем файл all.spawn.new , копируем его в геймдату/спавнс и переименовываем просто в олл спавн. Это еще не все!
теперь
открываем файл character_desc_escape
перед профилем волка вставляем это:
 
Код
<!---------------------------------------esc_noobik-----------------------------------------------------><specific_character id="esc_noobik" team_default = "1">
<name>Нубик</name>
<icon>ui_npc_u_stalker_neytral_balon_1</icon>
<bio>esc_noobik</bio>  
<class>esc_noobik</class>
<community>stalker</community>  
<terrain_sect>stalker_terrain</terrain_sect>  
<rank>434</rank>
<reputation>5</reputation>
<money min="600" max="2000" infinitive="0"/>  
<snd_config>characters_voice\human_01\stalker\</snd_config>
<crouch_type>-1</crouch_type>  
<visual>actors\soldier\soldier_beret_1</visual>
<supplies> [spawn]\n
wpn_pm \n
ammo_9x18_fmj = 1 \n
wpn_ak74u \n
ammo_5.45x39_fmj \n </supplies>  
#include "gameplay\character_criticals_4.xml"
   

</specific_character>
 у нас будет чел с визуалом военного, иконкой волка, и голосом обычного сталкера

теперь создаем файл логики, в папке config/scripts создаем файл noobik_logic.ltx и пишем туда:

 
Код
[logic]active = remark1danger = danger_ignore

[danger_ignore]ignore_distance = 5  

[remark1]no_move = true
 все, он никуда не уйдет пока на него не нападут = )
Теперь открываем файл game_story_ids
и в самый низ вписываем: 10000 = "esc_noobik"
теперь открываем файл npc_profile вставляем сие:
 
Код
<character id="esc_noobik">
<class>esc_noobik</class>
<specific_character>esc_noobik</specific_character>
</character>
 Все, мы на финишной прямой! Открываем файл spawn_sections
и в писываем:
 
Код
[esc_noobik]:stalker
$spawn = "respawn\esc_noobik"
character_profile = esc_noobik
spec_rank = novice
community = stalker
 Все, все готово! Начинаем новую игру, и видем сталкера с именем Нубик = )
Можно сделать и так но НПС уйдет. Проще делать с логикой вместе. Заместо:
 
Код
[logic]cfg = scripts\noobik_logic.ltx
 Лутчше написать:
 
Код
[logic]active = remark
combat_ignore = combat_ignore
danger = danger_condition  

[remark]anim = wait
combat_ignore_cond = always  

[combat_ignore]
combat_ignore_cond = always  

[danger_condition]
ignore_distance = 0
ignore_distance_corpse = 0
 И тогда НПС будет стоять на месте. =)

--<# И стоять НПС при такой логике будет до поры до времени, теперь ясно где все новички учатся изначально делать не правильно...
Схема remark не предназначена выступать в роли активной схемы, она была создана для мягкого перехода между основными схемами, например kamp и walker.
Игнорирование этого момента приводит к нежелательным эффектам, как следствие возникают необоснованные обвинения в адрес X-Ray.
Если же всё равно делаете через all.spawn, то почему бы не прописать НПС нормальную логику, при которой он действительно будет стоять на месте и даже, если в последующем его что-то отвлечёт, то он вернётся на место, а не останется стоят там, куда перебежал.
Код
[logic]active = walker@stay_at_position
combat_ignore = combat_ignore
danger = danger_condition  

[walker@stay_at_position]
path_walk = walker_stay_at_position_walk
path_look = walker_stay_at_position_look  

[combat_ignore]
combat_ignore_cond = always  

[danger_condition]
ignore_distance = 0
ignore_distance_corpse = 0
И в файл way_имя_локации.ltx вписать две точки:
Код
[walker_stay_at_position_walk]points = p0
p0:name = name00
p0:flags = 0x1
p0:position = ;координаты на которых стоим
p0:game_vertex_id = ;гейм вертекс координат
p0:level_vertex_id = ;левел вертеск координат  

[walker_stay_at_position_look]
points = p0
p0:name = name00
p0:flags = 0x1
p0:position = ;координаты в которые смотрим
p0:game_vertex_id = ;гейм вертекс координатp0:level_vertex_id = ;левел вертеск координат
И никаких проблем с поведением НПС --#>

Статью создал stalker-life С поправками Melnik Подкоректировал: Spaces Замечание касательно логики: ColR_iT


Желаю всем удачного модостроения Ростян:-)
Если вы хотите отправить сообщение шлите на Yandayks3003
 
Форум » Модостроение » Модостроение от А до Я » All.spawn. Создание NPC
Страница 1 из 11
Поиск:
Design by Xom & Ростян
Copyright Ростян GSC-MOD
© 2013 - 2017
Авторское право на игру и использованные в ней материалы принадлежит GSC Game World.
Любое использование материалов сайта возможно только с разрешения администрации.
Хостинг от uCoz