Перейти к содержанию

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

 
 
1 час назад, Boomer сказал:

 Как сделать, чтобы из деревянного ящика, либо кейса падал лут при разбивании?

По пути   .../gamedata/configs/misc  

надо править файл   ph_box_items_by_communities

в сторону увеличения вероятности выпадения лута, но только те параметры, что уже имеются в файле (те, которые отличны от нуля), иначе возможен вылет

Правка будет работать при "Новой Игре" или по крайней мере на тех локациях, которые еще не посещал ГГ в существующей игре

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Здоров всем, возникла проблема со скриптовым включением\выключением звука в игре:

    get_console():execute("snd_volume_music "..tostring(_G.mus_vol))
    get_console():execute("snd_volume_eff "..tostring(_G.amb_vol))
    _G.amb_vol = 0
    _G.mus_vol = 0

С помощью этих строчек можно выключить звук во время какой-либо сцены, я добавил их, чтобы убрать звуки после смерти Главного Героя от первого лица.

Проблема в том, что после перезагрузки звук по прежнему выключен, и приходится его включать вручную через опции в меню. Вообще, данный способ используется ПЫСами для выключения звуков на время сна и действия  анабиотика, но строк для возвращения звуков на те, которые выставил игрок, я не нашёл. В оригинале, разумеется, звуки восстанавливаются. Может кто знает, как это решается?

Изменено пользователем Падальщик

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Падальщик сказал:

С помощью этих строчек можно выключить звук во время какой-либо сцены, я добавил их, чтобы убрать звуки после смерти Главного Героя от первого лица.

Не совсем так. Перед тем, как перейти в режим сна, происходит запись уровня громкости музыки и окр. звуков:

_G.mus_vol = get_console():get_float("snd_volume_music")
_G.amb_vol = get_console():get_float("snd_volume_eff")


После чего звук выключается:

get_console():execute("snd_volume_music 0")
get_console():execute("snd_volume_eff 0")


Когда ГГ просыпается, то происходит восстановление громкости путём ранее сделанной записи:

get_console():execute("snd_volume_music "..tostring(_G.mus_vol))
get_console():execute("snd_volume_eff "..tostring(_G.amb_vol))


В скрипте _g происходит та самая запись переменной громкости, чтобы её можно было записывать и читать из любого скрипта, это: mus_vol и amb_vol

  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

del

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Прошу помощи от шарящих людей. Нужен небольшой мод для ЗП, смысл такой, нужно перенести 1 набор инструментов для калибровки из припяти в пузырь с Таченко, что бы он выпадал вместе с трупами долговцев. А второй на Затон, в ящик с газом на мосту, если возможно, если нет то в логово кровососов, где они спят. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Подскажите пожалуйста. В моде Dead Air реализована система рюкзаков и максимальный вес учитывается только из файла actor.ltx. В инвентаре тоже он указан и при превышении веса персонаж встаёт как вкопанный. В каком файле это может быть изменено? Хочу убрать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

ziken Ошиблись темой.
Но подскажу, наверное нужно искать секцию рюкзака и увеличить его добавляемый переносимый вес.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 минуту назад, liner сказал:

ziken Ошиблись темой.
Но подскажу, наверное нужно искать секцию рюкзака и увеличить его добавляемый переносимый вес.

Суть не в максимальном переносимом весе, а в его превышении. В CoP при превышении веса в инвентаре персонаж мог ходить. Было два параметра - критический вес и максимальный. Тут же только один параметр.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

ziken В system.ltx найди

[inventory]
max_weight        = 50
max_ruck        = 56
 

Измени max_ruck на нужное значение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

liner они не работают. По умолчанию там написано
max_weight       = 5
max_ruck      = 92

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

ziken ну тогда ищи знающих людей, которые разбираются в скелете Dead Air.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, ziken сказал:

Подскажите пожалуйста. В моде Dead Air реализована система рюкзаков и максимальный вес учитывается только из файла actor.ltx. В инвентаре тоже он указан и при превышении веса персонаж встаёт как вкопанный. В каком файле это может быть изменено? Хочу убрать.

Про DeadAir не знаю, не ковырял этот мод.

Но по аналогии с другими модами, вероятно, есть скрипт, где этот параметр явно указан.

gamedata\scripts\

Ищите в каком-либо скрипте строчку MaxWeight или что-то вроде того.
 

Спойлер

 

