DayZinit.cспавнкоординаты
DayZ init.c: спавн игроков в определенном месте
Настройка сервера / Todtleben / 2 просмотров
DayZ init.c: спавн игроков в определенном месте
Иногда нужно, чтобы все игроки появлялись не по стандартным точкам, а в конкретном месте: на базе новичков, у трейдера, в безопасной зоне или на острове.
Простой фиксированный спавн
class CustomMission: MissionServer
{
override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName)
{
vector spawnPos = "7500 0 7500";
Entity playerEnt = GetGame().CreatePlayer(identity, characterName, spawnPos, 0, "NONE");
Class.CastTo(m_player, playerEnt);
GetGame().SelectPlayer(identity, m_player);
return m_player;
}
}
Вектор записывается в формате:
X Y Z
Чаще всего Y можно оставить 0, игра сама поставит персонажа на землю.
Спавн с направлением
Четвертый параметр в CreatePlayer - направление персонажа.
Entity playerEnt = GetGame().CreatePlayer(identity, characterName, spawnPos, 90, "NONE");
90 повернет игрока в сторону выбранного направления.
Несколько точек и случайный выбор
vector GetRandomSpawnPoint()
{
ref array<vector> points = {
"7500 0 7500",
"7600 0 7450",
"7420 0 7525"
};
return points.GetRandomElement();
}
Использование:
vector spawnPos = GetRandomSpawnPoint();
Entity playerEnt = GetGame().CreatePlayer(identity, characterName, spawnPos, 0, "NONE");
Что важно проверить
- точка не должна быть в воде;
- рядом не должно быть объектов, куда игрок застрянет;
- не ставьте спавн слишком близко к стенам;
- проверьте место днем и ночью;
- проверьте спавн после смерти, а не только первый вход.
Практичный вариант
Для PvE-сервера удобно делать несколько точек вокруг стартовой зоны. Игроки будут появляться рядом, но не в одной точке друг на друге. Для PvP лучше не делать один общий спавн, иначе место быстро превратится в ловушку.