Jump to content
Sign in to follow this  
grfn

Q&A Вопросы и ответы.

Recommended Posts

arma3.png

Не нашел темы и решил создать новую.

Возможно понадобиться остальным, кто захочет спросить по скриптам и не нужно будет плодить темы.

Есть вот такой EH 

_EHTake = player addEventHandler ["take", {
    _unit         = _this select 0;    //  Тот на кого вешается EH
    _container    = _this select 1;    // То откуда пытаются взять оружие (ящики, трупы, игроки, земля)
    _item        = _this select 2;    // Класс оружия
if
//  проверяем основное оружие
( currentWeapon(_this select 0) isKindOf ["Rifle", configFile >> "CfgWeapons"]
 //проверяем гранаты
||currentWeapon (_this select 0) isKindOf ["Throw", configFile >> "CfgWeapons"]
// проверяем трубы
|| currentWeapon (_this select 0) isKindOf ["Launcher_Base_F", configFile >> "CfgWeapons"]
// проверяем пистолеты
|| currentWeapon (_this select 0) isKindOf ["Pistol_Base_F", configFile >> "CfgWeapons"]) then
// хинтуем
{"Игровые условности" hintC ["Вы играете за VIP персонажа. Вам запрещено брать оружие."];
// удаляем
    removeAllWeapons (_this select 0);
};
}];

Не работает на гранаты. Посмотрел что гранаты действительно с CfgWeapons, вроде и тип у них Throw, но юнит всё равно может взять гранату. Как быть и что делать? :)

Проверка через currenThrowable или проверка снаряги поможет?

Share this post


Link to post
Share on other sites

@grafon Как минимум, смотреть надо не currentWeapon (_this select 0), а просто _this select 2.
Ты гранату поднимешь, как это можно будет понять по твоему условию проверки?

Воть так все работаеть:

if (hasInterface) then {

private _EHTake = player addEventHandler ["take", {
    _unit         = _this select 0;    //  Тот на кого вешается EH
    _container    = _this select 1;    // То откуда пытаются взять оружие (ящики, трупы, игроки, земля)
    _item        = _this select 2;    // Класс оружия
if ((_this select 2) isKindOf ["Rifle", configFile >> "CfgWeapons"] || (_this select 2) isKindOf ["Throw", configFile >> "CfgWeapons"] || (_this select 2) isKindOf ["Launcher_Base_F", configFile >> "CfgWeapons"] || (_this select 2) isKindOf ["Pistol_Base_F", configFile >> "CfgWeapons"]) then {
"Игровые условности" hintC ["Вы играете за VIP персонажа. Вам запрещено брать оружие."];
removeAllWeapons (_this select 0);
};
}];
};

avsykd9.jpg

Вот только, ты уверен на счет removeAllWeapons (_this select 0)?
Как то не очень красиво... Может лучше так?

(_this select 0) removeWeapon (_this select 2);

Хотя, в идеале конечно же, лучше сделать так, чтобы оно выбрасывалось на землю =)

https://community.bistudio.com/wiki/removeWeapon

Share this post


Link to post
Share on other sites
5 hours ago, Vincen said:

Хотя, в идеале конечно же, лучше сделать так, чтобы оно выбрасывалось на землю =)

//Example 8:
//Drop weapon:

_wh = "GroundWeaponHolder_Scripted" createVehicle position player; 
player action ["DropWeapon", _wh, currentWeapon player];

Нужно заменить currentWeapon и убрать рандом для createVehicle position player.

Edited by Liquid

Share this post


Link to post
Share on other sites

Немного не в тему, но спрошу: а в чем сакральный смысл создавать переменные _unit, _container, _item, а потом их не использовать?

Share this post


Link to post
Share on other sites
13 часов назад, grafon сказал:

Не работает на гранаты. Посмотрел что гранаты действительно с CfgWeapons, вроде и тип у них Throw, но юнит всё равно может взять гранату. Как быть и что делать? :)

Если я не ошибаюсь, у игрока уже есть такое оружие как "Throw", а гранаты в инвентаре являются магазинами.

Тогда такое условие будет работать:

(_this select 2) isKindOf ["CA_Magazine", configFile >> "CfgMagazines"]

Но есть минус - будет срабатывать на все магазины.

Share this post


Link to post
Share on other sites

Так как сейчас при наличии модуля Time на миссиях, использование которого обязательно, существует проблема, что нельзя поставить юнита в статичный самолет C-130, чтобы в дальнейшем осуществить прыжок с парашютом, так как юнит будет перенесен на землю под самолет. Происходит это потому что в модуле Time есть параметр Size of start zone, который создает зону размером N метров, по дефолту 100м.

Покопавшись в модуле, нашел часть скрипта, которая создает и проверяет эту самую зону и возвращает игрока, который пытается эту зону покинуть.

Ролик : первая часть с текущим модулем, вторая часть с модификацией.

На новом багтрекере расписал это, списался с @Vincen, так как он занимается в основном сборкой WOG3 .Возможно будет полезное изменение, если я не ошибся с исправлением и это пропустится администрацией Проектов.

Может знающие смогут дать совет как сделать правильней, у @Ezhuk узнать не получилось.

Edited by grafon

Share this post


Link to post
Share on other sites

@grafon Поправка, главный по сборке у нас @Kato. Я же согласился только глянуть. 

+ на гитхабе вмт точно есть описание лицензии, из которой можно понять, какая форма распространения

Edited by Vincen

Share this post


Link to post
Share on other sites
20 минут назад, Vincen сказал:

@grafon Поправка, главный по сборке у нас @Kato. Я же согласился только глянуть. 

+ на гитхабе вмт точно есть описание лицензии, из которой можно понять, какая форма распространения

Автор там указан Zealot, изменения разрешены, но спросить всё-таки посчитал нужным.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.