Создание НПС через скрипт и их редактирование
| |
Miller | Дата: Пт, 16.12.2011, 09:41 | Сообщение # 1 |
Администратор
Группа: Администратор
Сообщений: 199
Статус: Offline
| Здесь вы научитесь создавать нового НПС через скрипт, создавать новые секции для НПС и создавать характеры, или редактировать старые. Автор: Vova Miller [IP Team]
1. Для начала создадим секцию нашего нового НПС. В файле config\creatures\spawn_sections.ltx создаем секцию. Вот пример: Code [test_stalker_1]:stalker character_profile = test_stalker_1_xapaktep test_stalker_1 - имя секции (не должно повторяться) stalker - сравнивается с уже существующей секцией stalker, чтобы не писать лишнего. character_profile - направление к классу характера. test_stalker_1_xapaktep - ID класса характера.
2. Создадим секцию класса в config\gameplay\npc_profile.xml. Пример: Code <character id="test_stalker_1_xapaktep"> <class>test_stalker_1_xapaktep</class> </character> test_stalker_1_xapaktep - сверху ID, а снизу название самого класса. Для чайников: Код нужно вводить между <xml> и </xml> Иногда ниже <class></class> прописывается: Code <specific_character>ID_профиля</specific_character> Но в таком случае нельзя будет создать несколько "характеров" для одного класса. Я честно говоря не знаю зачем эта штука, но когда происходил вылет я приписывал это и всё решалось.
3. Теперь создадим сам характер. Пропишем его, скажем, в config\gameplay\character_desc_escape.xml Вот пример: Code <specific_character id="test_stalker_1_xapaktep_1" team_default = "1"> <name>esc_wolf_name</name> <icon>ui_npc_u_stalker_neytral_balon_1</icon> <bio>esc_wolf_bio</bio>
<class>test_stalker_1_xapaktep</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\neytral\stalker_neytral_balon_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" #include "gameplay\character_dialogs.xml" </specific_character> Для чайников: Профиль нужно ставить между <xml> и </xml>.
<name>esc_wolf_name</name> - Имя НПС (прописать можно сразу на русском языке) <icon>ui_npc_u_stalker_neytral_balon_1</icon> - Иконка НПС. Берётся из config\ui\ui_npc_unique.xml <bio>esc_wolf_bio</bio> - История НПС. (В игре не используется) <class>test_stalker_1_xapaktep</class> - наш класс. <community>stalker</community> - группировка НПС. <terrain_sect>stalker_terrain</terrain_sect> - terrain НПС. Берётся из config\creatures\m_stalker.ltx <rank>434</rank> - Ранг НПС. <reputation>5</reputation> - репутация НПС. <money min="600" max="2000" infinitive="0"/> - Минимальное (600) и максимальное (2000) кол-во денег. (Если вместо 0 поставить 1, то у НПС будет неограниченное кол-во денег.) <snd_config>characters_voice\human_01\stalker\</snd_config> - звуки НПС. <visual>actors\neytral\stalker_neytral_balon_1</visual> - форма НПС. Между <supplies> и </supplies> - Инвентарь НПС, а конкретно: патроны, оружие и другие предметы, типа рации.
4. Теперь наконец "заспавним" нашего НПС через скрипт. Создайте свой скрипт в папке gamedata\scripts\ и пропишите в него: Code function my_func_1 () alife():create("test_stalker_1",vector():set( -49.19, -10.03, -61.49 ),230520,77) end my_func_1 - название функции (пригодится для выполнения) test_stalker_1 - спавним нашего нового Сталкера с данной секцией. 49.19, -10.03, -61.49 - координаты X Y Z 230520 - level_vetrex_id 77 - game_vetrex_id Данные координаты, это Кордон, в туннеле под дорогой, рядом с раненным Толиком. Напоминаю, что свои координаты можно снять через Position Informer.
5. Всё сделано, помимо одной вещи: Не выполняется функция спанва. Её выполнение можно прописать в диалог, или в инфопоршень. Пропишем, для примера, в инфопоршень, который выполняется с самого начала игры, то есть наш НПС тоже будет появляться с самого начала игры. Откройте config\gameplay\info_portions.xml и ниже: <task>storyline_eliminate_gunslinger</task> добавьте это: <action>имя_вашего_скрипта.my_func_1</action>. То есть весь инфопоршень storyline_actor_start будет выглядеть так: Code <info_portion id="storyline_actor_start"> <task>storyline_eliminate_gunslinger</task> <action>имя_вашего_скрипта.my_func_1</action> </info_portion>
6. Запускаем игру, и если вы всё сделали правильно, то ваш НПС обязательно появится. Примечание: Начальный инфопоршень storyline_actor_start выполняется тогда, когда ГГ находится на Кордоне. Так что не пугайтесь, если вы таким образом заспавните НПС на Свалке и сами начнёте игру со неё и НПС не появится. Можно без проблем сделать отдельный инфопоршень, который выдаётся где бы ни был ГГ, и туда прописывать функции спавна.
|
|
| |
Miller | Дата: Сб, 17.12.2011, 17:26 | Сообщение # 2 |
Администратор
Группа: Администратор
Сообщений: 199
Статус: Offline
| Новый учебник (19:00 17 декабря 2011 года)
|
|
| |
DanS | Дата: Сб, 17.12.2011, 19:56 | Сообщение # 3 |
Тестер
Группа: iP Team
Сообщений: 148
Статус: Offline
| Отличный учебник
"IP Team"
|
|
| |
Stels | Дата: Ср, 28.12.2011, 08:39 | Сообщение # 4 |
Охотник
Группа: Сталкер
Сообщений: 17
Статус: Offline
| Miller, Не знаю может у меня что то с башкой не так а может и с компом но вот я сделал вроде как ты описал скинул в игру и у меня вылет на загрузке побывал на разных модификациях ( каждый раз брал файлы из игр )и на чистой игре везде одно и тоже глянь где ошибка если есть в собранном виде для заброске в игру выглядит так :
Config: creatures: Spawn_sektions: gameplay Charakter_desc_escape: nps_profile info_portions: skripts: test_stalker_1: конечно нижние части файлов я по отрезал так как на сайте не вмещаются но они же все равно с игры и еще тег закрыт
Сообщение отредактировал Stels - Ср, 28.12.2011, 09:00 |
|
| |
Miller | Дата: Ср, 28.12.2011, 11:02 | Сообщение # 5 |
Администратор
Группа: Администратор
Сообщений: 199
Статус: Offline
| Stels, а лог скидывать не пробовал? Или его нет? Если не знаешь о чем я: После вылета зайди в блокнот хоть какой и нажми Ctrl + V (вставить). Если что-то появится - скинь сюда. Если ничего не будет, то попробуй в config\creatures\spawn_sections.ltx заменить секцию на:
Code [test_stalker_1]:stalker $spawn = "respawn\test_stalker_1" character_profile = test_stalker_1_xapaktep spec_rank = veteran community = stalker
|
|
| |
Stels | Дата: Ср, 28.12.2011, 11:18 | Сообщение # 6 |
Охотник
Группа: Сталкер
Сообщений: 17
Статус: Offline
| Miller, сделал как ты сказал появилось вот это : Expression : m_pItemDataVector->end() == t_it Function : CXML_IdToIndex<class CInfoPortion>::InitInternal File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h Line : 184 Description : duplicate item id Arguments : storyline_actor_start
замена тоже ни к чему не привела выброс также в момент загрузки( и уменя такая беда по всем урокам для спавна NPS использовал разных авторов )
Сообщение отредактировал Stels - Ср, 28.12.2011, 11:24 |
|
| |
Miller | Дата: Ср, 28.12.2011, 17:41 | Сообщение # 7 |
Администратор
Группа: Администратор
Сообщений: 199
Статус: Offline
| Stels, скажи мне: нахрена ты в info_portions.xml инфопоршень storyline_actor_start прописал второй раз? Я же специально про это расписал, что инфопоршень storyline_actor_start будет выглдять так: (и код). Читай внимательнее, я не писал, что нужно повторно его прописывать, нужно лишь в сам инфопоршень прописать выполнение функции.
Если ты так ничего и не понял, ничего до этого не делая, открой info_portions.xml и убери там:
Code <info_portion id="storyline_actor_start"> <task>storyline_eliminate_gunslinger</task> </info_portion>
Это лишнее, storyline_actor_start уже существует, а его повторение и приводит к вылету.
|
|
| |
Stels | Дата: Ср, 28.12.2011, 19:28 | Сообщение # 8 |
Охотник
Группа: Сталкер
Сообщений: 17
Статус: Offline
| Miller, я этой штуки не прописывал видно она продублировалась при замещении сделанной мной gamedata вылет исчез но и НПС нету попробую еще вернуть первую замену что ты предложил назад или дать другие координаты Что то не помагает НПС не спаунится
Сообщение отредактировал Stels - Ср, 28.12.2011, 19:46 |
|
| |
Miller | Дата: Ср, 28.12.2011, 19:52 | Сообщение # 9 |
Администратор
Группа: Администратор
Сообщений: 199
Статус: Offline
| Stels, уверен что этот инфопоршень выполняется с самого начала игры? Ты вообще на оригинал ТЧ делаешь, или на какой-то мод уже? Если на мод, то у тебя вероятно либо ГГ начинает не с Кордона, поэтому инфопоршень не выполняется, соответственно и функция, либо в bind_stalker.script его выполнение убрано вовсе.
|
|
| |
Stels | Дата: Чт, 29.12.2011, 11:58 | Сообщение # 10 |
Охотник
Группа: Сталкер
Сообщений: 17
Статус: Offline
| Miller, который выложен тут использовал твой мод
|
|
| |
Miller | Дата: Чт, 29.12.2011, 12:09 | Сообщение # 11 |
Администратор
Группа: Администратор
Сообщений: 199
Статус: Offline
| Stels, проверь менял ли ты bind_stalker.script, появляется ли ГГ на Кордоне, не удалил ли ты случайно выполнение функции в инфопоршне, называется ли твой скрипт test_stalker_1 и в gamedata\scripts\ ли он. Больше вариантов не знаю, чего ты там неправильно сделал. Возьми лучше свои координаты, а не из тутора.
|
|
| |
Stels | Дата: Пт, 30.12.2011, 03:28 | Сообщение # 12 |
Охотник
Группа: Сталкер
Сообщений: 17
Статус: Offline
| Miller, Ничего не удалял ГГ появляется и координаты менял , правда у меня есть одно но к примеру я качаю твой мод устанавливаю и пробую запустить и у меня идет вылет при загрузке тогда я беру дату из твоего мода вставляю в лицензию 1.0004 и все прет как надо и еще такой момент при распаковки даты в лицензии как только доходит до папки Spawns у меня начинается вылет на загрузке , простоя подозреваю что проблема в моей ОС раньше такого не было а сейчас все моды играю так как описывал напрямую не идет не один
Точнее выяснил так у меня вылет идет из-за файла localizacion и из-за ui из-за первого при распаковке вылет почти сразу а второй после загрузки изготовителей
Сообщение отредактировал Stels - Пт, 30.12.2011, 08:09 |
|
| |
DanS | Дата: Пт, 30.12.2011, 17:01 | Сообщение # 13 |
Тестер
Группа: iP Team
Сообщений: 148
Статус: Offline
| а в каком gamedata.db? папка skript? Добавлено (30/Дек/2011, 17:01) --------------------------------------------- Вова!!!!Создал все как написано и нпс не спавнится!!!!Что делать?
"IP Team"
|
|
| |
Stels | Дата: Вт, 03.01.2012, 13:39 | Сообщение # 14 |
Охотник
Группа: Сталкер
Сообщений: 17
Статус: Offline
| DanS, В первой дате и причем нужна только папка config
Вова а как если сделать через диалог может у меня так получится
Сообщение отредактировал Stels - Вт, 03.01.2012, 13:41 |
|
| |
Miller | Дата: Вт, 03.01.2012, 14:05 | Сообщение # 15 |
Администратор
Группа: Администратор
Сообщений: 199
Статус: Offline
| Stels, а где у тебя файл test_stalker_1 лежит? А в диалоги прописывать так же, как и в инфопоршни, только конфиг какого-нибудь диалога открой и всё.
|
|
| |
|