Это популярное сообщение. Malandrinus 615 Опубликовано 22 Ноября 2010 Это популярное сообщение. Поделиться Опубликовано 22 Ноября 2010 (изменено) Проект X-Ray extensions Представляет собой набор добавлений, расширяющих возможности движка для скриптёров, а также, в ряде случаев, меняющих поведение игры. Изменения реализованы в виде бинарных патчей библиотек и исполняемых файлов. Адрес проекта на Google CodeДокументация одним файлом в chm формате (зеркало) по состоянию на 15 августа 2013 г. (собрана, отформатирована и скомпилирована @Kontro-zzz).Версии игры, поддерживаемые на данный момент:ТЧ (патч 1.0006): xrGame.dll, XR_3DA.exe, xrRender_R1/2ЧН (патч 10): xrGame.dll, xrRender_R1/2/3ЗП (патч 1.6.02): xrGame.dll, xrRender_R1/2/3/4 svn хранилище не содержит оригинальных файлов игры. Не забывайте делать резервные копии перед заменой файлов игры! Ссылка на адрес нового репозитария: https://github.com/KD87/xray-extensions Изменено 23 Июня 2016 пользователем Malandrinus 12 12 1 8 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Max_Raf 35 Опубликовано 16 Ноября 2015 Поделиться Опубликовано 16 Ноября 2015 Здрасте. Застрял. балуюсь с LWO, и мне приспичило обновить xrGame.dll . Использую SVN_portable_r232 (24_oct_2015) выложенный ранее. Вроде бы всё нормально компилится, менюшка загружается, но правки ну никак не нравятся игре. первый вылет при начале новой игры: stack trace: 001B:75A3D3CF KERNELBASE.dll 001B:6D988E89 MSVCR80.dll, EH_prolog() 001B:6D98937F MSVCR80.dll, _RTDynamicCast() 001B:03C399B8 xrGame.dll второй - при загрузке старого сейва: stack trace: 001B:039DCECD xrGame.dll corrections_list.txt: 0x10190492 5 ; jmp global_space_ext ; скриптовые методы в глобальное пространство имен (часть 1) 0x10149CA2 5 ; jmp global_space_ext2 ; скриптовые методы в глобальное пространство имен (часть 2) 0x10149D24 5 ; jmp global_space_ext2_additional ; скриптовые методы в глобальное пространство имен (часть 3) 0x10155D87 5 ; jmp game_object_fix ; новые скриптовые методы в CScriptGameObject 0x1014A7CA 5 ; jmp game_object_fix2 ; новые скриптовые свойства в CScriptGameObject 0x101A6E50 5 ; jmp call_key_press_callback 0x101A71F0 5 ; jmp call_key_release_callback 0x101A7330 5 ; jmp call_key_hold_callback 0x101A6CA5 5 ; jmp call_mouse_wheel_callback 0x101DE710 5 ; jmp call_mouse_move_callback 0x101C6DC0 5 ; jmp CActor_HitSignal_ext ; скриптовый колбек на хит актора 0x10204D75 5 ; jmp on_belt_callback 0x10204F13 5 ; jmp on_ruck_callback 0x10204BCF 5 ; jmp on_slot_callback 0x1004C9AD 5 ; jmp alife_simulator_fix ; скриптовые методы в класс CALifeSimulator ;0x1024C290 1 ; retn ; правка смены визуала актора (устарела, внизу есть альтернативный вариант - примечание by Macron) 0x1028E30E 5 ; jmp add_console_commands_fix ; новые консольные команды 0x102862E0 5 ; jmp inventory_box_fix ; скриптовый колбек на перемещение предмета в ящик 0x101AEF0F 5 ; level_ns_extension_1 ; скриптовые методы в пространство level (часть 1) 0x101AF1C1 8 ; level_ns_extension_2 ; скриптовые методы в пространство level (часть 2) ; отключение вывода в лог ненужной информации 0x103561C9 5 ; jmp addr_103561DD ; skip annoying msg "sv ownership id_parent ..." 0x103561DD 8 ; part2: mov esi,10h; nop; nop; nop; 0x1035646D 5 ; jmp addr_10356481 ; skip annoying msg "sv reject. id_parent ..." 0x10356481 8 ; part2: mov ebx,10h; nop; nop; nop; 0x10355D85 5 ; jmp addr_10355D9B ; skip annoying msg "sv destroy object ..." 0x103B8DEB 5 ; jmp addr_103B8DFF ; skip annoying msg "[16-9] get_xml_name for ..." 0x1004C3D2 5 ; jmp release_fix ; при попытке удалить объект два раза через alife():release() игра теперь вылетает 0x101477AF 6 ; отключение проверки при выкидывании из ящиков скриптовой функцией CScriptGameObject::DropItem 0x102042FD 6 ; активировать 8-й слот (детекторы) 0x1026C525 5 ; jmp car_fix ; скриптовый колбек на подрыв (смерть) машины 0x10269391 5 ; jmp car_panel_fix ; врезка для управления видимостью панели машины 0x103FB34F 5 ; jmp cuiwindow_fix ; скриптовые методы в класс CUIWindow 0x102C4632 5 ; jmp ctime_fix ; скриптовые методы в класс CTime 0x101398CD 5 ; jmp matrix_fix ; скриптовые методы в класс matrix 0x1045E73C 6 ; фикс имени скриптовой функции speed ;0x103C911D 5 ; тестовое слежение за закрытием диалога разговора ;0x10054AD7 7 ; фикс оффлайнового движения неписей ;0x1005568F 5 ; jmp mmm_fix ;0x1023CC8E 5 ; jmp wpn_stat_mgun_fix ; попытка фикса станкового оружия ;0x1023CBDA 5 ; jmp wpn_stat_mgun__upatecl_fix0 ;0x1023D870 5 ; jmp wpn_stat_mgun__cam_update_fix 0x10146D00 5 ; jmp disable_info_portion_fix ; убираем лишние действия при выключении уже выключенной инфопорции ;0x10221D75 12 ; блокирование кривого движкового переключения гранат (включаем только если имеем альтернативную скриптовую схему) ; ========================================================================================= ; !!! кастомную заливку можно включать, когда имеем альтернативную скриптовую обвязку !!! ; А то в окне торговли станут невидимыми квестовые предметы раньше подсвечиваемые красным (примечание by Macron). ;0x103BF3C7 5 ; jmp CUITradeWnd__FillList_fix ; кастомная заливка предметов в окне торговли ;0x103CBF49 5 ; jmp CUICarBodyWnd__UpdateLists_fix ; кастомная заливка предметов в окне обыска ящиков ; !!! ручное управление можно включать, когда имеем альтернативную скриптовую обвязку !!! ;0x103BE8C0 5 ; jmp CUITradeWnd__CanMoveToOther_fix ; ручное управление торгуемостью предметов ;0x10416E89 5 ; jmp CUIInventoryCellItem__EqualTo_fix ; ручное управление группируемостью предметов ; ========================================================================================= ; выводит в лог информацию типа "finished creating object" и т.п. (примечание by Macron) ;0x101AC832 5 ; jmp CLevel__g_sv_Spawn_fix ; отладочное сообщение о начале создания объекта ;0x101AC95A 5 ; jmp CLevel__g_sv_Spawn_fix2 ; отладочное сообщение о завершении создания объекта ;0x1020921F 5 ; jmp CInventoryItem_constructor_fix ;0x102094A8 5 ; jmp CInventoryItem_destructor_fix 0x104A067C 4 ; замена пустого виртуального метода Projector::Hit на наш 0x104760D4 4 ; CAI_Stalker__IsVisibleForZones 0x10118C50h 5 ; jmp CAI_Stalker__feel_touch_new_fix ;0x102196C7 5 ; jmp CWeapon__UpdateFireDependencies_internal_dbg_fix2 - отладка ;0x1021846B 5 ; jmp CShootingObject__RenderLight_dbg_fix2 - отладка ;0x10412EB0 5 ; jmp scroll_vew_fix ;0x101E2FC5 5 ; jmp CEntityCondition__UpdateConditionTime_dbg ;0x102A0848 5 ; jmp game_GameState__GetGameTime_dbg_fix ;0x102D5A00 5 ; jmp game_sv_Single__GetGameTime_dbg_fix ;0x102A0900 5 ; jmp game_GameState__SetGameTimeFactor_dbg_fix ;0x102A0940 5 ; jmp game_GameState__SetGameTimeFactor__INT64_float_dbg_fix ; восстанавливает солнечный диск, но могут заглючить скриптовые выбросы/погода (примечание by Macron) ;0x102AC460 5 ; jmp game_cl_GameState__net_import_GameTime_dbg_fix ;0x1020CFD1 5 ; jmp CInventoryOwner__OnEvent_dbg_fix ;0x1020D3F5 5 ; jmp near CInventoryOwner__TransferInfo_omit_event_send ;0x10253E2B 40 ; searchlight__turn_on ;0x10272746 8 ; попытка фикса вылезания из машины ;0x100681C6 5 ; call CALifeStoryRegistry__add - экспериментальные отладочные фиксы ;0x10068158 5 ; jmp CALifeSimulatorBase__register_object_debug_fix - аналогично ;0x1025828A 5 ; jmp CCustomZone__feel_touch_contact_dbg_fix ;0x10056370 5 ; jmp CGameGraph__distance_fix ;0x102065B7 9 ; jmp loc_1020663C_return_true ; фикс инвентаря часть 1 ;0x1020432D 5 ; jmp CInventory__CInventory_fix ; фикс инвентаря часть 2 ;0x102046B1 5 ; jmp CInventory__Take_fix ; фикс инвентаря часть 3 ;0x10204ED4 5 ; jmp CInventory__Ruck_fix ; фикс инвентаря часть 4 ;0x10204A57 5 ; jmp CInventory__DropItem_fix ; фикс инвентаря часть 5 ;0x102D5B17 5 ; jmp time_fix_jmp_label ;-------------- тест камеры машины ;0x1026F96E 5 ; jmp CCar__cam_Update_fix ;0x1026F820 5 ; jmp CCar__cam_Update_fix0 ; замена камеры машины ;-------------- end ;0x101DE76F 6 ; fdiv ds:g_fov ;0x1023B20D 8 ; divss xmm0, ds:g_fov ;0x1027401D 8 ; divss xmm0, ds:g_fov ;0x10287828 8 ; divss xmm0, ds:g_fov 0x1021CA2F 5 ; jmp UpdateAddonsVisibility_lab 0x1021CA37 5 ; jmp UpdateAddonsVisibility_fix 0x1021C632 5 ; jmp UpdateHUDAddonsVisibility_fix ;0x1021B80F 6 ;0x100138F0 5 ; jmp CHitMemoryManager__add3_fix ;0x101A6DC0 5 ; jmp call_mouse_move_callback ; восстановление работы параметр virtual_size для ламп 0x101F267F 5 ; jmp CHangingLamp__net_Spawn_fix ; добавляет новые флаги в объект лампы - flVolumetric, flUseFlare ; можно использовать, только когда оно действительно надо, иначе возможны вылеты ;0x101F269A 5 ; jmp CHangingLamp__net_Spawn_fix_2 0x101E1180 5 ; jmp CEntityAlive__Hit_fix ;0x101DFA30 5 ; jmp CEntity__Hit_fix ;0x10015B4E 5 ; убираем фейковый хит из менеджера памяти ;0x101E1189 3 ; sub esp, 50h ; 3 байта 0x101E35EC 4 ; убираем степень двойки иммунитета пси-хита ; скриптовый колбек на предиспользование предмета 0x1020616D 5 ; jmp CInventory__Eat_fix 0x1019FFA0 5 ; jmp [CEffectorZoomInertion__Process] ; rus_phantom aka _призрак_ 0x103BFF64 5 ; скриптовый колбек на выделение контакта в ПДА во вкладке "Контакты" 0x103E5C6E 5 ; добавляет в xml параметры adjust_height_to_text и adjust_width_to_text ; использование патронов на поясе 0x10205D71 5 0x1021C266 5 ; использование гранат на поясе 0x10221BFD 5 0x10221C2C 5 0x10205F1B 5 0x10222067 5 0x10221C58 2 0x10221B93 5 ; новые слоты в инвентаре (нож, бинокль, фонарь) ;0x103BA6AD 5 ;CUIInventoryWnd__Init__ ;0x103BBD8D 5 ;CUIInventoryWnd__InitInventory__ ;0x103BC590 5 ;CUIInventoryWnd__GetSlotList ;0x103BC5E0 5 ;CUIInventoryWnd__ClearAllLists ;0x10204311 5 ;CInventory__Init__ отключение худа слотов ;0x1042AA44 5 ;память под объект CInventory ;0x1042B8A8 5 ;память под объект CInventory ;0x10206C02 3 ;количество слотов в xr_vector_CInventorySlot_xalloc_CInventorySlot____resize ;0x10206C1F 5 ;количество слотов в xr_vector_CInventorySlot_xalloc_CInventorySlot____resize ;0x10206C35 6 ;количество слотов в xr_vector_CInventorySlot_xalloc_CInventorySlot____resize ;0x10206951 6 ;количество слотов в CInventory__SetSlotsBlocked ; учет предмета в шлемовом слоте при расчете хита актору (включать, если есть слот шлема) ;0x101C9B80 5 ; включение сетки под броней в инвентаре ;0x103BD9E0 5 ;0x103BD592 5 ; тень ГГ на R2 (требует также включения в рендере) 0x101C85CF 6 ; jmp CActor__Update_fix 0x101C8946 5 ;kstn--------------> ;Перекл. на болт + откл/вкл колеса мышки для переключения м/у слотами ;0x101DEEA0 7 ; jmp CActor__OnNextWeaponSlot ;0x101DEF40 7 ; jmp CActor__OnPrevWeaponSlot ;Инверсия колеса мышки для смены оружия ;0x101DE3F2 6 ; CActor__IR_OnMouseWheel ;0x101DE400 6 ; CActor__IR_OnMouseWheel ;Коллбэк актора на выделение предмета в инвентаре 0x103E1B28 5 ; jmp CUIItemInfo__InitItem_EXT_CHUNK ;Исправление растянутых иконок подбираемых предметов на 16:9 ;0x103D24BB 6 ; jmp CUIMainIngameWnd__UpdatePickUpItem_EXT_CHUNK ;Исправление растянутых иконок патронов в ui актора на 16:9 ;0x103D0D70 6 ; jmp CUIMainIngameWnd__SetAmmoIcon_EXT_CHUNK ;Исправление статистики в КПК (Вариант 1: расчёт по очками) ;0x101AE902 3 ;Исправление статистики в КПК (Вариант 2: расчёт по штукам) ;0x101AE8FD 8 ;0x104C5118 4 ;------------------< ; скриптовые методы в CUIListWnd 0x10420423 5 ; jmp CUIListWnd__script_register_fix ; поддержка русского языка в поле ввода (язык переключается функцией set_input_language(0/1)) 0x103F5F3A 5 ; jmp CUICustomEdit_fix 0x103F4B21 5 ; jmp CUICustomEdit__KeyPressed_fix 0x103F4CCD 5 ; jmp CUICustomEdit__KeyPressed_fix_1 0x103F4CE6 5 ; jmp CUICustomEdit__KeyPressed_fix_2 0x103F4CFF 5 ; jmp CUICustomEdit__KeyPressed_fix_3 0x103F4D15 5 ; jmp CUICustomEdit__KeyPressed_fix_4 0x103F4D60 5 ; jmp CUICustomEdit__KeyPressed_fix_5 0x103F4D79 5 ; jmp CUICustomEdit__KeyPressed_fix_6 0x103F4D47 5 ; jmp CUICustomEdit__KeyPressed_fix_7 ; скриптовые методы в CUITrackBar 0x1040B935 5 ; jmp CUITrackBar_fix ; ??? 0x103D7BC4 5 ; jmp CUIOptionsItem__SaveOptFloatValue_fix 0x1040E540 5 ; jmp CUIComboBox__SaveValue_fix ; вырезаем кривой постэффект контролёра ;0x100E15A4 5 ; jmp CController__CController_fix ;0x100E21A6 5 ; jmp CController__Load_fix_lab1 ;0x100E2BC4 5 ; вырезаем вызов CControllerAura__update_frame ;0x100E2C21 5 ; вырезаем вызов CControllerAura__update_schedule ;0x100E2C43 5 ; jmp loc_100E2C77 ;0x100E2C99 5 ; jmp loc_100E2CCD ; вырезаем эффект приближения камеры ;0x1019C4C3 10 ; jmp loc_1019CCFD ; скриптовые методы в CUIComboBox 0x1040EF76 5 ; jmp CUIComboBox_fix ; исправляеем феерический баг движка в функции CUIComboBox::SetListLength 0x1040DF6A 5 ; jmp loc_1040DFA5 ; добавляем свои опции, требующие рестарта видео (после нажатия кнопки "Применить" в окне опций или после ввода команды vid_restart) 0x103D7C60 5 ; jmp CUIOptionsItem__SaveValue_fix ; убираем столбец дополнительных назначений клавиш в окне опций управления ;0x103DF607 5 ; jmp no_alternative_keyboard_binding ;0x103DF1A6 5 ; jmp no_third_optins_row ; добавление скриптовых свойств в класс CSE_Abstract 0x102EA535 5 ; jmp CSE_Abstract__script_register_fix ; затычка на вылет "по xrServer::Process_event_reject ... e_parent && e_entity" 0x10356433 5 ; jmp xrServer__Process_event_reject_fix ; скриптовые методы в класс CSE_ALifeObject 0x102F3663 5 ; jmp CSE_ALifeObject__script_register_fix ; дебаговый фикс для трассировки скриптовых хитов ;0x10141C60 5 ; jmp CScriptGameObject__Hit_dbg_fix ; управление инерцией худа из скриптов ;0x1024DCDC 8 ;0x1024DCFA 8 ; ========================================================================================= ; ========================= added by Ray Twitty (aka Shadows) ============================= ; ========================================================================================= ; ====================================== START ============================================ ; ========================================================================================= 0x103581CE 8 ; для работы консольной команды ph_gravity 0x103CC560 2 ; костыль от вылета при юзе предмета из трупа (часть 1) [Cut X-Ray] 0x103CC564 2 ; костыль от вылета при юзе предмета из трупа (часть 2) [Cut X-Ray] 0x103CC56A 5 ; костыль от вылета при юзе предмета из трупа (часть 3) [Cut X-Ray] 0x103F12C5 5 ; регистрация скрипт. методов в классе CUIStatic 0x103BB997 5 ; скрипт. коллбек на дроп предмета из интерфейса инвентаря 0x103E0123 5 ; фикс статика биографии в ПДА, в "Рангах" 0x103E0D97 5 ; убираем из описания ножей прогресс-бары оружия ; требует дополнительных секций в xml, иначе будут вылеты при обращении к PDA/карте (примечание by Macron) ;0x103C0D87 5 ; фикс выдачи инфо во вкладках ПДА (часть 1) ;0x103C0E05 5 ; фикс выдачи инфо во вкладках ПДА (часть 2) ;0x103DBC23 5 ; выдача инфо при переключ. между "описанием задания" и "картой" во вкладке "Задания" (часть 1) ;0x103DA737 5 ; выдача инфо при переключ. между "описанием задания" и "картой" во вкладке "Задания" (часть 2) 0x101C6D69 5 ; скрипт. коллбек на появление хитэффектора на экране (часть 1) 0x1007DC5B 5 ; скрипт. коллбек на появление хитэффектора на экране (часть 2) 0x104BD2DC 1 ; убираем из лога сообщения "!SV:ge_destroy: [%d] not found on server" ;0x1024DB00 10 ; инерция во время прицеливания из оружия ;0x1044D15E 6 ; круглый курсор, как в билдах [Cut X-Ray] ;0x101C43F8 2 ; исправление вида от 3-го лица (часть 1) [Cut X-Ray] ;0x101D20B0 2 ; исправление вида от 3-го лица (часть 2) [Cut X-Ray] ;0x10017E9B 6 ; шкала "освещения ГГ" вместо шкалы "заметности ГГ", как в билдах (часть 1) [Cut X-Ray] ;0x103D09CF 3 ; шкала "освещения ГГ" вместо шкалы "заметности ГГ", как в билдах (часть 2) [Cut X-Ray] ;0x10269AE2 4 ; руки на руле в машине (часть 1) [Cut X-Ray] ;0x1026F808 3 ; руки на руле в машине (часть 2) [Cut X-Ray] ;0x1026F9A7 2 ; руки на руле в машине (часть 3) [Cut X-Ray] ;0x1026F9B6 2 ; руки на руле в машине (часть 4) [Cut X-Ray] ;0x1044CC94 6 ; выключение распознавания неписей перекрестием прицела [Cut X-Ray] ;0x101407F3 2 ; возможность использовать скрипты в мультиплеере (включение биндеров) [Cut X-Ray] ; еще в config\mp\mp_actor.ltx в секцию [mp_actor] надо добавить строчку: script_binding = bind_stalker.actor_init (примечание by Macron) ;0x101D922B 5 ; измененная анимация безоружного ГГ "_torso_0_aim_0"->"_torso_5_aim_0" [Cut X-Ray] ;0x103CAD20 6 ; увеличение дистанции диалога до 150 метров [Cut X-Ray] ;0x10491C28 4 ; возможность поднимать болты как обычные инвентарные предметы [Cut X-Ray] ;0x1044CB92 3 ; замена стандартного шрифта под прицелом на билдовский "DI" ;0x10147737 2 ; фикс скриптового метода unload_magazine - теперь патроны разряжаются в инвентарь ;0x101DE150 6 ; отключение использования аптечек и бинтов быстрыми клавишами ; в сингле нормально, а в мультиплеере будут глюки при слезании с подствольником с лестниц (примечание by Macron) ;0x1022A155 2 ; включение миксовки анимаций у оружия с подствольником (часть 1) ;0x1022B4F9 2 ; включение миксовки анимаций у оружия с подствольником (часть 2) ;0x1022B66E 2 ; включение миксовки анимаций у оружия с подствольником (часть 3) ;0x1022B6A4 2 ; включение миксовки анимаций у оружия с подствольником (часть 4) ;0x1022B847 2 ; включение миксовки анимаций у оружия с подствольником (часть 5) ;0x101BB9B7 5 ; замена текстуры трассера "fx\fx_tracer"->"effects\bullet_tracer" ; ========================================================================================= ; ======================================= END ============================================= ; ========================================================================================= ; ======================== Cut X-Ray start ============================ 0x10443CED 8 ; предотвращение вылета при невключении ствола в mp_ranks 0x101C748C 10 ; смерть от первого лица 0x103917B5 5 ; коллизия трупов для ГГ 0x101CF1DF 5 ; запрет на использование любого оружия в машине и на лестнице (часть 1) 0x1053E810 4 ; запрет на использование любого оружия в машине и на лестнице (часть 2) ;0x102340FA 2 ; из оружия на классе бинокля можно стрелять (часть 1) ;0x10495448 4 ; из оружия на классе бинокля можно стрелять (часть 2) ; ========================= Cut X-Ray end ============================= ; ========================================================================================= ; by Real Wolf 0x10258840 5 ; Скриптовый коллбек (128 для CCustomZone) аномалии на хит живого объекта. 0x10258CD1 5 ; Скриптовый коллбек (128 для CCustomZone) аномалии на хит неживого объекта. 0x102485D4 6 ; Скриптовый коллбек (134 для CTorch) на переключение состояния фонарика. 0x1006CA0A 5 ; Исправление вылета при дублировании story id и вывод самого айди в лог. 0x103CADB8 5 ; Исправление невыдачи инфопоршня при закрытии окна разговора. 0x1014369F 5 ; Скриптовый коллбек (135 для CAI_Stalker), который вызывается после вызова функции set_dest_level_vertex_id. 0x1008F72D 2 ; Исправление вылета f73e xrGame, возникающем при разрушении в аномалии CPhysicDestroyableObject. 0x101DF1D5 5 ; Скриптовый коллбек (137 для CActor) на посадку в машину. 0x101DF2AA 5 ; Скриптовый коллбек (139 для CActor) на выход из машины. 0x101DF506 6 ; Скриптовый коллбек (138 для CActor) на использование (но не посадку\выход) машины. Проверку на дистанцию делать в скриптах. ;0x104A5B84 1 ; Отключение вывода в лог "* Log file has been saved successfully!". ;0x104A5BAC 1 ; Отключение вывода в лог "* Log file has been cleaned successfully!". 0x1048C3C4 1 ; Отключение вывода в лог "Destroying local grenade[%d][%d]". 0x10418330 5 ; Скриптовый коллбек (136 для CActor) на создание объекта CUICellItem. Передается игровой объект. Статик получать в коллбеке 0x103FAD40 5 ; через подмененную функцию CUIFramWindow():GetTitleStatic() 0x103F0D18 5 ; Скриптовый коллбек (141 для CActor) на получение фокуса объектом CUICellItem. Использование аналогично приведенному выше. 0x103F0D50 5 ; Скриптовый коллбек (142 для CActor) на потерю фокуса объектом CUICellItem. Использование аналогично приведенному выше. 0x1006A189 5 ; Скриптовый коллбек (140 для CActor), вызываемый сразу после сохранения игры. ; Артефакты работают из всего инвентаря (рюкзак, слоты, пояс). 0x101C9A71 6 0x101C9B6F 3 ; Правку "0x101C9B80 5 ;учет предмета в шлемовом слоте при расчете хита актору" НЕ СТОИТ включать, ; поскольку движок при хите сам учтет предметы на классе артефакта, так как теперь он учитывает и слот, и сам рюкзак. 0x101C9B95 6 0x101C9C12 3 0x1044D5A3 6 ; Регулирование чувствительности мыши в UI через консольную команду mouse_ui_sens. ; ========================================================================================= ; замена шейдера текстур прицелов на шейдер hud\scope ;0x10227C07 5 ;0x10227D2D 5 ; принудительная очистка пула моделей при завершении игры (полезно, чистит память) 0x101A8C9D 2 ; фикс для исправления соотношения сторон CUIStatic ; для работы, необходимо вызвать в _g.script - set_static_rescale_factor(device().height / device().width / 0.75) ; иначе изменений не увидите 0x103EDEE6 5 ; jmp CUICustomItem__Render_fix ; хак для более корректного учета бронебойности патронов (требуется правка конфигов патронов) ;0x1024BEF7 5 ; затычка от вылета в деструкторе CGameObject 0x101E6505 5 ; исправление неотключения света при выключении аномалии 0x10257BA4 5 ; экспорт состояния включенности для источника света фонаря актора ;0x101DE0A2 5 ; фикс сброса положения скролла при перекладывании вещей в окне обыска (CUICarBodyWnd) 0x103CC100 5 ; отладка анимок ;0x10076229 5 ;0x100762BB 5 ;0x100762CC 5 ;0x100FA47B 5 ; фикс вылета по отсутствию анимации критического хита 0x100FF264 5 ; отключение периодических автосейвов (отключено, потому что игра не становилась на паузу, и после этого отваливалась логика у объектов) ;0x101BE8C0 3 ; фикс вылета there is no proper graph point neighbour 0x100563A5 1 0x10056920 5 ; отключение движкового удаления патронов из неписей после смерти 0x100FA371 6 ; флаг в объекте оружия для принудительного отключения текстуры прицела 0x1022B3C0 5 ; jmp CWeaponMagazinedWGrenade__UseScopeTexture_fix ; замена дефолтовых виртуальных методов CWeapon__UseScopeTexture для всех остальных классов ;0x1048ADD4 4 ;0x1048B7E4 4 ;0x1048BF0C 4 ;0x1048D1E4 4 ;0x1048F47C 4 ;0x1048FA4C 4 ;0x10490144 4 ;0x1049118C 4 ;0x1049175C 4 ;0x104921AC 4 ;0x1049278C 4 ;0x1049325C 4 ;0x10493E04 4 ;0x104943D4 4 ;0x10494994 4 ;0x10494F6C 4 ;0x10495554 4 ;0x10495C14 4 ;0x104961FC 4 ;0x104967C4 4 ;0x10496E0C 4 ; фикс аттача двух вещей неписям ;0x10207DF1 1 ; исправление формулы рассчёта статистики убийств в КПК ;0x10203430 4 ; фикс сброса визуала актора (чтобы выбрасываемый костюм не оставался на игроке при виде с внешней камеры - примечание by Macron) ;0x1024C2D2 5 ;0x102049E1 5 ; отключение квиксейва (потому что игра не становилась на паузу, и после этого отваливалась логика у объектов) ;(Пока проблем с квиксейвами не замечал, может от конкретного мода зависит? - примечание by Macron) ;0x101A7081 1 ; фикс очистки базы отношений (требуется скриптовая обвязка) ;0x1005C7F8 5 ;0x10213AFD 5 ; фикс вылета по анимке критхита для анимслотов > 3 ;0x100FF284 5 ; масштабирование scope_zoom_factor в зависимости от текущего fov 0x1021CA90 5 0x1022B3F0 5 0x10234380 5 0x102343F0 5 ; фикс вылета при активации артефактов, не использующих lvid и gvid 0x102413C0 5 я что то забыл врубить, или лучше что то отключить? ... А наше дело маленькое - с ружьём да по болотам. (с) Ссылка на комментарий
RayTwitty 508 Опубликовано 16 Ноября 2015 Поделиться Опубликовано 16 Ноября 2015 я что то забыл врубить, или лучше что то отключить? Лучше ничего не трогать и использовать дефолтную конфигурацию из официального репозитория. В твоем что-то опять понахреначили, поди разбери. https://github.com/KD87/xray-extensions/archive/master.zip Ссылка на комментарий
Max_Raf 35 Опубликовано 16 Ноября 2015 Поделиться Опубликовано 16 Ноября 2015 (изменено) @RayTwitty, спасибо большое за ответ. Задам такой вопросец для уточнения: можно ли закидывать старый (из мода) xrGame.dll и его патчить правками? Или же обязательно нужен исходный файл из оригинала перед пропатчиванием? П.С. Еси чо уточню по тому что выше: corrections_list.txt выше я изменял сам, мб от того и белиберда. Но дефолт у меня не сработал. Пробовал патчить файл, который уже был в SVN_portable_r232, и тот что в моде. И так и так не вышло. Щас попробую то, чем вы поделились. АПД. Нашёл ответ на глупый вопросец. По вылету: не помогло. ИМХО какая то новая правка не дружит со старыми скриптами. Искать какая - это перебирать всё. И тем более ещё сложней потому, что я не знаю какие были правки включены изначально в мод и хз как узнать. Вероятно лучше автора мода спросить. Был бы не против узнать, от чего данный вылет может быть, чтобы методом тыка вырубить то, что мешает. Изменено 16 Ноября 2015 пользователем Max_Raf ... А наше дело маленькое - с ружьём да по болотам. (с) Ссылка на комментарий
Это популярное сообщение. Malandrinus 615 Опубликовано 18 Ноября 2015 Автор Это популярное сообщение. Поделиться Опубликовано 18 Ноября 2015 Прошу обратить внимание! Я добавил в проект xrGame для ТЧ (это который в папке master/3312_shoc_10006) систему конфигурирования патча. В двух словах: В папке tools добавлен инструмент GPP.exe и описание к нему. Это текстовых препроцессор общего назначения, в целом напоминающий препроцессор от С/С++. Ежели кому интересно, подробнее здесь. Созданы две конфигурации: general и OGSE. Батник патчера patch.cmd соответственно изменён и добавлен второй patch_ogse.cmd. Также добавлены два файла с опциями каждой из конфигураций: config_general.txt и config_ogse.txt. Файл corrections_list.txt тоже изменён. Ряд патчей в нём обнесены условной конструкцией #ifdef <СИМВОЛ> ... #endif. Соответственно, <СИМВОЛ> должен быть определён как #define <СИМВОЛ> в соответствующем файле конфигурации (config_general.txt или config_ogse.txt). Смысл всего этого в том, чтобы менять конфигурации патча без изменений кода. Предлагается те патчи, что не нужны конкретно вам, оформлять так, как описано выше в виде условной конструкции и включать/выключать его в своём файле конфигурации. К слову сказать. Было бы неплохо, чтобы разработчики и не свои фрагменты ассемблера тоже не комментировали, при необходимости их удалить из своей сборки (и так и коммитили), а оформляли в виде условного блока. В ассемблере для этого уже есть свой препроцессор. Это вообще правильный стиль при совместной разработке. Соответственно, аналогичные конфигурации можно было бы сделать и для стадии компиляции, а не только патча. PS: Надо было это сделать сто лет назад. PS2: git - отстой, сильно переусложнён и избыточен для целей этого проекта. Ещё хочу уточнить несколько моментов по процессу сборки и заодно напомнить тем, кому интересно, как это всё работает: Для сборки я в своей практике использую файлы make_src_dll.cmd, patch*.cmd, clean.cmd которые находятся в папке проекта. clean.cmd - это необязательный файл, который просто чистит временные файлы. Можете его игнорировать. Процесс сборки я обычно делаю в два этапа: сперва make_src_dll.cmd, затем patch*.cmd. make_src_dll.cmd - выполняет сборку dll-заготовки с патчами и секцией нашего кода. Он сперва вызывает ml.exe и компилирует файл mydll.asm, который на самом деле включает в себя инклюдами все остальные файлы. Затем собирает dll линковшиком link.exe. Поскольку все ошибки обычно возникают на этом этапе, то я специально поставил в конце этого батника pause, чтобы видеть ошибки компиляции, если таковые случаются. patch*.cmd выполняет несколько действий: В версии с конфигурацией (на данный момент только xrGame для ТЧ) первым действием является вызов tools\gpp.exe, который на основе нужной конфигурации сгенерирует из corrections_list.txt временный файл corrections_list_tmp.txt, т.е. урезанный список патчей. В остальных проектах файл corrections_list.txt используется без изменений Далее вызывается tools\bspatch.exe, который из файла xrGame_orig.dll и xrGame.diff, собирает файл xrGame.dll, который представляет собой чистую dll из игры с добавленной секцией для нашего кода. Вообще говоря, с технической точки зрения этот шаг не является обязательным. Вы у себя можете собрать эту dll раз и навсегда и вырезать этот фрагмент из батников. Сделано это было для того, чтобы не включать в проект проприетарные файлы (по этой же причине не включены ассемблер и линковщик). Наконец, собственно вызывается патчер tools\patcher.exe, который переносит патчи из dll с патчами в целевую с добавленной секцией в соответствии со списком патчей из файла corrections_list.txt (или временного corrections_list_tmp.txt) Ряд замечаний: 1. Если вы понимаете происходящее, то ничто не мешает настроить процесс сборки по-своему, например за один клик без пауз, пересоздания чистой dll и т.д. 2. Касательно версий исполняемых файлов, не включённых в проект. Чистая DLL, которая должна лежать в проекте xrgame ТЧ под именем xrGame_orig.dll - это файл от американской версии игры. Имеет размер 6246400 байт. Ассемблер (ml.exe) нужен версии не ниже 10-й. Берём его из Visual Studio. Линкер (link.exe), к моему удивлению, оказался нужен именно старый от MASM32 (версия 5). Я как-то не заморачивался на его замену, но недавно поэкспериментировал и с удивлением выяснил, что более новые версии вызывают смещение секций, которые не учитывает наш патчер. В итоге ничего не работает. 4 1 4 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
phorumer 3 081 Опубликовано 18 Ноября 2015 Поделиться Опубликовано 18 Ноября 2015 (изменено) Платформа ТЧ. Включил дополнительные слоты (бинокль, нож, фонарик). Подправил inventory_new_16.xml и inventory_new.xml, а также соответствующие текстуры. Всё нормально отображается. Одна проблема - при попытке перемещения в эти слоты путем двойного щелчка на соответствующие предметы происходит вылет типа stack trace, а перетягивание вообще не работает. Также не появляется опция "убрать в рюкзак" для предметов в новых слотах. Вопрос: какие еще нужны телодвижения для нормальной работы новых слотов? UPD: Предыдущий вопрос снимается. Нужно было еще править system.ltx Изменено 18 Ноября 2015 пользователем phorumer Ковыряем "Новый Арсенал" Ссылка на комментарий
Max_Raf 35 Опубликовано 18 Ноября 2015 Поделиться Опубликовано 18 Ноября 2015 Такой вопрос: кто-нибудь знает, какая правка отвечает за подсветку предметов в инвентаре? Точнее ищу правку, отвечающую за метод: ... static:SetColorMask(GetARGB(255, 255, 255, 100) ) ... ... А наше дело маленькое - с ружьём да по болотам. (с) Ссылка на комментарий
RayTwitty 508 Опубликовано 18 Ноября 2015 Поделиться Опубликовано 18 Ноября 2015 (изменено) @Malandrinus, 1. Можно ли использовать уже существующие дефайны, которые лежат в defines.asm (например OGSE_BUILD), для corrections_list? 2. Я думаю, имена дефайнов должны быть написаны, хотя бы с разделением на слова: DLGDISTFIX -> DLG_DIST_FIX. Первый вариант совершенно не воспринимается. 3. Наверно, стоит убрать файлы конфигов в подпапку configs (3312_shoc_10006\configs\), дабы не искать постоянно их в списке всех файлов. кто-нибудь знает, какая правка отвечает за подсветку предметов в инвентаре? Точнее ищу правку, отвечающую за метод:Такого метода в проекте нет. Для окна торговли и обыска есть правка, которая управляет заливкой (можно например сделать, чтобы предметы в слотах подсвечивались зеленым). Для этого, правку нужно активировать и написать скриптовую обработку закраски. А что касается окна инвентаря - в моде LWO (который использует тоже ХЕ) есть закраска патронов для выбранного оружия (как в ЗП) - сделано достаточно заморочено, но разобраться можно. Насколько я помню, там во время заполнения инвентаря вызывается колбек, в который передается указатель на объект иконки (окна) и самого объекта, после чего с ними можно нормально работать (перекрасить, приаттачить что-нибудь или даже заменить текстуру). Полный хак кароче. Изменено 18 Ноября 2015 пользователем RayTwitty 2 Ссылка на комментарий
dsh 3 824 Опубликовано 18 Ноября 2015 Поделиться Опубликовано 18 Ноября 2015 Для этого, правку нужно активировать и написать скриптовую обработку закраски. Может у тебя есть точно работающий пример? Я попробовал закраску сделать - никакого эффекта. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
RayTwitty 508 Опубликовано 18 Ноября 2015 Поделиться Опубликовано 18 Ноября 2015 Может у тебя есть точно работающий пример? Я попробовал закраску сделать - никакого эффекта.Посмотри ogse_trade_precondition.script. Не самая идеальная реализация, тем не менее суть понять можно: 1) Для каждого инвентарного предмета добавили параметры закраски, группировки и торгуемости. 2) Создается таблица (для закраски): индекс цвета = код цвета. 3) При открытии инвентаря, изменяем новые параметры так, как нам надо и получаем результат. Например, задаем закраску тех предметов, которые в слотах. Ссылка на комментарий
dsh 3 824 Опубликовано 19 Ноября 2015 Поделиться Опубликовано 19 Ноября 2015 @RayTwitty,спасибо Кэп Именно этот модуль я и использовал. Никакого эффекта. В OGSE он не используется, т.ч. я даже не могу быть уверен, что в нём нет каких-нибудь ошибок или неточностей. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Malandrinus 615 Опубликовано 19 Ноября 2015 Автор Поделиться Опубликовано 19 Ноября 2015 (изменено) Я как-то пропустил тот факт, что в ассемблере уже сделаны определённые попытки конфигурирования. Это хорошо, что сделаны, но есть замечания, которые излагаю ниже. Можно ли использовать уже существующие дефайны, которые лежат в defines.asm (например OGSE_BUILD), для corrections_list? Разный синтаксис дефайнов, так что наверное затруднительно. Да и ни к чему это, как мне кажется. Список отключаемых элементов в списке патчей и в файлах ассемблера совершенно никак не связаны, поэтому лучше сделать выбор глобальной конфигурации путём выбора исполняемого файла для сборки, а там уже по отдельности включать конфигурации ассемблера и патчера. В ассемблере, к слову сказать, я бы сделал примерно по такой же схеме, как и в патчере. Т.е. делать условные блоки конкретных фрагментов не на основе принадлежности к моду, а конкретно для каждой фишки. А уже набор для мода формировать в некоем файле конфигурации по более глобальному условию выбора конфигурации. Поскольку как сейчас выходит, что какая-то фишка включается только в составе общего пакета фишек для мода, а если кому-то нужно включить её по отдельности, то опять надо лезть в основной код, чего хотелось бы избежать. Вот ещё к этому вопросу. В ассемблере ml.exe, как и в препроцессоре gpp, можно в аргументах командной строки определять символы препроцессора. Как-то так /DOGSE_BUILD. Так что выбор конфигурации тоже можно делать, не меняя код. имена дефайнов должны быть написаны, хотя бы с разделением на слова: Согласен, уродливо получилось, руки дойдут - поправлю. Вообще-то здесь "длинных_мнемоничных_имён" не напасёшься. Более продуктивно будет комментировать опции в файле конфигурации. стоит убрать файлы конфигов в подпапку configs (3312_shoc_10006\configs\), дабы не искать постоянно их в списке всех файлов. Ну, тогда уж надо выносить в отдельную папку все файлы, связанные с билдом: список патчей, заготовку под dll и diff-файл, все батники и прочее. Лично у меня уже батник для сборки не найти, поскольку список исходников сильно длиннее окна TC. Именно этот модуль я и использовал. Никакого эффекта. В OGSE он не используется, т.ч. я даже не могу быть уверен, что в нём нет каких-нибудь ошибок или неточностей. Так а что мешает подключить и посмотреть на эффект? Изменено 19 Ноября 2015 пользователем Malandrinus 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
dsh 3 824 Опубликовано 19 Ноября 2015 Поделиться Опубликовано 19 Ноября 2015 Так а что мешает подключить и посмотреть на эффект? Издеваешься, да? Я же пишу, именно его и использовал. Т.е. подключал, добавлял отладочный вывод, что бы убедиться, что все выполняется. Все выполняется, но в окне торговли и обыска никакой раскраски я не увидел. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
RayTwitty 508 Опубликовано 19 Ноября 2015 Поделиться Опубликовано 19 Ноября 2015 (изменено) Ну, тогда уж надо выносить в отдельную папку все файлы, связанные с билдом: список патчей, заготовку под dll и diff-файл, все батники и прочее.Это было бы неплохо, как собственно и создать нормальные общие батники, которыми могли бы пользоваться простые смертные. Кстати, ничего там не изменилось с правовым статусом link.exe и ml.exe? Может всё-таки стоит добавить их в репозиторий? У людей постоянно возникают проблемы, они не могут ничего скомпилить, ибо далеко не у всех есть VS и masm. Ситуация осложняется ещё и тем, что не все версии этих исполняемых файлов (по твоим же словам) подходят для линковки кода. Также, для работы всего этого требуется наличие установленных рантаймов, о чём тоже неплохо бы где-то упомянуть. Изменено 19 Ноября 2015 пользователем RayTwitty Ссылка на комментарий
Malandrinus 615 Опубликовано 19 Ноября 2015 Автор Поделиться Опубликовано 19 Ноября 2015 Все выполняется, но в окне торговли и обыска никакой раскраски я не увидел. Да, это кто-то закомментил правки на этот счёт, поэтому скриптовые действия, которые только ставят флажки с помощью хаков общего назначения, не работали. Я правки раскомментил, внёс в конфигурацию OGSE. Сейчас должно работать. У меня по крайней мере работает. Вот кстати зачем вообще было кому-то комментить эти правки? Я спецом сделал так, что без скриптовых манипуляций они никому не мешают, и всё ведёт себя по дефолту. В отличие от врезок, по большей части лишний ассемблерный код в дополнительной секции никому не мешает. Я бы и вовсе не заморачивался на его конфигурирование без крайней нужды. Ещё, создал там же батник для ассемблирования под конфигурацию ogse. Компилировать надо именно им, иначе немало всякого не попадёт в сборку. ничего там не изменилось с правовым статусом link.exe и ml.exe? Я этого не знаю. Сомневаюсь, что что-то изменилось. 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
RayTwitty 508 Опубликовано 19 Ноября 2015 Поделиться Опубликовано 19 Ноября 2015 (изменено) @dsh, Для этого, правку нужно активировать и написать скриптовую обработку закраски.А я ведь я писал об этом, чем вы читаете - неизвестно. Вот кстати зачем вообще было кому-то комментить эти правки? Я спецом сделал так, что без скриптовых манипуляций они никому не мешают, и всё ведёт себя по дефолту.Не правда, конкретно эта правка без скриптовой обвязки ведет к неправильному отображению списка в окне торговли\обыска. Если правка отключена - она либо недоработана, либо требует вмешательства в геймдату, либо слишком специфична (например "смерть от первого лица"). Если я правильно понял идею проекта, то его главная особенность именно в скриптовых расширениях, а уже потом в каких-то точечных геймплейных правках, которые зачастую, нужны только определенному моду. Скриптовые правки, как правильно было замечено, не требуют каких-то лишних телодвижений - они есть и всё, каждый использует то, что ему нужно. Их никто не трогал. Изменено 19 Ноября 2015 пользователем RayTwitty Ссылка на комментарий
Malandrinus 615 Опубликовано 19 Ноября 2015 Автор Поделиться Опубликовано 19 Ноября 2015 конкретно эта правка без скриптовой обвязки ведет к неправильному отображению списка в окне торговли\обыска Сдаётся мне, что ты это проверял очень давно. Там есть глобальные флажки, которые, если не включены, сводят код к его движковой версии. По умолчанию флажки все отключены, и без скрипта включить их некому. И кстати. Не самая идеальная реализация А как бы сделал ты? Если я правильно понял идею проекта, то его главная особенность именно в скриптовых расширениях, а уже потом в каких-то точечных геймплейных правках, которые зачастую, нужны только определенному моду. Хм. Да там половину незакомменченных правок можно отнести ко второй категории, да и по части "нужности" - это дело индивидуальное. Мне однако вообще непонятно ранжирование правок. Проект для всего. Что хотим, то и добавляем. Главное - друг другу не мешать. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
RayTwitty 508 Опубликовано 19 Ноября 2015 Поделиться Опубликовано 19 Ноября 2015 (изменено) Сдаётся мне, что ты это проверял очень давно. Там есть глобальные флажки, которые, если не включены, сводят код к его движковой версии. По умолчанию флажки все отключены, и без скрипта включить их некому.Перепроверил. Последняя ревизия, правки включены в движке. В скриптах убрал включение глобальных флагов (т.е. дб по нулям), убрал вызовы относящиеся к фиче, результат: http://rghost.ru/private/7H827RrkP/bfe541d734f5a2b1855c5cebed4d10a4 Не самая идеальная реализацияА как бы сделал ты? Я про скрипт говорил. А в движке без исходников не сильно чего придумаешь. Изменено 19 Ноября 2015 пользователем RayTwitty 1 Ссылка на комментарий
Malandrinus 615 Опубликовано 19 Ноября 2015 Автор Поделиться Опубликовано 19 Ноября 2015 @RayTwitty, ага, нашёл косяк. Спасибо за наводку. Хоть логика фильтрации и раскраски и отключена, но цвет подсветки по умолчанию всё равно берётся из первого элемента пользовательского массива цветов, а массив инитился из скрипта, т.е. там были нули (и соответственно полностью прозрачный цвет). Поэтому "покрасневшие" предметы были невидимы. Сейчас я там заполнил первый элемент, так что покрасневшие предметы не пропадают. Я про скрипт говорил Так и я про скрипт. Заметны какие-то косяки? 1 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
RayTwitty 508 Опубликовано 19 Ноября 2015 Поделиться Опубликовано 19 Ноября 2015 (изменено) Заметны какие-то косяки? На счет косяков не знаю, я скорее про структуру и количество вызовов говорил. В частности, обновление флагов для предметов достаточно делать в трех случаях - на событиях take\drop (при открытом окне обыска\торговли) и при открытии окна инвентаря\обыска\торговли для всех предметов сразу. Сейчас я там заполнил первый элемент, так что покрасневшие предметы не пропадают. Да, проверил - теперь всё нормально работает. Кстати, остался нерешенным вопрос с правкой 0x102AC460 5 ; jmp game_cl_GameState__net_import_GameTime_dbg_fix она как я понял, восстанавливает солнце, но вместе с этим, наблюдаются и баги (совершенно точно они происходят из-за этой правки): 1) зависание обновления погоды; 2) необновление каких-то элементов погоды (например свет и флары меняются, а скайбокс нет и наоборот); 3) странное поведение погоды между перезагрузками сейвов (загрузили другой сейв, а погода и час остались теми же). В общем, что-то с апдейтом там. Возможно, как-то связано с функцией set_ignore_game_state_update() которая вызывается в OGSE, но непонятно для чего. Изменено 20 Ноября 2015 пользователем RayTwitty Ссылка на комментарий
Malandrinus 615 Опубликовано 20 Ноября 2015 Автор Поделиться Опубликовано 20 Ноября 2015 обновление флагов для предметов достаточно делать в трех случаях - на событиях take\drop (при открытом окне обыска\торговли) и при открытии окна инвентаря\обыска\торговли для всех предметов сразу Фильтрация и подсветка зависит от положения предметов внутри инвентаря, а оно может измениться и после открытия. Поэтому делается глобальная обработка при открытии трупа/тайника и начале диалога, и также на каждый акт перемещения между частями инвентаря. Всё это в сущности разовые операции, да и сами операции - просто установки флажков, поэтому нет ничего криминального, если это случится два раза. остался нерешенным вопрос с правкой Здесь ситуация такая, что я сам понятия не имею, что реально делает эта правка. Помнится, долго ломал голову, как починить солнце, искал концы, наткнулся на странный фрагмент, который выглядел как некая заплатка. Методом научного тыка этот фрагмент вырезал, и вдруг солнце починилось. Насчёт косяков вполне допускаю. В ОГСЕ они, вроде как, не критичны, поскольку там погода в каждый момент контролируется скриптом. Технически установлена одна погода навсегда с одним единственным кадром, который динамически перемещается во времени, и динамически же устанавливаются его параметры интерполяции. Поэтому, даже если описанные косяки и присутствуют, то они вроде как не влияют, поскольку от движка остаётся только интерполяция погоды на текущем кадре, а остальное побоку. Что он там сохраняет/загружает всё равно будет переписано скриптом. Короче, эту правку как раз надо убирать из "не ОГСЕ" конфигураций. Возможно, как-то связано с функцией set_ignore_game_state_update() которая вызывается в OGSE, но непонятно для чего Эта функция идёт как затычка к механизму прокрутки времени, который в ОГСЕ используется для сна. Я обнаружил, что после прокрутки времени происходят косяки с пересчётом состояний актора. Подробностей уже не помню, но лечилось это разовым игнорированием соответствующего обновления сразу после приращения времени. Для установки этого разового игнора и предназначена эта функция. Вполне допускаю, хотя уже и не помню точно, что вместе с актором пропускается обновление чего-то ещё. В любом случае, это не используется нигде больше, кроме как в реализации сна. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти