• Страница 1 из 1
  • 1
Закрытие рюкзаков
Kurt
Пятница, 20.05.2016, 21:22
Пост №: 1
Я на самом деле немного удивлён, что такое не было ещё реализовано)
Тут делается запрос на доступ к рюкзаку.
Можно посылать запрос один раз в 10 секунд(можно изменить в Kurt_bpDelay )
Вот код

Код
Kurt_bpTime = time;
Kurt_bpDelay = 10;

// contais UIDs of players with access to your bp
player setVariable ["Kurt_AccessList", [], true];

// the "open bp" action handler
inGameUISetEventHandler [
    "Action",
    '   if (_this select 3 == "OpenBag") then {
            _target = cursorTarget;
            if  (   _target isKindOf "Man"
                &&  alive _target
                &&  isPlayer _target  
                )
            then
            {
                [_target] spawn Kurt_bp_opened;
            };
        };
        false'];
  
// handles after 'open bp' action      
Kurt_bp_opened = {
    params ["_target"];
    _list = _target getVariable ["Kurt_AccessList", []];
    if !( (getPlayerUID player) in _list)  then {
        if(time - Kurt_bpTime > Kurt_bpDelay) then {
            Kurt_bpAccess = [_target, player];
            publicVariable "Kurt_bpAccess";
            hintSilent "Отправлен запрос!";
            Kurt_bpTime = time;
        } else {
            hintSilent format ["До следующего запроса %1 секунд", floor (Kurt_bpDelay - (time - Kurt_bpTime))];
        };

        waitUntil { !(isNull (findDisplay 602))}; // because it handles before the dialog is shown
        closeDialog 0;
    };
};

// public var for bp open access
"Kurt_bpAccess" addPublicVariableEventHandler {
    _data = _this select 1;
    if((_data select 0) == player) then {
        [_data select 1] spawn Kurt_bp_accessAsked;
    };
};

// handles when someone asks access to your bp
Kurt_bp_accessAsked = {
    params ["_unit"];
    _message = format
    [
        "Игрок под ником <t color='#FF0000'>%1</t> хочет получить доступ к вашему рюкзаку. Разрешить?",
        name _unit
    ];
    _result = [_message, "Доступ", "Да", "Нет"] call BIS_fnc_guiMessage;
    if(_result) then {
        _list = player getVariable ["Kurt_AccessList", []];
        if !((getPlayerUID _unit) in _list) then {
            _list pushBack (getPlayerUID _unit);
            player setVariable ["Kurt_AccessList", _list, true];
        };
    };
};

Если хотите потестировать с ботами, то удалите 14 строчку

Применение: в init.sqf (или в другом ините)


Код
[] execVM "backPack.sqf"
Сообщение отредактировал Kurt212 - Воскресенье, 19.06.2016, 15:35

Автор темы
 
SWEN
Суббота, 21.05.2016, 00:59
Пост №: 2
Пользователь
STELS
Цитата Kurt212 ()
Вот код
Большое спасибо курт)

"Умом Россию не понять, Аршином общим не измерить: У ней особенная стать – В Россию можно только верить." Ф. И. Тютчев.
 
Kurt
Суббота, 21.05.2016, 13:01
Пост №: 3
Всё, исправил)
Теперь ящики не будут больше жадничать

Автор темы
 
ELvis
Суббота, 21.05.2016, 13:02
Пост №: 4
А вы тестили на трупах? от них тоже надо ждать разрешения?
 
Kurt
Суббота, 21.05.2016, 13:04
Пост №: 5
Цитата ELvis ()
А вы тестили на трупах? от них тоже надо ждать разрешения?
У трупов и ботов разрешения не надо спрашивать

Автор темы
 
Kurt
Суббота, 18.06.2016, 23:52
Пост №: 6
Апдейт

Исправил баг, когда делался запрос, если вы открыли свой собственный инвентарь

Автор темы
 
  • Страница 1 из 1
  • 1
Поиск: