Перейти к контенту

[SoC] Ковыряемся в файлах


Рекомендуемые сообщения

51 минуту назад, Dennis_Chikin сказал:

 

По остальным пунктам - аналогично. Без понимания, что мы вообще хотим сделать - невозможно.

Жаль, придется самому как-то делать квест сидора про артефакт.

А вот где гулаги или-же своеобразный character_desc для  монстров я не знаю (только знаю, что в character_desc можно уже сделанного непися внести в игру).

 

А в каком файле можно поменять обрез на тоз-34 для охотника?

Свобода - лучшие сталкеры в зоне!

Ссылка на комментарий

@Svobodovec_Arbuz, похоже всё это есть в Шпаргалке АМК.

Ну а вообще. Допустим по мутантам...Смотри, как это сделано в модах. Нотепад++ с поиском по файлам в помощь. Все вырезанные мутанты давным давно восстановлены - плюс куча новых присутствует. Самый простой способ посмотреть в игре без использования гулагов - спавн скриптом или респавн АМК. Это - не реклама))

Ссылка на комментарий
9 часов назад, Svobodovec_Arbuz сказал:

Как заспавнить вырезанных монстров в игру?

Стандартной функцией

function spawn() 
	alife():create("имя секции",vector():set(x,z,y),lvid,gvid)
end

Но другое дело, что у некоторых недостаёт вырезанных конфигов, или закомментированы параметры. Смотри тут, прям пошагово разжёвано.

9 часов назад, Svobodovec_Arbuz сказал:

сложно ли вернуть 1 квест Сидора на поиск артефакта на свалке мусора?

Нет, там всё осталось почти, надо лишь подставить это задание перед "сходи к волку", да, имхо, заспавнить артефакт с id

002 = "Escape_Tutorial_Artefact"

Точно не помню, глянь в РМА моде. Хотя ковырять чужое это так уныло и неблагодатно, что я бы лучше с нуля этот квест сделал, чем сидеть и разбираться.

9 часов назад, Svobodovec_Arbuz сказал:

в каком файле можно поменять обрез на тоз-34 для охотника

Навскидку в unique_items.ltx в секции hunters_toz или как-то так.

  • Спасибо 1
Ссылка на комментарий
58 минут назад, dPlayer сказал:

Стандартной функцией

А логику где брать?

Или пусть в nil бегает?

Ну если только посмотреть на него))

Изменено пользователем Змея
Ссылка на комментарий

А как или в каком файле можно вернуть биографию персонажей в ПДА? В релизе (а именно в файлах игры) есть, но этой функции нет

Свобода - лучшие сталкеры в зоне!

Ссылка на комментарий

@Svobodovec_Arbuz, вернуть можно или скриптово или в движке. Скриптовый способ где-то на форумах есть, найти бы, может в ТСС модах посмотреть,  а в движке имхо, вообще 1 строчку раскомментировать надо, но сложна.

ЗЫ, глянь в списках возможностей xray extensions, наверно есть.

Изменено пользователем dPlayer
Ссылка на комментарий

@AndrewMor, скорей всего, в Shadows Addon 0.7 можно чекнуть...

  • Спасибо 1

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
20 часов назад, dPlayer сказал:

возможностей xray extensions, наверно есть.

По моему есть.

 

18 минут назад, Houdini_one сказал:

Shadows Addon 0.7

А такой есть? По моему 0.6 крайняя:az1000106:

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий
1 минуту назад, UriZzz сказал:

По моему 0.6 крайняя

Между прочем, после 0.6 и 0.65 была...)
Сейчас 0.7 есть, проверяй.

  • Спасибо 1

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

@Svobodovec_Arbuz, escape_dialog.script
Функция: give_weapon_to_actor

  • Спасибо 1

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
14 часов назад, Houdini_one сказал:

скорей всего, в Shadows Addon 0.7 можно чекнуть...

Что-то в описании я ничего про биографию персов не нашел... Там точно сие есть?

Сталкер - наше всё!

Ссылка на комментарий

@AndrewMor, да, такое там есть.
- восстановлена биография сталкеров во вкладках Контакты и Ранги

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
20 часов назад, Houdini_one сказал:

