нужен скрипт позволяющий красить технику в какой либо цвет.
Спасибо.
Перекраска техники
#1 OFFLINE
Отправлено 07 August 2018 - 12:37
#2 OFFLINE
Отправлено 07 August 2018 - 12:50
Если не ошибаюсь, вам нужна команда setObjectTexture
#3 OFFLINE
Отправлено 07 August 2018 - 12:53
нужен скрипт позволяющий красить технику в какой либо цвет.
Спасибо.
Писал смену текстур техники из набора, который поставляется с моделью. Думаю можно переделать, указать вместо текстур цвета и вызвать соответствующий BIS метод.
_colorTextures = []; if(count _colorConfigs > 0) then { _colorTextures pushback (getArray (configfile >> "CfgVehicles" >> typeof _veh >> "textureSources" >> configName (_colorConfigs select (lbCurSel 20015)) >> "textures")); _txtIndex = 0; { _veh setObjectTextureGlobal [_txtIndex, _x]; _txtIndex = _txtIndex + 1; } forEach (_colorTextures select 0); };
Извини что вырвано из контекста, но адаптируется под своё окружение элементарно.
Данный пример получается все доступные наборы текстур для объекта, и устанавливает выбранный набор.
#4 OFFLINE
Отправлено 07 August 2018 - 13:00
Правильно ли я понимаю, что для того, чтобы поменять текстуру, необходимо выбирать следующий элемент массива (senect 1 ... select N)?Писал смену текстур техники из набора, который поставляется с моделью. Думаю можно переделать, указать вместо текстур цвета и вызвать соответствующий BIS метод.
нужен скрипт позволяющий красить технику в какой либо цвет.
Спасибо._colorTextures = []; if(count _colorConfigs > 0) then { _colorTextures pushback (getArray (configfile >> "CfgVehicles" >> typeof _veh >> "textureSources" >> configName (_colorConfigs select (lbCurSel 20015)) >> "textures")); _txtIndex = 0; { _veh setObjectTextureGlobal [_txtIndex, _x]; _txtIndex = _txtIndex + 1; } forEach (_colorTextures select 0); };Извини что вырвано из контекста, но адаптируется под своё окружение элементарно.
Данный пример получается все доступные наборы текстур для объекта, и устанавливает выбранный набор.
#5 OFFLINE
Отправлено 07 August 2018 - 13:51
Данный пример получается все доступные наборы текстур для объекта, и устанавливает выбранный набор.Правильно ли я понимаю, что для того, чтобы поменять текстуру, необходимо выбирать следующий элемент массива (senect 1 ... select N)?
Да правильно, главное нужного массива.
Посмотрел внимательней. Вначале необходимо извлечь доступные наборы текстур:
_colorConfigs = "true" configClasses (configfile >> "CfgVehicles" >> typeof _veh >> "textureSources"); //-- _colorConfigs containes all object texture sets--
Здесь соответственно переменная _veh это ссылка на подопытный объект. Все доступные наборы извлечены и помещены в массив _colorConfigs.
Ну а далее заступает код, который я изначально привел. Нужно выбрать требуемый набор (индекс массива _colorConfigs):
_colorTextures = []; if(count _colorConfigs > 0) then { _colorTextures pushback (getArray (configfile >> "CfgVehicles" >> typeof _veh >> "textureSources" >> configName (_colorConfigs select (lbCurSel 20015)) >> "textures")); //--Участок кода ниже выполняет установку выбранного набора на объект-- _txtIndex = 0; { _veh setObjectTextureGlobal [_txtIndex, _x]; _txtIndex = _txtIndex + 1; } forEach (_colorTextures select 0); };
#6 OFFLINE
Отправлено 16 March 2019 - 12:30
помогите прикрутить его, мозги уже кипят
#7 OFFLINE
Отправлено 16 March 2019 - 17:40
что непонятно!?
_object = _this; // ссылка на объект которому меняем текстуры _textures = ["texture\path\texture_1.paa", "texture\path\texture_2.paa", "texture\path\texture_3.paa"]; // или, сколько нужно поменять текстур, например одну //_textures = ["texture\path\texture_1.paa"]; // или, объект имеет две текстуры, я хочу поменять вторую, первую оставить без изменения //_textures = ["", "texture\path\texture_2.paa"]; { if !(_x == "") then { _object setObjectTextureGlobal [_foreachindex, _x]; }; } foreach _textures;
ЗЫ
_foreachindex
системная переменная, не требует определения, принимает внутри итератора текущий индекс, автоматичестки.
Сообщение отредактировал SteelRat: 16 March 2019 - 18:23
#8 OFFLINE
Отправлено 17 March 2019 - 13:30
что непонятно!?
_object = _this; // ссылка на объект которому меняем текстуры _textures = ["texture\path\texture_1.paa", "texture\path\texture_2.paa", "texture\path\texture_3.paa"]; // или, сколько нужно поменять текстур, например одну //_textures = ["texture\path\texture_1.paa"]; // или, объект имеет две текстуры, я хочу поменять вторую, первую оставить без изменения //_textures = ["", "texture\path\texture_2.paa"]; { if !(_x == "") then { _object setObjectTextureGlobal [_foreachindex, _x]; }; } foreach _textures;ЗЫ
_foreachindexсистемная переменная, не требует определения, принимает внутри итератора текущий индекс, автоматичестки.
это в каком конфиге?
#9 OFFLINE
Отправлено 17 March 2019 - 21:49
это в каком конфиге?
Шутить изволите, Сударь !?
Начните ка лучше отсюда, и с самого начала. Тогда и подобных вопросов больше ни когда перед вами не станет.
https://arma3.ru/for...kriptopisaniiu/