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

X-Ray extensions


Malandrinus

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

Я заглядывал как-то... но в "downloads" по прежнему ноябрьская версия.

всё легко

Поделиться этим сообщением


Ссылка на сообщение

"dll" для SHOC 1006 версии.

Правки версии "r15", плюс добавлены "get_target_dist()" и "get_target_obj()".

Работает, но пока мало тестированная. Собирал не я.

Кого интересуют эти функции - пожалуйста.

Есть просьба: погонять другие правки, и если что не так - отписаться.

 

r15plus_xrGame.zip

 

Добавлено через 154 мин.:

Плюс к предидущему - исходники: _http://rghost.ru/9370871

всё легко

Поделиться этим сообщением


Ссылка на сообщение

А у меня эти "колбеки" и на 1.006 не заработали.

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Вспомнилось, дело старое, и потом - это уже работало; когда патчил r32, set_extensions_flags() не патчился (и сейчас не патчится). В r57 с этим нормально.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Ранее, здесь http://www.amk-team.ru/forum/index.php?showtopic=5525&page=504#entry761950 , писал о ситуации что "не критично", но всё-таки - нужно сопроводить правку set_callback(126...) отключением "смены и активации 0-4 слотов роликом мыши" - сама эта "фича" малоинтересна, а половина полезного эффекта этого колбэка пропадает.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Правка добавляющая "Коллбек на выделение предмета в инвентаре".
Используется точно так-же как все остальные коллбеки.

Имеет номер 135, передаёт объект.

Автор kstn.

~~~~~~~~~~~~~~~~~~~~~~
corrections_list.txt
~~~~~~~~~~~~~~~~~~~~~~

0x103E1B28 5   ; коллбэк актора на выделение предмета в инвентаре


~~~~~~~~~~~~~~~~~~~~~~
xrgame_stubs.asm
~~~~~~~~~~~~~~~~~~~~~~

org 103E1B28h - shift   ; 5 bytes
   jmp      CUIItemInfo__InitItem_EXT_CHUNK

org 103E1B2Dh - shift
CUIItemInfo__InitItem_EXT_CHUNK_OUT:


~~~~~~~~~~~~~~~~~~~~~~
actor_inventory_callbacks.asm
~~~~~~~~~~~~~~~~~~~~~~

CUIItemInfo__InitItem_EXT_CHUNK proc
   mov      edi, [ebx+0D4h]               ; CGameObject *this<edi>
   call    CGameObject__lua_game_object
   push    eax
   push   135
   mov     ecx, g_Actor
   call    CGameObject__callback
   push   eax
   call    script_use_callback

;   Вырезанное:
   mov     eax, [esi+70h]
   test    eax, eax

;   Возврат:
   jmp      CUIItemInfo__InitItem_EXT_CHUNK_OUT
CUIItemInfo__InitItem_EXT_CHUNK endp

 

 



Правка добавляющая в user.ltx параметр "mouse_wheel_slot_changing".
Позволяет отключать-включать переключение слотов роликом мыши.
Если параметра в файле нет - переключение слотов роликом будет включено, если параметр есть - установится прописанное в нём значение.
Отключение-включение через консольную команду:
 отключить - get_console():execute("mouse_wheel_slot_changing 0")
 включить - get_console():execute("mouse_wheel_slot_changing 1")
Текущий статус, как у всех команд, сохраняетс­я в user.ltx.

Плюс: исправлено соответствие направления переключения слотов и направления вращения ролика.

Плюс: в переключаемые слоты включён слот "болта".

Автор kstn.

~~~~~~~~~~­~~~~~~~~~~­~~
mydll.asm
~~~~~~~~~~­~~~~~~~~~~­~~
include mouse_wheel_slot_fix.asm

~~~~~~~~~~­~~~~~~~~~~­~~
corrections_list.txt
~~~~~~~~~~­~~~~~~~~~~­~~
; Перекл. на болт + откл/вкл колеса мышки для переключен­ия м/у слотами
0x101DEEA0 7 ; jmp CActor__OnNextWeaponSlot
0x101DEF40 7 ; jmp CActor__OnPrevWeaponSlot
; Инверсия колеса мышки для смены оружия
0x101DE3F2 6 ; CActor__IR_OnMouseWheel
0x101DE400 6 ; CActor__IR_OnMouseWheel

