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

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

Здрасте. Застрял. балуюсь с 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 

 

 

 

я что то забыл врубить, или лучше что то отключить?

... А наше дело маленькое - с ружьём да по болотам. (с)

Ссылка на комментарий

 

 

я что то забыл врубить, или лучше что то отключить?

Лучше ничего не трогать и использовать дефолтную конфигурацию из официального репозитория. В твоем что-то опять понахреначили, поди разбери.

 

https://github.com/KD87/xray-extensions/archive/master.zip

Ссылка на комментарий

@RayTwitty, спасибо большое за ответ.

 

Задам такой вопросец для уточнения: можно ли закидывать старый (из мода) xrGame.dll и его патчить правками? Или же обязательно нужен исходный файл из оригинала перед пропатчиванием?

 

П.С. Еси чо уточню по тому что выше: corrections_list.txt выше я изменял сам, мб от того и белиберда. Но дефолт у меня не сработал. Пробовал патчить файл, который уже был в SVN_portable_r232, и тот что в моде. И так и так не вышло.

 

Щас попробую то, чем вы поделились.

 

 

АПД.

 

Нашёл ответ на глупый вопросец.

 

По вылету: не помогло. ИМХО какая то новая правка не дружит со старыми скриптами. Искать какая - это перебирать всё. И тем более ещё сложней потому, что я не знаю какие были правки включены изначально в мод и хз как узнать. Вероятно лучше автора мода спросить.

Был бы не против узнать, от чего данный вылет может быть, чтобы методом тыка вырубить то, что мешает.

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

... А наше дело маленькое - с ружьём да по болотам. (с)

Ссылка на комментарий

Платформа ТЧ. Включил дополнительные слоты (бинокль, нож, фонарик). Подправил inventory_new_16.xml и inventory_new.xml, а также соответствующие текстуры. Всё нормально отображается. Одна проблема - при попытке перемещения в эти слоты путем двойного щелчка на соответствующие предметы происходит вылет типа stack trace, а перетягивание вообще не работает. Также не появляется опция "убрать в рюкзак" для предметов в новых слотах.

Вопрос: какие еще нужны телодвижения для нормальной работы новых слотов?


UPD: Предыдущий вопрос снимается. Нужно было еще править system.ltx

Изменено пользователем phorumer
Ссылка на комментарий

Такой вопрос: кто-нибудь знает, какая правка отвечает за подсветку предметов в инвентаре? Точнее ищу правку, отвечающую за метод: 

...
static:SetColorMask(GetARGB(255, 255, 255, 100) )
...

... А наше дело маленькое - с ружьём да по болотам. (с)

Ссылка на комментарий

@Malandrinus,

1. Можно ли использовать уже существующие дефайны, которые лежат в defines.asm (например OGSE_BUILD), для corrections_list?

2. Я думаю, имена дефайнов должны быть написаны, хотя бы с разделением на слова: DLGDISTFIX -> DLG_DIST_FIX. Первый вариант совершенно не воспринимается.

3. Наверно, стоит убрать файлы конфигов в подпапку configs (3312_shoc_10006\configs\), дабы не искать постоянно их в списке всех файлов.

 

кто-нибудь знает, какая правка отвечает за подсветку предметов в инвентаре? Точнее ищу правку, отвечающую за метод:

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

 

А что касается окна инвентаря - в моде LWO (который использует тоже ХЕ) есть закраска патронов для выбранного оружия (как в ЗП) - сделано достаточно заморочено, но разобраться можно. Насколько я помню, там во время заполнения инвентаря вызывается колбек, в который передается указатель на объект иконки (окна) и самого объекта, после чего с ними можно нормально работать (перекрасить, приаттачить что-нибудь или даже заменить текстуру). Полный хак кароче.

Изменено пользователем RayTwitty
  • Полезно 2
Ссылка на комментарий

Для этого, правку нужно активировать и написать скриптовую обработку закраски.

Может у тебя есть точно работающий пример? Я попробовал закраску сделать - никакого эффекта.

Ссылка на комментарий

Может у тебя есть точно работающий пример? Я попробовал закраску сделать - никакого эффекта.

Посмотри ogse_trade_precondition.script. Не самая идеальная реализация, тем не менее суть понять можно:

1) Для каждого инвентарного предмета добавили параметры закраски, группировки и торгуемости.

2) Создается таблица (для закраски): индекс цвета = код цвета.

3) При открытии инвентаря, изменяем новые параметры так, как нам надо и получаем результат. Например, задаем закраску тех предметов, которые в слотах.

Ссылка на комментарий
@RayTwitty,спасибо Кэп :) Именно этот модуль я и использовал. Никакого эффекта. В OGSE он не используется, т.ч. я даже не могу быть уверен, что в нём нет каких-нибудь ошибок или неточностей.
Ссылка на комментарий

Я как-то пропустил тот факт, что в ассемблере уже сделаны определённые попытки конфигурирования. Это хорошо, что сделаны, но есть замечания, которые излагаю ниже.

 

 

Можно ли использовать уже существующие дефайны, которые лежат в defines.asm (например OGSE_BUILD), для corrections_list?

 

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

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

 

Вот ещё к этому вопросу. В ассемблере ml.exe, как и в препроцессоре gpp, можно в аргументах командной строки определять символы препроцессора. Как-то так /DOGSE_BUILD. Так что выбор конфигурации тоже можно делать, не меняя код.

 

имена дефайнов должны быть написаны, хотя бы с разделением на слова:

 

Согласен, уродливо получилось, руки дойдут - поправлю. Вообще-то здесь "длинных_мнемоничных_имён" не напасёшься. Более продуктивно будет комментировать опции в файле конфигурации.

 

 

стоит убрать файлы конфигов в подпапку configs (3312_shoc_10006\configs\), дабы не искать постоянно их в списке всех файлов.

 

Ну, тогда уж надо выносить в отдельную папку все файлы, связанные с билдом: список патчей, заготовку под dll и diff-файл, все батники и прочее. Лично у меня уже батник для сборки не найти, поскольку список исходников сильно длиннее окна TC.


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

Так а что мешает подключить и посмотреть на эффект?

Изменено пользователем Malandrinus
  • Полезно 1
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Так а что мешает подключить и посмотреть на эффект?

Издеваешься, да? :) Я же пишу, именно его и использовал. Т.е. подключал, добавлял отладочный вывод, что бы убедиться, что все выполняется. Все выполняется, но в окне торговли и обыска никакой раскраски я не увидел.

Ссылка на комментарий

Ну, тогда уж надо выносить в отдельную папку все файлы, связанные с билдом: список патчей, заготовку под dll и diff-файл, все батники и прочее.

Это было бы неплохо, как собственно и создать нормальные общие батники, которыми могли бы пользоваться простые смертные.

 

Кстати, ничего там не изменилось с правовым статусом link.exe и ml.exe? Может всё-таки стоит добавить их в репозиторий? У людей постоянно возникают проблемы, они не могут ничего скомпилить, ибо далеко не у всех есть VS и masm. Ситуация осложняется ещё и тем, что не все версии этих исполняемых файлов (по твоим же словам) подходят для линковки кода. Также, для работы всего этого требуется наличие установленных рантаймов, о чём тоже неплохо бы где-то упомянуть.

Изменено пользователем RayTwitty
Ссылка на комментарий

 

 

Все выполняется, но в окне торговли и обыска никакой раскраски я не увидел.

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

 

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

 

Ещё, создал там же батник для ассемблирования под конфигурацию ogse. Компилировать надо именно им, иначе немало всякого не попадёт в сборку.


 

 

ничего там не изменилось с правовым статусом link.exe и ml.exe?

 

Я этого не знаю. Сомневаюсь, что что-то изменилось.

  • Спасибо 1
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

@dsh,

Для этого, правку нужно активировать и написать скриптовую обработку закраски.

А я ведь я писал об этом, чем вы читаете - неизвестно.

 

Вот кстати зачем вообще было кому-то комментить эти правки? Я спецом сделал так, что без скриптовых манипуляций они никому не мешают, и всё ведёт себя по дефолту.

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

 

Если правка отключена - она либо недоработана, либо требует вмешательства в геймдату, либо слишком специфична (например "смерть от первого лица"). Если я правильно понял идею проекта, то его главная особенность именно в скриптовых расширениях, а уже потом в каких-то точечных геймплейных правках, которые зачастую, нужны только определенному моду.

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

Изменено пользователем RayTwitty
Ссылка на комментарий

 

 

конкретно эта правка без скриптовой обвязки ведет к неправильному отображению списка в окне торговли\обыска

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

 

 

И кстати.

 

 

Не самая идеальная реализация

А как бы сделал ты?


 

 

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

Хм. Да там половину незакомменченных правок можно отнести ко второй категории, да и по части "нужности" - это дело индивидуальное. Мне однако вообще непонятно ранжирование правок. Проект для всего. Что хотим, то и добавляем. Главное - друг другу не мешать.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

