DayZinit.cулучшениеserver scripts

DayZ init.c: улучшения старта игрока, сообщения и условия

Настройка сервера / Todtleben / 2 просмотров

DayZ init.c: улучшения старта игрока, сообщения и условия

В init.c можно сделать не только стартовый лут. Ниже несколько полезных улучшений, которые часто используют на живых серверах.

Приветственное сообщение

override void InvokeOnConnect(PlayerBase player, PlayerIdentity identity)
{
    super.InvokeOnConnect(player, identity);

    if (identity)
    {
        string name = identity.GetName();
        GetGame().ChatPlayer("Добро пожаловать на сервер, " + name + "!");
    }
}

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

Разный старт для новичков и обычных игроков

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

Случайный бонус

void GiveRandomBonus(PlayerBase player)
{
    ref array<string> bonuses = {
        "Apple",
        "Pear",
        "Plum",
        "SodaCan_Cola",
        "BandageDressing"
    };

    player.GetInventory().CreateInInventory(bonuses.GetRandomElement());
}

Безопасный стартовый нож

void GiveStarterTool(PlayerBase player)
{
    ref array<string> tools = {
        "KitchenKnife",
        "SteakKnife",
        "StoneKnife"
    };

    player.GetInventory().CreateInInventory(tools.GetRandomElement());
}

Спавн по ролям

Если вы делаете RP/PvE-сервер, можно разделить стартовые наборы:

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

Важно: роли лучше выбирать через отдельный мод/меню. В одном init.c без интерфейса игрок сам роль выбрать не сможет.

Что не стоит делать в init.c

  • сложную экономику;
  • большие базы данных игроков;
  • тяжелые циклы при каждом входе;
  • выдачу редких пушек всем новичкам;
  • телепорт игроков без проверок.

Хорошая структура

Вынесите повторяющиеся куски в функции:

void GiveFood(PlayerBase player)
{
    player.GetInventory().CreateInInventory("Apple");
}

void GiveMedical(PlayerBase player)
{
    player.GetInventory().CreateInInventory("BandageDressing");
}

Так StartingEquipSetup будет чистым и понятным, а не огромной кучей строк.

ответов: 0

Ответить

Ответов пока нет. Начните обсуждение.

Добавить ответ

Войдите, чтобы ответить в теме.