Shredder 49 Опубликовано 30 Июня 2015 Поделиться Опубликовано 30 Июня 2015 Уважаемые гуру C++, кто-нибудь уже пытался восстановить воздействие аномалий на нпс в ЗП по исходникам? Уже третий день пытаюсь найти концы, но всё безрезультатно.И ещё вопрос, пытался сделать сборку 1.6.02 в VS2013 по https://github.com/OpenXRay/xray-16/blob/master/doc/howto/build.txt. Собралось не всё, нужный для меня xrGame.dll почему-то не появился. В логе 2 ошибки: Ошибка 104 error LNK1104: не удается открыть файл "cximage.lib" E:\xray-16\src\xrGame\LINK xrGame Ошибка 98 error LNK1104: не удается открыть файл "dxt.lib" E:\xray-16\src\utils\xrLC_Light\LINK xrLC_Light Что ещё нужно установить? Собирал в режиме Debug Ссылка на комментарий
svarog2741 83 Опубликовано 30 Июня 2015 Поделиться Опубликовано 30 Июня 2015 Ошибка 104 error LNK1104: не удается открыть файл "cximage.lib" E:\xray-16\src\xrGame\LINK xrGame Ошибка 98 error LNK1104: не удается открыть файл "dxt.lib" E:\xray-16\src\utils\xrLC_Light\LINK xrLC_Light У тебя нет 2-х либов. Ошибка 98 error LNK1104: не удается открыть файл "dxt.lib" E:\xray-16\src\utils\xrLC_Light\LINK xrLC_Light Собери сначала DXT Ошибка 104 error LNK1104: не удается открыть файл "cximage.lib" E:\xray-16\src\xrGame\LINK xrGame А вот это я хз не знаю, поищи в инете. В 1.0007 такого не встречал. Добавлено Kirgudu, 1 Июля 2015 Пункт 2.0 Правил форума, сутки чтения. НС - шлак, солянки - шлак. Ссылка на комментарий
User_X.A.R26 261 Опубликовано 30 Июня 2015 Поделиться Опубликовано 30 Июня 2015 (изменено) Ошибка 104 error LNK1104: не удается открыть файл "cximage.lib" E:\xray-16\src\xrGame\LINK xrGame Ошибка 98 error LNK1104: не удается открыть файл "dxt.lib" E:\xray-16\src\utils\xrLC_Light\LINK xrLC_Light Ты делал построение отдельных проектов или решения целиком? Если целиком решения, то лучше пройдись заново по всем проектам (кроме плагинов и utils, ибо они не нужны для запуска движка и предназначены только для SDK и редакторов) по отдельности Изменено 30 Июня 2015 пользователем User_X.A.R26 Ссылка на комментарий
Это популярное сообщение. *Shoker* 322 Опубликовано 30 Июня 2015 Это популярное сообщение. Поделиться Опубликовано 30 Июня 2015 (изменено) Нашёл небольшой баг (опечатку) в движке ЗП, скорее всего есть и в ТЧ\ЧН. В файле xrGame\Level_network.cpp в начале функции void CLevel::ClientSend() Перед проверкой GameID() == eGameIDSingle нужно поставить отрицание: if (!GameID() == eGameIDSingle || OnClient()) Тогда при сохранении игры для всех клиентских объектов будет вызываться net_Export (клиентские объекты будут синхронизироваться с серверным чётко при сохранении) Из за этой опечатки в оригинале есть баг, что при сохранении игры в серверный объект попадают данные клиентского объекта, устаревшие на несколько апдейтов - именно в момент сохранения синхронизации не происходит. (Например если убрать в оружии сохранение патронов у клиентского объекта в CWeaponMagazined::save, оставив сохранение патронов только у серверного объекта - то если выстрелить и сразу сохраниться -> при загрузке число патронов будет прежним) Кто хочет понять природу бага - надо начинать смотреть с функции void CALifeStorageManager::prepare_objects_for_save() в alife_storage_manager.cpp. Она вызывается во время сохранения и в свою очередь вызывает CLevel::ClientSend(), однако там из за опечатки происходит проверка на пропускную способность сети net_HasBandwith() (для МП), которая в 99% возвращает false. Баг не то, чтобы критичный но всё же серьёзный. Изменено 30 Июня 2015 пользователем *Shoker* 5 6 3 Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
OldGhost 18 Опубликовано 1 Июля 2015 Поделиться Опубликовано 1 Июля 2015 @*Shoker*, svarog2741 просил передать: "В тч условие немного другое: if (GameID() == GAME_SINGLE || OnClient())Соответственно и отрицание другое: if (!GameID() == GAME_SINGLE || OnClient())" 1 1 1 http://evrl.to/files/380723/- ссылка на инсталяционный RePack by R.G.Lapka "Lost World Origin Beta". Как и на рутрекере нужна рега,иначе вас выбросит на главную страницу. Ссылка на комментарий
Карлан 1 049 Опубликовано 1 Июля 2015 Поделиться Опубликовано 1 Июля 2015 @OldGhost, передай ему что он не прав. От меня. 1 1 Ссылка на комментарий
OldGhost 18 Опубликовано 1 Июля 2015 Поделиться Опубликовано 1 Июля 2015 (изменено) @Карлан, от svarog2741: "Я всё же считаю свой вариант правильным. Аргументируйте свой ответ, пожалуйста." Изменено 1 Июля 2015 пользователем OldGhost 1 1 http://evrl.to/files/380723/- ссылка на инсталяционный RePack by R.G.Lapka "Lost World Origin Beta". Как и на рутрекере нужна рега,иначе вас выбросит на главную страницу. Ссылка на комментарий
OldGhost 18 Опубликовано 2 Июля 2015 Поделиться Опубликовано 2 Июля 2015 @-StalkMen-, И что же тебя тут улыбнуло?Видимо до тебя не доходит, что пост Шокера о ЗП,а Сварога о ТЧ! Читать посты учимся! 2 1 http://evrl.to/files/380723/- ссылка на инсталяционный RePack by R.G.Lapka "Lost World Origin Beta". Как и на рутрекере нужна рега,иначе вас выбросит на главную страницу. Ссылка на комментарий
Kirgudu 1 204 Опубликовано 2 Июля 2015 Поделиться Опубликовано 2 Июля 2015 @*Shoker*, @svarog2741, Меня немного смущает другое. Вы пишете, например, так: if (!GameID() == eGameIDSingle || OnClient()) Зачем такие сложности? Не проще ли вместо инвертирования первого из аргументов сравнения проверить их на «не равно»? Вот так: if (GameID() != eGameIDSingle || OnClient()) Или цель уменьшить читабельность кода? И да, не сваливаемся в личную переписку! 2 Инструмент Ссылка на комментарий
LightOver 12.1 0 Опубликовано 2 Июля 2015 Поделиться Опубликовано 2 Июля 2015 Или цель уменьшить читабельность кода? Тут скорее кто как привык, тот так и делает. Ссылка на комментарий
Shredder 49 Опубликовано 2 Июля 2015 Поделиться Опубликовано 2 Июля 2015 Наконец-то сборка прошла. Но, блин, в начале новой игры, странная ошибка: stack trace: 0023:05D106CB xrRender_R2.dll, CDetailManager::cache_Update(), e:\xray-16-clear\src\layers\xrrender\detailmanager_cache.cpp, 1640023:05D0E40D xrRender_R2.dll, CDetailManager::MT_CALC(), e:\xray-16-clear\src\layers\xrrender\detailmanager.cpp, 4250023:004369A9 xrEngine.exe, motions_value::load()0023:70F6C9FD MSVCR120.dll0023:75F4339A kernel32.dll0023:772C9EF2 ntdll.dll0023:772C9EC5 ntdll.dll Исходники брал от сюда: https://github.com/avoitishin/xray-16/tree/masterИли подскажите, где взять чистые исходники под VS13 Ссылка на комментарий
LightOver 12.1 0 Опубликовано 2 Июля 2015 Поделиться Опубликовано 2 Июля 2015 где взять чистые исходники под VS13 Как бы мало где. Нормальная сборка будет только на 2005, 2008 и 2010. Хочешь на 2013 - возись. Ссылка на комментарий
Карлан 1 049 Опубликовано 2 Июля 2015 Поделиться Опубликовано 2 Июля 2015 Я всё же считаю свой вариант правильным. Научите меня понимать буквы, пожалуйста. Fix. ТЧ: void CLevel::ClientSend() { if (GameID() == GAME_SINGLE || OnClient()) { if ( !net_HasBandwidth() ) return; }; ЗП: void CLevel::ClientSend() { if (GameID() == eGameIDSingle || OnClient()) { if ( !net_HasBandwidth() ) return; }; Условие абсолютно другое, отрицание вообще не похоже, я честно сидел два дня подряд сравнивал, провел три экспертизы, даже хотел почерковедческую, но мне сказали "парень мы тут такие шарады не гадаем" . Ссылка на комментарий
User_X.A.R26 261 Опубликовано 2 Июля 2015 Поделиться Опубликовано 2 Июля 2015 где взять чистые исходники под VS13 Чистые? Только самому адаптировать или выискивать среди ревизий того репо тупо адаптацию к VS2013 (ты ведь её имеешь в виду?) Ссылка на комментарий
-StalkMen- 159 Опубликовано 2 Июля 2015 Поделиться Опубликовано 2 Июля 2015 (изменено) Мне жаль тех, кто не видит тут бреда (А ещё стоит обратить внимание на адрессную строку)Этож надо так скопировать @Карлан, У меня подозрение, что это один и тот же *гхм* кадр (svarog2741 == LightOver 12.* ). Изменено 2 Июля 2015 пользователем -StalkMen- 1 2 Ссылка на комментарий
Murarius 10 532 Опубликовано 2 Июля 2015 Поделиться Опубликовано 2 Июля 2015 Я правильно понимаю, последний десяток постов - это все о редактировании движка? Не стыдно техтемы загаживать хамством по отношению друг к другу? Обоим по предупреждению. Тему почистил. 2 Литературка (избранное): "Координаты избушки" (2023) --- "Колобок времени" (2019) --- "Пиво и жлоб" (2018) --- "Лекарство против морщин" (2013) --- "Когда все пройдет" (2013) Креатив (бесперспективное): Dominanta --- Сон на земле Досвиданьице (слезное): Смена администратора (2024) Ссылка на комментарий
-StalkMen- 159 Опубликовано 2 Июля 2015 Поделиться Опубликовано 2 Июля 2015 (изменено) Из xrCDB, но OPC обновлённый. ... mNodes = new AABBNoLeafNode[mNbNodes]; ... delete []mNodes ; mNodes = null; Последние 2 строчки - раскрытый макрос. Вопрос, память полностью высвободится? Изменено 2 Июля 2015 пользователем -StalkMen- Ссылка на комментарий
Это популярное сообщение. Shredder 49 Опубликовано 3 Июля 2015 Это популярное сообщение. Поделиться Опубликовано 3 Июля 2015 (изменено) Сбылась мечта идиота ) Нашёл, где включить воздействие аномалий на НПС в ЗП в классе CSpaceRestrictor в методе net_Spawn убираем строчку spatial.type &= ~STYPE_VISIBLEFORAI Может, конечно, я тут Америку не открыл, но мне никто так и не подсказал. Правда после включения наблюдается интересная картина. Если сталкер после первого хита выжил, он чуть отходит назад и начинает кидать болты )) Правда не совсем туда, куда надо. Да и выглядит это кривовато, но думаю эту схему можно отключить и подключить скриптовую, например из amk для ТЧ Изменено 3 Июля 2015 пользователем Shredder 2 1 4 Ссылка на комментарий
Kirgudu 1 204 Опубликовано 3 Июля 2015 Поделиться Опубликовано 3 Июля 2015 Ещё немного оффтопа, но написать его должен, иначе вы такого в движке наворотите, коллеги, что мама не горюй. Мой первоначальный вопрос: if (!GameID() == eGameIDSingle || OnClient())Зачем такие сложности? Не проще ли вместо инвертирования первого из аргументов сравнения проверить их на «не равно»? Вот так: if (GameID() != eGameIDSingle || OnClient())Или цель уменьшить читабельность кода? Ответ: Тут скорее кто как привык, тот так и делает.Так вот, это крайне порочная практика. Во-первых, читабельность кода - не пустой звук. Ладно, если пишете исключительно для себя, там хоть сотней последовательных «if» условия пишите (видел я где-то тут на днях подобный «шедевр») - только вам с этим кодом потом и разбираться. А если потом потребуется чья-то помощь? А если - не дай Бог - разрабатываете или будете дорабатывать в команде? Будете менять «привычки» в зависимости от обстоятельств? А во-вторых, давайте посмотрим на выражение, за которое я зацепился. if (!GameID() == eGameIDSingle || OnClient())Логический оператор «!» - это отрицание, инвертирование, которое может применяться к логическим выражениям и булевым переменным, имеющим только два возможных состояния, true или false, ложь или истина. Хорошо, что тут, по всей видимости (сам в движке не ковырялся), функция GameID() возвращает именно булевый результат, поэтому ошибку вы не получаете. Но что будет, если в аналогичной ситуации один из сравниваемых аргументов будет представлять собой, скажем, число или строку? Число тоже попытаетесь инвертировать «как привыкли»? И что в таком случае будет результатом? Вопрос риторический. И я уж не говорю о более сложных случаях. Стоит научиться писать код правильно, а не «как привыкли». Хотя бы не для себя, а ради тех, кто потом пойдёт по вашим стопам. Добавлено RayTwitty, 3 Июля 2015 GameID конечно же возвращает идентификатор типа игры, какой булевой?)) Добавлено RayTwitty, 3 Июля 2015 u32 GameID(); Добавлено Kirgudu, 3 Июля 2015 Тем более! 2 2 Инструмент Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти