SoC. Однотипные квесты для нового NPC — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

SoC. Однотипные квесты для нового NPC — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
м (category)
Строка 374: Строка 374:
  
 
УДАЧНОГО МОДОСТРОЕНИЯ
 
УДАЧНОГО МОДОСТРОЕНИЯ
[[Категория:Скрипты]]
+
[[Категория:Незаконченные статьи]]

Версия 17:36, 14 января 2011

Прописываем однотипные квесты для нового нпс

Распаковываем алл.спавн с помощю 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

Все со спавном покончено переходим к профилю думаю вы умеете работать с профилем поэтому разжевывать не буду(есть много статей по этому) я сделал профиль так:

<specific_character id="kvestodatel" team_default = "1"> 
          <name>kvestodatel</name> 
          <icon>ui_npc_u_stalker_ecolog</icon> 
          <bio>esc_stalker_novice_bio</bio> 
             <class>kvestodatel</class> 
             <community>ecolog</community> <terrain_sect>stalker_terrain</terrain_sect> 
             <rank>400</rank> 
             <reputation>30</reputation> 
             <money min="20000" max="600000" infinitive="1"/> 
             <snd_config>characters_voice\human_03\ecolog\</snd_config> 
             <crouch_type>-1</crouch_type> 
              <visual>actors\ecolog\stalker_ecolog</visual> 
              <supplies> 
               [spawn] \n 
               wpn_pm \n 
               ammo_9x18_fmj = 1 \n 
               wpn_bm16 \n 
               ammo_12x70_buck \n 
               device_torch \n 
            #include "gameplay\character_items.xml" \n 
            #include "gameplay\character_food.xml" 
              </supplies> 
           #include "gameplay\character_criticals_3.xml" 
            <start_dialog>hello_dialog</start_dialog> 
            <actor_dialog>tm_kvestovik_dialog</actor_dialog> ;ссылка на диалог однотипного квеста

<actor_dialog>tm_kvestovik_reward</actor_dialog> ;ссылка на награду за выполнения квеста

            </specific_character>

теперь создадим класс и спавн секцию открываем файл npc_profile он находится в config\gameplay добавляем пам дето вот это

<character id="kvestodatel">

<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",

       допишем своего мужика(незабудте запятую после предыдущей строчки)
       [093] = "kvestovik"

}

дальше видим

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,

прописываем нпса(незабудте запятую после предыдущей строки
       kvestovik					= 093

}

потом в конце находим 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>

   </dialog>
   <dialog id="tm_kvestovik_reward" priority="0">

<init_func>task_manager.init_kvestovik_reward_dialog</init_func> <precondition>task_manager.has_active_vendor_task</precondition>

   </dialog>

так и последние откройте game_tasks_by_vendor в config\gameplay добавте туда

        <game_task id="eliminate_lager_kvestovik">

<title>title</title> <objective>

objective

<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>

objective

<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>

objective

<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>

objective

<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>

objective

<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>

objective

<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">

Пока ничего.
   </string>
   <string id="tm_kvestovik_job_ask">
По поводу какого задания ты хочешь поговорить?
   </string>
   <string id="tm_kvestovik_job_complete">
Вот вознаграждение
   </string>
   <string id="tm_kvestovik_job_what">
Что по заданию?
   </string>
   <string id="tm_kvestovik_list_job">
Есть кое-что:
   </string>

все теперь создайте однотипный квест, останавливаться на этом я не буду есть много статей на эту тему просто чтоб добавить этому нпсу задания когда будете делать квест в misc\task_manager в строке parent пропишите = kvestovik все

УДАЧНОГО МОДОСТРОЕНИЯ

Другие места
LANGUAGE