Можно ли задавать позицию игрока не относительно (через указание его YAW и скорости в функции CreateMove) а сразу ему задавать новую абсолютную позицию (и угол) но при этом не потерять его коллизию с миром и с энтитиями?
supra36, маппингом - никак. Можно добавить в коде, чтобы монстр брал параметр ожидания из path_corner. Ну и придется завести новый таск и скедуле под это дело.
Как альтернативный вариант можно вместо передвижения по path_corner сделать перемещение по scripted_sequence (там задержку выставить можно). Патрулирование по path_corner'ам в HL всё равно не доделано - например, монстр перестанет пытаться достичь path_corner при первом же препятствии на пути.
У scripted_sequence однако есть свой минус - скрипт прервется только если монстр получит урон. А перемещение по path_corner монстр прервёт и при встрече с врагом или если услышит звук боя/унюхает еду.
На сервере я сделал регн здоровья, который регулируется командами. Скажем sv_regen 0 или 1 - вкл/выкл реген здоровья. Проблема: оно не сохраняется в слоте.
Я меняю значение, находясь на карте, сохраняю игру, выхожу из игры. Запускаю игру, загружаю, значение не сохранилось. В теории это плохо, потому что если я буду управлять на карте значением через trigger_command, то после сохранения все сбросится. Подскажите, может какой флаг где-то прописать надо или что-то на клиенте сделать?
Aynekko при регистрации квара поставь ему флаг FCVAR_ARCHIVE. А ещё лучше, заведи BOOL m_bRegen или int m_iRegen прямо в классе игрока. Меняй эту переменную специальной энтитей и сохраняй в сейвдату игрока. Так будет грамотнее. Потому что квар работает на всех картах, если читается из конфига, независимо от того, применял ты trigger_command в текущей игровой сессии или нет.
Добавлено 28-05-2020 в 09:05:
Какой у тебя реген, кстати? До 100% или другого определённого значения? Я сделал у себя "округление" здоровья. То есть, если последняя цифра процентов не равна 0, то здоровье растёт в большую сторону. Например с 21 до 30 или с 45 до 50 и т.д.
Ku2zoff писал: Aynekko при регистрации квара поставь ему флаг FCVAR_ARCHIVE. А ещё лучше, заведи BOOL m_bRegen или int m_iRegen прямо в классе игрока. Меняй эту переменную специальной энтитей и сохраняй в сейвдату игрока.
Этот флаг уже пробовал, не помогло. Энтитю я пока сам не смогу сделать) сейчас думаю, можно попробовать сделать костыль - будут настройки по-умолчанию, а в небольшой секции, где реген будет выключен - поставить loop multimanager который будет слать команду каждые 5 секунд. Если игрок там сохранится, то через 5 секунд после загрузки реген станет таким, как надо. Если, конечно, менеджер сохранится.
Цитата:
Ku2zoff писал: Какой у тебя реген, кстати? До 100% или другого определённого значения?
До 100. Я нашел код из Alien Swarm SDK и адаптировал его под ксаш, сам бы не написал. Этот код еще в Portal используется.
Добавлено 28-05-2020 в 11:43:
UPD: фишка с мульти-манагером сработала. Loop сохраняется и активирует нужное значение, при этом не спамит в консоль. Невероятно костыльно, но за неи(-у)мением другого пока оставлю так.
Добавлено 28-05-2020 в 11:46:
Цитата:
Ku2zoff писал: Потому что квар работает на всех картах, если читается из конфига, независимо от того, применял ты trigger_command в текущей игровой сессии или нет.
Блин, только сейчас понял. Если у нас несколько сохраненных игр, то при запуске ранней останется команда из другого сейва в текущей сессии…ты прав надо делать энтитю (если бы я знал еще как) или делать спам триггер_комманд на всех картах, черт.
Мучаю фитцквейк, замерил реальное перемещение игрока между превстейтом и курстейтом и вижу что игрок который движется по окружности радиуса 100 оказывается процентов на 20 быстрее игрока который бежит по окружности радиуса 500. Я-то всегда закладывал в расчёты константную скорость типа 400, 320 или 200 умноженное на фреймтайм, а оно на самом деле вон как.
Там трение большую роль играет и игрока по факту заносит?
Это как раз то, что нужно, но, очевидно, что копипаста этого в player.cpp не работает, т.к. начинается ругань.
Условие простейшее и понятное, но как мне его добавить в сингл?