Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!

> Помощь по разделу

Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов

> Редактирование движка
RayTwitty
сообщение 22.01.2016, 17:18
Сообщение #3841


Игровой Бог
**********************

Репутация:   648  
Группа: Участник
Сообщений: 5354
Регистрация: 24.09.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа



Редактирование собранного движка
Проект X-Ray extensions и его вики
Lua-перехватчик от alpet
xrLuaFix от RvP
xrLuaFix в редакции от Artos
xrLuaFix в редакции от svarog2741
LuaXML библиотека парсинга xml-файлов из скриптов (подключается при помощи функции require, которая есть в xrLuaFix)
NoProtect 1.0006 исполнительные файлы из Steam-версии без защиты
Документация к X-Ray (11.10.2004)
Файл заголовков от отладочного 6 патча
Cut X-Ray
Цель проекта - создание отдельных изменений движка игры с их последующей комбинацией с другими правками.
Авторы: SkyLoader, _призрак_
Для платформ: ТЧ 1.0004 и 1.0006, ЧН 1.5.10, ЗП 1.6.02
Адрес проекта на Google Code: https://code.google.com/p/cut-x-ray-project/
Страница на Moddb: http://www.moddb.com/mods/cut-x-ray-project-soc-cs-cop
Пак 1
1. Исправление вылета "can't find rank" для оружий.

2. Смерть от первого лица.
Видео: https://www.youtube.com/watch?v=c-4dNyvizxY

3. Collide
Возвращена коллизия мертвых тел с неписями и актором, как она сделана в старой физике билдов.
Видео: https://www.youtube.com/watch?v=1xNn04f3djc

4. Круглый прицел.
Возвращен круглый прицел вместо перекрестья, как билдах.

5. Исправление вида от 3-го лица.
Изменено положение камеры от 3-го лица (1). Стрельба идет по перекрестью, а не по направлению актора. Если включить вид от 3-го лица (1) и удерживать Shift, то ГГ будет автоматически целиться в ближайшего непися или монстра.
Проблемы: Стрельба по перекрестью идет также при виде от 3-го лица (2). Если при автоматическом нацеливании непись/монстр удалится или перейдет в оффлайн, будет движковый безлоговый вылет. Я думал вырезать это нацеливание, но решил оставить.
Пак 2
1. Luminosity progress (только ТЧ)
Возвращение шкалы освещения вместо шкалы "заметности" ГГ, как в билдах.

2. Запрет на доставание оружия в машине (только ТЧ и ЧН) и на лестнице (ТЧ, ЧН, ЗП).

3. Руки на руле в машине. (только ТЧ и ЧН)
Видео: https://www.youtube.com/watch?v=nYrnrfGkO7Y

4. Отсутствие распознавания неписей перекрестием:
При наведении на непися перекрестье имеет дефолтный цвет. Также не показывает информацию о неписе, если смотреть на него.

5. Bind_object:
Возможность использовать скрипты в мультиплеере.

6. Из оружия на классе бинокля можно стрелять (только ТЧ)
Пак 3
1. Включение некоторых команд без использования ярлыка. Можно патчить по отдельности. Команды: -smap_4096 (максимально улучшенные карты теней), -mblur (включение блюра).

2. Измененная анимация безоружного гг.

3. Увеличение дистанции диалога с неписями (для создания сценок на расстоянии)

4. Исправление вылета при использовании предметов из трупов неписей.
В отличии от версии Kolmogor'а, здесь отключено само меню использования.

5. Возможность поднимать болты как обычные инвентарные предметы (комбинировать с модом Charsi "Заканчивающиеся болты")
Скачать все паки
Правки от RayTwitty aka Shadows
Geometry LOD fix (CS 1.5.10) – расширение диапазона консольной команды r__geometry_lod
Camblu crosshair for build 1865 – замена перекрестия прицела на кружок в билде 1865
Vertex buffer fix for NC Project – исправление вылета по переполнению буфера в NC Project
NO 100 sovetov fix (COP 1.6.02) – убирает надписи "100 советов" с экрана загрузки
Demo Record fix (SOC 1.0006) – убирает красные надписи в режиме demo_record
Weapon Bobbing Beta (SOC 1.0006) – раскачка оружия при ходьбе (бета-версия)
Build Loadscreen (SOC 1.0006) – билдовский экран загрузки со статичным изображением
Detail Density fix (SOC 1.0006) – расширение диапазона консольной команды r__detail_density
Mipbias fix (SOC 1.0006) – расширение диапазона консольных команд r1_tf_mipbias и r2_tf_mipbias
No Quick Use fix (SOC 1.0006) – запрет на использование аптечек и бинтов по быстрым клавишам
Sun Near fix (SOC 1.0006) – расширение диапазона консольной команды r2_sun_near
Target Font (SOC 1.0006) – замена шрифта под перекрестием прицела на шрифт DI
Unload Magazine fix (SOC 1.0006) – фикс скриптовой функции unload_magazine - теперь патроны разряжаются в инвентарь
PNG Screenshots (SOC 1.0006) – игра теперь делает качественные скриншоты в формате png

Скачать все правки
Правки от K.D.
xrPatch v0.8 – патчер для увеличения радиуса прорисовки травы
detail radius+density fix [SOC 1.0006] – добавляет регулировку радиуса отрисовки травы через консольную команду и расширяет диапазон регулировки плотности травы до 0.02
Правки от macron
Исправленный экзешник для SoC 1.0006
Доработанный и исправленный экзешник для ТЧ 1.0006 (на основе Steam-версии без защиты)
Включает в себя исправления вылетов, а также очистку лога игры от засоряющих сообщений. Более подробное описание внутри архива.

Ссылка: https://yadi.sk/d/At9Tw0ueSaDyS
X-Ray extensions portable
Портативная версия расширений движка "X-Ray extensions"
Платформы: ТЧ 1.0006, ЧН 1.5.10, ЗП 1.6.02
Эта версия имеет все нужные библиотеки и патчеры, а также настроенные bat-файлы для успешной компиляции. Более подробное описание внутри архива.

Ссылка: https://yadi.sk/d/OLYPbDXWjyEkH
Правки от Kolmogor
Правленный xrGame для SoC 1.0004
Изменения:
1. Добавлена консольная команда fov [5.0, 180.0] - изменяет глобальный FOV камеры.
2. Добавлена консольная команда k_ammo_on_belt [on\off] - включает\выключает использование патронов с пояса.
3. Артефакты работают из рюкзака, а пояс служит контейнером.

Ссылка: http://rusfolder.com/42636653
Правки от Kontro-zzz
Изменение значения hud_fov
Правки фиксированных значений параметра hud_fov - 0.37 либо 0.53, для CS 1.5.10 и для билда 3120.
Должно работать на GOG версии и no DVD.
Редактирование исходников
Скачать все исходники отсюда или с оригинальных постов SoC 1.0007rc1 SoC и CS CoP X-Ray 2
Репозитории

[SoC]
() Alpet & KD / оригинальное репо [Архивная ценность]
() xrDev [Архивная ценность]
() CleanXR [Архивная ценность]
() KRoddin [Архивная ценность][/b]
() Lost Alpha old [Архивная ценность]
() Репозиторий OGSE | Самый актуальный форк (KRoddin) | Версия от Abramcumner с небольшими исправлениями
() 1exx [Архивная ценность]
() Shkiper2012 [Архивная ценность]
() Morrey (dx10) [Архивная ценность]
() OP Engine (Winsor)
() Kondr48 [Архивная ценность]

[CS]
() RedPython [Архивная ценность]
() xrDev [Архивная ценность]
() OpenXRay [Архивная ценность]
() Charsi82 [Архивная ценность]
() Abramcumner | drksnc (MP) [Архивная ценность]
() RainbowZerg [Архивная ценность]

[CoP]
() Forser
() OpenXRay
() CoC | Demosfen | Last Day
() Abramcumner
() Im-Dex [Архивная ценность]
() xrDev [Архивная ценность]
() Tron [Архивная ценность]
() mrmnwar [Архивная ценность]
() Avo [Архивная ценность]
() vincent-t [Архивная ценность] | Старый репозиторий
() Shoкer
() Morrey CS-COP [Архивная ценность]
() Morrey [Архивная ценность]

