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

X-Ray extensions


Malandrinus

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

@dsh, насколько я помню, прыжок находится в CActorCondition - это другой класс и для него есть отдельный хак.

 

Попробуй

db.actor:set_actor_condition_float(nil, value, 276)
  • Полезно 1

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


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

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

Верно, потому что при проигрывании анимации через скрипт, собсно анимация только и проигрывается) Этакий хак.

 

set_hud_animation_channel -- устанавливает номер канала блендинга анимации, который будет передан в колбек на завершение анимации.

set_hud_animation_callback_param -- устанавливает произвольный параметр, который будет передан в колбек на завершение анимации.

set_use_hud_animation_callback -- включает использование колбека на завершение анимации.

Подробностей не знаю, спрашивай у malandrinus - это его правки, а вот что касается:

 

get_hud_animation_remaining_time - оставшееся время до окончания НЕ зацикленной анимации, меняется в реальном времени. Т.е. в начале, например твоей перезарядки метод вернет 2541, а в конце 0 (анимация закончена). Для зацикленных анимаций, НЕимеющих флаг Stop At End (idle, sprint и т.п.), всегда возвращает 0, т.к. они не имеют конца.

 

get_hud_animation_length - собственно длительность анимации в миллисекундах. Тут мне нечего добавить.

 

пример с использованием этих методов:

local length = 0
...
local aitem = db.actor:actve_item()
if aitem then
    aitem:play_hud_animation("reload", true)
    length = aitem:get_hud_animation_length("reload")
end
...
function update()
    if (length / 2) >= aitem:get_hud_animation_remaining_time() then
...

Условие будет проходить, когда проиграно больше половины анимации.

 

Нужда: Поймать момент окончания проигрывания анимации по методу play_hud_animation()

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

 

local end_time = 0
...
local aitem = db.actor:actve_item()
if aitem then
    aitem:play_hud_animation("reload", true)
    end_time = time_global() + aitem:get_hud_animation_length("reload")
end
...
function update()
    if time_global() == end_time then
...
Изменено пользователем Shadows
  • Согласен 1

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


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

@Alien_181, насколько я понял, для работы правки надо вызвать где-нибудь в _G:

set_static_rescale_factor(device().height / device().width / 0.75)
  • Спасибо 1

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


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

Очередная правка для телепатов. И почему такие "мелочи" выясняются только через год после появления правки...

Отчасти так и есть - многие правки не документировались сразу, а по прошествии времени предназначение "забывалось" и восстановить ее становилось очень сложно (по сути, приходилось заново "прорабатывать" правку). Но тут тоже, у всех свои причины - нехватка времени, лень и т.п. Я старался всегда описывать свои правки либо в описании коммита, либо в файле, либо в ФАКе.

 

@Nazgool, я у себя в исходниках планирую ввести параметр "auto" для height\width (как в CSS-стилях) - чтобы для нужных элементов окна пропорционально рассчитывать значение. Например, для заведомо квадратных и круглых поверхностей будет самое то.

Уже протестировал на курсоре - работает отлично.

 

З.Ы.

24C8AB9VdEw.jpg

Справа налево - "6 патч", "7 патч", "автоматический расчет пропорций".

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

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


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

 

 

в функцию start_game_callback

Лучше всего вызывать в начале файла, чтобы изменения заработали уже в главном меню.


@macron

if (jit == nil) then
     profiler.setup_hook ()
end

set_static_rescale_factor(device().height / device().width / 0.75)
...
  • Спасибо 1

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


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

чтоб обсудить как эту криводелку исправить раз и на всегда на уровне движка...

А что там обсуждать? Исходники ЧН и ЗП есть - там все уже сделано - бери и переноси.

 

Да и

параметр "auto" для height\width (как в CSS-стилях) - чтобы для нужных элементов окна пропорционально рассчитывать значение

чем не предложение?
  • Согласен 2

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


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

то станет возможным переезжать между локациями на автомобиле,

Эта возможность итак была.

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


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

Это только в ТЧ было грамотно сделано.

Речь за ТЧ и была, причем тут ЗП?

 

А в ЗП вообще вырезано по-моему. Не проверял

Ну вот когда проверите, можно будет думать.
  • Согласен 1

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


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

https://code.google.com/p/xray-extensions/source/list

READ-ONLY: This project has been archived. For more information see this post.

 

Проект теперь недоступен для коммитов. А после января, насколько я понял, будет дропнуто все окончательно (история изменений и т.д.).

 

Остался нерешенным вопрос с правкой включения солнца (game_cl_GameState__net_import_GameTime_dbg_fix), с ней есть проблемы между перезагрузкой сейвов (не загружается новая погода). Или объясните, как вы это пофиксили в OGSE, ведь там такого нет?

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

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


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

P.S.Вы смотрели экзешник из версии от GOG.com ?

А какой смысл, если тут итак используется нормальный экзешник из стима?

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


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

https://github.com/KD87/xray-extensions/commits/master

 

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

Изменено пользователем RayTwitty
  • Спасибо 2

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


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

Только ТЧ что ли? Для ЗП ничего не портировано?

Да, имелись ввиду все правки ТЧ-версии проекта. С ЗП я не работаю. Изменено пользователем RayTwitty
  • Спасибо 2

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


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

ЗЫ...Вылет то исчез, но это не отменяет наличия косяка в X-Ray Extensions.

Это не косяк ХЕ - просто для машин добавили колбек на смерть, из-за чего, при самоподрыве вместо victim передается пустота.

Вангую, что если написать:

printf("_bp: generic_physics_binder:death_callback: obj='%s'", victim and victim:name() or self.object:name())
то будет все ок. Изменено пользователем RayTwitty

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


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

Ошибка: цвет и прозрачность надо задавать так: stat:SetColor(Frect():set( R, G, В, A))

А разве нельзя сделать в более привычном виде - SetColor(GetARGB(a,r,g, B))? Для совместимости кода, в первую очередь...

 

@Ghost-2142, тогда принудительно задай victim в начале функции -

victim = self.object

 

З.Ы. никогда не понимал, зачем этот аргумент вообще нужен, ибо клиентский объект в биндере всегда определен.

Изменено пользователем RayTwitty
  • Спасибо 1

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


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

Посмотрел - там в обоих аргументах будет nil всегда.

 

По идее, если добавить в car_fix.asm в 15 строку вот это:

call CGameObject__lua_game_object
mov esi, eax
а два пуша заменить на:

push esi
push esi
то в обоих аргументах будет объект машинки (тот же самый self.object, только костыль в скрипте не понадобится).

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


Ссылка на сообщение
@Ghost-2142, перед вызовом script_death_callback идут два пуша с ecx-регистром. Замени их на esi. Изменено пользователем RayTwitty
  • Спасибо 1

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


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

По ходу ревизию надо новую делать))

Залью как будет время.
  • Нравится 1

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


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

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