Перейти к содержимому


Фотография

Закрыть ящик с боеприпасами


Лучший Ответ Schatten , 11 October 2018 - 11:44

barbosa,

this addEventHandler ["ContainerOpened", {
    [] spawn {
        _display = displayNull;
        _time = time + 1;

        waitUntil {
            sleep 0.1;

            _display = findDisplay 602;

            !(isNull _display) or {time >= _time}
        };

        if (!(isNull _display)) then {
            _display closeDisplay 0;
        };
    };
}];

P. S.
В следующий раз сообщение об ошибке полностью публикуй.

Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 OFFLINE   barbosa

barbosa

    Ефрейтор

  • Пользователи
  • 99 сообщений

Отправлено 10 October 2018 - 12:43

Пытаюсь закрыть ящик.

Думал воспользуюсь командой lock, но безуспешно.

Подскажите как выполнить закрытие ящика ?


  • 0

#2 OFFLINE   nIkRon

nIkRon

    Сержант

  • Пользователи
  • 195 сообщений
  • Откуда:Донецк

Отправлено 10 October 2018 - 20:28

Установить на ящик переменную, и добавить евентхендрел OpenInventory с проверкой этой самой переменной и throw для закрытия


либо вместо переменной использовать lock, и проверять его в OpenInventory


  • 0

#3 OFFLINE   moroz89

moroz89

    Мл.сержант

  • Пользователи
  • 116 сообщений

Отправлено 11 October 2018 - 00:07

В этом случае больше подойдет EH ContainerOpened, так как он навешивается на сам ящик, а не на игрока.
Как вариант, можнг «гасить» диалог инвентаря при открытии ящика (идея с англоязычного форума)

_gear = findDisplay 602;
if (!isNull _gear) then
{
closeDialog 602;
};
sleep 0.1;

P.S. Простите, что код не оформлен, но через мобильный такой функции не нахожу.
  • 0

#4 OFFLINE   moroz89

moroz89

    Мл.сержант

  • Пользователи
  • 116 сообщений

Отправлено 11 October 2018 - 07:56

Ну вроде работает.

container addEventHandler ["ContainerOpened", {
	[] spawn {
	    while {true} do {
		_gear = findDisplay 602;
		if (!isNull findDisplay 602) then
		{
			remoteExec 602;
		};
		sleep 0.1;
	    };
	};
}];

Сообщение отредактировал moroz89: 11 October 2018 - 07:56

  • 0

#5 OFFLINE   barbosa

barbosa

    Ефрейтор

  • Пользователи
  • 99 сообщений

Отправлено 11 October 2018 - 11:19

Ну вроде работает.

container addEventHandler ["ContainerOpened", {
	[] spawn {
	    while {true} do {
		_gear = findDisplay 602;
		if (!isNull findDisplay 602) then
		{
			remoteExec 602;
		};
		sleep 0.1;
	    };
	};
}];
закинул в инит ящика this addEventHandler

выдало ошибку

joM6XNdcm90.jpg


  • 0

#6 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 11 October 2018 - 11:44   Лучший Ответ

barbosa,

this addEventHandler ["ContainerOpened", {
    [] spawn {
        _display = displayNull;
        _time = time + 1;

        waitUntil {
            sleep 0.1;

            _display = findDisplay 602;

            !(isNull _display) or {time >= _time}
        };

        if (!(isNull _display)) then {
            _display closeDisplay 0;
        };
    };
}];

P. S.
В следующий раз сообщение об ошибке полностью публикуй.


Сообщение отредактировал Schatten: 11 October 2018 - 12:43

  • 0

#7 OFFLINE   moroz89

moroz89

    Мл.сержант

  • Пользователи
  • 116 сообщений

Отправлено 11 October 2018 - 11:55

Тфу ты... вместо remoteExec нужно closeDialog
  • 0

#8 OFFLINE   barbosa

barbosa

    Ефрейтор

  • Пользователи
  • 99 сообщений

Отправлено 11 October 2018 - 22:18

P. S.
В следующий раз сообщение об ошибке полностью публикуй.


Спасибо огромное, всё отлично работает.
У меня одна ошибка вышла, я этот кадр и вырезал
  • 0

#9 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 11 October 2018 - 23:40

Зачем мутить хандлеры? Подменили на объект-пустышку на сервере и все:
private _fake_container = createSimpleObject [configFile >> "CfgVehicles" >> typeOf _container, [0, 0, 0]];
_fake_container setPosWorld getPosWorld _container;
_fake_container setVectorDirAndUp [vectorDir _container, vectorUp _container];

_container allowDamage false;
_container hideObjectGlobal true;
_container enableSimulationGlobal false;
_container setVariable ["fake_container", _fake_container];
PS Для некоторых контейнеров иногда срабатывает способ с отключением симуляции и установкой урона в 1

Сообщение отредактировал vlad333000: 11 October 2018 - 23:46

  • 0

#10 OFFLINE   armadillo

armadillo

    Ефрейтор

  • Пользователи
  • 34 сообщений
  • Откуда:Arma 2 Dayz

Отправлено 07 May 2019 - 22:04

А если кому то можно а кому то низзя? Что лучше - раздать всем клиентам кроме него пустышки или вот так:

 

player addEventHandler["InventoryOpened",{    
    params ["_unit", "_container"];
    _list = _unit nearSupplies 3.6;
    _zapret = false;
    {
        _owner = _x getVariable ["ownercargo",nil];
        if !(isNil "_owner") then {
            if !(_owner isEqualTo (getPlayerUID player)) exitWith {
                _zapret = true;
            };
        };
    } forEach (_unit nearSupplies 3.6);    
    if (_zapret) then {
        hint "Чужой ящик";
        true;
    };
}];


  • 0

#11 OFFLINE   armadillo

armadillo

    Ефрейтор

  • Пользователи
  • 34 сообщений
  • Откуда:Arma 2 Dayz

Отправлено 07 May 2019 - 22:26

вариант из шапки всегда легко багоюзился


  • 0




Яндекс.Метрика