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

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

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

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

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

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


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

Репутация:   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  « < 228 229 230 231 232 > »   
Начать новую тему
Ответов
Diesel
сообщение 06.08.2020, 21:21
Сообщение #4582


Почти Мастер
***********

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




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


extern CRendeDevice Device; - ПЫСЫ приколисты, меня поимели. Они букву r забыли написать.

extern CRenderDevice Device; - а у меня вот так. А надо было без быквы r.

Я голову поломать успел.
Перейти в начало страницы
 
Diesel
сообщение 06.08.2020, 22:57
Сообщение #4583


Почти Мастер
***********

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




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


Всё победил код. Перетащил полсностью кости из ЗП в ЧН.

Осталось еще dx11 и х64 победить.


Еще обратил внимание, что компиль в 2012 визуалке тормозит игру (фпс ужасный). Возможно я при переносе накосячил.
А вот из 2008 визуалки выходит отличный компиль.


А еще странный баг, на ВИН7 видяха греется, а на ВИН10 нормальный процесс, кроме компиля 2012 визуалки.

А на DX10 нормально, а на DX9 тупит в ВИН10.


Короче, что я написал, только такой же как я поймёт. laugh.gif

Сообщение отредактировал Diesel - 06.08.2020, 23:12
Перейти в начало страницы
 
Diesel
сообщение 14.08.2020, 01:28
Сообщение #4584


Почти Мастер
***********

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




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


Как сделать так, что бы движок не зависал в меню из-за открытого браузера (Мазила)?

Это на уровне чего происходит завис? Типа xml код виноват?

Сообщение отредактировал Diesel - 14.08.2020, 01:28
Перейти в начало страницы
 
atanda
сообщение 16.08.2020, 13:08
Сообщение #4585
Pro gamer

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

Репутация:   72  
Группа: Участник
Сообщений: 622
Регистрация: 05.11.2017




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


Можете подсказать в каком месте в редакторах или в компиляторах билдятся декали?
Перейти в начало страницы
 
XinnogeN
сообщение 21.08.2020, 21:45
Сообщение #4586


Игрок
***

Репутация:   3  
Группа: Участник
Сообщений: 40
Регистрация: 10.11.2019




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


Всем доброго вечера! Подскажите пожалуйста, какие основные и дополнительные компоненты при установке VS2019 нужно установить для сборки движка? Заранее благодарен!
Перейти в начало страницы
 
JustChiller
сообщение 22.08.2020, 12:06
Сообщение #4587


Новичок
*

Репутация:   1  
Группа: Участник
Сообщений: 9
Регистрация: 11.09.2019




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


Кто-нибудь исправлял ввод с клавиатуры для русской раскладки ? Не удается ввести знак вопроса (DIK_7), точку и запятую (DIK_SLASH) и т.д.
Перейти в начало страницы
 
Diesel
сообщение 22.08.2020, 14:50
Сообщение #4588


Почти Мастер
***********

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




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


Кто хочет доказать теорию, что открытый браузер Мазила, стопорит курсор в меню игры?

Я сегодня ушатал Мазилу и понял в чём дело. Дело в dxgi.dll.
Движок и браузер Мазила используют одновременно одну и туже либу за июнь 2010 года.

Кстати, Мазила ушатывается на dxgi 2009 года.

Доказывайте!
Перейти в начало страницы
 
Diesel
сообщение 23.08.2020, 22:34
Сообщение #4589


Почти Мастер
***********

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




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


Игровая xrGame 1600 отличается малость от 1602, изменённым xrNetServer для сингла.
Решил потешить себя в среде 1600. Хотя на первый взгляд, рендер требует весьма серьёзной переделки.
Если переделать рендер (то смысл вообще от 1600) - это получится 1602.

Еще вариант (кроме DX11) вернуть рендер ЧН уже форсированный под 1602 и с компиляцией шейдеров как в ЧН и 1600.

Сообщение отредактировал Diesel - 23.08.2020, 22:59
Перейти в начало страницы
 
Diesel
сообщение 28.08.2020, 00:56
Сообщение #4590


Почти Мастер
***********

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




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


Установил я 2019 год Визуал. Проект ЧНх64 абрамкумнеровский открыл. Мля, что то даже собирается, своим очам не верю. biggrin.gif

Тык, может там xrLC для гипер двигла собрать? laugh.gif

Да ну нафиг: я xrGame собирал в 2008 1ч20мин, а в 2019 минут 20-30. Никавосебе.