function Analise()
    local TotalWeight = GetInvWeight()
    local armor = db.actor:item_in_slot(6)
    local temp
    local MaxWeight=190
    if armor then
        for i=1, table.getn(tbl_armor) do
            temp = tbl_armor
            if armor:section() == temp.sect then
                MaxWeight = MaxWeight + temp.add_w
            end
        end
        if TotalWeight>MaxWeight then
            if GG_Move>1 then
                temp = db.actor.power
                db.actor.power= -temp+0.1
                if not has_alife_info("boryan_gluki_1") then
                    db.actor:give_info_portion("boryan_gluki_1")
                    local snd_obj = xr_sound.get_safe_sound_object([[ambient\gluki\actor_habar]])
                    snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
                end
            end
        else
            if has_alife_info("boryan_gluki_1") then
                db.actor:disable_info_portion("boryan_gluki_1")
            end
        end
    end
    -- Перезапуск скан-таймера
    if not amk.has_g_timer("scan_timer") then
        set_scan_timer()
    end

end

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

ziken в DA просто более реалистичная система выносливости: - в оригинале критический вес 50 кг это и есть max_weight  , свыше которого считалось, что игрок сильно перегружен) и там шёл повышенный расход энергии overweight, то бишь 50 кг бегаешь как сайгак, а 51 кг - уже выдыхаешься за 3 секунды и 1 прыжок) параметр  max_walk_weight из актора, это предел после которого игрок вообще не мог ходить. В DA все более плавно вес после которого идёт повышенный расход он типа 5 кг без комбезов и рюкзака, но по сути,  он не важен там просто с каждым кг лишним пропорционально увеличивается расход энергии в отличии от оригинала, где этот лимит сразу 50, зато вес max_walk_weight который у тебя в акторе можно поднять комбезами и рюкзаками под сотню кг)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

CiberZold это было бы более реалистично, если броня и рюкзаки не давали дополнительный вес или не ломались. Но они ломаются, что уменьшает максимальный вес и персонаж перестаёт двигаться, что в реальной жизни не происходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
11 минут назад, CiberZold сказал:

система выносливости

Откройте  файл: bind_stalker.script, найдите в файле строчки:

function actor_binder:update(delta)
 object_binder.update(self, delta)

  и сразу под ними вставьте вот это:
db.actor.power = 1 
  Сохраните изменения и запускайте игру. 
Теперь ГГ никогда не устанет, так как сила всегда будет максимальной (100%)
 

  • Смех 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

ziken ну это можно обыграть как комбез с разгрузкой порвался/экза вышли из строя, рюкзак порвался и ты не можешь столько же веса переносить как раньше, вот и надо чинить, логичнее тут комбезы более прочными делать или урон от аномалий меньше, в Мизери/дед эйре он очень большой особенно огненных) а система выносливости в Мизери как раз близка к идеалу , как для игры)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Как сделать так, чтобы симуляционные НПС не заходили в боевые смарткаверы, если у них нет нужного оружия?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Добрый день. Написал для НПС такую работу.

Спойлер

[esc_b1_base_5_look]
points = p0,p1,p2,p3,p4,p5
p0:name = wp00|a=guard|p=30|t=60000
p0:flags = 0x1
p0:position = -158.053024291992,-30.1030006408691,-358.866790771484
p0:game_vertex_id = 0
p0:level_vertex_id = 92731

p1:name = wp00|a=guard_chasovoy|p=30|t=30000
p1:flags = 0x1
p1:position = -157.989273071289,-30.116340637207,-358.479614257813
p1:game_vertex_id = 0
p1:level_vertex_id = 92732

p2:name = wp00|a=sit_ass|p=30|t=60000
p2:flags = 0x1
p2:position = -157.925903320313,-30.0917892456055,-359.192169189453
p2:game_vertex_id = 0
p2:level_vertex_id = 92731

p3:name = wp01|a=binocular|p=30|t=60000
p3:flags = 0x2
p3:position = -152.068588256836,-30.3470077514648,-334.514709472656
p3:game_vertex_id = 0
p3:level_vertex_id = 100308

p4:name = wp01|a=guard|p=30|t=60000
p4:flags = 0x2
p4:position = -152.18440246582,-30.3574905395508,-335.005310058594
p4:game_vertex_id = 0
p4:level_vertex_id = 100307

