• Страница 1 из 2
  • 1
  • 2
  • »
Форум » Форум IP » Теория модостроения » Создание НПС через скрипт и их редактирование (Учебник от IP Team # 2)
Создание НПС через скрипт и их редактирование
MillerДата: Пт, 16.12.2011, 09:41 | Сообщение # 1
Администратор
Группа: Администратор
Сообщений: 199
Репутация: 1029
Статус: 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
Репутация: 1029
Статус: Offline
Новый учебник (19:00 17 декабря 2011 года)

 
DanSДата: Сб, 17.12.2011, 19:56 | Сообщение # 3
Тестер
Группа: iP Team
Сообщений: 148
Репутация: 125
Статус: Offline
Отличный учебник

"IP Team"
 
StelsДата: Ср, 28.12.2011, 08:39 | Сообщение # 4
Охотник
Группа: Сталкер
Сообщений: 17
Репутация: 25
Статус: 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
Репутация: 1029
Статус: 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
Репутация: 25
Статус: 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
Репутация: 1029
Статус: 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
Репутация: 25
Статус: Offline
Miller, я этой штуки не прописывал видно она продублировалась при замещении сделанной мной gamedata вылет исчез но и НПС нету попробую еще вернуть первую замену что ты предложил назад или дать другие координаты
Что то не помагает НПС не спаунится


Сообщение отредактировал Stels - Ср, 28.12.2011, 19:46
 
MillerДата: Ср, 28.12.2011, 19:52 | Сообщение # 9
Администратор
Группа: Администратор
Сообщений: 199
Репутация: 1029
Статус: Offline
Stels, уверен что этот инфопоршень выполняется с самого начала игры?
Ты вообще на оригинал ТЧ делаешь, или на какой-то мод уже? Если на мод, то у тебя вероятно либо ГГ начинает не с Кордона, поэтому инфопоршень не выполняется, соответственно и функция, либо в bind_stalker.script его выполнение убрано вовсе.


 
StelsДата: Чт, 29.12.2011, 11:58 | Сообщение # 10
Охотник
Группа: Сталкер
Сообщений: 17
Репутация: 25
Статус: Offline
Miller, который выложен тут использовал твой мод
 
MillerДата: Чт, 29.12.2011, 12:09 | Сообщение # 11
Администратор
Группа: Администратор
Сообщений: 199
Репутация: 1029
Статус: Offline
Stels, проверь менял ли ты bind_stalker.script, появляется ли ГГ на Кордоне, не удалил ли ты случайно выполнение функции в инфопоршне, называется ли твой скрипт test_stalker_1 и в gamedata\scripts\ ли он.
Больше вариантов не знаю, чего ты там неправильно сделал. Возьми лучше свои координаты, а не из тутора.


 
StelsДата: Пт, 30.12.2011, 03:28 | Сообщение # 12
Охотник
Группа: Сталкер
Сообщений: 17
Репутация: 25
Статус: Offline
Miller, Ничего не удалял ГГ появляется и координаты менял , правда у меня есть одно но к примеру я качаю твой мод устанавливаю и пробую запустить и у меня идет вылет при загрузке тогда я беру дату из твоего мода вставляю в лицензию 1.0004 и все прет как надо и еще такой момент при распаковки даты в лицензии как только доходит до папки Spawns у меня начинается вылет на загрузке , простоя подозреваю что проблема в моей ОС раньше такого не было а сейчас все моды играю так как описывал напрямую не идет не один

Точнее выяснил так у меня вылет идет из-за файла localizacion и из-за ui из-за первого при распаковке вылет почти сразу а второй после загрузки изготовителей


Сообщение отредактировал Stels - Пт, 30.12.2011, 08:09
 
DanSДата: Пт, 30.12.2011, 17:01 | Сообщение # 13
Тестер
Группа: iP Team
Сообщений: 148
Репутация: 125
Статус: Offline
а в каком gamedata.db? папка skript?

Добавлено (30/Дек/2011, 17:01)
---------------------------------------------
Вова!!!!Создал все как написано и нпс не спавнится!!!!Что делать?


"IP Team"
 
StelsДата: Вт, 03.01.2012, 13:39 | Сообщение # 14
Охотник
Группа: Сталкер
Сообщений: 17
Репутация: 25
Статус: Offline
DanS, В первой дате и причем нужна только папка config

Вова а как если сделать через диалог может у меня так получится


Сообщение отредактировал Stels - Вт, 03.01.2012, 13:41
 
MillerДата: Вт, 03.01.2012, 14:05 | Сообщение # 15
Администратор
Группа: Администратор
Сообщений: 199
Репутация: 1029
Статус: Offline
Stels, а где у тебя файл test_stalker_1 лежит?
А в диалоги прописывать так же, как и в инфопоршни, только конфиг какого-нибудь диалога открой и всё.


 
Форум » Форум IP » Теория модостроения » Создание НПС через скрипт и их редактирование (Учебник от IP Team # 2)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Истинный путь Team © 2024