~~~~~~~~~~­~~~~~~~~~~­~~
xrgame_stubs.asm
~~~~~~~~~~­~~~~~~~~~~­~~
;------------------------------------------------------
; Переключен­ие на болт вращением колеса мышки
; Отключение­/включение­ колеса мышки для переключен­ия между слотами:
; 0 - нож,
; 1 - пистолет,
; 2 - автомат,
; 3 - граната,
; 4 - бинокль,
; 5 - болт
;------------------------------------------------------         
org 101DEEA0h - shift         ; 7 bytes
        jmp                  CActor__OnNextWeaponSlot
        nop
        nop
        
org 101DEF40h - shift         ; 7 bytes
        jmp                  CActor__OnPrevWeaponSlot
        nop
        nop
        
;------------------------------------------------------
; Инверсия колеса мышки для смены оружия
;------------------------------------------------------
; CActor__IR_OnMouseWheel
org 101DE3F2h - shift
        mov      eax, [edx+2ACh]
; CActor__IR_OnMouseWheel
org 101DE400h - shift
        mov      eax, [edx+2A8h]
        
        
~~~~~~~~~~­~~~~~~~~~~­~~
console_commands_reg_fix.asm
~~~~~~~~~~­~~~~~~~~~~­~~
;REGISTER_CC_INT2 g_mt_config, "mt_cnf", 0, 0FFFFFFFFh <- ОРИЕНТИР
REGISTER_CC_FLAG g_mouse_wheel_sc, 1h, "mouse_wheel_slot_changing"
;g_ammo_on_belt dd 0 <- ОРИЕНТИР
g_mouse_wheel_sc dd 1

и файл mouse_wheel_slot_fix.asm

; unsigned int SlotsToCheck[7]
SlotsToCheck    dd 0, 1, 2, 3, 4, 5, 0Ah

CActor__OnNextWeaponSlot proc
	push    esi
	cmp		g_mouse_wheel_sc, 0
	jz		loc_101DEF31
	mov     esi, [ecx+298h]
	mov     edx, [esi+48h]
	cmp     edx, 0FFFFFFFFh
	jnz     short loc_101DEEB9
	mov     edx, [esi+50h]
	cmp     edx, 0FFFFFFFFh
	jnz     short loc_101DEEB9
	xor     edx, edx

loc_101DEEB9:
	xor     eax, eax
	jmp     short loc_101DEEC0

loc_101DEEC0:
	cmp     SlotsToCheck[eax*4], edx
	jz      short loc_101DEED3
	add     eax, 1
	cmp     eax, 7
	jb      short loc_101DEEC0
	pop     esi
	retn

loc_101DEED3:
	cmp     eax, 7
	jnb     short loc_101DEF31
	add     eax, 1
	cmp     eax, 7
	jnb     short loc_101DEF31
	mov     edx, [esi+38h]
	jmp     short loc_101DEEF0

loc_101DEEF0:
	mov     esi, SlotsToCheck[eax*4]
	shl     esi, 4
	cmp     dword ptr [esi+edx+4], 0
	jnz     short loc_101DEF0B
	add     eax, 1
	cmp     eax, 7
	jb      short loc_101DEEF0
	pop     esi
	retn

loc_101DEF0B:
	add     ecx, 238h
	cmp     SlotsToCheck[eax*4], 0Ah
	jnz     short loc_101DEF26
	mov     eax, [ecx]
	mov     edx, [eax+20h]
	push    1Eh
	call    edx
	pop     esi
	retn

loc_101DEF26:
	mov     edx, [ecx]
	add     eax, 18h
	push    eax
	mov     eax, [edx+20h]
	call    eax

loc_101DEF31:
	pop     esi
	retn
CActor__OnNextWeaponSlot endp


