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

X-Ray extensions


Malandrinus

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

Вообще-то анимации худа можно проигрывать на текущем наборе правок. Также можно определять состояние бега. Поэтому шатание оружия с помощью анимации во время спринта вполне реализуемо и без дополнительных правок.

 

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

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

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

 

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


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

@ed_rez, ну так и я и говорю о том, что можно проигрывать произвольную анимацию. Определяем состояние - бег, установленный подствольник - включаем нужную анимацию. Собственно, движок ведь так и делает, а здесь просто тоже самое будет делать скрипт.

 

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

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

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

 

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


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

Проиграть произвольную анимацию худовой модели:

db.actor:set_hud_animation_channel(2)
db.actor:set_use_hud_animation_callback(true)
db.actor:set_hud_animation_callback_param(12345)
wpn:play_hud_animation("reload", true)

Колбек на окончание анимации вызывается для актора, код колбека 157. В колбек передаётся один целый аргумент - то число, которое было установлено вызовом db.actor:set_hud_animation_callback_param(<целое число>). Так можно в колбеке различать, какая именно анимация закончилась.

 

Определить состояние актора (взято из OGSE, _g.script):

local body_states = { -- флажки состояния тела актора
[1]     = "fwd",
[2]     = "back",
[4]     = "l_strafe",
[8]     = "r_strafe",
[16]    = "crouch",
[32]    = "accel",
[64]    = "turn",
[128]   = "jump",
[256]   = "fall",
[512]   = "landing",
[1024]  = "landing2",
[2048]  = "climb",
[4096]  = "sprint",
[8192]  = "l_lookout",
[16384] = "r_lookout"
}
-- получения флагов состояния тела актора
function actor_body_state()
    local body_state = body_states[db.actor:get_actor_int(nil, 1432)]
    if body_state ~= nil then
        return body_state
    else
        return ""
    end
end

Определение установленного подствольника (взято из OGSE, ogse_wpn_utils.script)

-- флаги аддонов
addons_flags = {
    scope       = 1,
    gl          = 2,
    silencer    = 4,
    grip        = 8,
    magazine    = 16,
    scope_mount = 32,
}

-- подствольник
function get_grenade_launcher_flag(wpn) return bit_and(wpn:get_wpn_int(nil, 936), addons_flags.gl) ~= 0 end
  • Спасибо 1
 

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

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

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

 

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


Ссылка на сообщение
(изменено)
is_actor_running

Тогда уж is_actor_sprinting

Да, наверное можно и их использовать. Эти функции добавили позже.

 

 

Не существует ли возможности задать скриптом скорость проигрывания анимации?

Нельзя.

Изменено пользователем Malandrinus
  • Полезно 1
 

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

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

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

 

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


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

@TIGER_VLAD,

вот фрагмент исходника из файла Actor_Movement.cpp

	if (fis_zero(character_physics_support()->movement()->gcontact_HealthLost)){	
		m_fLandingTime	= s_fLandingTime1;
		mstate_real		|= mcLanding;
	}else{
		m_fLandingTime	= s_fLandingTime2;
		mstate_real		|= mcLanding2;
	}

Судя по всему разница в том, ушибся или нет при приземлении.

  • Спасибо 1
  • Полезно 1
 

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

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

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

 

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


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

 

 

позицию худ модели в пространстве, а именно - на локации

На всякий случай поясню, что это попросту не имеет смысла. Худ мало того что не взаимодействует с геометрией уровня и рисуется просто поверх всего, но ещё и со своим FOV, т.е. можно сказать, что худ находится в отдельном геометрическом пространстве.

  • Полезно 1
 

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

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

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

 

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


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

@MADMAX666,

по правке с солнцем к сожалению мало чем можно помочь. Правка используется в OGSE/OGSR, а там погодный менеджер скриптовый, и даже выброс реализуется в режиме прямого управления погодой, а не через погодный эффект. Поэтому там таких проблем нет, и разбираться с тем, что там ещё поломалось и почему, не было необходимости. А сейчас уже нет и желания/возможности.

 

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

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

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

 

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


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

@dsh,

цитирую из лога

+ коллбек (153 для НПС) на хит от НПС. Передается вредитель. set_int_arg0(1) для того, что НПС проигнорировал хит от вредителя.