Сообщение отредактировал Diesel - 28.08.2020, 01:19
Перейти в начало страницы
 
Diesel
сообщение 28.08.2020, 21:08
Сообщение #4591


Почти Мастер
***********

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




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


Наигрался я в 2019, что даже собрать x32 проект свой не могу.

А у Абрама малость баганут проект ЧН x64. Клиент вылетает при применении настроек в меню.
Перейти в начало страницы
 
stalkergoshawk
сообщение 31.08.2020, 19:41
Сообщение #4592


Почти Игрок
**

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




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


Подскажите для чего в оружейных классах функции: install_upgrade_impl( LPCSTR section, bool test ), install_upgrade_addon( LPCSTR section, bool test ) и подобные, в которых продублированы переменные из класса. Как эти функции работают, и нужно ли в них добавлять, новые переменные, добавленные в класс мною?
Перейти в начало страницы
 
Winsor
сообщение 04.09.2020, 14:56
Сообщение #4593


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

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




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


Цитата(stalkergoshawk @ 31.08.2020, 19:41) *
Подскажите для чего в оружейных классах функции

в ТЧ такого нет. smile.gif
===
Товарищи, меня уже давненько волнует тема "выкладывания" предметов из инвентаря в ТЧ. Адекватно работает только drop активного предмета, и то потому что, если я правильно понял - есть в модели актора соответствующая анимация? В остальных случаях позиция выкладываемого предмета рандомная ("за спиной"). Какие то попытки что-то сделать с этой системой я видел в движке alpet - но очень не понравилась реализация.
Основная проблема, которую я вижу - это нельзя однозначно сказать - выкладывается ли предмет (GE_OWNERSHIP_REJECT) "на улицу" или в сундук (сразу идет GE_OWNERSHIP_TAKE). при наличии однозначного ответа "красиво" переместить предмет - это не сложно.
H_SetParent так же не помогает в данном вопросе.
Кто-то пытался каким то образом исправить этот недочёт?

Сообщение отредактировал Winsor - 04.09.2020, 14:57
Перейти в начало страницы
 
abramcumner
сообщение 04.09.2020, 15:36
Сообщение #4594


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

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




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


Цитата(Winsor @ 04.09.2020, 14:56) *
Основная проблема, которую я вижу - это нельзя однозначно сказать - выкладывается ли предмет (GE_OWNERSHIP_REJECT) "на улицу" или в сундук (сразу идет GE_OWNERSHIP_TAKE). при наличии однозначного ответа "красиво" переместить предмет - это не сложно.

Всегда выбрасывай красиво - вот тебе и однозначность.
Перейти в начало страницы
 
RayTwitty
сообщение 04.09.2020, 15:54
Сообщение #4595


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

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




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


Цитата(Winsor @ 04.09.2020, 14:56) *
Основная проблема, которую я вижу - это нельзя однозначно сказать - выкладывается ли предмет (GE_OWNERSHIP_REJECT) "на улицу" или в сундук (сразу идет GE_OWNERSHIP_TAKE). при наличии однозначного ответа "красиво" переместить предмет - это не сложно.

Наверно можно создать глобальную переменную, в которой запоминать айди последнего предмета выкинутого актором, для которого сработал TAKE в inventory_owner. Единственное, тут надо временной лаг учитывать.
Можно еще парента через пару апдейтов проверить.

Ну или пересмотреть весь движок, вспомнить как актор может "выкидывать" предметы и везде поставить какие-нибудь флажки. На вскидку - выкинуть можно по G активного оружия, в контекстном меню инвентаря, по кнопке G в инвентаре. Еще можно переложить предмет, а можно продать.

Цитата(abramcumner @ 04.09.2020, 15:36) *
Всегда выбрасывай красиво - вот тебе и однозначность.

Я так понял он хочет телепортировать предмет после выкидывания)) Кстати, возможно действительно, даже если применить set position для предмета находящегося внутри ящика, ничего страшного не произойдет. Но это не точно biggrin.gif

Сообщение отредактировал RayTwitty - 04.09.2020, 15:56


--------------------
Перейти в начало страницы
 
abramcumner
сообщение 04.09.2020, 16:18
Сообщение #4596


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

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




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


Цитата(RayTwitty @ 04.09.2020, 15:54) *
Я так понял он хочет телепортировать предмет после выкидывания)) Кстати, возможно действительно, даже если применить set position для предмета находящегося внутри ящика, ничего страшного не произойдет. Но это не точно biggrin.gif

