Kondr48 314 Опубликовано 4 Марта 2017 Поделиться Опубликовано 4 Марта 2017 (изменено) Цитата Реально ли взять папку Бин и пропатчить необходимые файлы, просто сохранив существующие и добавить и добавлять новые которые мне будут нужны Скорее нет чем да, по крайней мере существующие патчеры не рассчитаны на 7, его же из исходников собирали. --- Как можно получить позицию кости в худовой модели по ее имени или ИД? В движке, ТЧ. --- Нашел вот такой вариант: Показать Fvector CalcBonePosition(CKinematics *K, const Fvector &pos, LPCSTR bone_name) { u16 bone_id; if (xr_strlen(bone_name)) bone_id = K->LL_BoneID(bone_name); else bone_id = K->LL_GetBoneRoot(); Fmatrix matrix; Fmatrix XF; XF.identity(); XF.translate_over (pos); matrix.mul_43 (XF, K->LL_GetTransform(bone_id)); return (matrix.c); } Fvector CalcBonePosition(CKinematics *K, const Fvector &pos, LPCSTR bone_name) { u16 bone_id; if (xr_strlen(bone_name)) bone_id = K->LL_BoneID(bone_name); else bone_id = K->LL_GetBoneRoot(); Fmatrix matrix; Fmatrix XF; XF.identity(); XF.translate_over (pos); matrix.mul_43 (XF, K->LL_GetTransform(bone_id)); return (matrix.c); } Только не могу понять: какую позицию надо в него передавать? Ну, вернее позицию ЧЕГО? Изменено 4 Марта 2017 пользователем Kondr48 Ссылка на комментарий
UriZzz 1 004 Опубликовано 6 Марта 2017 Поделиться Опубликовано 6 Марта 2017 Привет, скажите пожалуйста - за что отвечает ui_mm_opt_video_adv.script? Просто вот такая ошибка выскочила https://yadi.sk/i/AB2bK_CP3F6mMW, я думаю что то связано с блудмарками, но почему не с того не с сего такое появилось. Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий
macron 1 893 Опубликовано 6 Марта 2017 Поделиться Опубликовано 6 Марта 2017 (изменено) Скрипт ui_mm_opt_video_adv.script обычно в паре с config\ui\ui_mm_opt.xml отвечает за пункты в расширенных видеоопциях (там, где галочки ставятся). Скрипт обратился в xml и не нашел там секции cap_bloodmarks. Изменено 6 Марта 2017 пользователем macron 1 Ссылка на комментарий
UnLoaded 313 Опубликовано 11 Марта 2017 Поделиться Опубликовано 11 Марта 2017 Такой вопрос: что использовать в исходниках для работы с строковыми значениями(типа lua-шных string.find, string.sub) ? Что-то стандартное из С++\WinAPI или есть что-то движковое ? Ссылка на комментарий
User_X.A.R26 261 Опубликовано 11 Марта 2017 Поделиться Опубликовано 11 Марта 2017 (изменено) @UnLoaded, есть различные функции из стандартной библиотеки C, C++, функции WinAPI Изменено 11 Марта 2017 пользователем User_X.A.R26 Ссылка на комментарий
mortan 144 Опубликовано 11 Марта 2017 Поделиться Опубликовано 11 Марта 2017 @UnLoaded, хочу сразу заметить что многие из этих функций "переписаны" на манер ПЫС: вместо string что-то вроде xr_string и так далее... Поэтому если студия говорит что такой функции нету - попробуй с этой приставкой поколдовать) 1 Ссылка на комментарий
UnLoaded 313 Опубликовано 11 Марта 2017 Поделиться Опубликовано 11 Марта 2017 (изменено) @User_X.A.R26 Так я же в курсе, просто в двигле разрабы для всего Сишного и WinAPIшного наделали оберток, ну и Lua присутствует. Вот и интересно, что правильней\лучше\быстрее будет ? Такое дело - лыжи по асфальту не едут, помогите смазать или снять... Показать Собственно, у CGameTaskManager есть ф-ция GiveGameTaskToActor(CGameTask* t, u32 timeToComplete, bool bCheckExisting), назначение понятно. Сделал в теле ф-ции вывод инфо в лог: CGameTask* CGameTaskManager::GiveGameTaskToActor(CGameTask* t, u32 timeToComplete, bool bCheckExisting) { if(bCheckExisting && HasGameTask(t->m_ID)) return NULL; m_flags.set(eChanged, TRUE); GameTasks().push_back(SGameTaskKey(t->m_ID)); GameTasks().back().game_task = t; t->m_ReceiveTime = Level().GetGameTime(); t->m_TimeToComplete = t->m_ReceiveTime + timeToComplete; Msg("CGameTaskManager::GiveGameTaskToActor - timeToComplete: %u", timeToComplete); Msg("CGameTaskManager::GiveGameTaskToActor - m_ReceiveTime: %u + timeToComplete: %u = m_TimeToComplete: %u", t->m_ReceiveTime, timeToComplete, t->m_TimeToComplete); std::sort(GameTasks().begin(), GameTasks().end(), task_prio_pred); ..... .....CGameTask* CGameTaskManager::GiveGameTaskToActor(CGameTask* t, u32 timeToComplete, bool bCheckExisting) { if(bCheckExisting && HasGameTask(t->m_ID)) return NULL; m_flags.set(eChanged, TRUE); GameTasks().push_back(SGameTaskKey(t->m_ID)); GameTasks().back().game_task = t; t->m_ReceiveTime = Level().GetGameTime(); t->m_TimeToComplete = t->m_ReceiveTime + timeToComplete; Msg("CGameTaskManager::GiveGameTaskToActor - timeToComplete: %u", timeToComplete); Msg("CGameTaskManager::GiveGameTaskToActor - m_ReceiveTime: %u + timeToComplete: %u = m_TimeToComplete: %u", t->m_ReceiveTime, timeToComplete, t->m_TimeToComplete); std::sort(GameTasks().begin(), GameTasks().end(), task_prio_pred); ..... ..... ну и запустил задание обычным образом, через тег в инфо-порции. Получил в логе такое: Цитата CGameTaskManager::GiveGameTaskToActor - timeToComplete: 0 CGameTaskManager::GiveGameTaskToActor - m_ReceiveTime: 507271692 + timeToComplete: 14778 = m_TimeToComplete: 0 далее, запустил это-же задание, но из скрипта: local new_task = CGameTask() new_task:load("ля-ля-ля-ля") db.actor:give_task(new_task, 3600000, true)local new_task = CGameTask() new_task:load("ля-ля-ля-ля") db.actor:give_task(new_task, 3600000, true) В логе получил такое: Цитата CGameTaskManager::GiveGameTaskToActor - timeToComplete: 3600000 CGameTaskManager::GiveGameTaskToActor - m_ReceiveTime: 507471972 + timeToComplete: 14778 = m_TimeToComplete: 3600000 Вот смотрю на лог и на код в ф-ции... Где подвох ? Еще вопрос. С помощью методов CInifile можно читать всякое из конфигов. Мне надо прочитать родительскую секцию, к примеру для аномалии: [zone_witches_galantine_weak]:zone_witches_galantine <- вот, это. Кто нибудь знает способ, или куда хоть копать ? Изменено 11 Марта 2017 пользователем UnLoaded 1 Ссылка на комментарий
Kondr48 314 Опубликовано 13 Марта 2017 Поделиться Опубликовано 13 Марта 2017 (изменено) Цитата Кто нибудь знает способ, или куда хоть копать ? Ну разве что сделать параметр и писать дублировать в него родительскую секцию. Костыльно слегка, однако самый легкий и простой способ. Изменено 13 Марта 2017 пользователем Kondr48 Ссылка на комментарий
UnLoaded 313 Опубликовано 13 Марта 2017 Поделиться Опубликовано 13 Марта 2017 Kondr48 писал(а): сделать параметр и писать дублировать в него родительскую секцию Я, за ! Вопрос - как эту родительскую секцию получить ? Ссылка на комментарий
Kondr48 314 Опубликовано 13 Марта 2017 Поделиться Опубликовано 13 Марта 2017 UnLoaded, я имел ввиду задать его изначально в ручную. В конфиг. Ну или же ловить в движке момент, где идет чтение родительских секций и там присваивать своей переменной значение родительской. Первый вариант проще Ссылка на комментарий
UnLoaded 313 Опубликовано 13 Марта 2017 Поделиться Опубликовано 13 Марта 2017 Kondr48 писал(а): Первый вариант проще Не думаю...Насчет "..ловить в движке..." - я опять за! Но вот именно в этом и вопрос - где это ловить ? В каком месте кода CInifile ? Ссылка на комментарий
WinCap 316 Опубликовано 14 Марта 2017 Поделиться Опубликовано 14 Марта 2017 UnLoaded писал(а): В каком месте кода CInifile ? Вот в этом: Xr_ini.cpp (Показать) void CInifile::Load(IReader* F, LPCSTR path ... { . . . if (0!=inherited_names) { VERIFY2 (m_flags.test(eReadOnly),"Allow for readonly mode only."); inherited_names += 2; // в inherited_names содержится строка с родительскими секциями . . . } . . . }void CInifile::Load(IReader* F, LPCSTR path ... { . . . if (0!=inherited_names) { VERIFY2 (m_flags.test(eReadOnly),"Allow for readonly mode only."); inherited_names += 2; // в inherited_names содержится строка с родительскими секциями . . . } . . . } S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Red1 1 Опубликовано 16 Марта 2017 Поделиться Опубликовано 16 Марта 2017 Ребят, кто может кинуть патч 1.0007 rc1?Ну там с лучами, все дела) Ссылка на комментарий
Kondr48 314 Опубликовано 17 Марта 2017 Поделиться Опубликовано 17 Марта 2017 (изменено) Цитата Ну там с лучами, все дела) В свободном доступе 7 патча с лучами по-моему нет. Изменено 17 Марта 2017 пользователем Kondr48 Ссылка на комментарий
UnLoaded 313 Опубликовано 19 Марта 2017 Поделиться Опубликовано 19 Марта 2017 Помощь нужна: как сделать массив(таблицу) произвольного размера? Типа такого: строка = строка строка = строка строка = строка .... .... Обычные массивы С++ видимо не прокатят, надо что-то типа vector? В движке есть обертка - xr_vector, вот только не пойму как эти векторы использовать. Может кто подкинуть пример, как сделать строковый массив типа того, что я выше показал ? Ссылка на комментарий
drksnc 14 Опубликовано 19 Марта 2017 Поделиться Опубликовано 19 Марта 2017 Привет. Visual Studio 2013, X-ray 1.6, качал с какого-то репо, сейчас уже не упомню с какого именно. Не могу скомпилировать xrGame. Debug и Mixed на первом скриншоте, Release - на втором. В Realese сборка идёт не смотря на ошибки, но валится позже, ссылаясь на отсутствие xrCore.lib. Опыт работы со студией у меня почти нулевой, но предполагаю, что дело в каких-то путях. Прошу помощи. Ссылка на комментарий
abramcumner 1 205 Опубликовано 19 Марта 2017 Поделиться Опубликовано 19 Марта 2017 (изменено) @drksnc, неудачный репо. Скорее всего Debug и Mixed конфигурации не настроены. В релизе ошибки intellisense - они не в счет. Покажи ошибки сборки. Цитата но валится позже, ссылаясь на отсутствие xrCore.lib Попробуй сначала собрать xrCore, потом xrGame. Может к репо прилагалась инструкция по сборке? Почему не хочешь взять OpenXray? Изменено 19 Марта 2017 пользователем abramcumner 1 Ссылка на комментарий
drksnc 14 Опубликовано 19 Марта 2017 Поделиться Опубликовано 19 Марта 2017 19.03.2017 в 10:24, abramcumner сказал: Попробуй сначала собрать xrCore, потом xrGame. Всё получилось, спасибо. OpenXray посмотрю. Ссылка на комментарий
Winsor 178 Опубликовано 20 Марта 2017 Поделиться Опубликовано 20 Марта 2017 UnLoaded писал(а): Помощь нужна: как сделать массив(таблицу) произвольного размера? Типа такого: строка = строка строка = строка строка = строка xr_vector не подойдет - это аналог std::vector. для Вашей задачи необходимо использовать std::map - в xray аналог - xr_map. для ключей и значений можно использовать как shared_str (память выделяется один раз и храниться до тех пор пока есть хоть одна ссылка на эту строку) так и xr_string (аналог std::string). Ссылка на комментарий
UnLoaded 313 Опубликовано 20 Марта 2017 Поделиться Опубликовано 20 Марта 2017 Winsor писал(а): для Вашей задачи необходимо использовать std::map - в xray аналог - xr_map Мне уже подсказали насчет xr_map, вроде смог разобраться как его использовать, но осталась одна проблемка: если объявляю xr_map <shared_str, shared_str> table в cpp-файле - все нормально, все сохраняется\получается, но если выношу объявление в h-файл public: xr_map <shared_str, shared_str> table;public: xr_map <shared_str, shared_str> table; то игра вылетает с логом: Цитата 0023:599609D1 xrCore.dll, std::_Lower_bound<CInifile::Sect * *,char const [256],int,bool (__cdecl*)(CInifile::Sect const *,char const *)>(), c:\program files (x86)\microsoft visual studio 12.0\vc\include\algorithm, 2514 .......... .......... .......... Посмотрел как у ПЫСов сделано - практически все, что начинается с xr_(или связано с таковым) у них в хедерах объявлено как typedef. Попробовал сделать для своей переменной - в cpp-файле студия подчеркивает красным и ругается "Идентификатор "table" не определен". Как побороть ? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти