Перейти к содержанию
Авторизация  
grfn

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

Рекомендуемые сообщения

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 или проверка снаряги поможет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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.

Изменено пользователем Liquid

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
13 часов назад, grafon сказал:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Изменено пользователем grafon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Изменено пользователем Vincen

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
20 минут назад, Vincen сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.