Вроде норм работало: на OnItemDrop перемещаешь все подряд перед ГГ, а дальше не важно - уничтожится предмет, во что-то переместится или упадет на землю. Можно и физ. оболочку получить и по небольшой параболе в полет отправить.
Перейти в начало страницы
 
Winsor
сообщение 04.09.2020, 17:50
Сообщение #4597


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

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




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


Цитата(abramcumner @ 04.09.2020, 16:18) *
Вроде норм работало: на OnItemDrop перемещаешь все подряд перед ГГ, а дальше не важно - уничтожится предмет, во что-то переместится или упадет на землю. Можно и физ. оболочку получить и по небольшой параболе в полет отправить.
а после CObject::spatial_register не будет падать если предмет потом в box помещается?
Перейти в начало страницы
 
Yara
сообщение 08.09.2020, 18:44
Сообщение #4598


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

Репутация:   50  
Группа: Участник
Сообщений: 157
Награды: 2
Регистрация: 20.03.2014




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


На счёт редактирования некоторых параметров погоды в игре: сделал через кон.команды (си совсем не знаю, работает криво*)

xrRender_console.cpp

CODE
class CCC_ENV1 : public CCC_Vector3
{
public:
CCC_ENV1(LPCSTR N, Fvector* V, const Fvector _min, const Fvector _max) :
CCC_Vector3(N, V, _min, _max) {;}

virtual void Execute (LPCSTR args)
{
Fvector v;
if (3!=sscanf(args,"%f,%f,%f",&v.x,&v.y,&v.z))
InvalidSyntax();
else
{
CCC_Vector3::Execute(args);
if(g_pGamePersistent)
g_pGamePersistent->Environment().CurrentEnv.ambient.set(v);
}
}
virtual void Status (TStatus& S)
{
sprintf_s(S,"%f,%f,%f",value->x,value->y,value->z);
}
virtual void Info (TInfo& I)
{
sprintf_s(I,"vector3 in range [%f,%f,%f]-[%f,%f,%f]",min.x,min.y,min.z,max.x,max.y,max.z);
}

};

void xrRender_initconsole ()
...
tw_min.set(0,0,0);
tw_max.set(1,1,1);
CMD4( CCC_ENV1, "env_ambient_color", &ps_env_ambient_color, tw_min, tw_max );


* Работает только в режиме паузы, и при её отключении всё сбрасывается на значения из конфига. Не получилось сделать для clouds_color / hemi_color, ибо там 5/4 параметра.

Буду рад услышать дельные советы как это сделать лучше.


Перейти в начало страницы
 
rentgenluch
сообщение 11.09.2020, 11:40
Сообщение #4599


Новичок
*

Репутация:   1  
Группа: Участник
Сообщений: 5
Регистрация: 09.09.2019




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


Yara,
Костыльно можно задать time_factor_game на очень низкое значение, чтобы погода не менялась пока редактируешь
Убедись что ты редактируешь значения g_pGamePersistent->Environment().Current[0].

Например:

Код
g_pGamePersistent->Environment().Current[0]->ambient.x = myvalue;

Перейти в начало страницы
 
Yara
сообщение 11.09.2020, 13:05
Сообщение #4600


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

Репутация:   50  
Группа: Участник
Сообщений: 157
Награды: 2
Регистрация: 20.03.2014




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


Цитата(rentgenluch @ 11.09.2020, 14:40) *
Костыльно можно задать time_factor_game на очень низкое значение, чтобы погода не менялась пока редактируешь
Убедись что ты редактируешь значения g_pGamePersistent->Environment().Current[0].

Например:

Код
g_pGamePersistent->Environment().Current[0]->ambient.x = myvalue;

Вот спасибо, теперь нормально работает, без паузы. Только сделал не ambient.x, а сразу ambient = v; и ещё получилось менять clouds_color / hemi_color. Охх, как же теперь, чёрт возьми, удобно править погоду biggrin.gif
полный код (ТЧ):

xrRender_console.h

CODE

...
extern ECORE_API Fvector ps_env_ambient_color;
extern ECORE_API Fvector ps_env_clouds_color;
extern ECORE_API Fvector ps_env_fog_color;
extern ECORE_API Fvector ps_env_hemi_color;
extern ECORE_API Fvector ps_env_rain_color;
extern ECORE_API Fvector ps_env_sky_color;
extern ECORE_API Fvector ps_env_sun_color;


xrRender_console.cpp

CODE

...
#include "../IGame_Persistent.h"
#include "../Environment.h"
...
// Common
Fvector ps_env_ambient_color = { 0.f, 0.f, 0.f};
Fvector ps_env_clouds_color = { 0.f, 0.f, 0.f};
Fvector ps_env_fog_color = { 0.f, 0.f, 0.f};
Fvector ps_env_hemi_color = { 0.f, 0.f, 0.f};
Fvector ps_env_rain_color = { 0.f, 0.f, 0.f};
Fvector ps_env_sky_color = { 0.f, 0.f, 0.f};
Fvector ps_env_sun_color = { 0.f, 0.f, 0.f};
...
class CCC_ENV1 : public CCC_Vector3
{
public:
CCC_ENV1(LPCSTR N, Fvector* V, const Fvector _min, const Fvector _max) :
CCC_Vector3(N, V, _min, _max) {;}

virtual void Execute (LPCSTR args)
{
Fvector v;
if (3!=sscanf(args,"%f,%f,%f",&v.x,&v.y,&v.z))
InvalidSyntax();
else
{
CCC_Vector3::Execute(args);
if(g_pGamePersistent)
// old, work only in game pause
//g_pGamePersistent->Environment().CurrentEnv.ambient.set(v);
g_pGamePersistent->Environment().Current[0]->ambient = v;
}
}
virtual void Status (TStatus& S)
{
sprintf_s(S,"%f,%f,%f",value->x,value->y,value->z);
}
virtual void Info (TInfo& I)
{
sprintf_s(I,"vector3 in range [%f,%f,%f]-[%f,%f,%f]",min.x,min.y,min.z,max.x,max.y,max.z);
}

};
class CCC_ENV2 : public CCC_Vector3
{
public:
CCC_ENV2(LPCSTR N, Fvector* V, const Fvector _min, const Fvector _max) :
CCC_Vector3(N, V, _min, _max) {;}

virtual void Execute (LPCSTR args)
{
Fvector4 v;
if (3!=sscanf(args,"%f,%f,%f",&v.x,&v.y,&v.z))
InvalidSyntax();
else
{
CCC_Vector3::Execute(args);
if(g_pGamePersistent)
g_pGamePersistent->Environment().Current[0]->clouds_color = v;
}
}
virtual void Status (TStatus& S)
{
sprintf_s(S,"%f,%f,%f",value->x,value->y,value->z);
}
virtual void Info (TInfo& I)
{
sprintf_s(I,"vector3 in range [%f,%f,%f]-[%f,%f,%f]",min.x,min.y,min.z,max.x,max.y,max.z);
}

};
class CCC_ENV3 : public CCC_Vector3
{
public:
CCC_ENV3(LPCSTR N, Fvector* V, const Fvector _min, const Fvector _max) :
CCC_Vector3(N, V, _min, _max) {;}

virtual void Execute (LPCSTR args)
{
Fvector v;
if (3!=sscanf(args,"%f,%f,%f",&v.x,&v.y,&v.z))
InvalidSyntax();
else
{
CCC_Vector3::Execute(args);
if(g_pGamePersistent)
g_pGamePersistent->Environment().Current[0]->fog_color = v;
}
}
virtual void Status (TStatus& S)
{
sprintf_s(S,"%f,%f,%f",value->x,value->y,value->z);
}
virtual void Info (TInfo& I)
{
sprintf_s(I,"vector3 in range [%f,%f,%f]-[%f,%f,%f]",min.x,min.y,min.z,max.x,max.y,max.z);
}

};
class CCC_ENV4 : public CCC_Vector3
{
public:
CCC_ENV4(LPCSTR N, Fvector* V, const Fvector _min, const Fvector _max) :
CCC_Vector3(N, V, _min, _max) {;}

virtual void Execute (LPCSTR args)
{
Fvector4 v;
if (3!=sscanf(args,"%f,%f,%f",&v.x,&v.y,&v.z))
InvalidSyntax();
else
{
CCC_Vector3::Execute(args);
if(g_pGamePersistent)
g_pGamePersistent->Environment().Current[0]->hemi_color = v;
}
}
virtual void Status (TStatus& S)
{
sprintf_s(S,"%f,%f,%f",value->x,value->y,value->z);
}
virtual void Info (TInfo& I)
{
sprintf_s(I,"vector3 in range [%f,%f,%f]-[%f,%f,%f]",min.x,min.y,min.z,max.x,max.y,max.z);
}

};
class CCC_ENV5 : public CCC_Vector3
{
public:
CCC_ENV5(LPCSTR N, Fvector* V, const Fvector _min, const Fvector _max) :
CCC_Vector3(N, V, _min, _max) {;}

virtual void Execute (LPCSTR args)
{
Fvector v;
if (3!=sscanf(args,"%f,%f,%f",&v.x,&v.y,&v.z))
InvalidSyntax();
else
{
CCC_Vector3::Execute(args);
if(g_pGamePersistent)
g_pGamePersistent->Environment().Current[0]->rain_color = v;
}
}
virtual void Status (TStatus& S)
{
sprintf_s(S,"%f,%f,%f",value->x,value->y,value->z);
}
virtual void Info (TInfo& I)
{
sprintf_s(I,"vector3 in range [%f,%f,%f]-[%f,%f,%f]",min.x,min.y,min.z,max.x,max.y,max.z);
}

};
class CCC_ENV6 : public CCC_Vector3
{
public:
CCC_ENV6(LPCSTR N, Fvector* V, const Fvector _min, const Fvector _max) :
CCC_Vector3(N, V, _min, _max) {;}

virtual void Execute (LPCSTR args)
{
Fvector v;
if (3!=sscanf(args,"%f,%f,%f",&v.x,&v.y,&v.z))
InvalidSyntax();
else
{
CCC_Vector3::Execute(args);
if(g_pGamePersistent)
g_pGamePersistent->Environment().Current[0]->sky_color = v;
}
}
virtual void Status (TStatus& S)
{
sprintf_s(S,"%f,%f,%f",value->x,value->y,value->z);
}
virtual void Info (TInfo& I)
{
sprintf_s(I,"vector3 in range [%f,%f,%f]-[%f,%f,%f]",min.x,min.y,min.z,max.x,max.y,max.z);
}

};
class CCC_ENV7 : public CCC_Vector3
{
public:
CCC_ENV7(LPCSTR N, Fvector* V, const Fvector _min, const Fvector _max) :
CCC_Vector3(N, V, _min, _max) {;}

virtual void Execute (LPCSTR args)
{
Fvector v;
if (3!=sscanf(args,"%f,%f,%f",&v.x,&v.y,&v.z))
InvalidSyntax();
else
{
CCC_Vector3::Execute(args);
if(g_pGamePersistent)
g_pGamePersistent->Environment().Current[0]->sun_color = v;
}
}
virtual void Status (TStatus& S)
{
sprintf_s(S,"%f,%f,%f",value->x,value->y,value->z);
}
virtual void Info (TInfo& I)
{
sprintf_s(I,"vector3 in range [%f,%f,%f]-[%f,%f,%f]",min.x,min.y,min.z,max.x,max.y,max.z);
}

};
...


