Что нового?

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

mexan

Администратор
Сообщения
351
Симпатии
28
Возраст
32
#1
Для каждого слота можно задать свой отдельный список.

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

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
 
Сверху