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

Kondr48

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

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

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

  • Дней в топе

    1
  • AMKoin

    51 [Подарить AMKoin]

Kondr48 последний раз побеждал 15 Августа 2016

Kondr48 - автор самых популярных публикаций!

Баланс оценок

313

8 подписчиков

О Kondr48

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

Контакты

  • Сайт
    http://

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

2 330 просмотров профиля
  1. Kondr48

    Рендеры из ЧН на движок ТЧ

    Любопытная вещь, а репозиторий имеется?
  2. Так по сути уже сделано. Там на репозитории KD есть правка которая включает объем рюкзака ограниченный ячейками инвентаря. Перевязать на некую величину, которая будет браться из броника или даже отдельного рюкзака большого труда не составит. Если будет время, выложу правочку.
  3. Это проблема вроде на репозитории была изначально.
  4. В дополнение к посту @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>
  5. Kondr48

    Ищу файлы / моды / аддоны

    Ищу папку шейдеров от ОГСЕ последнего.
  6. @Romann А что за процесс хоть? Я так и не нашел.
  7. При запуске собранного движка (ТЧ) выскакивает маленькое нечто вроде окошка, с надписью "MSCTFIME UI" причем передвинуть или как то убрать его не получается. При перезагрузке системы пропадает. Кто-нибудь сталкивался? Как его убрать вообще? А желательно бы еще понять что это такое и как сделать, чтобы вообще не возникало.
  8. Так фикс же предлагал SkyLoadet, разве нет?
  9. Kondr48

    Скриптование

    Есть, не знаю отчего зависит, но на некоторых ПК иногда подобные ошибки все-таки приводят к вылету. Да и вообще накапливание ошибок в ходе игры не самая хорошая идея =)
  10. Небольшой обзор инвентаря: Скрытый текст https://youtu.be/IAWb7OTL_Uo
  11. Kondr48

    Ищу файлы / моды / аддоны

    Нужны текстуры из обеих метро (Желательно Redux версии, но подойдет и от обычных). Конкретно интересует все что связано с худом противогаза: стекло, капли, мухи и т.п. Также интересует звук смены фильтра.
  12. CRAZY_STALKER666, возможно террейн не прописан в textures.ltx?)
  13. Исправление пулестойкости костюмов. Скрытый текст Кто-то слышал, кто-то нет, как разработчики некоторых глобальных модов упоминали (ну по крайней мере я что-то подобное помню), что в движок закралась какая-то чудовищная ошибка и на самом деле бронежилеты от пуль не защищают и чуть ли не чем больше показатель, тем хуже. Однако, в принципе, не так все страшно. На самом деле в этом плане никакой ошибки нет. Просто в Сталкере (речь идет о ТЧ, насчет других частей серии - не уверен, хотя суть та же скорее всего) расчет хита от пули происходит иначе, чем от любого другого воздействия. А конкретно, берутся настройки костей, что позволяет более гибко эту самую пулестойкость настроить. Подробнее можно почитать здесь. Пулестойкость ГГ рассчитывается также, как у НПС. На самом деле, это легко исправить. Возможно ,кому-то не понравится такой способ, ибо если выставить у костюма 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 Вот и всё, если есть какие-то вопросы - пишите, возможно, я забыл что-то указать.
  14. Kondr48

    Prosectors Project

    Эти 8 КБ хранилища сто лет как канули в небытие, да и инфопопшни там никогда не хранились.
  15. Инфопопшень на апдейт как в оригинале ТЧ?)

AMK-Team.ru

×
×
  • Создать...