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

Редактирование движка 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 10.04.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 10.04.24)


    Подарки

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

    @WinCap , используй каллбэк на выход объекта в онлайн: level.client_spawn_manager()

     

    • Согласен 1

    Аддон для ОП-2.09.2: Яндекс/Google/GitHub

    naxac.gif


    Подарки

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

    @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 10.04.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 10.04.24)


    Подарки

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

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

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

    @Zagolski

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

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

    S.T.A.L.K.E.R. CoP Objects (upd 10.04.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 пользователей

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

    AMK-Team.ru

    ×
    ×
    • Создать...