[2.0]
() Saas
() xrOxy
Компиляторы x64: SoC CS CoP
NDA GSC
Оригинальные версии движков
Могут понадобиться для восстановления оригинальных библиотек.
SoC SoC ENG CS CoP
GOG version [1.0006, 1.5.10, 1.6.02]
Multi-patch version [1.0006, 1.5.10, 1.6.02]
Официальный мультиплеерный (невышедший) патч для SoC 1.0007rc1.
Уроки
Изменение плотности травы и создание патча через IDA Pro
Автор: _призрак_
edited by: RayTwitty aka Shadows

Для редактирования нам понадобится программа IDA Pro.

1. Запускаем IDA Pro.
2. Загружаем бинарник рендера xrRender_R1.dll или xrRender_R2.dll.
3. Теперь необходимо найти, где регистрируется консольная команда. Жмем Ctrl+T и вводим r__detail_density.
4. Находим функцию и тщательно ее разбираем (я ее полностью разбирать не буду, только укажу, где задаются параметры:
Код регистрации консольной команды
Код
fld ds:flt_10064400 -- нижнее ограничение равное 0.6
or dword_1007CACC, 8
sub esp, 8
fstp [esp+30h+var_2C]
mov ecx, offset unk_1007CA9C
fld ds:flt_10064380 -- верхнее ограничение равное 0.2
fstp [esp+30h+var_30]
push offset aSs; "ЪЩЩ>"
push offset aR__detail_dens; "r__detail_density"
call ds:??0CCC_Float@@QAE@PBDPAMMM@Z; CCC_Float::CCC_Float(char const *,float *,float,float)
push offset sub_1005E080; void (__cdecl *)()
call _atexit
add esp, 4
Если вы заметили, чтобы трава стала плотней нужно уменьшить параметр, а чтобы травы стало меньше, нужно параметр увеличить
5. Нам нужно увеличить плотность травы: следовательно нужно изменить верхнее ограничение. Как это сделать? Есть три варианта:

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

Второй: взять другую, уже существующую переменную с подходящим значением. Хороший вариант которым я и воспользовался. Но и тут есть недостаток - переменных в бинарнике не так уж и много и можно просто не найти нужную.

Третий: создать переменную. Отличный вариант. Единственный минус - я не знаю как это сделать smile.gif

Я пошел по второму пути. Два раза щелкнув на ds:flt_10064380, IDA отправила меня в дебри под названием .rdata. Там я нашел переменную, которая называлась - flt_1006452C и которая имела значение 0.0720999.
Насколько я понял, flt_1006452C - не является названием переменной, это сборка из двух показателей - (тип числа)_(смещение). В нашем случае это число типа float, которое находится по адресу 1006452C. Ну что же, приступим к редактированию!
6. Отправляемся в самое начало файла. Как? Сверху есть что-то типа статус-бара - строка состоящая из синего, серого, черного цвета. Нажимаем там в любом месте мышкой и ведем влево до конца.
7. Опять ищем r__detail_density. Находим в этой функции строку fld ds:flt_10064338. Дальше самое интересное - жмем на вкладку Hex View и там у нас выделяются какие-то цифры. Это наша переменная 10064338, только написано наоборот. Сравните:
Код
38 43 06 10
10 06 43 38
Похоже, не правда ли? smile.gif
8. Начинаем редактировать. Нам нужно поменять 4338 на 452C (т.е. заменить ссылку с одной переменной на другую). Жмем правой кнопкой мыши на этих цифрах и выбираем пункт Edit. Меняем 38 43 на 2С 45. Дальше жмем где-нибудь в коде (это нужно сделать обязательно!).
9. После этого жмем правой кнопкой мыши и выбираем commit changes. Таким образом, мы поменяли ссылку на переменную и теперь верхнее ограничение будет равно значению из другой переменной.
Но IDA не меняет исходный файл. В нашем случае мы можем только создать файл изменений. Делается это так: File -> Produce file -> Create DIF file. Назовем его test. Этот файл можно открыть при помощи блокнота и посмотреть, что получилось.
10. Теперь необходимо внести изменения из этого файла в движок. Это можно сделать при помощи патчера bpatch. Качаем, смотрим и запускаем bpatch.cmd. Я думаю, что батник вы сможете изменить самостоятельно (настроить пути файлов и т.п.) - там все элементарно.
11. Все! Изменения внесены в движок, можно тестировать smile.gif

Огромное спасибо Kolmogor'у и malandrinus'у. Если бы не они, я бы ничего не сделал. Спасибо вам еще раз.
Спасибо и Rolan'у, с которым я очень много беседовал и тоже узнал много чего smile.gif




Сообщение отредактировал RayTwitty - 27.08.2021, 00:15
Перейти в начало страницы
 
242 страниц V  « < 191 192 193 194 195 > »   
Начать новую тему
Ответов
AndreySol
сообщение 25.07.2019, 12:41
Сообщение #3842


Опытный Геймер
*******

Репутация:   3  
Группа: Участник
Сообщений: 150
Награды: 3
Регистрация: 16.02.2014




Вставить ник Цитировать выделенное в форуму быстрого ответа


XR_CPU_PIPE.DLL, ну так написано же: XML node not found, не найдено "msg_box_kicked_by_server:picture". У тебя в конфигах, похоже, вырезано что-то касающееся мультиплеера. Или добавь из оригинальных в свои, или используй оригинальные конфиги.
Перейти в начало страницы
 
XR_CPU_PIPE.DLL
сообщение 25.07.2019, 12:54
Сообщение #3843


Опытный Геймер
*******

Репутация:   0  
Группа: Участник
Сообщений: 155
Регистрация: 09.05.2019




Вставить ник Цитировать выделенное в форуму быстрого ответа


эврика
ну не фига се
чтоб я без вас делал biggrin.gif


--------------------
1920
Перейти в начало страницы
 
cjayho
сообщение 25.07.2019, 14:26
Сообщение #3844


Мастер Игры
************

Репутация:   248  
Группа: Участник
Сообщений: 1363
Награды: 4
Регистрация: 08.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


QUOTE (XR_CPU_PIPE.DLL @ 25.07.2019, 10:34) *
кто то пытался собрать исходники лост альфы?


Я пытался. И даже получалось ( я разработчик лостальфы biggrin.gif )

Сообщение отредактировал cjayho - 25.07.2019, 14:30


--------------------
Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack - https://github.com/cjayho/ecb-shaderpack/

------

Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha.

Spotify | Apple Music | YouTube | BandCamp | AudioMack
Перейти в начало страницы
 
XR_CPU_PIPE.DLL
сообщение 25.07.2019, 14:42
Сообщение #3845


Опытный Геймер
*******

Репутация:   0  
Группа: Участник
Сообщений: 155
Регистрация: 09.05.2019




Вставить ник Цитировать выделенное в форуму быстрого ответа


2013 студию юзал?
хотя по .sln файлу видно


--------------------
1920
Перейти в начало страницы
 
cjayho
сообщение 25.07.2019, 16:16
Сообщение #3846


Мастер Игры
************

Репутация:   248  
Группа: Участник
Сообщений: 1363
Награды: 4
Регистрация: 08.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


QUOTE (XR_CPU_PIPE.DLL @ 25.07.2019, 13:42) *
2013 студию юзал?
хотя по .sln файлу видно


ну так к чему такие вопросы? smile.gif


--------------------
Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack - https://github.com/cjayho/ecb-shaderpack/

------

Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha.

Spotify | Apple Music | YouTube | BandCamp | AudioMack
Перейти в начало страницы
 
XR_CPU_PIPE.DLL
сообщение 25.07.2019, 17:00
Сообщение #3847


Опытный Геймер
*******

Репутация:   0  
Группа: Участник
Сообщений: 155
Регистрация: 09.05.2019




Вставить ник Цитировать выделенное в форуму быстрого ответа


это был риторический вопрос


--------------------
1920
Перейти в начало страницы
 
RayTwitty
сообщение 25.07.2019, 19:58
Сообщение #3848


Игровой Бог
**********************

Репутация:   648  
Группа: Участник
Сообщений: 5354
Регистрация: 24.09.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


В оригинальном ТЧ (а может и в ЧН/ЗП) есть баг со скрытием оружия.
Есть вызываем скриптовый метод db.actor:hide_weapon() то оружие исчезает сразу, не отыгрывая анимацию holster (hide). При этом, если скрыть оружие кнопкой на клавиатуре (например, для слота автоматов это кнопка 3), то оружие скрывается нормально, отыгрывая анимацию.

Долго ковыряв стек вызовов, решил сравнить, что происходит при скрытии оружия кнопкой. Сравнил стек функции CInventory::Activate и понял, что он абсолютно идентичен что при скрытии кнопкой, так и при скрытии через скрипт. Постепенно стал идти по стеку вызова функций и нашел место, где происходит разное поведение:
Если скрыть оружие таким образом
Код
pActor->inventory().SetSlotsBlocked(u16(INV_STATE_BLOCK_ALL), true);
то все ОК.
А вот если вызвать
Код
pActor->SetWeaponHideState(INV_STATE_BLOCK_ALL, true);
то оружие исчезнет сразу.

Но самое интересное, что SetWeaponHideState делает почти тоже самое, только вызов идет пересылками через пакет:
Код
void CActor::SetWeaponHideState (u32 State, bool bSet)
{
    if (g_Alive() && this == Level().CurrentControlEntity())
    {
        NET_Packet    P;
        u_EventGen    (P, GEG_PLAYER_WEAPON_HIDE_STATE, ID());
        P.w_u32        (State);
        P.w_u8        (u8(bSet));
        u_EventSend    (P);
    };
}
////////////////////////////////////////////////////////////////////////////////////////////////////
void CActor::OnEvent(NET_Packet& P, u16 type)
{
...
case GEG_PLAYER_WEAPON_HIDE_STATE:
        {
            u32 State        = P.r_u32();
            BOOL    Set        = !!P.r_u8();
            inventory().SetSlotsBlocked    ((u16)State, !!Set);
        }break;
...
}

Спрашивается, в чем тут магия и почему разное поведение?

Попутно, заметил еще кое-что:
1) Болт скрывается с анимацией и по кнопке, и по скрипту. Но это происходит скорее всего из-за того, что для него не вызывается CHudItem::Deactivate() в родительских классах, в котором в свою очередь вызывается OnHiddenItem(), который херит всю малину (сразу переключает стейт на hidden)
2) Оружие при скрытии скриптом, похоже скрывается не до конца, а убирается из рендера, так как звук скрытия и стейт Hide отыгрывается.

