Создание НПС
|
|
|
Суббота, 30.05.2009, 05:56:40 |
Ранг: Мастер
Сообщений: 2546
Награды: 237
Репутация: 2302
Регистрация: 11.12.2008
Город: Заполярье
|
Для того, чтобы создать нового НПС нам понадобятся координаты нужного места, где и будет заспаунен наш NPC. Возьмём Кордон, лагерь новичков. Можете снять координаты сами, а можете взять мною уже снятые: (-218.20,-20.2,-145.63),35362,47). Далее. Создаём файл в папке gamedata/scripts файл, скажем esc_unik_npc.script. В нём создаём функцию. Код: function esc_unik_npc () alife():create("esc_unik_npc",vector():set(-218.20,-20.2,-145.63),35362,47) end Теперь мы в файле npc_profile.xml (в папке gameplay) добавляем нашего НПС. Код: <character id="escape_trader"> <class>Trader</class> <specific_character>escape_trader</specific_character> </character> <character id="esc_unik_npc"> <class>esc_unik_npc</class> <specific_character>esc_unik_npc</specific_character> </character> Копируем или создаём по образцу только нижний блок Второго торговца нам ненадо. Теперь моздадим секцию нашего персоонажа. В файле spawn_section.ltx (gamedata/config/creatures) в блоке: --------Escape-------------- --------neutrals------------ Создаём секцию. Код: [esc_unik_npc]:stalker $spawn = "respawn\esc_unik_npc" character_profile = esc_unik_npc spec_rank = regular community = dolg В строке community можете вместо долга вписать другую группировку. Однако если мы хотим, чтоба наш персоонаж не гулял по Зоне, пока не наткнётся на первуюю аномалию, то пропишем чтобы он стоял на месте. Для этого под community вставляем: custom_data = scripts\esc_unik_npc.ltx Далее создаём в gamedata/config папку scripts в в папке создаём файл esc_unik_npc.ltx В наш созданый файл вставляем: Код: [logic] active = remark1 danger = danger_ignore [danger_ignore] ignore_distance = 5 [remark1] no_move = true Всё наш НПС будет стоять на месте своего спауна. Едем дальше. Нам надо активировать нашего персоонажа. для этого мы должны вставить строку: <action>esc_unik_npc.esc_unik_npc</action> Либо в диалог, либо в какой-нибудь квест. Давайте вставим строку в файл info_portions.xml (gamedata/gameplay) под Код: <game_information_portions> <info_portion id="storyline_actor_start"> <task>storyline_eliminate_gunslinger</task> Выклядеть это будет так: Код: <game_information_portions> <info_portion id="storyline_actor_start"> <task>storyline_eliminate_gunslinger</task> <action>esc_unik_npc.esc_unik_npc</action> </info_portion> Однако мы не прописали самого НПС, как личность В файле character_desc_escape.xml (gamedata/gameplay) добавляем: Код: <specific_character id="esc_unik_npc" team_default = "1"> <name>GENERATE_NAME_bandit</name> <icon>ui_npc_u_stalker_bandit_3</icon> <bio>esc_wolf_bio</bio> <class>esc_otbrosi_1</class> <community>dolg</community> <terrain_sect>stalker_terrain</terrain_sect> <rank>367</rank> <reputation>-60</reputation> <money min="600" max="2000" infinitive="1"/> <snd_config>characters_voice\human_01\monolith\</snd_config> <crouch_type>-1</crouch_type> <visual>actors\bandit\stalker_bandit_3</visual> <supplies> [spawn] \n wpn_groza \n ammo_9x39_pab9 \n 1. include "gameplay\character_items.xml" \n 2. include "gameplay\character_food.xml" </supplies> 1. include "gameplay\character_criticals_3.xml" 1. include "gameplay\character_dialogs.xml" </specific_character> Правда тут получится у нас долговец в одежде бандита и говорящего голосом монолитовца xD Всё сохроняем. НПС готов. Но так же можно добавить нашему НПС диалог) Как добавлять диалоги написано в нашем факе) Если хотяте сделать нашему НПС своё имя то в файле stable_bio_name.xml (gamedata/config/text/rus) добавляем: Код: <string id="esc_unik_npc"> <text>Факер-мазафакер</text> </string> А в файле сharacter_desc_escape.xml (gamedata/gameplay) находим нашего уже прописаного НПС и вставляем в секцию <name></name> (у нас в ней написано GENERATE_NAME_bandit) esc_unik_npc Всё Поздравляю)
-Он счастлив. -Он мёртв.
Сообщение отредактировал ya - Суббота, 30.05.2009, 05:57:07
| |
|
Четверг, 15.10.2009, 12:46:53 |
Ранг: Мастер
Сообщений: 2546
Награды: 237
Репутация: 2302
Регистрация: 11.12.2008
Город: Заполярье
|
Quote (Serg_Anubis) Где изменять координаты? И как получить координаты? Quote (ya) программой Position Informer,
-Он счастлив. -Он мёртв.
| |
|
Среда, 09.12.2009, 13:50:40 |
Ранг: Мастер
Сообщений: 2546
Награды: 237
Репутация: 2302
Регистрация: 11.12.2008
Город: Заполярье
|
Quote (Sedoй) ya ты уверен что правильно написал? потому что я сделал так как написано и вылетает после того Синхронизация:клиент. а в xml файле выдает ошибку синтаксиса... 1) Писал не я 2) Notepad++ В помощь
-Он счастлив. -Он мёртв.
| |
|
Четверг, 10.12.2009, 10:25:29 |
Ранг: Знаток Зоны
Сообщений: 726
Награды: 22
Репутация: 296
Регистрация: 02.03.2009
Город: Миасс
|
ya, а НПС будет поставлен если после создания просто загрузить игру, а не новую начать? Нужна новая игра, т.к. было редактирование all.spawn PRYZRAK
Истинный путь MOD ver. 1.3.0 (ТЧ) готов! Истинный путь v2.0 (ТЧ) готов!
| |
|
Вторник, 12.01.2010, 03:36:09 |
Ранг: Прибывший
Сообщений: 2
Награды: 0
Репутация: 0
Регистрация: 12.01.2010
|
У меня тоже были вылеты, но разобрался. В коде, присутствуют русские символы. Поэтому вылет. Ниже привожу исправленый код: Code [logic] active = remark1 danger = danger_ignore
[danger_ignore] ignore_distance = 5
[remark1] no_move = true
| |
|
Вторник, 12.01.2010, 15:34:59 |
Ранг: Прибывший
Сообщений: 7
Награды: 0
Репутация: 0
Регистрация: 27.10.2009
|
подходят ли координаты, взятые командой rs_stats? Да, конечно. Можно ещё через position informer. Кому что нравится. PRYZRAK
| |
|
Вторник, 12.01.2010, 23:32:08 |
Ранг: Прибывший
Сообщений: 2
Награды: 0
Репутация: 0
Регистрация: 12.01.2010
|
Quote (Vova-VIP) Рэдрик-Шухарт, ну и что ты сделал, поставил чтобы были на других строчках? Я так уже делал <_< Сравнил код в первом посте, с тем что я привел - действительно совпадают. Поэтому пардон. У меня просто была такая-же ситуация: код скопировал (источник не помню), и при запуске игра вылетала с ошибкой. Но в моем случае символ "а" или "о" в коде был из кириллицы. Поэтому и решил, что тут тоже самое. Подскажите как правильно заспаунить NPC. Я создаю долговца на баре скриптом по условию: Code if level.name() == "l05_bar" then get_console():execute("start_my_script_level_name_=_"..level.name()) bar_unik_npc.bar_unik_npc() end При этом объект нормально создается, но при выходе - входе на локацию бар объектов становится 2 и т.д. То есть при любом входе на локацию спаунится новый долговец. Как прописать, что если он уже существует, то спаунить нового не надо.
| |
|
Суббота, 10.07.2010, 10:29:42 |
Ранг: Новичок
Сообщений: 33
Награды: 5
Репутация: 7
Регистрация: 01.07.2010
Город: Ставропольский край
|
У меня нифига не получилось. Либо игра просто не включается либо его(NPC) просто нигде нет.Добавлено (10.07.2010, 10:04:30) --------------------------------------------- Вот как легче всего вычислять координаты добавляем в ui_main_menu в gamedata/scripts 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 Добавлено (10.07.2010, 10:29:42) --------------------------------------------- дотопываем до того места которого хотите узнать координаты выходим в главное меню нажимаем титры или разработчики и в игре в виде сообщения появляется информация о месте
| |
|
Понедельник, 23.08.2010, 23:13:22 |
Ранг: Разведчик
Сообщений: 182
Награды: 4
Репутация: 42
Регистрация: 25.04.2010
|
[Andron], попробуй запихать команду в xr_motivator после строчки xr_gulag.setup_gulag_and_logic_on_spawn( self.object, self.st, sobject, modules.stype_stalker, self.loaded ) работает не всегда. Или создай скрипт, допустим new_spawn после той же строчки напиши my_spawn.escape_spawn_load( object ) а в созданный скрипт напиши function escape_spawn_load() if level == "l01_escape" then elseif xr_logic.pstor_retrieve(db.actor, "тут его имя", 0)==0 then obj = alife():create( "тут его имя для спавна", vector():set(-226.2, -20.3, -158.4), 28485, 48 ) xr_logic.pstor_store(db.actor, "тут его имя", 1) end Второй способ взял у SRP Team но это вариант лучше для физ обьектов например автомобилей,и я не уверен что он будет правильно читаться для НПС так как меня беспокоят строчки xr_logic.pstor_store(db.actor, "тут его имя", 1) и elseif xr_logic.pstor_retrieve(db.actor, "тут его имя", 0)==0 then лучше пытайся первым способом второй как план Б
[img]http://nick-name.ru/forum/Ulman%28zzQWERTYzz%29.gif[/img]
| |
|
Понедельник, 23.08.2010, 23:36:14 |
Ранг: Разведчик
Сообщений: 249
Награды: 9
Репутация: 66
Регистрация: 04.09.2009
|
еще предложу способ в скрипте bind_stalker найди function actor_binder:update и встав туда такое if not has_alife_info("твоя инфопорция") then self.object:give_info_portion("твоя инфопорция") название твоего скрипта.название функции спавна end
В разработке: B.O.L. mod and Crusader Land
| |
|
Воскресенье, 12.09.2010, 16:16:09 |
Ранг: Разведчик
Сообщений: 249
Награды: 9
Репутация: 66
Регистрация: 04.09.2009
|
Чтобы спавнилась группа неписей периодически, в алл.спавне создайте респавнер или скачайте туториал
В разработке: B.O.L. mod and Crusader Land
| |
|
Четверг, 18.11.2010, 13:22:24 |
Ранг: Разведчик
Сообщений: 181
Награды: 4
Репутация: 96
Регистрация: 15.09.2010
Город: СантПитерсбурх
|
FATAL ERROR [error]Expression : no_assert [error]Function : CXML_IdToIndex<class CSpecificCharacter>::GetById [error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h [error]Line : 112 [error]Description : item not found, id [error]Arguments : esc_unik_npc ВОТ. Что произошло? Пожалуйста помогите.
«Проиграть мы всегда успеем. Надо постараться выиграть!» В.А. Крючков, председатель КГБ (1988-1991)
| |
|
Пятница, 19.11.2010, 07:44:54 |
Ранг: Новичок
Сообщений: 48
Награды: 5
Репутация: 29
Регистрация: 12.11.2010
|
Shepka, произошел вылет . Проверь наличие и правильность описания (особенно название) твоего НПСа esc_unik_npc в character_desc_escape.xml (или, возможно, в другом подобном xml'e - зависит от того, куда ты сам прописал).
| |
|
Суббота, 08.01.2011, 12:43:36 |
Ранг: Прибывший
Сообщений: 6
Награды: 2
Репутация: 2
Регистрация: 07.01.2011
Город: Припять
|
А можно как-нибудь сделать, чтобы нпс патрулировал какую-нибудь местность(ну как чувак, который на Армейских складах, на базе "Свободы" по мосту ещё ходит туда-сюда)....? Кто подскажет: Огромное спасибо!:)
Добавлено (08.01.2011, 12:43:36) --------------------------------------------- Quote (ya) 1. include "gameplay\character_items.xml" \n 2. include "gameplay\character_food.xml" 1. include "gameplay\character_criticals_3.xml" 1. include "gameplay\character_dialogs.xml"
У кого не работает? Тут в коде надо не так, а так: #include "gameplay\character_items.xml" \n #include "gameplay\character_food.xml" #include "gameplay\character_criticals_3.xml" #include "gameplay\character_dialogs.xml"
у меня не работало..Заменил - работает!
изучайем струтуру С++ и LUA )) Ссылки на скрипты с решёткой
Вступайте в "Свободу"! Поможем мирным гражданам всей планеты путём уничтожения "Долга" :)
| |
|
Суббота, 08.01.2011, 14:13:33 |
Ранг: Разведчик
Сообщений: 293
Награды: 30
Репутация: 264
Регистрация: 14.08.2010
Город: Киев
|
Quote (Shepka) FATAL ERROR [error]Expression : no_assert [error]Function : CXML_IdToIndex<class CSpecificCharacter>::GetById [error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h [error]Line : 112 [error]Description : item not found, id [error]Arguments : esc_unik_npc ВОТ. Что произошло? Пожалуйста помогите. Стринг где-то неправильно прописан. Например, такое выбивает, если ты случайно пропишешь персонажу в инвентарь w_akk74, только здесь не находит самого непися. Значит, прописан не везде. Посмотри в конфигах смартов, многие забывают туда вписывать своих уников.
В зоне нет добра и зла. Выживает сильнейший, и плевать на его цели и намерения.
| |
|
Понедельник, 10.01.2011, 05:31:53 |
Ранг: Прибывший
Сообщений: 6
Награды: 2
Репутация: 2
Регистрация: 07.01.2011
Город: Припять
|
Quote (PsiGennychL) как сделать чтобы нпс стоял на месте, а то он постоянно куда то уходит, подскажите пожалуйста ?! Теперь создадим секцию нашего персоонажа. В файле spawn_section.ltx (gamedata/config/creatures) в блоке: --------Escape-------------- --------neutrals------------ Создаём секцию. Код: [esc_unik_npc]:stalker $spawn = "respawn\esc_unik_npc" character_profile = esc_unik_npc spec_rank = regular community = dolg В строке community можете вместо долга вписать другую группировку. Однако если мы хотим, чтоба наш персоонаж не гулял по Зоне, пока не наткнётся на первуюю аномалию, то пропишем чтобы он стоял на месте. Для этого под community вставляем: custom_data = scripts\esc_unik_npc.ltx Т.е. когда мы создали секцию нашего нпс, то под строкой, где указывается группировка(community = dolg) пишем custom_data = scripts\esc_unik_npc.ltx И всё!
Вступайте в "Свободу"! Поможем мирным гражданам всей планеты путём уничтожения "Долга" :)
| |
|
Суббота, 22.01.2011, 03:49:28 |
Ранг: Прибывший
Сообщений: 6
Награды: 2
Репутация: 2
Регистрация: 07.01.2011
Город: Припять
|
Quote (snyпер) я так и не нашел папку "gameplay" Если что, если ты всё прально распаковал, то gameplay находится в папке config...Вдруг не там ищешь:)
Вступайте в "Свободу"! Поможем мирным гражданам всей планеты путём уничтожения "Долга" :)
| |
|
Пятница, 28.01.2011, 15:47:28 |
Ранг: Разведчик
Сообщений: 293
Награды: 30
Репутация: 264
Регистрация: 14.08.2010
Город: Киев
|
Quote (Shepka) Ну есть люди добрые? Я создал точку респавна в темной долине. А неписи не появляются. Что делать? Для них smart_terrain обязательно делать? Нет. Ты что-то не так сделал, когда создавал спаун.
В зоне нет добра и зла. Выживает сильнейший, и плевать на его цели и намерения.
| |
|
Пятница, 28.01.2011, 20:32:59 |
Ранг: Разведчик
Сообщений: 181
Награды: 4
Репутация: 96
Регистрация: 15.09.2010
Город: СантПитерсбурх
|
Qerrenty, Странно.. Сейчас еще попробую.
«Проиграть мы всегда успеем. Надо постараться выиграть!» В.А. Крючков, председатель КГБ (1988-1991)
| |
|
Пятница, 28.01.2011, 21:21:18 |
Ранг: Разведчик
Сообщений: 293
Награды: 30
Репутация: 264
Регистрация: 14.08.2010
Город: Киев
|
Quote (Shepka) </game_task> С каждым бывает. Обидно, когда ищешь трудные проблемы, а оказывается такая мелочь, помарочка... Quote (Shepka) Qerrenty, Странно.. Сейчас еще попробую. Там ещё кое-что было, хотя вряд ли является проблемой... Сейчас точно скажу, чего может не хватать.
В зоне нет добра и зла. Выживает сильнейший, и плевать на его цели и намерения.
| |