да, такое там есть.
- восстановлена биография сталкеров во вкладках Контакты и Ранги

А скриптово ли? Полагаю, что сие сделано движково.

  • Согласен 1

Сталкер - наше всё!

Ссылка на комментарий

@AndrewMor, да там всё скриптово - и удар прикладом, и разговоры через ПДА, и апгрейд оружия, и всякие фишки с машинами (багажник, спидометр, передачи).
Упор в аддоне сделан прежде всего на функционально-скриптовые изменения и графику;
Большинство новых игровых фич сделано лично мной, поэтому внутри скриптов появилась некая единая "экосистема", в которой всё работает, на мой взгляд, довольно хорошо;
В аддоне не использовались исходники движка, всё сделано путем дизассемблирования (проект X-Ray extensions).

  • Спасибо 1

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

Такой вопрос. Стоят у меня 2 мини-мода - отметки НПС в ПДА (подобие ЧН) и отметки важных персонажей из ЗП.
Суть в том, что отметки НПС в ПДА висят всегда. Если поставить отметку важных персонажей, то эти 2 метки накладываются один на другого.
Как это можно поправить?

Скрипт меток НПС в ПДА (код):

 

local step_time = 1500
local nps_spots = {}

function update()
    local time = time_global()
    if time > step_time then
        step_time = time + 1500
        for id,val in pairs(db.storage) do
            local obj = level.object_by_id(id)
            if obj and (IsStalker(obj) or obj:section() == "m_trader") and id~=0 then
                show_spot(obj,id)
            end
        end
    end
end

function show_spot(npc,id)
    local commun = npc:character_community()
    local spot = "naxac_"..commun
    if npc:best_enemy() then
        if nps_spots[id] then
            nps_spots[id] = nil
            level.map_remove_object_spot(id,spot)
        end
        return
    elseif npc.health > 0 and not nps_spots[id] then
        nps_spots[id] = true
        local hint = game.translate_string(commun)
        level.map_add_object_spot(id,spot,hint)
    elseif npc.health <= 0 and nps_spots[id] then
        nps_spots[id] = nil
        level.map_remove_object_spot(id,spot)
    end
end



Скрипт меток важных НПС (код):

 

 


-- Вызывается на переключении на новую секцию. Производит вычитывание настроек из текущей секции.
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 = "medic_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
 

 

 


Скриншот, как это дело выглядит:

 

Изменено пользователем Houdini_one

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

Доброго времени суток всем! Просто праздник какой-то: найти живой форум по "Сталкеру" :)! А то десять лет спустя пробило на ностальгию - решил перепройти игру - и сразу вспомнил, что меня в ней бесило десять лет тому ;).

 

Ребята, если тут есть кто-то из мододелов, помогите, плз.

 

Задача - повысить выживаемость НПС-сталкеров-"одиночек" в жестоком мире Зоны. Проще - сделать так, чтоб они не дохли, как мухи, под каждым кустом.

 