Перепроверил. Последняя ревизия, правки включены в движке.

В скриптах убрал включение глобальных флагов (т.е. дб по нулям), убрал вызовы относящиеся к фиче, результат:

http://rghost.ru/private/7H827RrkP/bfe541d734f5a2b1855c5cebed4d10a4

 

 

Не самая идеальная реализация

А как бы сделал ты?

 

Я про скрипт говорил. А в движке без исходников не сильно чего придумаешь. Изменено пользователем RayTwitty
  • Полезно 1
Ссылка на комментарий

@RayTwitty,

ага, нашёл косяк. Спасибо за наводку. Хоть логика фильтрации и раскраски и отключена, но цвет подсветки по умолчанию всё равно берётся из первого элемента пользовательского массива цветов, а массив инитился из скрипта, т.е. там были нули (и соответственно полностью прозрачный цвет). Поэтому "покрасневшие" предметы были невидимы. Сейчас я там заполнил первый элемент, так что покрасневшие предметы не пропадают.

 

 

 

Я про скрипт говорил

Так и я про скрипт. Заметны какие-то косяки?

  • Спасибо 1
  • Полезно 1
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Заметны какие-то косяки?

На счет косяков не знаю, я скорее про структуру и количество вызовов говорил. В частности, обновление флагов для предметов достаточно делать в трех случаях - на событиях take\drop (при открытом окне обыска\торговли) и при открытии окна инвентаря\обыска\торговли для всех предметов сразу.

 

Сейчас я там заполнил первый элемент, так что покрасневшие предметы не пропадают.

Да, проверил - теперь всё нормально работает.

 

Кстати, остался нерешенным вопрос с правкой

0x102AC460 5 ; jmp game_cl_GameState__net_import_GameTime_dbg_fix

она как я понял, восстанавливает солнце, но вместе с этим, наблюдаются и баги (совершенно точно они происходят из-за этой правки):

1) зависание обновления погоды;

2) необновление каких-то элементов погоды (например свет и флары меняются, а скайбокс нет и наоборот);

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

В общем, что-то с апдейтом там. Возможно, как-то связано с функцией set_ignore_game_state_update() которая вызывается в OGSE, но непонятно для чего.

Изменено пользователем RayTwitty
Ссылка на комментарий

обновление флагов для предметов достаточно делать в трех случаях - на событиях take\drop (при открытом окне обыска\торговли) и при открытии окна инвентаря\обыска\торговли для всех предметов сразу

 

Фильтрация и подсветка зависит от положения предметов внутри инвентаря, а оно может измениться и после открытия. Поэтому делается глобальная обработка при открытии трупа/тайника и начале диалога, и также на каждый акт перемещения между частями инвентаря. Всё это в сущности разовые операции, да и сами операции - просто установки флажков, поэтому нет ничего криминального, если это случится два раза.

 

 

остался нерешенным вопрос с правкой

 

Здесь ситуация такая, что я сам понятия не имею, что реально делает эта правка. Помнится, долго ломал голову, как починить солнце, искал концы, наткнулся на странный фрагмент, который выглядел как некая заплатка. Методом научного тыка этот фрагмент вырезал, и вдруг солнце починилось. Насчёт косяков вполне допускаю. В ОГСЕ они, вроде как, не критичны, поскольку там погода в каждый момент контролируется скриптом. Технически установлена одна погода навсегда с одним единственным кадром, который динамически перемещается во времени, и динамически же устанавливаются его параметры интерполяции. Поэтому, даже если описанные косяки и присутствуют, то они вроде как не влияют, поскольку от движка остаётся только интерполяция погоды на текущем кадре, а остальное побоку. Что он там сохраняет/загружает всё равно будет переписано скриптом.

 

Короче, эту правку как раз надо убирать из "не ОГСЕ" конфигураций.

 

 

Возможно, как-то связано с функцией set_ignore_game_state_update() которая вызывается в OGSE, но непонятно для чего

 

Эта функция идёт как затычка к механизму прокрутки времени, который в ОГСЕ используется для сна. Я обнаружил, что после прокрутки времени происходят косяки с пересчётом состояний актора. Подробностей уже не помню, но лечилось это разовым игнорированием соответствующего обновления сразу после приращения времени. Для установки этого разового игнора и предназначена эта функция. Вполне допускаю, хотя уже и не помню точно, что вместе с актором пропускается обновление чего-то ещё. В любом случае, это не используется нигде больше, кроме как в реализации сна.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...