Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
Irkutsk86

[VIP Сета] Кастомный сет при спавне, вип сета донатерам без перезапуска сервера

Recommended Posts

Что делает скрипт :


Скрипт добавляет на ваш сервер систему выдачи лута при появлении игрока, либо определенного лута человеку по steamid64 (донатеру к примеру).

Как это сделать?
Для этого нам понадобится зайти в главную папку с вашей картой, к примеру чернарусь (Путь: DayZServer\mpmissions\dayzOffline.chernarusplus)

После того как вы зашли, в этой папке нужно найти файл с названием init.c

Открываем файл и видим строки кода, нам нужна строчка с началом ( class CustomMission: MissionServer ).

Начиная с нее нам нужно вставить код до строчки как на скриншоте клик

class CustomMission : MissionServer
{
    private const static string m_SpawnLoadoutDirectory = "$profile:SpawnLoadout/"; // root directory for SpawnLoadout
    private const static string m_DonatorDirectory = m_SpawnLoadoutDirectory + "Donators/"; // directory for donator loadout text files

    private const static string m_RegularLoadout = m_SpawnLoadoutDirectory + "Regular.txt"; // file for regular loadout
    private const static string m_CommonItems = m_SpawnLoadoutDirectory + "CommonItems.txt"; // file for in common items for both regular and donator

    void CustomMission()
    {
        FileHandle templateFile;

        if (!FileExist(m_SpawnLoadoutDirectory))
        {
            MakeDirectory(m_SpawnLoadoutDirectory)

            // create default CommonItems.txt
            templateFile = OpenFile(m_CommonItems, FileMode.WRITE);
            FPrintln(templateFile, "Rag 4\nHuntingKnife\nMatchbox\nHatchet\nFlashlight\nBattery9V\nSodaCan_Cola\nBakedBeansCan");
            CloseFile(templateFile);

            // create default Regular.txt
            templateFile = OpenFile(m_RegularLoadout, FileMode.WRITE);
            FPrintln(templateFile, "BomberJacket_Grey\nJeans_Black\nTaloonBag_Blue\nAthleticShoes_Grey");
            CloseFile(templateFile);
        }

        if (!FileExist(m_DonatorDirectory))
        {
            string template = GetDonatorFile("STEAMIDHERE");

            MakeDirectory(m_DonatorDirectory);

            // create template donator file
            templateFile = OpenFile(template, FileMode.WRITE);
            FPrintln(templateFile, "BomberJacket_Blue\nJeans_Grey\nTaloonBag_Orange\nAthleticShoes_Brown");
            CloseFile(templateFile);
        }
    }

    //!!! REPLACES EXISTING METHOD
    override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
    {
        player.RemoveAllItems(); // clear all default spawning items

        FileHandle donatorFile;
        string line;

        TStringArray contents = new TStringArray();
        string file = GetDonatorFile(player.GetIdentity().GetPlainId());

        if (FileExist(file))
        {
            SpawnLoadout(player, ReadFileLines(file)); // spawn donator loadout
            return;
        }

        SpawnLoadout(player, ReadFileLines(m_RegularLoadout)); // spawn regular player loadout
    }

    private void SpawnLoadout(PlayerBase player, ref TStringArray loadout)
    {
        FileHandle loadoutFile;
        string line;

        // creates clothes loadout
        foreach (string clothes : loadout)
            player.GetInventory().CreateInInventory(clothes);


        // creates common items
        TStringArray items = ReadFileLines(m_CommonItems);
        foreach (string item : items)
        {
            if (item.Contains(" ")) // check for space, which signifies a quantity item
            {
                CreateQuantityItem(player, item);
                continue;
            }

            player.GetInventory().CreateInInventory(item);
        }
    }

    private void CreateQuantityItem(PlayerBase player, string item)
    {
        TStringArray quantity = new TStringArray();
        item.Split(" ", quantity);

        ItemBase quantityItem = player.GetInventory().CreateInInventory(quantity[0]);
        quantityItem.SetQuantity(quantity[1].ToFloat());
    }

    private string GetDonatorFile(string id)
    {
        return string.Format("%1%2.txt", m_DonatorDirectory, id);
    }

    private TStringArray ReadFileLines(string path)
    {
        FileHandle file;
        string line;

        TStringArray contents = new TStringArray();

        file = OpenFile(path, FileMode.READ);
        while (FGets(file, line) > 0)
        {
            line.Trim();
            if (line != string.Empty)
            {
                contents.Insert(line);
                line = string.Empty;
            }
        }

        CloseFile(file);
        return contents;
    }
};