void xrRender_initconsole()
...

CMD4( CCC_ENV1, "env_ambient_color", &ps_env_ambient_color, tw_min, tw_max );
CMD4( CCC_ENV2, "env_clouds_color", &ps_env_clouds_color, tw_min, tw_max );
CMD4( CCC_ENV3, "env_fog_color", &ps_env_fog_color, tw_min, tw_max );
CMD4( CCC_ENV4, "env_hemi_color", &ps_env_hemi_color, tw_min, tw_max );
CMD4( CCC_ENV5, "env_rain_color", &ps_env_rain_color, tw_min, tw_max );
CMD4( CCC_ENV6, "env_sky_color", &ps_env_sky_color, tw_min, tw_max );
CMD4( CCC_ENV7, "env_sun_color", &ps_env_sun_color, tw_min, tw_max );
...


Перейти в начало страницы
 
sergy172
сообщение 11.09.2020, 13:46
Сообщение #4601


Босс
********************

Репутация:   447  
Группа: Участник
Сообщений: 4295
Награды: 6
Регистрация: 07.06.2008




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


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


--------------------
...Где каждый в душе великий Кобзон,
А на деле банальный Сид Вишес...
Моя Музыка Наша Музыка
Самый последний Косметик мод
В контакте ЛаЖа Facebook
Я плюс... Потому что я плюс. (с) Дрянь Тань Ян из провинции Гас Коу Ань.
Никакой справедливости нет, все законы работают не правильно, месть разрушительна и бесперспективна, правда у каждого своя, разум вообще больной. Остаётся жить любовью? Это был риторический вопрос.
Перейти в начало страницы
 

242 страниц V  « < 228 229 230 231 232 > » 
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 25.04.2024, 09:08