Hardtmuth | Дата: Вт, 28.02.2017, 17:36 | Сообщение # 1 |
Статус: |
|
Перенос меток уник НПС из Зов Припяти в Тени Чернобыля
Все видимо видели что в Зов Припяти на ключевых НПС, есть своя метка будто тот торговец или медик сейчас, я вас научу как же сделать также само только в Тени Чернобыля приступи. Для начала нам потребуется xr_logic и xr_motivator, создаём ваш_файл.script в моём случае это bind_generic.script, открываем и ставим этот код.
Код [code=lua]---------------------------------------------------------------------------------------------------------------------- -- STALKER MAP SHOW Перенос из Зов припяти в Тени чернобыля By Майор_Симецкий(Богдан)на ap-pro.ru aka Bogdanchik228.spaces.ru ---------------------------------------------------------------------------------------------------------------------- -- Вызывается на переключении на новую секцию. Производит вычитывание настроек из текущей секции. function reset_show_spot(npc, scheme, st, section) local spot_section if scheme == nil or scheme == "nil" then spot_section = utils.cfg_get_string(st.ini, st.section_logic, "show_spot", npc, false, "") else spot_section = utils.cfg_get_string(st.ini, section, "show_spot", npc, false, "") end local map_spot = utils.cfg_get_string(st.ini, st.section_logic, "npc_map_spot", npc, false, "") if map_spot == nil then map_spot = utils.cfg_get_string(st.ini, section, "npc_map_spot", npc, false, "") end if map_spot ~= nil then map_spot = xr_logic.parse_condlist(npc, section, "npc_map_spot", map_spot) map_spot = xr_logic.pick_section_from_condlist(db.actor, npc, map_spot) end --' printf("STALKER SPOT SECTION [%s]", utils.to_str(spot_section))
if spot_section == nil then spot_section = "true" end
local spot = "false" -- if character_community(npc) ~= "zombied" then local spot_condlist = xr_logic.parse_condlist(npc, section, "show_spot", spot_section) spot = xr_logic.pick_section_from_condlist(db.actor, npc, spot_condlist) -- end
local sim = alife() if not sim then return end
local obj = sim:object(npc:id()) if obj and obj.online then local npc_id = npc:id() if spot == "false" then -- прячем obj:visible_for_map(false) else -- ставим obj:visible_for_map(true) end if map_spot ~= nil then local map_location = "" local hint = "" if map_spot == "trader" then map_location = "trader_npc_location" hint = "st_ui_pda_trader" elseif map_spot == "mechanic" then map_location = "mechanic_npc_location" hint = "st_ui_pda_mechanic" elseif map_spot == "guider" then map_location = "guider_npc_location" hint = "st_ui_pda_guider" elseif map_spot == "quest_npc" then map_location = "quest_npc_location" hint = "st_ui_pda_quest_npc" elseif map_spot == "medic" then map_location = "trader_npc_location" hint = "st_ui_pda_legend_medic" end if level.map_has_object_spot(npc_id, map_location) ~= 0 then level.map_remove_object_spot(npc_id, map_location) end if db.actor and npc and npc:general_goodwill(db.actor) > -1000 then level.map_add_object_spot(npc_id, map_location, hint) end else if level.map_has_object_spot(npc_id, "trader_npc_location") ~= 0 then level.map_remove_object_spot(npc_id, "trader_npc_location") elseif level.map_has_object_spot(npc_id, "mechanic_npc_location") ~= 0 then level.map_remove_object_spot(npc_id, "mechanic_npc_location") elseif level.map_has_object_spot(npc_id, "guider_npc_location") ~= 0 then level.map_remove_object_spot(npc_id, "guider_npc_location") elseif level.map_has_object_spot(npc_id, "quest_npc_location") ~= 0 then level.map_remove_object_spot(npc_id, "quest_npc_location") elseif level.map_has_object_spot(npc_id, "trader_npc_location") ~= 0 then level.map_remove_object_spot(npc_id, "trader_npc_location") end end end end
function remove_level_spot(npc, st) local map_spot = utils.cfg_get_string(st.ini, st.section_logic, "npc_map_spot", npc, false, "") if map_spot == nil then map_spot = utils.cfg_get_string(st.ini, st.active_section, "npc_map_spot", npc, false, "") end if map_spot ~= nil then map_spot = xr_logic.parse_condlist(npc, st.active_section, "npc_map_spot", map_spot) map_spot = xr_logic.pick_section_from_condlist(db.actor, npc, map_spot) end local sim = alife() if not sim then return end
local obj = sim:object(npc:id()) if obj then local npc_id = npc:id() if map_spot ~= "" and map_spot ~= nil then local map_location = "" if map_spot == "trader" then map_location = "ui_pda2_trader_location" elseif map_spot == "mechanic" then map_location = "ui_pda2_mechanic_location" elseif map_spot == "guider" then map_location = "ui_pda2_scout_location" elseif map_spot == "quest_npc" then map_location = "ui_pda2_quest_npc_location" elseif map_spot == "medic" then map_location = "ui_pda2_medic_location" end if level.map_has_object_spot(npc_id, map_location) ~= 0 then level.map_remove_object_spot(npc_id, map_location) end end end end
Потом лезем в xr_logic.script и ищем там строку xr_death.reset_death(npc, scheme, st, section) после неё вставляем это ваш файл.reset_show_spot(npc, scheme, st, section) в моём случаем это bind_generic.reset_show_spot(npc, scheme, st, section), всё закончили с xr_logic.script лезем теперь в xr_motivator ищем там строку death_manager.drop_manager(self.object):create_release_item() после неё вставляем
Код -- Если игрок был с квестом от механика - фейлить его local st = db.storage[self.object:id()] local npc = self.object bind_generic.remove_level_spot(npc, st) -- в место bind_generic должен быть ваш файл -- Конец --
теперь мы закончили с xr_motivator, скриптовую часть мы тоже закончили теперь переходим к текстурам и логики, начнём с текстур скачайте у меня это сразу чтобы не делать новые для тех кто не понимает xml и как делать их вот https://yadi.sk/d/0ue61g_73Eo8ZK , переходим в system.ltx и там регистрируем в
Код [texture_desc] files = ui_mp_icon_rank, ui_icons_map, ui_common, ui_old_textures, ui_ingame, ui_map_description, ui_models_multiplayer, ui_team_logo, ui_team_logo_small, ui_mainmenu, ui_mp_main, ui_statistics, ui_hud, ui_numpad, ui_inventory, ui_inventory2, ui_iconstotal, ui_pda, ui_icons_npc, ui_npc_monster, ui_npc_unique, ui_buy_menu, ui_asus_intro, ui_portrets, ;"ui_new_spots_textures <--- этот файл отвечает за расположения меток в текстурке вставляете в system.ltx если скачали уже и не забудте переместить в соответствующие папки"
всё с текстурками и скриптами покончено лезим в логику нпс вашего у меня это darkvalley\logic_sultan.ltx, в вашей логики нпс вставляем это npc_map_spot = quest_npc в место quest_npc можно другие их все волишь 5 штук это quest_npc,medic,trader,guider,mechanic, вот так будет логика для нпс в моём случае
Код ;This file for logic [smart_terrains] none = true
[logic]active = walker@1 npc_map_spot = quest_npc ;meet = meet@test пока что не трогаю
[walker@1] path_walk = val_sultan_walk path_look = val_sultan_look
[meet@test] close_snd_bye = test1 close_snd_hello = test2
$ |
|
| |