Казалось бы - простая задача. Открываем m_stalker.ltx и правим, что хотим. Не тут-то было :(.

 

Увеличивать Health оказалось бесполезным. Сталкер-новичок с Health = 1000 точно так же умирает от двух пуль глав-героя в корпус, как и с исходным Health = 100. Ну, и "в мире" они мрут одинаково. Почему - не понимаю.

 

Кстати, если кто разъяснит, что такое Health, а что такое MaxHealthValue - отдельный респект.

 

Редактирование stalker_immunities тоже не помогло: коэффициенты довел до 0.0 - сталкеры точно так же убиваются. Опять же, непонятно - почему.

 

Единственные параметры, которые реально влияют, - в блоке stalker_condition. В частности, health_hit_part ("процент хита, уходящий на отнимание здоровья") при установке в 0 делает НПС практически неуязвимым.

 

Но тут начинается самое интересное. Неуязвимыми при health_hit_part = 0.0 стали и солдаты, и бандиты, и т.д. В общем, все люди-НПС. Ну, опять же - залез в соответствующие m_*****.ltx - там везде прописаны отсылки к immunities и condition сталкеров:

 

immunities_sect                = stalker_immunities
condition_sect                = stalker_condition

 

Я нашел в m_person.ltx соответствующие блоки для торговцев: trader_immunities (там все по 0.0) и trader_condition (в нем прописал health_hit_part = 0.0 ). В m_stalker.ltx прописал:

 

immunities_sect                = trader_immunities
condition_sect                = trader_condition

 

Результат - все то же самое: неуязвимы и "одиночки", и солдаты, и бандиты, и т.д. :(

 

Зашел с другой стороны. В "армейском" файлике m_army.ltx создал блоки army_immunities и army_condition со стандартными значениями. Прописал в этом файле везде:

 

immunities_sect                = army_immunities
condition_sect                = army_condition

 

а в m_stalker.ltx поставил health_hit_part = 0.0. И опять получил все то же самое: неуязвимы и сталкеры, и военные.

 

Кто может объяснить, что я не так делаю, или, что скорее, что еще нужно сделать, ПЛИЗ ХЕЛП. Пятый день ковыряюсь в этих файлах - мозг кипит, результата ноль. Проверял по три раза, игру начинал с начала - все без толку.

 

У меня "Тени Чернобыля" версии 1.0006, со "Steam-а". Стоит мод STALKER Complete 2009 (v.1.4.4). Мод в основном косметический, плюс - правящий некоторые косяки типа умирания в кострах и добавляющий всякие мелкие приятности, сюжет и геймплей он не затрагивает. Я сравнивал файлы m_*****.ltx с оригинальными - в моде в них менялись только некоторые числовые значения, касающиеся обзора/обнаружения НПС, больше ничего. Хотя с "чистой" игрой я тоже экспериментировал - с тем же результатом :(

 

 

 

Ссылка на комментарий
1 час назад, F.Constantine сказал:

Ребята, если тут есть кто-то из мододелов, помогите, плз.

Найди тему тут на форуме "Расчёт повреждений при стрельбе по НПС"

https://www.amk-team.ru/forum/topic/4188-soc-raschet-povrezhdeniy-pri-strelbe-po-nepisyam/

Всё подробно, что к чему.

  • Нравится 1
  • Полезно 1
Ссылка на комментарий
20 минут назад, Капрал Хикс сказал:

Найди тему тут на форуме "Расчёт повреждений при стрельбе по НПС"

https://www.amk-team.ru/forum/topic/4188-soc-raschet-povrezhdeniy-pri-strelbe-po-nepisyam/

Всё подробно, что к чему.

 

Привет. Спасибо, что отозвался. Прочитал.

Только не совсем понял: ты имеешь ввиду, что урон, получаемый НПС, можно править через bip-пы в блоке stalker_damage? Это я уже сам допер. Не в том суть проблемы. Меня пока вполне устраивает изменение одного-единственного параметра, health_hit_part, оно дает нужный мне эффект. НО - эффект этот распространяется на ВСЕ фракции НПС в игре: и на сталкеров-одиночек, и на военных, и на бандитов! А мне нужно изменять его только для одной определенной фракции, одиночек, например. И я не догоняю, как это сделать.

 

Или ты имел ввиду кусок:

Цитата

Зачем так мучаться? Можно просто при создании НПС в файле spawn_sections.ltx сделать следующее:

 

[Имя вашего НПС]:stalker_sakharov

$spawn = "respawn\Имя вашего НПС"

character_profile = Имя вашего НПС

spec_rank = regular

community = stalker

 

И все. Ваш НПС бессмертный.

 

Т.е. нужно создать новый "вид" НПС с нужными мне параметрами (ну, или добавить в профиль Сахарова еще condition с нужными величинами и использовать его) и в файле spawn_sections.ltx заменить для ВСЕХ нужных НПС прописанное там stalker на новый профиль, типа как stalker_sakharov в примере? 

 

Как-то вроде этого:

 

;--------Escape--------------
;--------neutrals------------
[esc_stalker_respawn_1]:stalker_sakharov
$spawn                =  "respawn\esc_stalker_respawn_1"
character_profile    = sim_stalker_novice
spec_rank = novice
community = stalker

[esc_stalker_respawn_2]:stalker_sakharov
$spawn                =  "respawn\esc_stalker_respawn_2"
character_profile    = sim_stalker_general
spec_rank = regular
community = stalker

 

и т.д.?

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...