p5:name = wp01|a=guard_chasovoy|p=30|t=30000
p5:flags = 0x2
p5:position = -151.915328979492,-30.3648796081543,-335.328765869141
p5:game_vertex_id = 0
p5:level_vertex_id = 100307


[esc_b1_base_5_walk]
points = p0,p1
p0:name = wp00
p0:flags = 0x1
p0:position = -147.962142944336,-30.0995025634766,-358.659576416016
p0:game_vertex_id = 0
p0:level_vertex_id = 105118
p0:links = p1(1)

p1:name = wp01
p1:flags = 0x2
p1:position = -152.133804321289,-30.516227722168,-348.400451660156
p1:game_vertex_id = 0
p1:level_vertex_id = 100292
p1:links = p0(1)

Он её выполняет.  Можно ли как то задать время нахождения НПС на точках walk. Или это можно только сделать в логике?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 минуту назад, Сергей Шубин сказал:

Можно ли как то задать время нахождения НПС на точках walk.

В look вэйпоинте нужно прописать:
"wp00|t=время_ожидания_в_милисекундах"

  • Аплодисменты 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
4 минуты назад, liner сказал:

В look вэйпоинте нужно прописать:
"wp00|t=время_ожидания_в_милисекундах"

Там уже прописано время отыгрывания разных анимаций. Посмотреть в бинокль, почесать пятую точку, постоять с оружием, посидеть.  Два параметра времени?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Сергей Шубин вторую категорически нельзя. Задавайте этот параметр в той точке, где это Вам нужно.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

liner Теоретически. В скрипте smart_covers_combat.script есть параметр precondition_functor - эта функция которая должна вернуть true для выполнения соответствующего действия.

  • Жму руку 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 не, через такой способ не вариант. Я нашёл другой выход, теоретически:
Файл state_mgr_smartcover.script
Класс eva_state_mgr_smartcover_need, метод evaluate
Вписываем перед строчкой

local state_descr = db.storage[self.object:id()]["smartcover"]

Вот такой код:
 

--ЗА ФУНКЦИЮ ВЫНОСИМ ЭТУ ТАБЛИЦУ
--cslid допустимых пушек в смарткавере
local ws =
{
	[clsid.wpn_vintorez_s] 			= true,
	[clsid.wpn_ak74_s] 				= true,
	[clsid.wpn_lr300_s] 			= true,
	[clsid.wpn_svd_s] 				= true,
	[clsid.wpn_svu_s] 				= true,
	[clsid.wpn_val_s] 				= true,
	[clsid.wpn_groza_s] 			= true
}

	--liner: FIX WEAPON SMARTCOVER BUG
	if not self.st.npc then
		printf("CANNOT ENTER TO SMARTCOVER BECAUSE NPC NIL!!!")
		return false
	end
	do
		local ac = self.st.npc:active_item()
		if not ac or not ws[ac:clsid()] then
			printf("CANNOT ENTER TO SMARTCOVER BECAUSE WEAPON!!!")
			return false
		end
	end

P.S.: ПРОВЕРИЛ, У МЕНЯ НЕ РАБОТАЕТ.

Изменено пользователем liner
  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

liner ,

пара вариантов: \scripts\xr_smartcover.script

function action_smartcover_activity:target_selector(obj)
	-- isWeapon in _g.script
	local w = isWeapon(obj:best_weapon())
	if not w then
		return
	end
	...

или

function add_to_binder(npc, ini, scheme, section, storage)

	...
	new_action:add_precondition(world_property(properties["use_smartcover_in_combat"], true))
	-- новое условие
	new_action:add_precondition(world_property(stalker_ids.property_item_can_kill, true))

	-- другие варианты:
	-- new_action:add_precondition	(world_property(stalker_ids.property_ready_to_kill, true))
	-- new_action:add_precondition	(world_property(stalker_ids.property_found_item_to_kill, true))
	-- new_action:add_precondition	(world_property(stalker_ids.property_item_to_kill, true))

 

  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Доброе утро.  Возник вопрос.  В файле xr_statistic обрабатываются переменные статистики ГГ.  Как использовать эти значения в игровом процессе.

1. Как составить функцию - прекондишион для диалога?  Должна возвращать true, если ГГ убил, например, 20 монстров.

2. Как составить функцию для xr_conditions в общем виде?  Вызывается из логики рестриктора. Если ГГ выполнил, допустим, 5 квестов, то рестриктор переключается на следующую секцию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу