gruber 2 481 Опубликовано 5 Июля 2009 Поделиться Опубликовано 5 Июля 2009 (изменено) можно ему работу в гулаге задать с определенными свойствами-как Шустрому или Толику или в условии спавна прописать инфопоршни (пример Волк -спавниться в лагере ,выполняет работу,а при получении определенного инфопоршня-исчезеет с кордона и появляется на складах) ну или не стопроцентный способ-по инфопоршню изменить его характеристики .чтобы он по условию под гулаг не попадал (например поднять ранг до ветерана,которых к примеру на кордоне быть не должно или сменить группировку или имя)самый простой и надежный первый способ-выносишь логику в отдельный файл(в алспавне в костом дате пишешь имя файла логики в конфиг/стриптс-а внем расписываешь в начале основная логика а дальше условие при выполнении которого схема переключается и логика меняется(посмотри файл тех же Толика или Шустрого,нужна распакованная геймдата оригинальной игры) Изменено 5 Июля 2009 пользователем gruber Ссылка на комментарий
Pihan13 9 Опубликовано 5 Июля 2009 Поделиться Опубликовано 5 Июля 2009 Здравствуйте великие умы форума АМК! Можете сделать урок по созданию НПС в ЧН. Я пробовал а ничего не получается. Объясните всё по крупиночкам языком ламеров что из себя представляет конфиг НПС в игре. (какие файлы за это отвечают + ещё подробная теория) Локация "Жилище Картографа" Хелп по созданию смарт террейнов Ссылка на комментарий
AKKK1 6 Опубликовано 5 Июля 2009 Поделиться Опубликовано 5 Июля 2009 gruber Это не совсем то что хотелось Нужно чтоб НПС находясь под гулагом любым в определенное время отправился по своим делам тоесть в none = true а погуляв некоторое время стал снова доступен смартгулагам любым верней тем которым подходит Ссылка на комментарий
Kostya V 31 Опубликовано 6 Июля 2009 Поделиться Опубликовано 6 Июля 2009 AKKK1, Можно сделать по-другому. Создай свой гулаг для этого непися. И тогда схема логики может быть такой. НПС находится под каким-нибудь гулагом. Затем по инфопоршину он покидает этот гулаг и идет в гулаг, который ты создал (аналогия твоему варианту, когда он гуляет без гулага). Потом после еще одного инфопоршина он покидает новый гулаг и если ты ему ничего больше не пропишешь, то он захватится каким-либо гулагом, где есть свободное место. Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет! Ссылка на комментарий
AKKK1 6 Опубликовано 6 Июля 2009 Поделиться Опубликовано 6 Июля 2009 Kostya V Спасибо но наскольло я понимаю невозможно создать смартгул на всю локу ? или можно ? Как заставить непися для начала просто в определенное время покинуть гулаг перейти под свою логику но не в другой гулаг если он конечно не на всю локу допустим начало игры новички у костра в 5.20 один из них должен уйти в [smartterain] none = true а в 12.00 вернутся обратно или к любому другому camp НПС находится под каким-нибудь гулагом. Затем по инфопоршину он покидает этот гулаг и идет в гулаг, который ты создал о можноли создать на локе штук 30 гулагов и чтоб НПС по инфопоршу выбирал их рандомно Ссылка на комментарий
меченый(стрелок) 5 Опубликовано 6 Июля 2009 Поделиться Опубликовано 6 Июля 2009 Pihan13, Там не трудно.....Скачай прогу(у меня в подписи),создай пробного НПС и посмотри фаилы на выходе... и разбирайся.... ЗЫ:Это не реклама моей программы ,хотя могло так выглядеть... Ссылка на комментарий
Kostya V 31 Опубликовано 6 Июля 2009 Поделиться Опубликовано 6 Июля 2009 AKKK1, Я не знаю, что значит гулаг на всю локу. По-моему, надо просто создать гулаг и прописать ему работу какую-нибудь. А вот работа этого гулага может быть уже по всему уровню. Как уже пропишешь. Ты просил подсказать, как это можно сделать, я сказал. Расписывать все это не буду. По поводу рандомности не знаю. Кто весел - тот смеется, кто хочет - тот добьется, кто ищет - тот всегда найдет! Ссылка на комментарий
Wawka 5 Опубликовано 6 Июля 2009 Поделиться Опубликовано 6 Июля 2009 (изменено) Гулаг на всю локу создать, конечно же, можно. В загрузке работ проставить online = true и всё. Наделать пути, там где необходимо, прописать логику. А для непися, который должен покинуть своё место на некоторое время, можно сделать примерно следующее: [первая_логика] on_info = {!is_day} вторая_логика [вторая_логика] on_info = {=is_day} первая_логика Это условно. Можно и другие условия придумать. Функция is_day находится в xr_conditions.script. Можно создать по её аналогии другую, с другим промежутком времени. Назвать, к примеру, is_utro function is_utro (actor, npc) return level.get_time_hours() >= 5 and level.get_time_hours() < 12 end То есть, с 5ти до 12ти непись будет использовать одну логику, а в остальное время другую. Конечно, можно заставить и покидать гулаг - прописать индивидуальную логику и имя_гулага = true - но только при этом гулаг необходимо распускать, используя cond = {+/-условие/инфопоршен}, по которому гулаг будет прекращать\возобновлять свою работу. Только это не есть хорошо, ибо все остальные жители так же будут покидать гулаг, если его отключить. Проще пользовать первый вариант - менять логику по условию или инфопоршену, не затрагивая остальных "жителей". Ну и ещё, как вариант, можно менять состояние всего гулага. В один промежуток времени гулаг в 0-ом состоянии, в другой промежуток - в 1-ом - делается это в скриптах загрузки работ: if type == "имя_гулага" then return function(gulag) if db.actor ~= nil then if ( level.get_time_hours() >= 5 and level.get_time_hours() <= 12 ) then return 0 else return 1 end else return gulag.state end end end Изменено 6 Июля 2009 пользователем WAWKA Ссылка на комментарий
AKKK1 6 Опубликовано 6 Июля 2009 Поделиться Опубликовано 6 Июля 2009 Спасибо если нельзя выдрать непись из гулага то можноли использовать логику гулага для НПС Тоесть если НПС прописать например это с определенными условиями конечно сидящие днём у костра [logic@esc_lager_kamp1] active = kamp1@esc_lager [kamp1@esc_lager] center_point = camp_center path_walk = camp_center_task soundgroup = esc_lager meet = meet@lager пойдет он k костру в лагере новичков ? и если пойдет то ниче что он четвертым будет ? Ссылка на комментарий
pastor 0 Опубликовано 28 Июля 2009 Поделиться Опубликовано 28 Июля 2009 (изменено) Привет Всем! Вот и я решил "попробывать" себя в моддинге. Вроде всё сделал как написано, игра нормально загружается (без вылета), а моего НПС нет... Где я мог ошибиться, раз нет вылета? Соответственно лог не прикладываю. Изменено 28 Июля 2009 пользователем pastor ))))))))))))))))))))))))))))))))) Ссылка на комментарий
меченый(стрелок) 5 Опубликовано 28 Июля 2009 Поделиться Опубликовано 28 Июля 2009 pastor, Уважаемый,а вы его "заспавнили"? Ссылка на комментарий
pastor 0 Опубликовано 28 Июля 2009 Поделиться Опубликовано 28 Июля 2009 меченый(стрелок), честно говоря не знаю... Но если это есть в уроке, то скорее всего да. Где и как это проверить? Кстати, если нет вылета, но я его не заспавнил, значит я всё правильно сделал? И ещё, я так понимаю, что НПС должен появиться сразу?! ))))))))))))))))))))))))))))))))) Ссылка на комментарий
Pihan13 9 Опубликовано 28 Июля 2009 Поделиться Опубликовано 28 Июля 2009 pastor, необязательно если его нет и не вылетела правильно. Допустим ты в пути к визуалу допустил ошибку или впихнул ему такой предмет, которого нет в игре, либо допустил ошибку в его логике. Игра не вылетет, но в момент его спавна (экшеном из диалога например) игра вылетет проверено на собственном опыте! Локация "Жилище Картографа" Хелп по созданию смарт террейнов Ссылка на комментарий
pastor 0 Опубликовано 28 Июля 2009 Поделиться Опубликовано 28 Июля 2009 'Pihan13' В том и дело, что, теорретически, спавниться он должен сразу (без диалога с кем либо). Ещё я понял, что новая игра для его появления не нужна?! ))))))))))))))))))))))))))))))))) Ссылка на комментарий
SCRIPT 5 Опубликовано 28 Июля 2009 Автор Поделиться Опубликовано 28 Июля 2009 (изменено) новая игра не нужна. скорее всего ты инфопоршень не туда вставил и он не появился. Вот - Всё наш НПС будет стоять на месте своего спауна. Едем дальше. Нам надо активировать нашего персоонажа. для этого мы должны вставить строку: Код <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> Добавлено через 2 мин.: Кстати, в статье ошибку с $spawn = "respawn\esc_unik_npc" исправил Изменено 28 Июля 2009 пользователем SCRIPT Thank you for your honesty. Now fuck off and die. Ссылка на комментарий
Push85 4 Опубликовано 29 Июля 2009 Поделиться Опубликовано 29 Июля 2009 pastor, почитал урок и кое-что понял, в уроке спавн непися висит на инфопоршне, а ты создал новый инфопоршень, который у тебя не выдается, по этому и спавна нет. Вообщем сделай так: <?xml version='1.0' encoding="windows-1251"?> <game_information_portions> <info_portion id="storyline_actor_start"> <task>storyline_eliminate_gunslinger</task> <action>new_krendel.new_krendel</action> </info_portion> <info_portion id="global_dialogs"> <dialog>actor_break_dialog</dialog> <!-- <dialog>actor_help_wounded</dialog> --> </info_portion> <info_portion id="terrain_test"> </info_portion> <!-- special info portion that sends to actor when it use in-game UI (PDA, Inventory, etc)--> <info_portion id="ui_pda"> <disable>ui_pda_hide</disable> </info_portion> <info_portion id="ui_pda_hide"> <disable>ui_pda</disable> </info_portion> <info_portion id="ui_pda_contacts"></info_portion> <info_portion id="ui_pda_contacts_hide"></info_portion> <info_portion id="ui_pda_map_local"></info_portion> <info_portion id="ui_pda_map_global"></info_portion> <info_portion id="ui_pda_news"></info_portion> <info_portion id="ui_pda_news_hide"></info_portion> <info_portion id="ui_pda_jobs_failed"></info_portion> <info_portion id="ui_pda_jobs_accomplished"></info_portion> <info_portion id="ui_pda_jobs_current"></info_portion> <info_portion id="ui_pda_jobs"> <disable>ui_pda_jobs_hide</disable> </info_portion> <info_portion id="ui_pda_jobs_hide"> <disable>ui_pda_jobs</disable> </info_portion> <info_portion id="ui_pda_contracts"></info_portion> <info_portion id="ui_pda_diary"></info_portion> <info_portion id="ui_pda_diary_hide"></info_portion> <info_portion id="ui_pda_encyclopedia"></info_portion> <info_portion id="ui_pda_encyclopedia_hide"></info_portion> <info_portion id="ui_pda_actor_info"></info_portion> <info_portion id="ui_pda_ranking"></info_portion> <info_portion id="ui_pda_events"></info_portion> <info_portion id="ui_inventory"> <disable>ui_inventory_hide</disable> </info_portion> <info_portion id="ui_inventory_hide"> <disable>ui_inventory</disable> </info_portion> <info_portion id="ui_talk"> <disable>ui_talk_hide</disable> </info_portion> <info_portion id="ui_talk_hide"> <disable>ui_talk</disable> </info_portion> <info_portion id="ui_trade"> <disable>ui_trade_hide</disable> </info_portion> <info_portion id="ui_trade_hide"> <disable>ui_trade</disable> </info_portion> <info_portion id="ui_car_body"> <disable>ui_car_body_hide</disable> </info_portion> <info_portion id="ui_car_body_hide"> <disable>ui_car_body</disable> </info_portion> <info_portion id="tutorial_part_15_hide_weapon"></info_portion> <info_portion id="autojump_enabled"></info_portion> <!-- kostya level --> <info_portion id="peshera_code_door_unlocked"></info_portion> <info_portion id="peshera_code_door_unlocked2"></info_portion> <info_portion id="peshera_code_door_unlocked3"></info_portion> <info_portion id="peshera_code_door_unlocked4"></info_portion> <info_portion id="spawn_teleport_exit"></info_portion> <info_portion id="spawn_teleport_hospital"></info_portion> <info_portion id="krovosos_spawn"></info_portion> <info_portion id="krovosos_spawn2"></info_portion> <info_portion id="generators_code_door_unlocked"></info_portion> <info_portion id="red_forest_open"></info_portion> <info_portion id="red_forest_open2"></info_portion> </game_information_portions> Возможно всё, ну или почти всё. Ссылка на комментарий
j00k 0 Опубликовано 31 Июля 2009 Поделиться Опубликовано 31 Июля 2009 Подскажите, а как убрать непися который уже есть в игре(как найти и убрать) Ссылка на комментарий
Pihan13 9 Опубликовано 4 Августа 2009 Поделиться Опубликовано 4 Августа 2009 (изменено) Моя инструкция по спавну NPC через скрипт в ЧН (опишу всё довольно понятно) Чтож приступим для начала берём файл: gamedata\configs\gameplay\character_desc_***.xml (*** - имя локации, но это не важно т.к. например прописали мы нашего нпс в character_desc_escape.xml, его спокойно можно будет спавнить через скрипт скажем на болотах.) в этот файл в самом конце есть тэг <xml> и теперь ПЕРЕД НИМ вставляем "основу": <specific_character id="esc_nash_npc" team_default = "1"> <name>esc_nash</name> <icon>ui_npc_vlad</icon> <map_icon x="1" y="0"></map_icon> <bio>Новичок.</bio> <class>esc_nash_npc</class> <community>freedom</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_02\freedom\</snd_config> <rank>50</rank> <reputation>13</reputation> <money min="0" max="1400" infinitive="0"/> <visual>actors\stalker_monolith\stalker_monolith_2</visual> <supplies> [spawn] \n device_torch \n wpn_pb \n ammo_9x18_fmj = 2 \n </supplies> </specific_character> <specific_character id="esc_nash_npc" team_default = "1"> <name>esc_nash</name> - имя можно указать GENERATE_NAME_stalker, GENERATE_NAME_bandit... тогда будет генериться случайное имя, но у нас есть определённое имя - esc_nash. куда с ним дальше объясню позднее <icon>ui_npc_vlad</icon> иконка нашего при обыске и шмоне трупа (объясню позднее) <map_icon x="1" y="0"></map_icon> - хз что такое, по походу иконка на карте <bio>Новичок.</bio> - абсолютно нигде не учавствует (в билде 1935 это можно было читать по ПДА) <class>esc_nash_npc</class> - класс (объясню и создадим позднее) <community>freedom</community> - группировка к которой принадлежит наш НПС (можно указать stalker, freedom, monolith ect.) <terrain_sect>stalker_terrain</terrain_sect> - smart-terrain (так и указывать stalker_terrain) <snd_config>characters_voice\human_02\freedom\</snd_config> (голосовой конфиг. распакуйте файл Localization\xrussian.db. ВНИМАНИЕ!!! если указать конфиг вояк и наш НПС будет другом, то будут вылеты - у вояк какогото там звука нету) <rank>50</rank> - ранг (от 0 до 1000) вроде распределяется как новичок, опытный, мастер, ветеран,... <reputation>13</reputation> - репутация (от 0 до 1000) репутация как на форуме АМК - у кого больше тот главнее (шутка). От неё зависит ВРОДЕ за сколько мы будем сдавать ему хабар и он нам.(т.е. если у него выше, то мы ему дёшево будем, а он нам дорого) <money min="0" max="1400" infinitive="0"/> - шальные наличные. min="0" самый минимум который может у него быть, max="1400" и так понятно. поставив infinitive="1" у него будут бесконечные (например у торговцев ---) <visual>actors\stalker_monolith\stalker_monolith_2</visual> - путь до модели "визуала" - любой файл в папке GAMEDATA\meshes\actors ну и соотв в подпапках. <supplies> - открывает "снабжение" [spawn] \n - это не трогаем device_torch \n \\\\ сюда можно добавлять свое к примеру чтоб выдать НПС АК74, пишем ему строку wpn_ak74 \n wpn_pb \n ammo_9x18_fmj = 2 \n </supplies> - закрывает"снабжение" </specific_character> Далее: открываем gamedata\configs\creatures\spawn_sections_***.ltx (*** - имя локи. как и в предидущем случае неважно) добавляем: ;наш персонаж [esc_nash_npc]:stalker; Здесь esc_nash_npc - что вместо этого напишем, то и пропишем для спавна. или это сам класс нпс (в профиле его <class>esc_nash_npc</class>) $spawn = "respawn\esc_nash_npc" character_profile = esc_nash_npc; то, что мы прописали в character_desc_*** (<specific_character id="esc_nash_npc"...) spec_rank = veteran;ранг. на этот раз не цыфрами а словами (master, veteran...) community = freedom;опять группировка. хотя если вы в профиле указали скажем freedom, а тут stalker, то вылета не будет custom_data = scripts\escape\esc_nash_npc.ltx; custom data (в будующем кастомдата) путь до ltx - файла логики Логика! создаём файл esc_nash_npc.ltx (или как там у вас) в папке gamedata\configs\scripts\escape (имя локации опять чтобы не путаться) пишем туда стандартную логику - стой на месте, нифига не делай: [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 Точки пути прописываем в файле way_имя_локации.ltx декомпилированного all.spawn. Новую игру начинать не нужно. вот по логике чуток: http://stalkerin.gameru.net/wiki/index.php...1%D1%82%D1%8C_1 Едем далее: Имя: в файле gamedata\configs\text\rus\st_characters.xml в самый конец ПЕРЕД ТЭГОМ </string_table> добавляем: <string id="esc_nash"> <text>Индюк "Опаленный"</text> </string> Иконка: стандартные в файле: gamedata\configs\ui\textures_descr\ui_npc_unique.xml структура файла: <file name="ui\ui_npc_unique"> - файл из которого брать иконки <texture id="ui_npc_u_nebo_2_face_1" x="0" y="0" width="165" height="108" /> иконка с именем ui_npc_u_nebo_2_face_1 размером 165 х 108 от начала координат (0,0) ui_npc_u_nebo_2_face_1 - то что в профиле вставляется в тэг icon Далее создаём скрипт ваше_название.script в папке gamedata\scripts. в него пишем function esc_spawn_nash_nepic () alife():create("esc_nash_npc",vector():set(-233.62,-20.04,-152.72),23680,570) end esc_nash_npc - Имя из spawn_cections_*** (-233.62,-20.04,-152.72),23680,570) позиция (x, y, z, gw, lw,) (-233.62,-20.04,-152.72),23680,570) - это в 1ом доме от сидорыча на кордоне теперь добавляем строку <action>ваше_название.esc_spawn_nash_nepic</action> в любой диалог Изменено 4 Июля 2012 пользователем ColR_iT Локация "Жилище Картографа" Хелп по созданию смарт террейнов Ссылка на комментарий
Виталий Зверь 7 Опубликовано 4 Августа 2009 Поделиться Опубликовано 4 Августа 2009 (изменено) Как прописать что бы непись появился сразу в начале игры, а не после диалога? С редактированием алл.спавна. Изменено 4 Августа 2009 пользователем Виталий Зверь Ссылка на комментарий
AKKK1 6 Опубликовано 4 Августа 2009 Поделиться Опубликовано 4 Августа 2009 Как прописать что бы непись появился сразу в начале игры, а не после диалога? С редактированием алл.спавна Если я правильно понял то так создаем секцию и алл спавне [не использумое число] ; cse_abstract properties section_name = stalker ----------- обязательно name = -------------------------- имя position = -225.604339599609,-20.221607208252,-147.097625732422 ------- координаты direction = 0.0623090341687202,0.00229393295012414,0.0141186164692044 ----- ореентир можно (0,0,0) ; cse_alife_trader_abstract properties money = 5000 -------------- ну тут понятно character_profile = esc_stalker_novice ------------ ; cse_alife_object properties game_vertex_id = 47 distance = 3.5 level_vertex_id = 29123 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] esc_lager = true ----------- имя смарта если под своей логикой то none = true END ; cse_visual properties visual_name = actors\novice\green_stalker_2 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 1 g_group = 5 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0xef20e0ec upd:creature_flags = 0xe5 upd:position = -225.604339599609,-20.221607208252,-147.097625732422 upd:o_model = 0 upd:o_torso = 0.00229393295012414,0.0623090341687202,0 upd:g_team = 0 upd:g_squad = 1 upd:g_group = 5 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 2,2,0,1,0 predicate4 = 2,1,2,1 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти