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

Редактирование движка X-Ray


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

Уважаемые гуру 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
Ссылка на комментарий
Ошибка 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,

Пункт 2.0 Правил форума, сутки чтения.

svarog2741.gif

 

НС - шлак, солянки - шлак.

Ссылка на комментарий
Ошибка 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 и редакторов) по отдельности

Изменено пользователем User_X.A.R26
Ссылка на комментарий

@*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". Как и на рутрекере нужна рега,иначе вас выбросит на главную страницу.

Ссылка на комментарий

@Карлан, от svarog2741: "Я всё же считаю свой вариант правильным. Аргументируйте свой ответ, пожалуйста."

Изменено пользователем OldGhost
  • Спасибо 1
  • Не нравится 1

http://evrl.to/files/380723/- ссылка на инсталяционный RePack by R.G.Lapka "Lost World Origin Beta". Как и на рутрекере нужна рега,иначе вас выбросит на главную страницу.

Ссылка на комментарий

@-StalkMen-, И что же тебя тут улыбнуло?Видимо до тебя не доходит, что пост Шокера о ЗП,а Сварога о ТЧ! Читать посты учимся!

  • Нравится 2
  • Не нравится 1

http://evrl.to/files/380723/- ссылка на инсталяционный RePack by R.G.Lapka "Lost World Origin Beta". Как и на рутрекере нужна рега,иначе вас выбросит на главную страницу.

Ссылка на комментарий

@*Shoker*@svarog2741,

Меня немного смущает другое. Вы пишете, например, так:

if (!GameID() == eGameIDSingle || OnClient()) 
Зачем такие сложности? Не проще ли вместо инвертирования первого из аргументов сравнения проверить их на «не равно»? Вот так:

if (GameID() != eGameIDSingle || OnClient()) 
Или цель уменьшить читабельность кода? :)

 

 

И да, не сваливаемся в личную переписку!

  • Нравится 2
Ссылка на комментарий

Наконец-то сборка прошла. Но, блин, в начале новой игры, странная ошибка:

 

stack trace:



0023:05D106CB xrRender_R2.dll, CDetailManager::cache_Update(), e:\xray-16-clear\src\layers\xrrender\detailmanager_cache.cpp, 164
0023:05D0E40D xrRender_R2.dll, CDetailManager::MT_CALC(), e:\xray-16-clear\src\layers\xrrender\detailmanager.cpp, 425
0023:004369A9 xrEngine.exe, motions_value::load()
0023:70F6C9FD MSVCR120.dll
0023:75F4339A kernel32.dll
0023:772C9EF2 ntdll.dll
0023:772C9EC5 ntdll.dll

 

 

 

Исходники брал от сюда: https://github.com/avoitishin/xray-16/tree/master
Или подскажите, где взять чистые исходники под VS13

Ссылка на комментарий

Я всё же считаю свой вариант правильным. Научите меня понимать буквы, пожалуйста.

Fix.

ТЧ:

void CLevel::ClientSend()
{
if (GameID() == GAME_SINGLE || OnClient())
{
if ( !net_HasBandwidth() ) return;
};

ЗП:

void CLevel::ClientSend()
{
if (GameID() == eGameIDSingle || OnClient())
{
if ( !net_HasBandwidth() ) return;
};

Условие абсолютно другое, отрицание вообще не похоже, я честно сидел два дня подряд сравнивал, провел три экспертизы, даже хотел почерковедческую, но мне сказали "парень мы тут такие шарады не гадаем" :(.

Ссылка на комментарий

 

 

где взять чистые исходники под VS13

Чистые? Только самому адаптировать или выискивать среди ревизий того репо тупо адаптацию к VS2013 (ты ведь её имеешь в виду?)

Ссылка на комментарий
uTE3LqX.png


Мне жаль тех, кто не видит тут бреда ;)   (А ещё стоит обратить внимание на адрессную строку)

Этож надо так скопировать :)

 

@Карлан,

У меня подозрение, что это один и тот же *гхм* кадр (svarog2741 == LightOver 12.* ).

Изменено пользователем -StalkMen-
  • Нравится 1
  • Согласен 2
Ссылка на комментарий

Я правильно понимаю, последний десяток постов - это все о редактировании движка?

Не стыдно техтемы загаживать хамством по отношению друг к другу?

Обоим по предупреждению. Тему почистил.

  • Нравится 2
Ссылка на комментарий

Из xrCDB, но OPC обновлённый.

...
mNodes = new AABBNoLeafNode[mNbNodes];

...

delete []mNodes ;
mNodes  = null;

Последние 2 строчки - раскрытый макрос.

 

Вопрос, память полностью высвободится?

Изменено пользователем -StalkMen-
Ссылка на комментарий

Ещё немного оффтопа, но написать его должен, иначе вы такого в движке наворотите, коллеги, что мама не горюй.

Мой первоначальный вопрос:

 

if (!GameID() == eGameIDSingle || OnClient())
Зачем такие сложности? Не проще ли вместо инвертирования первого из аргументов сравнения проверить их на «не равно»? Вот так:

if (GameID() != eGameIDSingle || OnClient())
Или цель уменьшить читабельность кода? :)

 

Ответ:

Тут скорее кто как привык, тот так и делает.

Так вот, это крайне порочная практика.

Во-первых, читабельность кода - не пустой звук. Ладно, если пишете исключительно для себя, там хоть сотней последовательных «if» условия пишите (видел я где-то тут на днях подобный «шедевр») - только вам с этим кодом потом и разбираться. А если потом потребуется чья-то помощь? А если - не дай Бог - разрабатываете или будете дорабатывать в команде? Будете менять «привычки» в зависимости от обстоятельств?

А во-вторых, давайте посмотрим на выражение, за которое я зацепился.

if (!GameID() == eGameIDSingle || OnClient())
Логический оператор «!» - это отрицание, инвертирование, которое может применяться к логическим выражениям и булевым переменным, имеющим только два возможных состояния, true или false, ложь или истина. Хорошо, что тут, по всей видимости (сам в движке не ковырялся), функция GameID() возвращает именно булевый результат, поэтому ошибку вы не получаете.

Но что будет, если в аналогичной ситуации один из сравниваемых аргументов будет представлять собой, скажем, число или строку? Число тоже попытаетесь инвертировать «как привыкли»? И что в таком случае будет результатом? Вопрос риторический.

И я уж не говорю о более сложных случаях.

Стоит научиться писать код правильно, а не «как привыкли». Хотя бы не для себя, а ради тех, кто потом пойдёт по вашим стопам.

 

Добавлено RayTwitty,

GameID конечно же возвращает идентификатор типа игры, какой булевой?))

Добавлено RayTwitty,

u32 GameID();

 

Добавлено Kirgudu,

Тем более! :)

  • Спасибо 2
  • Полезно 2
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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