|
|
Модератор форума: GUNNER161, Panikaha |
Форум РЕДАКТОР - ArmA 3 Скрипты Имя объекта (имя переменной) в мультиплеере |
Имя объекта (имя переменной) в мультиплеере |
› Понедельник
› 07.10.2013
› 16:19
› Сообщение #
Очень нужна помощь хорошо разбирающихся людей в скриптах армы. Уже всю голову сломал.
Итак, в арме 2 я пользовался примерно таким способом создания объектов на серверной части: Код _unitname = "sometext"; _time = time; _class = "Skoda"; _position = [1000,1000,0]; _dir = 100; _newvehobj = _class createVehicle _position; _newvehobj setpos _position; _newvehobj setdir _dir; _newvehobj setVehicleInit format['this setVehicleVarName "vcl_%1_%2"; vcl_%1_%2 = this; this lock true;',_unitname, _time]; processInitCommands; clearVehicleInit _newvehobj; Все просто как дважды два. На клиенте выполняем команду: Код player groupchat["%1",cursortarget]; Получаем прекрасный результат: Код "vcl_sometext_123" Но как всем известно, в Арме 3 выпилили функцию SetVehicleInit. Я попробовал обойтись без нее, но у меня ничего не вышло:( Серверная часть арма 3: Код _unitname = "sometext"; _time = time; _class = "C_Hatchback_01_F"; _position = [1000,1000,0]; _dir = 100; _newvehobj = _class createVehicle _position; _newvehobj setpos _position; _newvehobj setdir _dir; _vclname = format["vcl_%1_%2",_unitname, _time]; _newvehobj setVehicleVarName _vclname ; _newvehobj call compile format["%1 = _this;",_vclname]; publicvariable _vclname; missionNamespace setVariable [_vclname ,_newvehobj,true]; А у клиента получается такой результат: Код "61ac6040# 1769919: hatchback_01_f.p3d REMOTE" Как мне сделать, что бы было как в Арме 2?? Броадкастить постоянно на клиенты не вариант - во-первых это лишний трафик, во вторых данных объектов очень много. А так же это не поможет новых подключившимся - для них придется опять бродкастить. |
› Понедельник
› 07.10.2013
› 18:09
› Сообщение #
_newvehobj call compile format["%1 = _this; _this setVehicleVarName ""%1""; publicvariable ""%1"" ",_vclname];
|
› Понедельник
› 07.10.2013
› 19:12
› Сообщение #
Slon, к сожалению не помогает, так же имена в виде "61ac6040# 1769919: hatchback_01_f.p3d REMOTE"
Добавлено (07.10.2013, 19:12) --------------------------------------------- Нашел такое решение: Код FNC_setVehicleVarName = { private ["_netID","_unit","_unitname"]; _netID = _this select 0; _unit = objectFromNetID _netID; _unitname = _this select 1; _unit setVehicleVarName _unitname; _unit call compile format ["%1=_This; PublicVariable ""%1""",_unitname]; }; // тут создаем объект как выше в примерах // и вместо setvehicleinit: [[netID _newvehobj , _vclname], "FNC_setVehicleVarName", true, true] spawn BIS_fnc_MP; http://pastebin.com/jvpgjfcB Работает только для текущих игроков. После перезахода имя слетает. Какие еще идеи могут быть? Сообщение отредактировал Patriot_123 - Понедельник, 07.10.2013, 19:29
|
› Понедельник
› 07.10.2013
› 19:43
› Сообщение #
есть идеи, техника будет носит имя с собой
_newvehobj setVariable ["Veh_nam", _vclname, true]; player groupchat["%1",cursortarget (getVariable "Veh_nam")]; |
› Вторник
› 08.10.2013
› 13:27
› Сообщение #
Похоже, что так и придется делать:( Очень не хотел этот костыль:( И чего бисовцам не нравился setvehicleinit... в чем там увеличилась безопасность - не понятно.
|
› Понедельник
› 25.05.2020
› 16:28
› Сообщение #
А как заменить часть переменной значением из другой переменной?
Например нужно в переменной soldat_1 заменить цифру 1 на значение из переменной aaa = 2 чтобы в конце получилась новая переменная под названием soldat_2 |
› Понедельник
› 25.05.2020
› 17:15
› Сообщение #
не понял.
Для чего такое нужно? можеш примир привести ? |
› Понедельник
› 25.05.2020
› 17:46
› Сообщение #
У меня много юнитов с именами soldat_1 но они пронумерованы и им всем нужно применить одни и те же атрибуты и я хотел в их названии в цикле поменять цифры в их именах чтобы применить эти атрибуты всем.
|
› Понедельник
› 25.05.2020
› 18:12
› Сообщение #
С помощью оператора
compile преобразуется текстовая строка в код. https://community.bistudio.com/wiki/compile С помщью оператора format в текстовую строку можно вставлять переменные преобразую будущий код. https://community.bistudio.com/wiki/format Пример , Команда 6 ботам sol_1 ... sol_6 двигаться к позиции Игрока for "_a" from 1 to 6 do { _un = call compile format ["sol_%1", _a]; hint str _un; sleep 2; _un move getPos Player; }; строка _un = call compile format ["sol_%1", _a]; создаёт Имя переменной, компилирует её, и результат заносит Временно в переменную _un для удобства использования Таки образом можно создавать целые файлы, но муторно. |
| |||
| |||
Чат сайта |