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

X-Ray extensions

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

Geoset,

из папки bin masm32 скопируй в папку tools проекта ml.exe

 

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

abramcumner,

ну и можно перейти на сборку в той же студии.

Что-то типа такого:

http://narod.ru/disk/37410961001/xray-extensions.7z.html

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

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

И все-таки неплохо было бы сделать управление видимостью костей не только для оружия.

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

SkyLoader

Тебе для настройки положения один раз нужно или хочешь в игре какие то манипуляции проводить?

 

 

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

Такой вопрос. Раз уж дошло до вопроса про скриптовое управление положением худа, озвученное выше.

 

Возможно ли хакнуть функцию отдачи оружия и делать снос точки прицеливания не только вверх, но и

вправо с каким-то коэффициентом (очевидно, что все оружие будет уносить одинаково - чем сильнее уносит

вверх, тем сильнее будет уносить вправо)? Понимаю, что тогда возникает проблема с расчетом функции возврата

прицела (она то возвращается не от какого-то максимума вдоль оси Y до нормального положения, а и вдоль оси Х.

 

Shoker, по поводу вопроса тов. SkyLoader также отмечу что и мой вопрос и его решаются одинаково - нужно

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

в качестве аргументов переменные, полученные из скрипта, а не из конфига ствола:

 

function SetCurrentWeaponXYZ(x_deg_inc, y_deg_inc, x_pos_inc, y_pos_inc, zoom_factor)

 

Таким образом также не нужно будет восстанавливать билдовскую команду настройки худа hud_adjust_mode.

Intel Centrino Mobile (Dual-core) T2700 2,328 GHz, Intel GMA 945GM, 2x1024 MB DDR2-667, WD Scorpio 1200BEVS

Microsoft Windows 7 Professional N + Novell Linux 11.2 (OpenSUSE) Dual boot

S.T.A.L.K.E.R. SHOC 1.0004 + AMK 1.4.1 + NS3 + NLC3 + Arsenal + Arsenal beta +New weapons

 

Опытный американский дробовик XM1014 =O

Хозяйке на заметку: Не спешите выбрасывать чеку от использованной гранаты Ф-1 или РГД-5 - с её помощью можно легко и удобно прикрепить игрушечного пингвинчика к своему рюкзаку. © not me

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

AK-103,

Возможно ли хакнуть функцию отдачи оружия и делать снос точки прицеливания не только вверх, но и

вправо с каким-то коэффициентом

а в Зенобиан-моде случайно не эта ли функция реализована? Там идет вычитка из LTX для каждого оружия, а затем скриптом вывод на экран. Как пример - ПМ:

[pm]
strength        = 1,2;-- 1,2 2,3 сила отдачи 1..5
strength_rnd    = 1;
0    = 1.7    ; сдвиг вправо(0) влево (1)
1    = 0.6    ; сдвиг вверх(0) вниз (1)
2    = 0.8,1        ; сдвиг вперед(0) назад (1)
3    = 4,0    ; поворот вправо(0) влево (1)
4    = 2.1,0    ; наклон вниз(1) вверх (0)
5    = 0    ; наклон влево(1) вправо (0)
; pp effs
black        = 0,ppe
blur        = 0,ppe
grey        = 0,ppe
duality_h    = 0,ppe
duality_v    = 0,ppe

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

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

malandrinus,

r20 не собирается.

matrix_fix.asm(233) : error A2008: syntax error : xmm

matrix_fix.asm(238) : error A2008: syntax error : xmm

...

 

 

Andrey07071977,

С этой версией тоже не собрало. Причем r18 собирается нормально.

С новым ml пишет лишь, что не найден путь.

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

Real Wolf,

Скорее всего у тебя старая версия ml.exe - поставь вот эту версию, должно собрать.

P.S. Не забудь подправить батники

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

Если кому надо, написал тут несколько функций новых:

1. Исправленная и переписанная ф-ция получения состояния актора:

В

game_object_fix.asm заменить ф-цию CScriptGameObject__ActorBodyState на эту:

CScriptGameObject__ActorBodyState proc
    push    ebp
    mov     ebp, esp
    and     esp, 0FFFFFFF8h
    push    ecx
    
    call    CScriptGameObject__IsActor
    test    eax, eax
    jz      short exit_fail
;---------------
    mov     eax, [eax+1428]
    jmp     exit_ok
exit_fail:
    xor     eax, eax
exit_ok:
    pop    ecx
    mov     esp, ebp
    pop     ebp
    retn
CScriptGameObject__ActorBodyState endp

 

 

 

2. "get_cam_effector", "get_pp_effector" - получить активность камеры/постпроцесса по айди:

1)В конце файла xrgame_stubs.asm дописать:

org 10458864h - shift
CCameraManager__GetCamEffector dword ?
org 10458478h - shift
CCameraManager__GetPpEffector dword ?
org 10190CF7h - shift
register__ns__int__int:

 

