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

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

Подскажите, пожалуйста, у кого-нибудь получилось изменить высоту прыжка с помощью set_actor_float()? В частности, делаю

db.actor:set_actor_float(nil, v, 1444)

и никаких изменений не наблюдаю. Изначально, читая из 1444, получаю именно то значение, которое стоит в ltx.

  • Полезно 1
Ссылка на комментарий

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

 

Попробуй

db.actor:set_actor_condition_float(nil, value, 276)
  • Полезно 1
Ссылка на комментарий

, не, это больше на jump_power похоже, по результату. Вывели 2000 значений через get_actor_condition_float() и не нашел там ничего похожего на 7.6.

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

 

 

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

Тоже интересует. А как можно отключить функцию прыжка в игре, или изменить высоту к 0 или просто заставить игру не реагировать на клавишу Space?

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

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

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

Нет возможности сделать отдачу, скажем, вверх-вправо или вниз-влево.

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

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

 

 

с отдачей в игре

В ТЧ - это, ИМХО, самая большая проблема. Палки-стрелялки в модах без отдачи бесят. Но есть эффекты стрельбы от Rulix aka Bak на все версии трилогии, тонко настраиваемые под любые хотелки.

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

Исх.данные: ТЧ 1.0006, XE_r.226 

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

Искал инфу: по форуму и вообще по инету - ничего вразумительного не нашел. (может плохо искал.)

 

Как грамотно пользоваться вот этим:

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

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

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

get_hud_animation_remaining_time() -- возвращает время, оставшееся до окончания текущей анимации. У меня всегда = 0, почему-то... =)

 

Вот, например у меня идет запуск анимации "Перезарядки"...

local active_slot = db.actor:active_slot()
if active_slot == 2
and db.actor:item_in_slot(2) ~= nil
and (string.sub(db.actor:item_in_slot(2):section(),1,4) == "wpn_" or string.sub(db.actor:item_in_slot(2):section(),1,2) == "w_")
then
log1("--play reload begin")

local slot_2 = db.actor:item_in_slot(2)
slot_2:play_hud_animation("reload", true)

local has_hud_reload = slot_2:has_hud_animation("reload")
if has_hud_reload == true then
log1("**has_hud_reload = true")
else
log1("**has_hud_reload = false")
end

local time_reload = slot_2:get_hud_animation_remaining_time()
log1("**time_reload = "..time_reload)

-- В логе: почему-то у меня всегда = 0... Что не так?

local time_reload_length = slot_2:get_hud_animation_length("reload")
log1("**time_reload_length = "..time_reload_length)
-- В логе это: **time_reload_length = 2541 -- Это надо думать в мили-секундах....

log1("--play reload end")
end

 

 

Куда и как нужно добавить выше перечисленные методы?

Если, кто знает, отзовитесь, пожалуйста.

Заранее признателен.

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

 

 

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

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

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

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

Проигрывается только анимация, всё остальное остается на своих местах.

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

 

 

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

Ну тогда это, видимо. Смотри описание и как подключать этот коллбэк к анимации...

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

если проигрываешь анимацию по методу 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
Ссылка на комментарий

А в чем смысл правки  jmp CUICustomItem__Render_fix - фикс для исправления соотношения сторон?  У меня на широком мониторе также все растянуто как и без правки, или нужно делать скриптовую поддержку?

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

 

 

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

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

  • Согласен 1
Ссылка на комментарий
Я не знаю как сейчас действует эта правка, возможно что-то уже изменили, но расскажу предысторию

её появления и собственно как я с ней работал.

 

Началось с того, что когда я делал в OGSE сейф, то работа остановилась из-за поворачивающегося

диска с цифрами.

Дело в том, что для поворота статика, в xml-описателе необходимо было применять свойство "heading=1".

Но после его применения статик движково (не могу знать зачем это вообще было сделано) поджимается

по ширине (справа и слева) на величину 16/10.

 

Это значит следующее :

при соотношении сторон 4/3 правильный круг становиться вытянутым по верткали овалом ;

при соотношении сторон 16/9 вытянутым по горизонтали овалом ;

и только при разрешении 16/10 сжатие статика посредством 'heading' (тоже 16/10) компенсировалось

растяжением по ширине монитора, и круг оставался кругом.

 

Поэтому Malandrinus ввел правку указанную Shadows. Но...

Чтобы она работала для всех статиков, в xml-описателях необходимо для каждого статика, независимо

от того нужно это или нет, прописывать "heading=1".

 

Если UI рисуется скриптово (а также - при использовании xml - всех не статиков, которым нужно

исправление соотношения), то для координат 'x' и 'width' нужно явно указывать эту поправку



local WIDTH_FACTOR = get_static_rescale_factor()
...
weel_button.width = 32 * WIDTH_FACTOR

Изменено пользователем Nazgool
  • Спасибо 3
  • Нравится 1
Ссылка на комментарий

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

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

 

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

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

 

З.Ы.

24C8AB9VdEw.jpg

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

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

,

Это хорошо. Вот работаю я с uip, wx, и если рисую 300х300, то получаю квадрат.

И не понимаю, с какой такой такой радости в сталкере это прямоугольник :)

Нет, ну понимаю конечно. Это так...к слову сказал.

 

Я сделал подобное скриптово. Но это очень сложно.

Лучше всего конечно, если есть возможность, сделать это в движке.

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

 

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

set_static_rescale_factor(device().height / device().width / 0.75)

 

Спасибо, все получилось. Также прописал в статиках heading="1", теперь ничего не растягивает.

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

 

 

все получилось. Также прописал в статиках heading="1", теперь ничего не растягивает.

Можете залить пример такого xml и _g.script ?

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

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

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

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

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

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

Войти

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

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

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