После того как вы вставили код, сохраняйте файл. И запускайте сервер!

Если ничего не вылезло и сервер нормально запустился, в папке profiles появится папка Spawnloadout.
В ней вы видите файлы: Regular.txt ; CommonItems.txt
Эти файлы нужны для стартового снаряжения игрока при спавне. Regular - Для одежды ; CommonItems - Для предметов

Папка Donator отвечает за кастомные сета игрокам по SteamID64. В этой папке будет файл STEAMIDHERE.txt
Чтобы прописать сет по SteamID64 нужно изменить название файла и в нем прописать все что нужно выдавать игроку, тут нету разделения на файлы, все нужно писать в 1 файл (Чтобы небыло багов пишите сначало одежду а потом предметы)

Все обновляется в реальном времени ничего перезапускать не нужно.

 

P.S: Автор не я !!!

Edited by Irkutsk86 (see edit history)

Share this post


Link to post
Share on other sites



Можно ли сделать рандом сеты при спавне?

Share this post


Link to post
Share on other sites

@sensenless в этом нет. Нужно искать мод или скрипт где есть такая возможность.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By cjanton
      Плагин позволяет выдавать игрокам VIP-статус навсегда или на определенный срок.
      Плагин очень гибкий и удобный в настройке. Плагин может работать как SQL так и с MySQL базой.
      В архиве только ядро меню, Модули нужно ставить отдельно. 
       
      Установка:
      1) Распаковать архив и раскидать файлы по папкам на сервере.
      Расположение файлов и краткое описанние
      2) Если хотите использовать MySQL базу, необходимо в databases.cfg прописать:
      "vip" { "driver" "mysql" "host" "ip" // ip сервера где находится ваш mysql "database" "vip" // название базы данных "user" "root" // имя пользователя базы данных "pass" "pass" // пароль для этого пользователя } При использовании SQLite базы она будет храниться здесь: addons/sourcemod/data/sqlite/vip.sq3
      3) Настроить конфиг cfg/vip/VIP_Core.cfg(будет создан автоматически после первого запуска)
      4) Установить необходимые модули(будут добавлены чучуть позднее)
      5) Для тех кто любит поковырять представлена глубокая настройка и конфигурация:
      Настройка информации
      Сортировка меню
       
      Настройка groups.ini
       
      Сортировка пунктов в Админ меню
      Команды:
      <параметр> - обязательный параметр.
      [параметр] - необязательный параметр.
      sm_refresh_vips - Перезагружает список VIP-игроков.
      sm_reload_vip_cfg - Перезагружает настройки VIP (обновляет группы и выполняет sm_refresh_vips).
      sm_delvip <steam_id> - удаляет VIP-игрока
      sm_addvip <identity type> <name|#userid|identity> [time] [group] - добавляет VIP-игрока.(Пример sm_addvip file_delete 10 1)
      <identity type> это метод идентификации: steam, ip, name.
      <name|#userid|identity> это идентификатор ник или юзер айди если игрок на сервере, иначе либо стим/ип/ник.
      [time] - время в единицах указанных в конфиге VIP_Core.cfg (Смотрите внимательно sm_vip_time_mode)
      [group] - VIP-группа.
       
      Модули для данного ядра будут добавлены в сообщениях ниже этого

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By Plusiq
      Искал, нигде не нашёл... В общем идея такова- нужно чтобы трейдеры могли продавать только VIP игрокам (Донат) по айди, как это сделать? Помогите.. Заранее спасибо
    • By TheFirstNoob
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
       
       
      Переведенная версия: 1.608 (Latest Update)

      НЕ ОБЯЗАТЕЛЬНАЯ ЧАСТЬ!
      BEC ранее был блокирован BIS, однако со временем блокировку сняли.
      Данный фикс ставьте на усмотрение!


       

      Краткое описание:
         Battleye Extended Controls - это многофункциональная программа для серверов Arma 2, Arma 3 и всех к ним аддонов.
         С помощью данной программы вы сможете:
      Авторестарт сервера + предупреждения о рестарте в нужное вам время. Автосообщения в нужное вам время. 
      Например каждые 30 минут будет оповещение "Авторестарт сервера в такое-то время".
      Или же только по вторникам в 14:00 будет оповещение "Сегодня вторник 14:00 :D" Фильтрация чата Фильтрация ников Резервные слоты как для Администрации, так и для ваших друзей, VIP, да кого угодно. Возможность использовать только Английские Ники или же все подряд. Ограничение чата (Например только 20 сообщений вы можете написать в Глобал чат или в нужный вам чат, а потом нельзя - кик) Whitelist Своя удобная система логов. Отдельно логи сервера, отдельно чат, отдельно BattEye и BEC. Удобный планировщик. И многое другое. Установка:

      1) Качаем сам BEC: Нажми на меня :3

      2) Папку BEC и все bat-файлы перекидываем в корень сервера. (Например: E:\SteamLibrary\SteamApps\common\Arma 2 Operation Arrowhead\BEC)

      3) Переходим в корень сервера и редактируем батник bec.bat.
       
      timeout /t 60 cd E:\SteamLibrary\SteamApps\common\Arma 2 Operation Arrowhead\BEC "E:\SteamLibrary\SteamApps\common\Arma 2 Operation Arrowhead\BEC\Bec.exe" -f config.cfg exit    
      В timeout /t пишем в секундах сколько ждать Батнику перед тем как запустит BEC.
      Старайтесь подобрать таймаут так, чтобы сначала запустился сервер, а потом сразу через секунд 5-10 запустился BEC.
      Если же BEC как-то запустился ранее, то не страшно. BEC подождет сервер еще 5 минут, перед тем как закрыться.

      В cd указываем путь до BEC.
      Ниже делаем тоже самое + дописываем какой файл надо запускать. В данном случае Bec.exe с параметром -f config.cfg.

      4) Далее редактируем батник server.bat.
       
      Start bec.bat "arma2oaserver.exe" -port=2302 "-config=instance_24_Napf\config.cfg" "-cfg=instance_24_Napf\basic.cfg" "-profiles=instance_24_Napf" -name=instance_24_Napf "-mod=@DayZ_Epoch;@DayZ_Epoch_Server;" exit    
      Собственно
      После Start bec.bat мы видим уже знакомые нам строчки. Это обычный запуск сервера с определенными параметрами. Просто перенастройте под себя.
      Легче всего просто скопировать нужное из 
      DayZ_Epoch_instance_11_Chernarus.bat или DayZ_Epoch_instance_24_Napf, или любого другого, который подходит под ваш сервер.

      Для ПИРАТОВ:
      Замените "arma2oaserver.exe" на "expansion\beta\arma2oaserver.exe"

      Все с установкой покончено!



      >>>>> Основная настройка <<<<<
       
      1) Переходим в BEC/Config, открываем файл config.cfg и настраиваем все под себя. Я все там перевел, так что гемороя не будет!
       
      #-------------------------------------------------------------------------------------------------------- [Подключение и Конфигурация] #-------------------------------------------------------------------------------------------------------- # Укажите IP-Адрес вашего сервера. Можете использовать 127.0.0.1 и все будет нормально. Ip = 127.0.0.1 # Укажите порт вашего сервера. По умолчанию 2302. Port = 2302 # Укажите путь в BattEye. То есть там где стоят фильтры. BePath = # Укажите как BEC будет банить читаков. # 0 = Никак. 1 = Только Встроенный игровой АнтиЧит. 2 = Только BattEye АнтиЧит. 3 = Оба варианта. # Установите 3 если не можете определиться. # Внимание! InfiSTAR не считается!!! Ban = 3 # Укажите размеры Консольного окна BEC. ConsoleHeight = 30 ConsoleWidth = 100 # Сколько секунд BEC будет ждать при зависании или включении сервера. # Рекомендуется: 120 секунд Timeout = 120 # Если указать = True, то BEC будет создавать Логи чата на каждый канал. # Если указать = False, то BEC будет создавать Лог чата в котором будут сразу все каналы. ChatChannelFiles = false


      Запускать сервер надо через файл Start.bat!!!


      ВНИМАНИЕ!!! Дальнейшие выполнение пунктов зависит от настройки файла Config.cfg
       
      Настройка Администрации BEC:

       

      Настройка НикНеймов:

       

      Настройка BEC WhiteList:
       


      Настройка Лобби:
       
       
       
      Настройка Чата:



      Настройка проверки данных из Базы (SQL):



      Настройка Внутриигровых команд Commands.xml:

          Файл Commands.xml отвечает за использование команд внутри игры.
          Их могут использовать как игроки, так и Администрация, модерация, VIP и другие игроки исходя от файла Admins.xml в параметре group.
          Например узнать время работы, локальное время, провести какое-то голосование, забанить кого-то, кикнуть и так далее.
          Список приведен ниже.




      Настройка Планировщика Scheduler.xml: 

      Планировщик ваше все. С помощью него будет производиться сами рестарты, выводы сообщений, выполняться какие-то команды в определенный промежуток времени и тому подобно.

      Не забудьте заглянуть в файл Scheduler-FAQ.txt. Там есть немного полезной информации.

       
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.