Там есть ещё колбек 152 на событие "прехит", с помощью которого можно сделать всё тоже самое. В частности, в огсе через 152 сделаны иммунитеты актору и игнор дружественного огня неписями.

 

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

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

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

 

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


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

@dsh,

разные авторы правок. Колбек 153 был добавлен позднее. Возможно, его автор не вполне был в курсе всех возможностях колбека 152. С документацией в этом проекте всегда было туго.

 

На мой взгляд колбек 152 покрывает большую часть возможных нужд, поскольку даёт доступ к полной структуре хита, включая адресата, типы пули и пр. Достаточно подробный пример использования можно найти в огсе.

  • Спасибо 1
  • Нравится 1
 

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

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

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

 

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


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

@НаноБот,

автором bspatch.exe/bsdiff.exe является Colin Percival.Там есть исходники, но под Unix/Linux. Порт утилиты под винду сделал Andreas John. Его сайта уже нет, как и ссылки на скачивание. Однако, у себя нашёл.

 

Авторами patcher.exe являются [member=Колмогор] и ваш покорный слуга. Колмогор изначально разработал методику бинарных патчей с дополнительной секцией и создал утилиту для этого дела. Я утилиту переработал для более удобного и автоматизированного использования. Вот исходники. Утилита ужасна внутри и наверняка имеет косяки, но доводить её до ума времени, да и желания, так и не появилось.

  • Спасибо 2
  • Нравится 1
  • Полезно 1
 

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

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

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

 

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


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

@НаноБот,

Ну в целом bspatch использовался только для удобства публики. Исходно новая секция добавлялась с помощью PE Tools, а bsdiff/bspatch только создавал файл разницы и позволял его позже применять уже без PE Tools. Если знаете, как пользоваться PE Tools или чем-то подобным, то ничего другого не нужно.

 

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

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

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

 

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


Ссылка на сообщение
(изменено)

@НаноБот,

вношу поправку в предыдущий пост. bsdiff использовался не столько для удобства публики, а скорее потому, что не хотелось вносить в состав публичного проекта правленый файл dll. Ну т.е. в сущности всё равно для удобства публики, поскольку иначе пришлось бы заставлять всех учиться добавлять секцию с помощью PE Tools =)

 

слишком много манипуляций при создании нового проекта, надо сделать новый *.diff

 

Если вышеозначенное соображение насчёт присутствия правленного коммерческого бинарника не важно, то можно просто создать этот файл с пустой секцией один раз и затем его и использовать. Просто создавать батником копию перед переносом правок, а оригинал не трогать. В любом случае мучения с PE Tools - это ровно один раз на один проект.

 

ЗЫ: Только не подумай, что я тебя отговариваю от написания своих утилит. Я просто уточняю как было. А так чем больше утилит, тем лучше. Если бы меня не стукнуло переписать вариант Колмогора, то мучились бы сейчас с его утилитой (там было больше ручной настройки).

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

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

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

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

 

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


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

@7.9

К сожалению, это вряд ли осуществимо в виде ассемблерной правки (не считая того, что проект уже по-сути заморожен). В исходниках наверное можно сделать, но это уже другая история.

 

Вообще же, не очень понятно, зачем вообще эта фича нужна. При текущем подходе для каждой пропорции надо всё равно делать набор конфигов руками. От этой работы никто не избавит (в рамках именно такого подхода). Получается, что движок должен только переключать наборы конфигов в зависимости от пропорций. Но это как раз совершенно спокойно можно сделать и вне движка: например в специальном ланчере. Я бы так и делал, а из движка это переключение вообще бы убрал (всё равно оно там сделано до невозможности криво и попросту убого).

  • Согласен 1
 

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

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

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

 

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


Ссылка на сообщение
On 9/29/2018 at 2:22 PM, Graff46 said:

Можно ли в рамках данного проекта реализовать функцию чтобы на нужном этапе загрузке локации получить-изменить путь до папки с локации - смысл: подменять папку локации перед её загрузкой

 

На мой взгляд, слишком хлопотно. С другой стороны, что мешает подменять локацию просто подменяя переход на неё? Технология скриптовых переходов давно существует, так что просто надо по условию переходить на другую локацию.

 

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

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

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

 

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


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

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

AMK-Team.ru

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