2) В level_ns_fix.asm после строк:

    call    get_snd_volume_register; регистрируем функцию с прототипом как у   get_snd_volume
;--------------------------------------

дописать:

;------------< регистрируем функцию получения активности эффекта камеры по айди >------
    pop     ecx
    pop     ecx
    mov     eax, esp
    push    offset GetCamEffector
    push    offset aGet_cam_effector; "get_cam_effector"
    push    eax
    call    register__ns__int__int
;--------------------------------------

;------------< регистрируем функцию получения активности pp эффекта по айди >------
    pop     ecx
    pop     ecx
    mov     eax, esp
    push    offset GetPpEffector
    push    offset aGet_pp_effector; "get_pp_effector"
    push    eax
    call    register__ns__int__int
;--------------------------------------

 

 

3) После строк:

; для get_target_dist
    mov     ecx, eax
    call    esi

 

дописать:

 

; для get_cam_effector
    mov     ecx, eax
    call    esi
; для get_pp_effector
    mov     ecx, eax
    call    esi

4) В конце файла дописать:

GetCamEffector proc
id         = dword ptr  4

    mov     edx, [esp+id]
    and     edx, 0FFFFh
    mov     ecx, g_Actor
    mov     ecx, [ecx+554h]
    push    edx
    call    ds:CCameraManager__GetCamEffector
    test    eax, eax
    jnz    short exit
    xor    al, al
    retn
exit:
    mov    al, 1
    retn
GetCamEffector endp

GetPpEffector proc
id         = dword ptr  4

    mov     ecx, g_Actor
    mov     edx, [esp+id]
    mov     ecx, [ecx+554h]
    push    edx
    call    ds:CCameraManager__GetPpEffector
    test    eax, eax
    jnz    short exit
    xor    al, al
    retn
exit:
    mov    al, 1
    retn
GetPpEffector endp

aGet_cam_effector  db "get_cam_effector", 0
aGet_pp_effector  db "get_pp_effector", 0

 

 

 

Есть еще функции получения/назначения видимости объекта, но назначение требует теста. Также вскоре допишу фунцию, чтобы в окне продажи предметы в слотах зеленым выделялись.

Может и Маландринус добавит ф-ции в себе, если захочет.

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

SkyLoader,

Какие параметры принимает actor_body_state? Оригинальная функция маландринуса была без параметров.

 

get_cam_effector and get_pp_effector работают, спасибо. Число которое возвращают эти функции (отличное от нуля) что-то означает (кроме того что эффект еще не завершен), или просто движковый id?

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

Andrey07071977,

Какие параметры принимает actor_body_state?

И эта функция никакие аргументы не принимает. И, кстати, данная функция работает только на версии r18 и ниже. Для r20 нужно CScriptGameObject__IsActor заменить на CScriptGameObject__CActor.

 

Число которое возвращают эти функции (отличное от нуля) что-то означает

По идее, возвращать они должны 0 или 1. 1 - это как-бы true (эффект проигрывается по данному айди), 0 - false. Просто у меня не получилось сделать возвращение boolean значения.

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

SkyLoader,

Заменил call CScriptGameObject__IsActor на call CScriptGameObject__CActor (у меня r20), все равно вылетает с логом:

FATAL ERROR

 

[error]Expression : error handler is invoked!

[error]Function : invalid_parameter_handler

[error]File : E:\stalker\sources\trunk\xrCore\xrDebugNew.cpp

[error]Line : 804

[error]Description :

 

 

stack trace:

 

 

 

На всякий случай, вот такой вызов:

local aaa = db.actor:actor_body_state()

Ссылка на комментарий
malandrinus, Можешь сделать
убран вылет "cannot find rank for ..." при выкидывании оружия, не прописанного в mp_ranks
для ТЧ..?

FANAT.gif

Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения'

Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация

Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации

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

FANAT,

Давно уже есть эта правка для ТЧ.

 

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

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

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

 

Ссылка на комментарий
malandrinus, Где..?

FANAT.gif

Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения'

Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация

Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации

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

FANAT,

Погляди в corrections_list.txt

 

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

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

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

 

Ссылка на комментарий
malandrinus, возможно ли сделать метод изменения максимально-переносимого веса ГГ? Через метод get_actor_float\int найти ничего не удалось, сканировал около 1000000 позиций в памяти, веса не нашел. Хотелось бы увидеть нормальный метод.
Ссылка на комментарий

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

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

ColR_iT,

Ответ на твой вопрос находится на два поста выше твоего

 

SkyLoader,

Подобная ошибка встречается при нехватке памяти
не думаю что в данном случае вылет имеет какое то отношение к нехватке памяти. Ты у себя проверял с r20? Изменено пользователем Andrey07071977
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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