PRYZRAK 0 Опубликовано 26 Апреля 2010 (изменено) Доброго вам времени суток. Мне поведали о том, как создать непися в зп и я решил, что вопрос создание нпса мучает не только меня и решил написать об этом. Нам нужны следующие файлы:- configs\creatures\spawn_sections_zaton.ltx- configs\gameplay\npc_profile.xml- сonfigs\gameplay\charecter_desc_zaton.xml- scripts\db.script И создадим сами файлы:- scripts\npc.script- configs\scripts\snaiper_lg.ltxДля начала создадим нашему неписю логику(( после мы её сможем часто пользоваться)Для этого заходим в configs\scripts\snaiper_lg.ltxИ там вбиваем следующие строки: [logic] active = remark1 danger = danger_ignore anim = desk_idle [danger_ignore] ignore_distance = 5 [remark1] invulnerable = true no_move = true meet = meet_guide [meet_guide] close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 0 far_distance = 0 close_snd_distance = 3 abuse = false use = {=actor_enemy} false, true allow_break = false meet_on_talking = false meet_on_talking = false Теперь всё по порядку поясняю:[logic] – обозначает, что это функция логиactive = remark1 - функция его действийdanger = danger_ignore – можно ли рядом достать оружиеanim = desk_idle - анимка, но вроде не влияет[danger_ignore]ignore_distance = 5 – на сколько близко можно махать стволом[remark1]invulnerable = true - бессмертие. True-бессмертный, false- смертныйno_move = true (будет стоять на месте) или false что б ходил -- не работает.meet = meet_guide название схемы[meet_guide] - сама схемаclose_anim = nil - анимка при прощанииclose_victim = nil - вроде анимка при встречиfar_anim = nilfar_victim = nilclose_distance = 0far_distance = 0close_snd_distance = 3 - на каком расстоянии будет слышен звук приветствияabuse = false - вроде разрешение говоритьuse = {=actor_enemy} false, true - ?allow_break = false - можно ли закрыть диалог escmeet_on_talking = false – говорить можно(диалог)meet_on_talking = false - говорить можно(диалог)Теперь заходим в configs\creatures\spawn_sections_zaton.ltxПосле: [test_body_5]:stalker $spawn = "respawn\test_body_5" ;character_profile = zat_a2_stalker_mechanic community = stalker ;story_id = test_body_5 custom_data = scripts\test_cfg5.ltx прописываем это: [snaiper]:stalker $spawn = "respawn\snaiper" character_profile = snaiper spec_rank = master community = stalker custom_data = scripts\snaiper_lg.ltx story_id = stalker_snaiper где[snaiper]:stalker - секция нпс$spawn = "respawn\snaiper" - респавн для sdkcharacter_profile = snaiper - ссылка на профильspec_rank = master - рангcommunity = stalker - группировка( здесь роли не играетcustom_data = scripts\snaiper_lg.ltx - логика, которую мы создалиstory_id = stalker_snaiper - уникальный ID , не знаю но вроде что-то про квестыТеперь заходим в configs\gameplay\npc_profile.xmlИ в самый конец (перед </xml>) пишем: <character id="snaiper"> <class>snaiper</class> <specific_character>snaiper</specific_character> </character> Должно получиться примерно так: <character id="conrack_selo_stalker"> <class>jup_b6_freedom_stalker_1</class> </character> <character id="snaiper"> <class>snaiper</class> <specific_character>snaiper</specific_character> </character> </xml> Пояснения:<character id="snaiper"> - ID<class>snaiper</class> - класс , это типа метки<specific_character>snaiper</specific_character> - ID</character> - массив закрытТеперь создадим профиль для нашего непися. Заходим в configs\gameplay\charecter_desc_zaton.xmlИ в самый конец (перед <xml>) прописываем: <specific_character id="snaiper" team_default="1"> <name>Дрюня</name> <icon>ui_inGame2_merc_4</icon> <map_icon x="1" y="0"> </map_icon> <bio>Опытный сталкер. Детальная информация отсутствует.</bio> <class>snaiper</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_01\bandit\</snd_config> <rank>40</rank> <money min="1500" max="3500" infinitive="1"/> <reputation>0</reputation> <visual>actors\stalker_soldier\stalker_soldier_1</visual> <supplies> [spawn] \n wpn_svd \n ammo_9x39_ap = 1 \n wpn_beretta \n ammo_9x19_fmj = 1 \n grenade_rgd5 = 2 \n #include "gameplay\character_items.xml" #include "gameplay\character_food.xml" #include "gameplay\character_drugs.xml" </supplies> #include "gameplay\character_criticals_4.xml" <start_dialog>zat_b215_stalker_guide_start</start_dialog> <actor_dialog>zat_b215_stalker_guide_leave_zone</actor_dialog> <actor_dialog>zat_b215_stalker_guide_maps</actor_dialog> <actor_dialog>zat_b215_stalker_guide_to_pripyat_no_way</actor_dialog> <actor_dialog>zat_b215_stalker_guide_to_pripyat</actor_dialog> <actor_dialog>zat_b215_stalker_guide_to_jupiter</actor_dialog> <actor_dialog>zat_b215_stalker_guide_to_zaton</actor_dialog> <actor_dialog>zat_b215_stalker_guide_where_to</actor_dialog> <actor_dialog>zat_b215_stalker_guide_about_himself</actor_dialog> <actor_dialog>zat_b215_stalker_guide_about_anomalies</actor_dialog> <actor_dialog>zat_b215_stalker_guide_about_surge</actor_dialog> <actor_dialog>actor_break_dialog</actor_dialog> </specific_character> Где:<specific_character id="snaiper" team_default="1"> - ID<name>Дрюня</name> -имя<icon>ui_inGame2_merc_4</icon> - иконка<map_icon x="1" y="0"> - иконка на карте</map_icon> - закрывающий тэг<bio>Опытный сталкер. Детальная информация отсутствует.</bio> в игре не используется<class>snaiper</class> - класс<community>stalker</community> - группировка<terrain_sect>stalker_terrain</terrain_sect> - ?<snd_config>characters_voice\human_01\bandit\</snd_config> - голос<rank>40</rank> - ранг( не используется в игре)<money min="1500" max="3500" infinitive="1"/> - количество денег. infinitive="1"- бесконечные, infinitive="0" - заканчивающиеся<reputation>0</reputation> - репутация<visual>actors\stalker_soldier\stalker_soldier_1</visual> - модель непися<supplies>[spawn] \n - вещи в рюкзакеwpn_svd \nammo_9x39_ap = 1 \nwpn_beretta \nammo_9x19_fmj = 1 \ngrenade_rgd5 = 2 \n#include "gameplay\character_items.xml" - случайный спавн вещей в рюкзаке#include "gameplay\character_food.xml"#include "gameplay\character_drugs.xml"</supplies>#include "gameplay\character_criticals_4.xml"<start_dialog>zat_b215_stalker_guide_start</start_dialog>- диалоги. В нашем случае диалоги лоцмана<actor_dialog>zat_b215_stalker_guide_leave_zone</actor_dialog> - диалог актора.....<actor_dialog>actor_break_dialog</actor_dialog> - диалог выхода</specific_character> - закрывающий тэгТеперь создаём скрипт спавна scripts\npc.scriptВбиваем в него: function snaiper() if not db.actor:has_info("spawn_snaiper") then alife():create("snaiper",vector():set(116.238,2.250,183.199),1165999,316) db.actor:give_info_portion("spawn_snaiper") end end Строчка alife():create("snaiper",vector():set(116.238,2.250,183.199),1165999,316) отвечает за координаты, на которых спавнится объект. В нашем случае - непись. Подробнее о них:Pos - 116.238,2.250,183.199Ivid - 1165999Gvid - 316Чтобы их получить качаем позишн информер Отсюда И последнее - регистрация скрипта в scripts\db.scriptОткрываем db.script. Находим строки: function add_actor(obj) actor = obj actor_proxy:net_spawn(obj) add_obj(obj) end И меняем на такие: function add_actor(obj) actor = obj actor_proxy:net_spawn(obj) add_obj(obj) npc.snaiper() end Заходим в игру и всё - глядим на непися Изменено 21 Сентября 2014 пользователем PRYZRAK оформил и исправил ошибки Поделиться этим сообщением Ссылка на сообщение