CActor__OnPrevWeaponSlot proc
	push    esi
	cmp		g_mouse_wheel_sc, 0
	jz		loc_101DEFBE
	mov     esi, [ecx+298h]
	mov     edx, [esi+48h]
	cmp     edx, 0FFFFFFFFh
	jnz     short loc_101DEF59
	mov     edx, [esi+50h]
	cmp     edx, 0FFFFFFFFh
	jnz     short loc_101DEF59
	xor     edx, edx

loc_101DEF59:
	xor     eax, eax
	jmp     short loc_101DEF60

loc_101DEF60:
	cmp     SlotsToCheck[eax*4], edx
	jz      short loc_101DEF73
	add     eax, 1
	cmp     eax, 7
	jb      short loc_101DEF60
	pop     esi
	retn

loc_101DEF73:
	cmp     eax, 7
	jnb     short loc_101DEFBE
	add     eax, 0FFFFFFFFh
	js      short loc_101DEFBE
	mov     edx, [esi+38h]

loc_101DEF80:
	mov     esi, SlotsToCheck[eax*4]
	shl     esi, 4
	cmp     dword ptr [esi+edx+4], 0
	jnz     short loc_101DEF98
	sub     eax, 1
	jns     short loc_101DEF80
	pop     esi
	retn

loc_101DEF98:
	add     ecx, 238h
	cmp     SlotsToCheck[eax*4], 0Ah
	jnz     short loc_101DEFB3
	mov     eax, [ecx]
	mov     edx, [eax+20h]
	push    1Eh
	call    edx
	pop     esi
	retn

loc_101DEFB3:
	mov     edx, [ecx]
	add     eax, 18h
	push    eax
	mov     eax, [edx+20h]
	call    eax

loc_101DEFBE:
	pop     esi
	retn
CActor__OnPrevWeaponSlot endp

 

 

 

=====================================

 

 

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

Изменено пользователем 7.9
  • Нравится 2

всё легко

Поделиться этим сообщением


Ссылка на сообщение

1) У Гугла такое уже было с Гугло-группами.

2) Проект себя не изживёт, пока не появится другая (так-же "всем подходящая" и "всем доступная") "исходная основа" - аналог xRay10006 + xRay Extensions.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Всем Приветствую!

 

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

Соответственно, для пропорций 5х4 и 16х10 приходится заменять файлы "руками".

Нужно что-бы движок сам выбирал правильные конфиги из четырёх вариантов (например, из файлов с окончаниями) 3х4, 5х4, 16х9, 16х10.

 

Конкретно мне такое нужно как "правка движка" для этого проекта.

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

Изменено пользователем 7.9
  • Согласен 1

всё легко

Поделиться этим сообщением


Ссылка на сообщение
Цитата

проект уже по-сути заморожен

 

Проект может и заморожен, но он самый массовый. Поэтому работать "в него" -- продуктивно.

"Патченная длл" сейчас норма -- что ни мод, то правленая длл, а исходный движок с этим проектом и блокнотом -- самая используемая среда при разработке модов.

Многие из которых мы конечно-же не увидим :) Что, скорее всего, хорошо.

 

Повторюсь:

Цитата

 Сейчас, при чтении экранных xml-конфигов, движок переключается только между "узкими и широкими". Соответственно, для "высоких" пропорций (5х4 и 16х10) приходится заменять файлы "руками". Нужно что-бы движок сам выбирал правильные конфиги из четырёх вариантов (например, из файлов с окончаниями) 3х4, 5х4, 16х9, 16х10.

Значительная часть Сталкеров запускается на высоких мониторах. Соответственно, игроки вместо круглого и квадратного видят "яйца", "кирпичи" и съехавший текст.

 

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

Изменено пользователем 7.9
  • Согласен 1

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Поддержу Romann-a.

Авторы движков, делая огромную работу, всегда по мелочи залезают туда куда не стоит.

А дело тонкое.

Одна-две мелочи, и всё -- нету.

Почти смешной пример: иконки "ГГ в костюме" в инвентаре нету -- "раз", торговлю не так тронули, и не переделаешь, -- "два", есть и "три", дальше уже чего смотреть... Мелочи, а всё -- не так.

:(

Изменено пользователем 7.9
  • Согласен 4

всё легко

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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