Короче, какая-то странная дичь z_crazy.gif

Сообщение отредактировал RayTwitty - 25.07.2019, 20:00


--------------------
Перейти в начало страницы
 
XR_CPU_PIPE.DLL
сообщение 25.07.2019, 21:00
Сообщение #3849


Опытный Геймер
*******

Репутация:   0  
Группа: Участник
Сообщений: 155
Регистрация: 09.05.2019




Вставить ник Цитировать выделенное в форуму быстрого ответа


А чему то удивляться
Это же ПЫС smile.gif


--------------------
1920
Перейти в начало страницы
 
cjayho
сообщение 25.07.2019, 21:08
Сообщение #3850


Мастер Игры
************

Репутация:   248  
Группа: Участник
Сообщений: 1363
Награды: 4
Регистрация: 08.03.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


QUOTE (RayTwitty @ 25.07.2019, 18:58) *
pActor->inventory().SetSlotsBlocked(u16(INV_STATE_BLOCK_ALL), true);

pActor->SetWeaponHideState(INV_STATE_BLOCK_ALL, true);

Короче, какая-то странная дичь z_crazy.gif


чисто поржать попробуй применить function-style cast на u32 в нижнем коде biggrin.gif

Сообщение отредактировал cjayho - 25.07.2019, 21:10


--------------------
Набор шейдеров для S.T.A.L.K.E.R: Shadow of chernobyl: ECB-Shaderpack - https://github.com/cjayho/ecb-shaderpack/

------

Продюсер электронной музыки в стиле Dark Ambient, автор саундтрека для Desowave S.T.A.L.K.E.R.: Lost Alpha.

Spotify | Apple Music | YouTube | BandCamp | AudioMack
Перейти в начало страницы
 
RayTwitty
сообщение 25.07.2019, 22:12
Сообщение #3851


Игровой Бог
**********************

Репутация:   648  
Группа: Участник
Сообщений: 5354
Регистрация: 24.09.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Поставил вывод в лог на входе и на выходе:
Код
// посылаем сообщение
void CActor::SetWeaponHideState (u32 State, bool bSet)
{
    if (g_Alive() && this == Level().CurrentControlEntity())
    {
        Msg("CActor::SetWeaponHideState State = %d, (u16)State = %d, u8(bSet) = %d", State, (u16)State, u8(bSet));
        
        NET_Packet    P;
        u_EventGen    (P, GEG_PLAYER_WEAPON_HIDE_STATE, ID());
        P.w_u32        (State);
        P.w_u8        (u8(bSet));
        u_EventSend    (P);
        
    };
}
// принимаем сообщение
void CActor::OnEvent        (NET_Packet& P, u16 type)
{
...
    case GEG_PLAYER_WEAPON_HIDE_STATE:
        {
            u32 State        = P.r_u32();
            u8    Set        = P.r_u8();

            Msg("GEG_PLAYER_WEAPON_HIDE_STATE State = %d, (u16)State = %d, Set = %d", State, (u16)State, Set);
            inventory().SetSlotsBlocked    ((u16)State, !!Set);
        }break;
...
}

Результат вызова:
Код
Lua:
db.actor:hide_weapon()

исходники:
u32    INV_STATE_BLOCK_ALL        = 0xffffffff;
Actor()->SetWeaponHideState(INV_STATE_BLOCK_ALL,true);


Код
CActor::SetWeaponHideState State = -1, (u16)State = 65535, u8(bSet) = 1
GEG_PLAYER_WEAPON_HIDE_STATE State = -1, (u16)State = 65535, Set = 1

т.е. как можно видеть, результаты одинаковые.

---------------------------------------------------------------------
в качестве временного решения, решил вызывать скрытие оружие напрямую, без нет_пакета. С таким кодом, оно скрывается нормально, с анимацией.
Код
void CActor::SetWeaponHideState (u32 State, bool bSet)
{
    if (g_Alive() && this == Level().CurrentControlEntity())
    {
        inventory().SetSlotsBlocked(u16(State), bSet);
        
/*
        NET_Packet    P;
        u_EventGen    (P, GEG_PLAYER_WEAPON_HIDE_STATE, ID());
        P.w_u32        (State);
        P.w_u8        (u8(bSet));
        u_EventSend    (P);
*/
    };
}


--------------------
Перейти в начало страницы
 
mortan
сообщение 26.07.2019, 01:09
Сообщение #3852


Продвинутый геймер
********

Репутация:   16  
Группа: Участник
Сообщений: 222
Награды: 3
Регистрация: 28.06.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Этих трабл из-за нет-пакетов - полно. Всё же делать единый двигло для сингла и мультиплеера дурная затея. Как пример - из трупа нельзя перетащить оружее в нужный слот, оно залетает в тот который прописан в конфиге если он свободен, иначе просто тупо дропается в инвентарь. Я с этим столкнулся когда делал inv-in-inv рюкзаки и контейнеры.
Перейти в начало страницы
 
Winsor
сообщение 26.07.2019, 16:59
Сообщение #3853


Геймер
******

Репутация:   4  
Группа: Участник
Сообщений: 108
Награды: 3
Регистрация: 02.02.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Как бы само по себе SetSlotsBlocked оружие не прячет. Оно всего лишь выставляет маску на возможность использование того или иного слота. а вот уже спрятать/достать - это уже делает Activate(slot_id). т.е. могу предположить что в CInventory::SetSlotsBlocked код не попал в if(bChanged). По поводу нетпакета - на обработку такого вызова тратиться как минимум 1-н апдейт, вызов напрямую выполняется на этом же апдейте, на этом же апдейте должна выполниться и анимация hide. может она банально не успевает отрисоваться? может в этом причина? это только предположение.
Я делал проще если через скрипты
Код
local active_slot=db.actor:active_slot()
    if active_slot~=inventory_slots.NO_ACT_SLOT then
        db.actor:activate_slot(inventory_slots.NO_ACT_SLOT,true) --спрячем с анимацией активное оружие
    end
    db.actor:hide_weapon() --запретим использование слотов

