Платформа: Shadow of Chernobyl 1.0005/6 ☢ Автор: SeeZ0 ☢ Актуальная версия ⇒ 2a + hotfix 5
RadioPhobia - модификация, которая фокусируется главным образом на боевом реализме и погружении в игровой процесс. Среди основных особенностей обновлённый арсенал оружия и графические улучшения.
Игровой процесс * ● На основе ZRP 1.07 R5 RC - тонны исправлений и улучшенная стабильность ● Более хардкорная экономика, боеприпасы и различные предметы в дефицыте ● Оружие с реалистичной баллистикой ● Обновлённый арсенал с 120+ видами оружия и с их вариациями ● Новые костюмы и предметы ● Выбросы с текстурами AF3 ● РЕАЛЬНЫЕ динамические новости AMK с правками (сталкеры будут публиковать о том, что они видят и слышат - как в автономном режиме, так и в режиме онлайн, о погоде, предстоящих выбросах и т.д.) ● Медикаменты излечивают со временем с убиранием оружия в руках и воспроизведением звуков ● Оружию добавлена инерция и переключатель FOV (угла обзора) ● Войны группировок - НПС всех фракций могут перемещаться по карте и устраивать базы в любом месте ● Динамические костры (костры затухают, когда нет рядом НПС) ● Динамический респавн артефактов ● Улучшенный ИИ - НПС могут бросать гранаты, менять броню, подбирать предметы с земли, обыскивать тела погибших, лечить раненых союзников и т.д. Также НПС попытаются избить вас в баре, если украсть их вещи. ● Украинские голоса с дополнительными английскими субтитрами ● Ремонтные комплекты для брони и оружия ● Сон на определённых местах, в стиле Зова Припяти (можно спать практически на любой кровати, диване, матрасе и т.д.) ● Реалистичная скорость спринта и приседания ● Дополнительные инструменты разработчика / чит-режим - спавн всех предметов, НПС-меню, ускорения игрового времени, телепорт / пропуск заданий ● Возможность скидывать рюкзаки
Графика и звук ● Почти все текстуры и звуки заменены на высококачественные ● AtmosFear и Absolute Nature добавлены в модификацию ● Поддержка ENB и шейдеров ● HUD масок и противогазов, которые снимаются при приёме еды / воды ● Эффекты HUD для низкого здоровья, выносливости и т.д. ● Модели НПС портированы для Теней Чернобыля из Call of Chernobyl HD Models Addon
* Это список основных особенностей, включённых в новую версию RadioPhobia 2.
➀ Установить модификацию в папку с игрой, запустив «exe» файл. ➁ Установить «Hotfix 5» переместив в каталог игры, заменив файлы. ➂ По желанию установить дополнения с заменой файлов в папке игры. ➃ Для установки русификатора скопировать папку «gamedata» с заменой. ➄ Запустить игру. Настроить опции в главном меню. Enjoy!
Внимание! Установка шейдеров или ENB сильно нагружают систему, ставить только для мощного железа.
Сообщение отредактировал Avgust1n - Суббота, 17.08.2019, 21:24
Ставил на лицензию, пиратку, версию от GoG. Ставил согласно инструкции: Игра>мод>фикс>русификатор. Ставил сидя на стуле, сидя на табуретке, ставил стоя, ставил в штанах, ставил в трусах, ставил стоя на одной ноге - результат один, краш при запуске. Отчаялся и снес Сталкер в поисках другой модификации, мой взор пал на Autum Avrora (Так называется, вроде?) Поставил, а результат тот же - краш! Стал читать тему этой модификации, наткнулся на один комментарий, в котором чувак таки смог запустить, но без ENB. Оказалось, проблема в ENB (Хотя, у большинства людей все четко работает, бэлин.) Требовалось удалить/переименовать файл d3d9.dll. Убрал его из папки bin - помогло! Работает, но без ENB. Попробовал провернуть этот фокус с радиоофобией - заработало! Но игра теперь без ENB. А без ENB эта сборка не нужна, ибо сборку я ставил ради графики. Так вот, ребята, как мне запустить эту сборку с ENB?
function no_suffer_indoor(level_name) if levels[level_name] then return true end return false end
recall_victims = 17
----------------------------------------------------------------------------------- -- Monster binding ----------------------------------------------------------------------------------- local num local timer = 0 local time_burer_next_attack = 6000 local controller_timer = 0 local effects={{1,2}} local snd_affect = xr_sound.get_safe_sound_object("monsters\\pseudodog\\psy_affect_0", sound_object.s2d) local time_next_attack = 2500 local time_cam_effect = 700
function bind(obj) -- printf("_bp: monster.bind: name='%s', id='%d'", obj:name(), obj:id())
-- Для спауна --xr_spawner.spawn_client(obj)
local new_binder = generic_object_binder(obj) obj:bind_object(new_binder) end
------------------------------------------------------------------------------------ class "generic_object_binder" (object_binder)
function generic_object_binder:__init(obj) super(obj) self.loaded = false self.chtime = 0 end
function generic_object_binder:reload(section) object_binder.reload(self, section) end
function generic_object_binder:reinit() object_binder.reinit(self)
-- У торговца нет поддержки перемещения if self.object:clsid() ~= clsid.script_trader then self.object:set_patrol_extrapolate_callback(generic_object_binder.extrapolate_callback, self) end
function generic_object_binder:use_callback(obj, who) if self.object:alive() then return end -- dbglog("searched %s",obj:name()) if zx then zx.on_mutant_body_search(db.actor, self.object) end end
prevent_gulag_registration_for_id=0
function generic_object_binder:update(delta) object_binder.update(self, delta)
-- Апдейт торговли if self.object:clsid() == clsid.script_trader then trade_manager.update(self.object) end
if self.object:alive() then if self.object:is_talk_enabled() then self.object:set_tip_text("character_use") else self.object:set_tip_text("") end else self.object:set_tip_text_default() end
if self.object:clsid()==clsid.burer_s and self.object:section()~="controller_tubeman_old" and self.object:alive() and timer < time_global() then local a = db.actor local oTarget = db.actor -- self.object:get_enemy() local v1 = self.object:direction() local v2 = a:direction()
if oTarget and (oTarget:id()==0) and (v1.x*v2.x) + (v1.z*v2.z ) < -0.6 and self.object:see(a) and self.object:position():distance_to(a:position())<25 then num=1 db.actor.power = -1.0 local aitem=a:active_item() if aitem and math.random()<0.4 and (a:active_slot()==1 or a:active_slot()==2) then a:drop_item(aitem) end timer=time_global() + time_burer_next_attack*(1+math.random(-0.2,0.2)) end elseif num and timer < time_global() + time_burer_next_attack then num=nil end
-- Эффекты билдовского контролера if self.object:clsid()==clsid.burer_s and self.object:section()=="controller_tubeman_old" and self.object:alive() and self.object:section()~="m_burer_weak" and self.object:section()~="m_burer_normal" and self.object:section()~="m_burer_normal_black" and self.object:section()~="m_burer_strong" and self.object:section()~="burer_arena" and controller_timer < time_global() then if self.object:position():distance_to(db.actor:position()) < 20 then if db.actor:alive() then mod_skripty.play_sound([[monsters\controller\controller_presence_r]]) db.actor.psy_health = -0.05 level.add_cam_effector("camera_effects\\drunk.anm", 1979, false, "") level.add_pp_effector("vibros_p.ppe", 1971, false) end end controller_timer = time_global() + 16000 end
if self.object:clsid()==clsid.pseudodog_s or self.object:clsid()==clsid.psy_dog_s and self.object:alive() and timer < time_global() then local a = db.actor local oTarget = db.actor local v1 = self.object:direction() local v2 = a:direction()
if oTarget and (oTarget:id()==0) and (v1.x*v2.x) + (v1.z*v2.z ) < -0.6 and self.object:see(a) and self.object:position():distance_to(a:position())<20 then -- num=1 -- for _,n in pairs(effects[num]) do -- level.add_cam_effector("build_1935_pseudodog_effect_"..n..".anm", 990+n, false, "") -- end level.add_pp_effector ("psy_antenna_indoor.ppe", 395, false) local h = hit() h.draftsman = self.object h.type = hit.telepatic h.direction = vector():set(0,0,0) h.power = 0.05 h.impulse = 0.0 a:hit(h) if db.actor:alive() then snd_affect:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d) end timer=time_global() + time_next_attack*(1+math.random(-0.2,0.2))+time_cam_effect end elseif num and timer < time_global() + time_next_attack then level.remove_pp_effector(395) -- for _,n in pairs(effects[num]) do -- level.remove_cam_effector(990+n) -- end -- num=nil end
--[[ local is_fake = string.find(act_scheme, "mob_fake_death") or false if IsMonster(self.object) and time_global() - self.last_update > 1000 and not is_fake then if self.object:alive() and self.object.health>0.03 then if self.object:see(db.actor) and db.actor:position():distance_to(self.object:position())<40 then amk.enemy_see_actor(self.object,"monster") end if db.actor:see(self.object) and db.actor:position():distance_to(self.object:position())<80 then amk.actor_see_enemy(self.object,"monster") end end self.last_update = time_global() end ]]
self:anomaly_evade()
local blowout=amk.load_variable("blowout",0) -- start fix -- if blowout==3 and (not self.control_override) then if blowout==3 and (not self.control_override) and no_suffer_indoor(level.name()) then -- end fix if not self.object:action() then -- Захватываем зверушку xr_logic.mob_capture(self.object,true) self.control_override=true end elseif self.control_override and blowout==3 then if not self.object:action() then local snds={sound.take_damage,sound.panic,sound.idle} local snd=snds[math.random(1,table.getn(snds))] action(self.object, anim(anim.lie_idle, 0), sound(snd), cond(cond.sound_end)) end elseif self.control_override and blowout~=3 then -- отпускаем зверушку self.control_override=nil xr_logic.mob_release(self.object) elseif self.st.active_section ~= nil then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "update", delta) end end
function generic_object_binder:anomaly_evade() local npc=self.object if npc:story_id()==29 then return end -- учебная плоть блин if not self.prev_pos then self.prev_pos=vector():set(0,-100,0) end if self.prev_pos:distance_to(npc:position())>20 then self.prev_pos=npc:position() local list=amk_anoms.get_anomaly_list(npc,30) for i,o in ipairs(list) do amk_anoms.add_restriction(npc,o.id,o.name) end end if amk_anoms.have_pending_sync(npc) then amk_anoms.syncronize(npc) end end
function generic_object_binder:extrapolate_callback() if (self.object == nil) then return false end
local cur_pt = self.object:get_current_point_index()
if self.object:get_script () == false then return false end
if patrol(self.object:patrol()):flags(cur_pt):get() == 0 then --printf("_bp: generic_object_binder: extrapolate_callback: cur_pt = %d: true", cur_pt) return true end --printf("_bp: generic_object_binder: extrapolate_callback: cur_pt = %d: false", cur_pt) return false end
function generic_object_binder:waypoint_callback(obj, action_type, index) if self.st.active_section ~= nil then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "waypoint_callback", obj, action_type, index) end end
function generic_object_binder:death_callback(victim, who) if (self.object == nil) then return end
if who:id() == db.actor:id() then if xr_motivator.show_hit_damage then if xr_motivator.log_hits then _z.nvDebug(victim:name()..": dead") else _z.show_small_msg(victim:name()..": dead") end end xr_statistic.addKillCount(self.object) end
if self.st.mob_death then xr_logic.issue_event(self.object, self.st.mob_death, "death_callback", victim, who) end
if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "death_callback", victim, who) end
smart_terrain.on_death( self.object:id() )
--' Наносим небольшой импульс вперед. local h = hit() h.draftsman = self.object h.type = hit.fire_wound h.direction = db.actor:position():sub(self.object:position()) h:bone("pelvis") h.power = 1 h.impulse = 10 self.object:hit(h)
-- added by xStream for AMK miniSDK amk.on_death(victim, who) -- end of addition
end
function generic_object_binder:hit_callback(obj, amount, local_direction, who, bone_index) -- printf("HIT_CALLBACK: [%s] amount[%s]", obj:name(), amount) -- amk.logct(self.object:name().." hit ","mcbt") if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "hit_callback", obj, amount, local_direction, who, bone_index) end if self.st.hit then -- amk.logct(self.object:name().." on_hit logic ","mcbt") -- amk.dump_table(self.st.hit.logic) xr_logic.issue_event(self.object, self.st.hit, "hit_callback", obj, amount, local_direction, who, bone_index) end if who:id() == db.actor:id() then if xr_motivator.show_hit_damage and obj:id() == self.object:id() then local dmg_str if amount > 0 then dmg_str = ": damage "..string.format("%6.2f",amount*100) else dmg_str = ": no damage?" end if xr_motivator.log_hits then _z.nvDebug(obj:name()..dmg_str.."\\nhealth "..string.format("%6.2f",obj.health*100))--" - bone="..tostring(bone_index)) else _z.show_small_msg(obj:name()..": health "..string.format("%6.2f",obj.health*100)) end end end end
function generic_object_binder:net_spawn(sobject) if not object_binder.net_spawn(self, sobject) then return false end
-- АМК. Очистка рестрикторов local id=self.object:id()
object_binder.net_destroy(self)
local sobj=alife():object(id) if sobj and IsMonster(sobj) then local tbl=amk.read_monster_params(sobj) tbl.crvu32u16u2={} amk.write_monster_params(tbl,sobj) else -- Выход из игры. end end
-- nv140406 removed duplicate per castl -- function generic_object_binder:reload(section) -- object_binder.reload(self, section) -- --printf("generic_object_binder:reload(): self.object:name()='%s'", self.object:name()) -- end
function generic_object_binder:net_save_relevant() --printf("generic_object_binder:net_save_relevant(): self.object:name()='%s'", self.object:name()) return true end
function generic_object_binder:save(packet) -- printf("generic_object_binder:save(): self.object:name()='%s'", self.object:name()) object_binder.save(self, packet)
xr_logic.save_obj(self.object, packet) if self.object:clsid() == clsid.script_trader then trade_manager.save(self.object, packet) end end
function generic_object_binder:load(reader) self.loaded = true
AksionauVit, блин,в следующий раз залей на какой-нибудь файлообменник и ссылку сюда) Сделай копию своего bind_monster.script на всякий случай,и скопируй этот с заменой
Играю урывками, так что ещё даже не перешёл на Агропром (обе атаки бандосов на Свалке отбиты), но неписи и должны быть такими беззащитными? У меня уже:
- Отец Диодор - пару дней охранял вход в Деревню новичков со стороны дороги. Затоптан кабаном.
- Мастер - обосновался на АТП после зачистки от бандосов, впоследствии делил место с отрядом Долга. Загрызан слепышом.
- Бес - поймал шальную бандитскую пулю сразу после перезагрузки сейва на Свалке (после спасения новичка Юрика от трёх бандосов).
- Шустрый - умер прямо на своём матрасике, где вечно спит. Возможно, словивший шальную пулю военных, как раз тихой сапой подкрадывавшихся к Деревне новичков.
Чувствую, как только Волк уйдёт на Армейские склады (если в этом моде он туда ходит, учитывая, что половина его компаньонов: Мастер и Отец Диодор - оказались на Кордоне и благополучно почили с миром), то он не жилец
И ладно бы псевдособака или кровосос, но слепыш и кабан... И это эксперты с топовыми пушками на руках
AksionauVit, неписи всегда были относительно слабыми, особенно против мутантов "на разы". Нужно быть самому чуть проворнее и учится их защищать и помогать тому, кто хочешь что бы выжил. Иногда и сэйв/лоад помогает вытащить кого нужно.
Нужно быть самому чуть проворнее и учится их защищать и помогать тому, кто хочешь что бы выжил.
Я с десяток раз перезагружался с разных сэйвов того игрового дня и бегал на АТП в надежде спасти Мастера от этой собаки. Увы, каждый раз картина была одинаковой: труп Мастера, ни одной собаки вокруг и пара рядом бродящих долговцев, усиленно делающих вид, что высматривают в окрестностях врага. Хотя нет, иногда сталкер бывал нелутаный, и мне перепадала хорошая пушка
Сообщение отредактировал AksionauVit - Четверг, 13.12.2018, 00:44
Всем доброго времени суток! Решил написать на форум по причине безысходности в попытках запустить данный мод с ENB . 1)Ставил на разные версии ТЧ 1.0006 -GOG -Лицензию (Образ) -Пиратки 2)Делал подмену USER.LTX от репака Radiophobia от Луса 3)Запускал от имени администратора с параметрами -nointro -nopref... 4)Все патчи + русификации , на анг версиях без русификации все варианты перепробовал.. 5)Запускается только путем удаления d3d9.dll до этого в логе только:
Видимо, не судьба сыграть в этот мод - обыденный вылет после запуска. Вариант с удалением библиотек ничего не дал, в профильной теме на moddb об этом ни слова. Cтатика, без ENB, фикс бампов - не работоспособно абсолютно всё.
UPD. Ок, потанцевал с бубном, и запустил сие изделие без ENB. Теперь моду не хватает шейдеров
[error]Expression : fatal error [error]Function : CBlender_default_aref::Compile [error]File : E:\stalker\sources\trunk\xr_3da\xrRender_R1\Blender_default_aref.cpp [error]Line : 75 [error]Description : <no expression> [error]Arguments : Not enought textures for shader, base tex: prop\prop_barbwire3
Сообщение отредактировал Saferaks - Понедельник, 08.04.2019, 04:13
Saferaks, в данной теме выкладывались отдельно шейдеры. Поиск в помощь. з.ы. Не вижу смысла в игре в данный проект на статике, поскольку одной из главных его фишек является графика(эффекты). Имхо.