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

X-Ray extensions


Malandrinus

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

Исх.данные: ТЧ 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

 

 

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

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

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

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


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

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

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

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

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


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

Ребят, кто занимается развитием ХЕ.

Посмотрите, пожалуйста, метод play_hud_animation - проигрования анимации.

 

при проигрывании анимации (например, перезарядки оружия),

если анимация прерывается, например: выкинул или спрятал оружие, либо еще что-то...

то это иногда-редко-но-метко вызывает сбой логики и бою сейвов,

а так же вылетам:

 

001B:03577578 xrGame.dll

[error][     183]    : Невозможно создать файл, так как он уже существует.

 

или

 

001B:03755AF0 xrGame.dll

[error][      87]    : Параметр задан неверно.

 

 

 

 

Исх.данные:

ТЧ 1.0006 - ХЕ_230_портабл

 

Что делаю:

local active_slot = db.actor:active_slot()

 

if active_slot then
      if (active_slot == 1 and db.actor:item_in_slot(1) and db.actor:item_in_slot(1):is_weapon()) then
             wpn_in_slot = db.actor:item_in_slot(1)
             wpn_in_slot_section = wpn_in_slot:section()
      elseif (active_slot == 2 and db.actor:item_in_slot(2) and db.actor:item_in_slot(2):is_weapon()) then
             wpn_in_slot = db.actor:item_in_slot(2)
             wpn_in_slot_section = wpn_in_slot:section()
      end

 

       if wpn_in_slot:has_hud_animation("reload") then
              wpn_in_slot:play_hud_animation("reload", true)
       end
end

 

 

 

Так вот, собственно просьба:

Если это возможно, наладить стабильность работы этого метода.

 

А может я что-то не так делаю, если да, то ткните "куда копать". =)

Если кто-то уже сталкивался с этим, то отпишитесь, пожалуйста, как выходили из такой ситуации?

 

 

 

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


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

Вопрос к тем, кто пользуется level.send_event_key_press(dik) / level.send_event_key_hold(dik) / level.send_event_key_release(dik).

Исх.данные: ТЧ 1.0006 - ХЕ (с гитхаба - last commit 26_Dec_2015 )

 

Хочу сделать, чтобы при нажатии на клавишу приближения/прицеливания из бинокля/оружия НЕ нужно было саму эту клавишу держать нажатой.

Например: нажал один раз - прицелился из оружия, нажал еще раз - оружие в исходное положение.

 

local zoom_wpn = false

-- Коллбэк на нажатие клавиши. --
function on_key(key, bind)

-- тут проверка - что в руках? оружие/бинокль или что-то другое. --

-- после проверки: --
    if bind == key_bindings.kWPN_ZOOM then
        if not zoom_wpn then
            zoom_wpn = true
            level.send_event_key_press(DIK_keys.MOUSE_2)
            level.send_event_key_hold(DIK_keys.MOUSE_2)
        else
            zoom_wpn = false
            level.send_event_key_release(DIK_keys.MOUSE_2)
        end
    end
end

 

 

 

Но, я что-то делаю не правильно и у меня этот код не работает.

Коллбэк на нажатие работает без проблем (проверено). Сама "имитация" нажатия не фурычит (у меня).

Если кто знает в чем дело - подскажите, плз.

 

Или может фишку с приближением/прицеливанием по нажатию один раз на клавишу - уже реализовали по-другому?

Заранее признателен ответившим.

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

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


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

  Обращение к тем, кто развивает проект ХЕ.

 

Небольшие хотелки/пожелалки для [ТЧ 1.0006]:

-- 1 -- Можно ли сделать правку на отключение авто-перезарядки оружия.

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

 

-- 2 -- При проигрывании анмации перезарядки с помощью "play_hud_animation" у оружия на классе "РПГ7", если у ГГ нет в инвентаре заряда для этого оружия - анимация проигрывается без изображения этого заряда. То есть, как будто ГГ заряжает РПГ невидимым зарядом.

Будет замечательно, если это можно поправить.

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


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

Установка/Получение высоты камеры актора. (Может пригодится кому-нибудь...)

Скрытый текст


-- Установка высоты камеры актора. --
function set_camera_height(v)
    db.actor:set_actor_float(nil, v, 1204)
end

-- Получение высоты камеры актора. --
function get_camera_height()
    return db.actor:get_actor_float(1204)
end

-- Получение высоты камеры актора из файла "actor.ltx". --
function get_camera_height_default()
    return system_ini():r_float ("actor","camera_height_factor")
end

 

 

  • Полезно 1

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


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

@dsh

4 часа назад, dsh сказал:

используется?

Разумеется.

Для выглядывания из-за укрытия, когда чуть-чуть не хватает высоты для ведения огня,

или, наоборот, нужно посмотреть под машиной/в проломе и т.д.

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

 

Мне очень понравилась фишка в этом ролике. Решил реализовать "скриптовыми" силами.

По-хорошему, это надо через движок делать, но я с "плюсами" ещё не подружился.

Нормальной анимации тоже пока нет.

 

PS. Тоже, можно сделать и бегом/ходьбой актора - при прокрутке колесика менять скорость его передвижения.

  • Полезно 1

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


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

@Дизель Да, согласен, знаю об этом.

Думаю, что можно сделать, в таком случае.

Жаль от идеи отказываться.

@dsh Да, вроде того.

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

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


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

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