| Прописываем однотипные квесты для нового нпс Распаковываем алл.спавн с помощю acdc Находим файл alife_l01_escape(это на пример) и вставляем в конец это [18240] ;это уникальный номер не должен повторятся cse_abstract properties section_name = stalker ;секция того что спавним name = esc_kvestodatel ;имя может быть любое position = -212.877227783203,-23.1829051971436,-122.68586730957 ;позиция я использовал скрипт от бардака direction = 0.0285909995436668,0,-0.999590992927551 ;разворот в скрипте от бардака есть эта ф- ция cse_alife_trader_abstract properties money = 6000 ;количество денег с которым создастся этот нпс(файл профиля нпс перекроет это значение ) character_profile = kvestodatel ;профиль нпс cse_alife_object properties game_vertex_id = 59 ;гейм вертекс можно узнать в скрипте distance = 0 ;дистанция вокруг вокруг позиции в которой спавним ( если 0 то заспавница точно в позиции которую мы указали) level_vertex_id = 40610 ;левел вертекс можно узнать в скрипте object_flags = 0xffffffbf custom_data = <<END [logic] ;настройки логики cfg = scripts\kvestodatel.ltx ;ссылка на логику [smart_terrains] ;настройки смартов none = true ;к какому смарту относится нпс(если none не берется под гулаг) END Жирный шрифт story_id = 93 ;уникальный стори ид cse_visual properties visual_name = actors\ecolog \stalker_ecolog ;визуал нпса cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 3 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 3 upd:timestamp = 0x6d6d695f upd:creature_flags = 0x75 upd:position = -212.877227783203,-23.1829051971436,-122.68586730957 ;сюда надо вписать теже кординаты что и в позицию upd:o_model = 0 upd:o_torso = 0.0285909995436668,0,-0.999590992927551 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 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 = 1,0,0,2,0 predicate4 = 2,2,1,2 cse_ph_skeleton properties upd:start_dialog = se_stalker properties теперь переходим к путям открываем файл way_l01_escape и вставляем туда это(все настройки аналогичны как и в alife_l01_escape) [esc_lager_kvesto_look] points = p0 p0:name = wp00 p0:position = -213.064239501953,-22.4240226745605,-126.251586914063 p0:game_vertex_id = 59 p0:level_vertex_id = 41279 [esc_lager_kvesto_pack] points = p0 p0:name = wp00 p0:position = -212.877227783203,-23.1829051971436,-122.68586730957 p0:game_vertex_id = 59 Жирный шрифтp0:level_vertex_id = 40610 Все со спавном покончено переходим к профилю думаю вы умеете работать с профилем поэтому разжевывать не буду (есть много статей по этому) я сделал профиль так: < s p e c i f i c _ c h a r a c t e r i d = " k v e s t o d a t e l " t e a m _ d e f a u l t = " 1 " > < n a m e > k v e s t o d a t e l < / n a m e > < i c o n > u i _ n p c _ u _ s t a l k e r _ e c o l o g < / i c o n > < b i o > e s c _ s t a l k e r _ n o v i c e _ b i o < / b i o > < c l a s s > k v e s t o d a t e l < / c l a s s > < c o mm u n i t y > e c o l o g < / c o mm u n i t y > < t e r r a i n _ s e c t > s t a l k e r _ t e r r a i n < / t e r r a i n _ s e c t > < r a n k > 4 0 0 < / r a n k > < r e p u t a t i o n > 3 0 < / r e p u t a t i o n > < m o n e y m i n = " 2 0 0 0 0 " m a x = " 6 0 0 0 0 0 " i n f i n i t i v e = " 1 " / > < s n d _ c o n f i g > c h a r a c t e r s _ v o i c e \ h u m a n _ 0 3 \ e c o l o g \ < / s n d _ c o n f i g > < c r o u c h _ t y p e > - 1 < / c r o u c h _ t y p e > < v i s u a l > a c t o r s \ e c o l o g \ s t a l k e r _ e c o l o g < / v i s u a l > < s u p p l i e s > [ s p a w n ] \ n w p n _ p m \ n a mm o _ 9 x 1 8 _ f m j = 1 \ n w p n _ b m 1 6 \ n a mm o _ 1 2 x 7 0 _ b u c k \ n d e v i c e _ t o r c h \ n # i n c l u d e " g a m e p l a y \ c h a r a c t e r _ i t e m s . x m l " \ n # i n c l u d e " g a m e p l a y \ c h a r a c t e r _ f o o d . x m l " < / s u p p l i e s > # i n c l u d e " g a m e p l a y \ c h a r a c t e r _ c r i t i c a l s _ 3 . x m l " < s t a r t _ d i a l o g > h e l l o _ d i a l o g < / s t a r t _ d i a l o g > < a c t o r _ d i a l o g > t m _ k v e s t o v i k _ d i a l o g < / a c t o r _ d i a l o g > ; с с ы л к а н а д и а л о г о д н о т и п н о г о к в е с т а <actor_dialog>tm_kvestovik_reward</ actor_dialog> ; ссылка на награду за выполнения квеста < / s p e c i f i c _ c h a r a c t e r > теперь создадим класс и спавн секцию открываем файл npc_profile он находится в config\gameplay добавляем пам дето вот это < c h a r a c t e r i d = " k v e s t o d a t e l " > <class>kvestodatel</class> </ character> в спавн секции добавляем такую секцию [esc_kvest]:stalker $spawn = "respawn\esc_kvest" character_profile = kvestodatel spec_rank = regular community = ecolog теперь логика создайте файл kvestodatel.ltx в config\scripts пропишите в нем [logic] active = walker inv_max_weight = 10000 on_death = death combat_ignore = combat_ignore [walker] path_walk = esc_lager_kvesto_pack path_look = esc_lager_kvesto_look meet = meet [meet] use = true use_wpn = true meet_talk_enabled = true [combat_ignore] combat_ignore_cond = always компилируйте алл.спавн ну вот и все нпс готов он заспавница в подвале новичков и будет стоять на месте теперь пропишем ему однотипные квесты найдите файл game_story_ids в \config и после 092 = "escape_provodnik" напишите 093 = "kvestovik" все, дальше переходим к файлу \scripts находим task_manager и там видем в самом начале local parent_by_story = { [003] = "trader", [500] = "barman", [902] = "ecolog", [507] = "dolg", [707] = "freedom", [006] = "wolf", [004] = "shustriy", [510] = "drunk_dolg", [504] = "hunter", [518] = "zastava_commander", [506] = "petrenko", [607] = "lisiy", [515] = "mercenary", д о п и ш е м с в о е г о м у ж и к а ( н е з а б у д т е з а п я т у ю п о с л е п р е д ы д у щ е й с т р о ч к и ) [ 0 9 3 ] = " k v e s t o v i k " } дальше видим local story_by_parent = { trader = 003, barman = 500, ecolog = 902, dolg = 507, freedom = 707, wolf = 006, shustriy = 004, drunk_dolg = 510, hunter = 504, zastava_commander = 518, petrenko = 506, lisiy = 607, mercenary = 515, п р о п и с ы в а е м н п с а ( н е з а б у д т е з а п я т у ю п о с л е п р е д ы д у щ е й с т р о к и k v e s t o v i k = 0 9 3 } потом в конце находим function init_mercenary_task_dialog(dlg) get_random_task():init_task_dialog (dlg, "mercenary") end и после него пишем по аналогии function init_kvestovik_task_dialog (dlg) get_random_task ():init_task_dialog(dlg, "kvestovik") end и ниже после function init_mercenary_reward_dialog(dlg) get_random_task ():init_reward_dialog(dlg, "mercenary") end пишем по аналогии function init_kvestovik_reward_dialog(dlg) get_random_task ():init_reward_dialog(dlg, "kvestovik") end так с скриптом все далее идем в config\gameplay открываем dialogs добавим в конец <dialog id="tm_kvestovik_dialog" priority="-1"> <init_func>task_manager.init_kvestovik_task_dialog</ init_func> < / d i a l o g > < d i a l o g i d = " t m _ k v e s t o v i k _ r e w a r d " p r i o r i t y = " 0 " > <init_func>task_manager.init_kvestovik_reward_dialog</ init_func> <precondition>task_manager.has_active_vendor_task</ precondition> < / d i a l o g > так и последние откройте game_tasks_by_vendor в config \gameplay добавте туда < g a m e _ t a s k i d = " e l i m i n a t e _ l a g e r _ k v e s t o v i k " > <title>title</title> <objective> o b j e c t i v e <icon>ui_iconsTotal_eliminate_lager</ icon> <function_complete>task_manager.task_complete</ function_complete> <function_fail>task_manager.task_fail</ function_fail> </objective> </ game_task> <game_task id="defend_lager_kvestovik"> <title>title</title> <objective> o b j e c t i v e <icon>ui_iconsTotal_defend_lager</ icon> <function_complete>task_manager.task_complete</ function_complete> <function_fail>task_manager.task_fail</ function_fail> </objective> </ game_task> <game_task id="artefact_kvestovik"> <title>title</ title> <objective> o b j e c t i v e <icon>ui_iconsTotal_artefact</icon> <function_complete>task_manager.task_complete</ function_complete> <function_fail>task_manager.task_fail</ function_fail> </objective> </ game_task> <game_task id="kill_stalker_kvestovik"> <title>title</title> <objective> o b j e c t i v e <icon>ui_iconsTotal_kill_stalker</ icon> <function_complete>task_manager.task_complete</ function_complete> <function_fail>task_manager.task_fail</ function_fail> </objective> </ game_task> <game_task id="monster_part_kvestovik"> <title>title</title> <objective> o b j e c t i v e <icon>ui_iconsTotal_monster_part</ icon> <function_complete>task_manager.task_complete</ function_complete> <function_fail>task_manager.task_fail</ function_fail> </objective> </ game_task> <game_task id="find_item_kvestovik"> <title>title</title> <objective> o b j e c t i v e <icon>ui_iconsTotal_find_item</ icon> <function_complete>task_manager.task_complete</ function_complete> <function_fail>task_manager.task_fail</ function_fail> </objective> </ game_task> И вот еще забыл откройте \config \text\rus файл stable_task_manager добавте это <string id="tm_kvestovik_has_no_job"> П о к а н и ч е г о . < / s t r i n g > < s t r i n g i d = " t m _ k v e s t o v i k _ j o b _ a s k " > П о п о в о д у к а к о г о з а д а н и я т ы х о ч е ш ь п о г о в о р и т ь ? < / s t r i n g > < s t r i n g i d = " t m _ k v e s t o v i k _ j o b _ c o m p l e t e " > В о т в о з н а г р а ж д е н и е < / s t r i n g > < s t r i n g i d = " t m _ k v e s t o v i k _ j o b _ w h a t " > Ч т о п о з а д а н и ю ? < / s t r i n g > < s t r i n g i d = " t m _ k v e s t o v i k _ l i s t _ j o b " > Е с т ь к о е - ч т о : < / s t r i n g > все теперь создайте однотипный квест , останавливаться на этом я не буду есть много статей на эту тему просто чтоб добавить этому нпсу задания когда будете делать квест в misc\task_manager в строке parent пропишите = kvestovik все
|