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

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


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

@vampirnik77, можно попробовать перейти на 64-битный тулчейн: https://stackoverflow.com/questions/19820718/how-to-make-visual-studio-use-the-native-amd64-toolchain

Изменено пользователем abramcumner
Ссылка на комментарий
В 26.06.2017 в 20:35, vampirnik77 сказал:

Ошибка    C1002    не хватает размера кучи на 2-ом проходе компилятора   xrGame    c:\all\test\code\engine.vc2008\xrgame\game_sv_item_respawner.cpp    

У меня была подобная ошибка, на VS2015 при сборке рендеров:

1>c1xx : error C3859: превышен диапазон адресов виртуальной памяти для PCH; повторите компиляцию с параметром командной строки "-Zm142" или большим
1>c1xx : fatal error C1076: ограничение компилятора: достигнут предел внутренней кучи; воспользуйтесь /Zm для задания большего значения

Мне посоветовали(в принципе, как и сам лог) добавить ключ - 01bad9220ebe8c1a9fbde37972fb9f965f998228, и ошибка исчезла. Но из твоего лога не понятна причина ошибки - нужны строчки выше.

 

 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

Т.Ч увеличить шанс появления блудмарок!


SkyLoader отвечал на этот вопрос, надо пользоваться поиском.

В WallmarksEngine.cpp в 421 строке закомментировать:
Код
            //if (ssa>=ssaCLIP){

r__bloodmark_ttl выставить в единицу.
Теперь они появляются в 95% случаях ©

  • Спасибо 1
  • Полезно 1

☭ Белый Барс ☭

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

@NOapostoL ,а какой файл нужно редактировать?Чем редактировать?

Но всё же,@NOapostoL ,спасибо что ответили мне на мой вопрос!

Добавлено Expropriator,

WallmarksEngine.cpp (исходный код движка), редактировать в Визуал Студии.

Добавлено  HellRatz,

Игнорирование устных замечаний, по этому предупреждение в профиль за нарушение пункта 2.5 и режим «только чтение» на сутки за рецидив.

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

Заметил такую вот фигню - на r3\r4 игра просто вылетает если в настройках панели nvidia отключить "вертикальный синхроимпульс". Я правильно понимаю что причиной является неработающая верт. синхронизация в самом сталкере?

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

Так фикс же предлагал SkyLoadet, разве нет?

Изменено пользователем Kondr48
Добавлено Kondr48,

Не могу убрать цитату с телефона, это мои слова =)

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

может кто подсказать как отобразить float число в консоли? Msg("%d",value) подходит только для целых, просветите нуба)
Edit: ответ нашёл сам, спасибо гуглю ( Msg("%g",value) )

Изменено пользователем mortan
Ссылка на комментарий
4 часа назад, mortan сказал:

как отобразить float число в консоли?

 Msg("%f",value). Для указания кол-ва знаков после запятой -  Msg("%.4f",value), будет отображено 4 знака.

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

Здравствуйте.

Подскажите, пожалуйста, можно ли в движке синхронизировать клиентский объект с серверным?

Например, если изменить что-то в CSE_ALifeInventoryItem и применить изменения к клиентскому объекту.

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

@WinCap вопрос конечно очень странный - движок как бы итак делает синхронизацию между клиент\сервер объектами. Я отвечу так - лучше всего работать напрямую с клиентом, потому что получить серверный объект при спавне та ещё морока. Если внимательно изучишь код итемов то сможешь заметить что там как раз есть подобная "синхронизация".

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

@mortan, а если он имел ввиду не сингл, а бои с выделенным сервером? Там в движке есть регистрация-синхронизация спавна по типу CSE_ALife - а там уже сами разбирайтесь.

object_factory_register.cpp

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
4 часа назад, mortan сказал:

получить серверный объект при спавне та ещё морока

Тут можно по подробнее? Я думал, что alife():create() возвращает как раз серверный объект.

 

Задача у меня относительно простая, получить доступ к полю condition для любого объекта, например, так:

Скрытый текст

for id = 1, 65535, 1 do
	local obj = alife():object(id)
	if obj ~= nil and (ещё_условия) then
		obj:set_condition(x)
	end
end

 

 

В принципе у меня все получилось и если объект не имеет клиентской копии, то всё работает. Но если клиентский объект существует, то понятно, что для изменения condition нужно получить его функцией level.object_by_id(obj.id).

 

Однако есть проблема, при спавне функцией alife():create() существует момент, когда level.object_by_id(obj.id) ещё возвращает nil, а вызывать set_condition для серверного объекта уже поздно, клиент все равно получит condition = 1.0. Не знаю как это происходит.

Вот я и хотел принудительно синхронизировать клиент/сервер.

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

@WinCap ну, у меня была иная задача - получить id клент\серверного объекта при его спавне и тут же его использовать, но увы - скриптами такое сделать намного проще. в движке же на момент вызова функции спавна клиента ещё не существует. Как тут быть - я не знаю)

Ссылка на комментарий
В 11.07.2017 в 08:11, naxac сказал:

используй каллбэк на выход объекта в онлайн

 

Тут есть проблема, а если объект не выйдет в онлайн? Каллбэк пропадает не только при save/load, но и при повторной установке.

 

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

Скрытый текст

for i = 1, 65535, 1 do
	local sobj = alife():object(i)
	if sobj ~= nil then
		if isWeapon(sobj) then
			local obj = level.object_by_id(sobj.id) or sobj
			local condition = obj:condition()
			if condition <= 0.05 then
				alife():release(sobj, true)
			else
				obj:set_condition(condition - 0.05)
			end
		end
	end
end

 

 

Разобрался с функцией alife():create(), может кому пригодится:

Скрытый текст

Существует три случая вызова функции alife():create():
    1. Без указания parent_id (пятый параметр).
    2. Когда parent_id указывает на объект ОФФлайн.
    3. Когда parent_id указывает на объект ОНлайн.


В первых двух случаях создается только серверный объект независимо от координат спавна, т.е. даже при спавне в радиусе алайфа. При этом можно сразу же изменить любые параметры серверного объекта т.к. создание клиентского объекта произойдет только на следующем апдейте при переходе в онлайн самого объекта или объекта parent_id.


В третьем случае создается не только серверный объект, но и клиентский, однако его регистрация в глобальной таблице объектов произойдет только на следующем апдейте. Поэтому немедленный вызов level.object_by_id(id) возвращает nil.

 

  • Спасибо 1

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

Ссылка на комментарий
1 час назад, WinCap сказал:

Существует три случая вызова функции alife():create():
    1. Без указания parent_id (пятый параметр).

.....

В первых двух случаях создается только серверный объект независимо от координат спавна...

Плохо Вы разобрались, похоже... Спавн объекта без указания владельца(parent_id (пятый параметр)) - это спавн на местности, по указанным координатам. Если координаты будут в радиусе а-лайфа, и для объекта будут установлены флаги, позволяющие ему перейти в он-лайн - он в него перейдет обязательно, т.е. будет создан клиентский объект. Так, что, перефразируя известную поговорку: семь раз проверь - один раз напиши...

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

@UnLoaded

Клиентский объект будет создан, но не сразу, а только на следующем апдейте, когда  будет определено, что он находится в радиусе а-лайфа. Файл alife_simulator_script.cpp функция CALifeSimulator__spawn_item2.

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

WinCap, У тебя с таким скриптом скорее всего будут периодические лаги возникать из-за постоянного перебора всех объектов. В самом движке не пробовал на бесхозном оружии постепенное снижение кондиции реализовать?

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

@Zagolski

На счет перебора всех объектов согласен, это жестоко.

А на счет движка идея хорошая, я подумаю. Только, наверное, настройки снижения надо будет в конфиги вынести.

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

Такой вопрос: где в движке формируется хит от химических аномалий ?

К примеру, для радиационных все понятно - в CRadioactiveZone::Affect(SZoneObjectInfo* O):

...

CreateHit(GO->ID(),ID(),dir,power,BI_NONE,position_in_bone_space,impulse,ALife::eHitTypeRadiation); <- указан тип хита

...

А вот для химических аномалий не могу понять\найти, где формируется хит с указанием типа "eHitTypeChemicalBurn".

Вижу в аналогичной ф-ции в CAmebaZone::Affect(SZoneObjectInfo* O)(если я не ошибся, что CAmebaZone - это класс химических аномалий):

...

CreateHit(pGameObject->ID(),ID(),hit_dir,power,0,position_in_bone_space,impulse,m_eHitTypeBlowout);

...

вот только, ни как не нахожу где-же в m_eHitTypeBlowout записывается собственно eHitTypeChemicalBurn ? Подскажите...

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

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

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

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

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

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

Войти

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

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

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