так и красиво все и запрет выставляется.
===
Что-то я тупенький... Подскажите пожалуйста - где описан механизм обхода препятствий. например, деревьев, крупных скоплений камней. В path_builder все что смог понять - аномалии обходятся через рестрикторы, но у деревьев их нет? Или вот упирание ботов в открытые створки дверей, если открыты "по движению". Как бы дверь physic_object - но они его упорно игнорируют. Не стоит флаг STYPE_VISIBLEFORAI у створки, но при этом механизм коллизий с объектами работает? Или что делать с тем что feel_touch_new не "видит" объект створки? слишком много непонятного...

Сообщение отредактировал Winsor - 26.07.2019, 17:03
Перейти в начало страницы
 
RayTwitty
сообщение 26.07.2019, 17:26
Сообщение #3854


Игровой Бог
**********************

Репутация:   648  
Группа: Участник
Сообщений: 5354
Регистрация: 24.09.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Winsor @ 26.07.2019, 16:59) *
Как бы само по себе SetSlotsBlocked оружие не прячет. Оно всего лишь выставляет маску на возможность использование того или иного слота. а вот уже спрятать/достать - это уже делает Activate(slot_id). т.е. могу предположить что в CInventory::SetSlotsBlocked код не попал в if(bChanged).

smile.gif
Конечно же, я проверил вызовы - всё вызывается. И я уже писал выше, что Activate отрабатывает одинаково, что при скрытии кнопкой, что при hide_weapon. И внутри себя Activate работает одинаково (ставил метки после каждого действия/условия и потом сравнивал - в копейку). Короче говоря, дело не в этом куске. Спецэффекты появляются, если делать вызов SetSlotsBlocked через нетпакет.

Я даже пробовал обратное - в экшон кнопки засунуть вызов скрытия через нетпакет - в итоге получал такой же косяк.

Цитата(Winsor @ 26.07.2019, 16:59) *
По поводу нетпакета - на обработку такого вызова тратиться как минимум 1-н апдейт, вызов напрямую выполняется на этом же апдейте, на этом же апдейте должна выполниться и анимация hide.

Что-то где-то неявно происходит за этот апдейт(ы). Вот мне и интересно что smile.gif

З.Ы. хотя в теории, даже отсрочка на 10 апдейтов не должна ничего ломать - ведь скрытие не растянуто по времени, просто сам вызов SetSlotsBlocked позже происходит, чем вызов SetWeaponHideState.

Сообщение отредактировал RayTwitty - 26.07.2019, 17:30


--------------------
Перейти в начало страницы
 
abramcumner
сообщение 26.07.2019, 17:39
Сообщение #3855


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Winsor @ 26.07.2019, 16:59) *
где описан механизм обхода препятствий. например, деревьев, крупных скоплений камней.

Они обходятся по определению - под ними нет аи-сетки. Если проложить, нпц будут ходить сквозь деревья.
Перейти в начало страницы
 
XR_CPU_PIPE.DLL
сообщение 27.07.2019, 15:05
Сообщение #3856


Опытный Геймер
*******

Репутация:   0  
Группа: Участник
Сообщений: 155
Регистрация: 09.05.2019




Вставить ник Цитировать выделенное в форуму быстрого ответа


люди подскажите как в тч запилить раскачку рук?
по идее это в исходниках колупаться надо но я не знаю де именно
помогите пожалуйста sad.gif


--------------------
1920
Перейти в начало страницы
 
macron
сообщение 27.07.2019, 15:33
Сообщение #3857


Игровой Бог
**********************

Репутация:   1690  
Группа: Участник
Сообщений: 7021
Награды: 11
Регистрация: 22.02.2006




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(XR_CPU_PIPE.DLL @ 27.07.2019, 15:05) *
как в тч запилить раскачку рук?

А где обещанный порт ТЧ на PS3/4/5. Уже все приставки раскупили и сидим в предвкушении. laugh.gif
Перейти в начало страницы
 
