Создание слотов на сервере под конкретных игроков

Тема в разделе "Мастерская", создана пользователем mexan, 28 окт 2017.

  1. mexan

    mexan Администратор

    Сообщения:
    268
    Симпатии:
    8
    Пол:
    Мужской
    Для каждого слота можно задать свой отдельный список.

    Внимание при использовании этого скрипта в своих миссиях - ссылка на эту тему обязательна.

    slotlist.sqf
    Код:
    <i>
    </i>// slotlist.sqf
    // Здесь для каждого слота задается список разрешенных UID
    // Обратите внимание, что для названия списка надо к названию юнита в редакторе добавить в начале "slot_"
    slot_man1 = ["UID #1"];
    slot_man2 = ["UID #2", "UID #3"];
    
    Функция проверяет есть ли игрок в списке
    slotcheck.sqf
    Код:
    <i>
    </i>// by [SVR]longbow, http://tehadm.ru
    // Keep credits nice
    _unit = _this;
    
    // проверяем включили ли мы ограничение слотов в параметрах миссии,
    // если надо это всегда, то следующие 2 строки можно удалить
    _param = "slot_param" call BIS_fnc_getParamValue;
    if (_param == 1) exitWith {};
    
    // Проверяем что для этого слота есть ограничения
    _typename = call compile format ["typeName slot_%1", vehicleVarName _unit];
    // read list of UIDs
    _array = call compile format ["slot_%1", vehicleVarName _unit];
    // If not array - abort
    if (_typename != "ARRAY") exitWith {"Not an array" call BIS_fnc_log};
    
    if (!(getPlayerUID _unit in _array)) then {
        // ifplayer not found in list, abort his mission with proper debriefing
        "fail_slot" remoteExecCall ["failMission", _unit];
    };
    
    initServer.sqf
    Код:
    <i>
    </i>call compile preprocessFileLineNumbers "slotlist.sqf";
    slotcheck = compileFinal preprocessFileLineNumbers "slotcheck.sqf";
    
    initPlayerServer.sqf
    Код:
    <i>
    </i>_unit = _this select 0;
    _jip = _this select 1;
    
    waitUntil {!isNull _unit && isPlayer _unit};
    
    _unit call slotcheck;
    
    Настройка параметров и дебрифинга для резервированного слота
    description.ext
    Код:
    <i>
    </i>class Params {
         class slot_param {
             title = "Включить проверку резервированных слотов";
             values[] = {0,1};
             default = 1;
             texts[] = {"Выкл","Вкл"};
        };
    };
    
    class CfgDebriefing {
    class fail_slot {
        title = "Этот слот зарезервирован";
        subtitle = "Вернитесь в лобби и попробуйте занять другой слот";
        description = "Вы попытались занять слот, зарезервированный для другого игрока или администратора";
    };
    };
    
    Выше указанные файлы надо добавить в папку с миссией, если эти файлы, у вас уже имеются - добавьте содержимое в их конец, или в соотвествующий блок (например если у вас есть в description.ext другие параметры и дебрифинги)

    Автор скрипта: longbow
     

Поделиться этой страницей