Чем дальше тем чудесатее. Как оказалось, по прежнему не срабатывают в МР всякие варианты предлагаемые выше. Поместил создание хандлеров прямо в инит игровых слотов,(или как они там называются в mission.sqm) результаты теже - у некоторых срабатывает, но у кого-то нет. Стал проверять хандлер "Take" и оказалась такая фигня: (слип поставил для проверки)
При взятии топора который без заряда и он и контейнер (откуда был взят) определяются нормально, но заряда пока нет. Отрабатывает 5 секунд - появляется в заряд и тут же переписывается хинт и показывает что итем уже не топор, а заряд, а контейнера нет вообще! То есть выходит что хандлер автоматом срабатывает еще раз но уже на инвентарь самого игрока. Или я чего-то вообще не понимаю.(
Далее еще веселее. Если брать топор в котором уже есть заряд, или заряд лежит рядом, или даже есть у игрока отдельно, то хинт показывает все правильно и не переписывается. Ну или он при повторе имеет те же данные.
Если заменить создание магазина на стандартную форму "addMagazine" то результат аналогичен, но просто при подборе топора с зарядом, у игрока появляется лишний магазин, что понятно - он же вызывается до получения оружия.
Возможно у игроков с большим лагом эта вот странность и влияет на результат. Как избежать пока не придумал, вариант со спавном топора и рядом к нему магазин срабатывает, но когда игрок теряет заряд (по любой причине) то заряда ему уже не получить.
код:
player addEventHandler ["Take",{
_this spawn {
_unit = _this select 0;
_cont = typeOf (_this select 1);
_item = _this select 2;
hint format["_unit %1, _item %2, _container %3",_unit, _item, _cont];
sleep 5;
if(_item isEqualTo "WC_Axe") then {
//_unit addMagazine ["Hatchet_Swing",10000];
waitUntil { _secWeapon = secondaryWeapon _unit; (_secWeapon isEqualTo "WC_Axe") };
_unit addSecondaryWeaponItem "Hatchet_Swing";
};
};
}];
И кстати, если заменить оружие на любое другое с соответствующим ему магазином, эффект аналогичен.
Сообщение отредактировал Zlobot: 16 August 2018 - 15:09