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

Kondr48

Жители
  • Число публикаций

    866
  • Регистрация

  • Последнее посещение

О Kondr48

  • День рождения 23.08.1996

Контакты

  • Сайт
    http://

Недавние посетители профиля

945 просмотров профиля
  1. [SOC] Мелкие правки движка

    В дополнение к посту @Shkiper2012 Скрытый текст Эту же фичу можно сделать опциональной. case kWPN_ZOOM: Скрытый текст case kWPN_ZOOM: if (IsZoomEnabled()) { if (psActorFlags.test(AF_ZOOM_CLICK_ENABLE)) { if (flags&CMD_START && !IsPending()) OnZoomIn(); else if (IsZoomed()) OnZoomOut(); } else { if( flags&CMD_START && !IsPending() && !IsZoomed() ) OnZoomIn(); else if( flags&CMD_START && IsZoomed() ) OnZoomOut(); } return true; } else return false; Затем, добавляем новый флаг в Actor_Flags.h AF_ZOOM_CLICK_ENABLE = (1<<11), И регистрируем консольную команду в файле console_commands.cpp void CCC_RegisterCommands() { ... CMD1(CCC_GameDifficulty, "g_game_difficulty" ); CMD3(CCC_Mask, "zoom_click_enable", &psActorFlags, AF_ZOOM_CLICK_ENABLE); ... } Осталось лишь зарегистрировать новый пункт меню в файлах игры. 1. ui_mm_opt_gameplay.script : _st = xml:InitStatic("tab_gameplay:templ_item", self.scroll_v) xml:InitCheck("tab_gameplay:check_zoom_click_enable", _st) 2. ui_mm_opt(_16).xml: <check_zoom_click_enable x="10" y="0" width="243" height="21"> <options_item entry="zoom_click_enable" group="mm_opt_gameplay"/> <text font="letterica18" r="215" g="195" b="170">ui_mm_zoom_click_enable</text> </check_zoom_click_enable> 3. Любой текстовый файл: <string id="ui_mm_zoom_click_enable"> <text>Удерживать ($$ACTION_WPN_ZOOM$$) для прицеливания</text> </string>
  2. Ищу файлы / моды / аддоны

    Ищу папку шейдеров от ОГСЕ последнего.
  3. Редактирование движка X-Ray

    @Romann А что за процесс хоть? Я так и не нашел.
  4. Редактирование движка X-Ray

    При запуске собранного движка (ТЧ) выскакивает маленькое нечто вроде окошка, с надписью "MSCTFIME UI" причем передвинуть или как то убрать его не получается. При перезагрузке системы пропадает. Кто-нибудь сталкивался? Как его убрать вообще? А желательно бы еще понять что это такое и как сделать, чтобы вообще не возникало.
  5. Редактирование движка X-Ray

    Так фикс же предлагал SkyLoadet, разве нет?
  6. Скриптование

    Есть, не знаю отчего зависит, но на некоторых ПК иногда подобные ошибки все-таки приводят к вылету. Да и вообще накапливание ошибок в ходе игры не самая хорошая идея =)
  7. Secret of the Zone:Gunslinger's Story. Prologue [ТЧ]

    Небольшой обзор инвентаря: Скрытый текст https://youtu.be/IAWb7OTL_Uo
  8. Ищу файлы / моды / аддоны

    Нужны текстуры из обеих метро (Желательно Redux версии, но подойдет и от обычных). Конкретно интересует все что связано с худом противогаза: стекло, капли, мухи и т.п. Также интересует звук смены фильтра.
  9. [SoC] Ковыряемся в файлах

    CRAZY_STALKER666, возможно террейн не прописан в textures.ltx?)
  10. [SOC] Мелкие правки движка

    Исправление пулестойкости костюмов. Скрытый текст Кто-то слышал, кто-то нет, как разработчики некоторых глобальных модов упоминали (ну по крайней мере я что-то подобное помню), что в движок закралась какая-то чудовищная ошибка и на самом деле бронежилеты от пуль не защищают и чуть ли не чем больше показатель, тем хуже. Однако, в принципе, не так все страшно. На самом деле в этом плане никакой ошибки нет. Просто в Сталкере (речь идет о ТЧ, насчет других частей серии - не уверен, хотя суть та же скорее всего) расчет хита от пули происходит иначе, чем от любого другого воздействия. А конкретно, берутся настройки костей, что позволяет более гибко эту самую пулестойкость настроить. Подробнее можно почитать здесь. Пулестойкость ГГ рассчитывается также, как у НПС. На самом деле, это легко исправить. Возможно ,кому-то не понравится такой способ, ибо если выставить у костюма 100% защиты, то новый костюм будет полностью защищать от пуль (ну пока не износится само собой) не учитывая, что какие-то участки защищены сильнее/слабее. Как по мне, защита по костям, конечно, реалистичнее, но вариант просто в процентах - более играбельный, ведь игрок видит в инвентаре насколько его защищает данный костюм и эта цифра соответствует действительности. Итак. Как сделать работу пулестойкости такой же, как остальные воздействия? Для начала стоит вынести это дело под дефайн, дабы иметь возможность при необходимости включить/отключить данную правку. Для этого, в файл build_config_defines.h нужно добавить: #define FIRE_WOUND_HIT_FIXED // Kondr48: "Фикс" пулестойкости для шлемов и брони. По факту просто выключен механизм расчета хита по костям. Считается также, как остальные хиты. Затем, нам нужен файл EntityCondition.cpp Находим: float CEntityCondition::HitOutfitEffect(float hit_power, ALife::EHitType hit_type, s16 element, float AP) { CInventoryOwner* pInvOwner = smart_cast<CInventoryOwner*>(m_object); if(!pInvOwner) return hit_power; CCustomOutfit* pOutfit = (CCustomOutfit*)pInvOwner->inventory().m_slots[OUTFIT_SLOT].m_pIItem; if(!pOutfit) return hit_power; float new_hit_power = hit_power; if (hit_type == ALife::eHitTypeFireWound) new_hit_power = pOutfit->HitThruArmour(hit_power, element, AP); else new_hit_power *= pOutfit->GetHitTypeProtection(hit_type,element); //увеличить изношенность костюма pOutfit->Hit (hit_power, hit_type); return new_hit_power; } и переписываем вот так: float CEntityCondition::HitOutfitEffect(float hit_power, ALife::EHitType hit_type, s16 element, float AP) { CInventoryOwner* pInvOwner = smart_cast<CInventoryOwner*>(m_object); if(!pInvOwner) return hit_power; CCustomOutfit* pOutfit = (CCustomOutfit*)pInvOwner->inventory().m_slots[OUTFIT_SLOT].m_pIItem; if(!pOutfit) return hit_power; float new_hit_power = hit_power; #ifndef FIRE_WOUND_HIT_FIXED if (hit_type == ALife::eHitTypeFireWound) new_hit_power = pOutfit->HitThruArmour(hit_power, element, AP); else #endif new_hit_power *= pOutfit->GetHitTypeProtection(hit_type,element); //увеличить изношенность костюма pOutfit->Hit (hit_power, hit_type); return new_hit_power; } В принципе, на этом можно было бы и закончить, однако можно под дефайн вынести и неиспользуемые функции в CustomOutfit. Это будет более правильно, потому что исключит неиспользуемые участки кода. Итак, дальше я буду приводить только участки под дефайном. Соответственно, Вам нужно будет найти эту часть в файле и сделать также. 1. CustomOutfit.h Добавим инклуд вначале: #include "..\..\..\build_config_defines.h" #ifndef FIRE_WOUND_HIT_FIXED struct SBoneProtections; #endif #ifndef FIRE_WOUND_HIT_FIXED float HitThruArmour (float hit_power, s16 element, float AP); #endif #ifndef FIRE_WOUND_HIT_FIXED SBoneProtections* m_boneProtection; #endif #ifndef FIRE_WOUND_HIT_FIXED virtual BOOL BonePassBullet (int boneID); #endif 2. CustomOutfit.cpp #ifndef FIRE_WOUND_HIT_FIXED #include "BoneProtections.h" #endif #ifndef FIRE_WOUND_HIT_FIXED m_boneProtection = xr_new<SBoneProtections>(); #endif #ifndef FIRE_WOUND_HIT_FIXED xr_delete(m_boneProtection); #endif Функцию CCustomOutfit::GetHitTypeProtection приводим к такому виду: float CCustomOutfit::GetHitTypeProtection(ALife::EHitType hit_type, s16 element) { float fBase = m_HitTypeProtection[hit_type]*GetCondition(); #ifndef FIRE_WOUND_HIT_FIXED float bone = m_boneProtection->getBoneProtection(element); return 1.0f - fBase*bone; #else return 1.0f - fBase; #endif } #ifndef FIRE_WOUND_HIT_FIXED float CCustomOutfit::HitThruArmour(float hit_power, s16 element, float AP) { float BoneArmour = m_boneProtection->getBoneArmour(element)*GetCondition()*(1-AP); float NewHitPower = hit_power - BoneArmour; if (NewHitPower < hit_power*m_boneProtection->m_fHitFrac) return hit_power*m_boneProtection->m_fHitFrac; return NewHitPower; }; BOOL CCustomOutfit::BonePassBullet (int boneID) { return m_boneProtection->getBonePassBullet(s16(boneID)); }; #endif #ifndef FIRE_WOUND_HIT_FIXED if(pSettings->line_exist(cNameSect(),"bones_koeff_protection")) m_boneProtection->reload( pSettings->r_string(cNameSect(),"bones_koeff_protection"), smart_cast<CKinematics*>(pActor->Visual()) ); #endif Вот и всё, если есть какие-то вопросы - пишите, возможно, я забыл что-то указать.
  11. Prosectors Project

    Эти 8 КБ хранилища сто лет как канули в небытие, да и инфопопшни там никогда не хранились.
  12. [CoP] Ковыряемся в файлах

    Инфопопшень на апдейт как в оригинале ТЧ?)
  13. Редактирование движка X-Ray

    Я собрал с этой правкой, все работает как положено.
  14. [SOC] Мелкие правки движка

    Исправление вылета по отсутствию звука. Путь до звука выводится в лог (как с текстурами в ЗП). Автор: Zagolski
×