[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Теория модостроения » Скрипты, конфиги, логика, движок » Перенос меток уник НПС из Зов Припяти в Тени Чернобыля (Тени Чернобыл)
Перенос меток уник НПС из Зов Припяти в Тени Чернобыля
HardtmuthДата: Вт, 28.02.2017, 17:36 | Сообщение # 1




Сообщений: 754
Награды: 5
Репутация:

Статус:

Перенос меток уник НПС из Зов Припяти в Тени Чернобыля



Все видимо видели что в Зов Припяти на ключевых НПС, есть своя метка будто тот торговец или медик сейчас, я вас научу как же сделать также само только в Тени Чернобыля приступи.
Для начала нам потребуется 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






$
Форум » Теория модостроения » Скрипты, конфиги, логика, движок » Перенос меток уник НПС из Зов Припяти в Тени Чернобыля (Тени Чернобыл)
Страница 1 из 11
Поиск:

Войти Зарегистрироваться