XR_CPU_PIPE.DLL
сообщение 27.07.2019, 15:46
Сообщение #3858


Опытный Геймер
*******

Репутация:   0  
Группа: Участник
Сообщений: 155
Регистрация: 09.05.2019




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата
А где обещанный порт ТЧ на PS3/4/5. Уже все приставки раскупили и сидим в предвкушении. laugh.gif

ну во первых ответ те на вопрос
ну а во вторых я тут думаю какбе присабачить opengl|es к этому дерьму
потом ещё и разобраться с этим power процами
кароч это капец
но я стараюсь
а теперь ответ буде?



Сообщение отредактировал XR_CPU_PIPE.DLL - 27.07.2019, 15:46


--------------------
1920
Перейти в начало страницы
 
RayTwitty
сообщение 27.07.2019, 21:27
Сообщение #3859


Игровой Бог
**********************

Репутация:   648  
Группа: Участник
Сообщений: 5354
Регистрация: 24.09.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


В продолжение о скрытии оружия - вроде получилось сделать фикс получше.

В ЗП оказывается эту проблему забороли, но сделали это таким образом (костыль или нет, хз):
в функции CInventory::Activate вместо вызова
Код
m_slots[m_iActiveSlot].m_pIItem->Deactivate();

сделали
Код
active_item->cast_hud_item()->SendDeactivateItem();

в котором сделали дополнительную смену стейта через нет_пакет
Код
    if (!object().getDestroy())
    {
        NET_Packet                P;
        object().u_EventGen        (P,GE_WPN_STATE_CHANGE,object().ID());
        P.w_u8                    (u8(eHiding));
        object().u_EventSend    (P, net_flags(TRUE, TRUE, FALSE, TRUE));
    }

Плюс функцию Deactivate они зачем-то переименовали в DeactivateItem, но похоже что нигде ее не вызывают. В свою очередь, в ней идет вызов OnHiddenItem, о котором я уже писал выше - его убирание тоже фиксит проблему, но я думал что будут нежелательные эффекты. Проверил - все что вызывается в ней у классов оружия и гранат/болта уже итак вызывается без нее. И даже то, что пыс сделали в ЗП с посылкой GE_WPN_STATE_CHANGE - не нужно. Я проверил, с этим кодом в ТЧ два раза устанавливается стейт eHiding.

Короче говоря, фикс этой херни заключается в комменте вызова OnHiddenItem() в CHudItem::Deactivate(). Заодно, плавное убирание заработает на лестнице и в других местах, а не только при скрытии скриптом.

x-ray pity.gif

Сообщение отредактировал RayTwitty - 27.07.2019, 21:28


--------------------
Перейти в начало страницы
 
ForserX
сообщение 28.07.2019, 00:04
Сообщение #3860


Почти Игроман
*********

Репутация:   91  
Группа: Модератор
Сообщений: 516
Награды: 4
Регистрация: 19.07.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Кст, за лестницы. Два года назад словили интересное исключение, когда прыгали по лесницам туда-сюда. Если Стейт не до конца дошёл и тут же запускался следующий, двиг падал. Можно словить в ванильном ЗП в подземке Юпитер <-> Припять. Фикс можно найти у нас в одной из правок Гипа. А, да. Нужно достать детектор.


--------------------

В армии по 01.07.2020.
Перейти в начало страницы
 
mortan
сообщение 28.07.2019, 03:16
Сообщение #3861


Продвинутый геймер
********

Репутация:   16  
Группа: Участник
Сообщений: 222
Награды: 3
Регистрация: 28.06.2016




Вставить ник Цитировать выделенное в форуму быстрого ответа


Кст, тут напомнили ( не знаю насколько сильно этот баг известен ) о баге с оружием на классе РГ-6. Короче, берёшь ствол в руки, открывашь инв, разряжаешь и закрываешь инв, потом можно сделать один бесплатный выстрел. Повторять можно до бесконечности. Пока не ковырялся особо, но штука больно читерная, надо править, в OXR точно не исправлено)
Перейти в начало страницы
 

242 страниц V  « < 191 192 193 194 195 > » 
Ответить в данную темуНачать новую тему
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29.04.2024, 18:50