zikofrap 0 Жалоба Опубликовано 28 января, 2020 Ребят, всем здравствуйте. Вопрос такого характера: есть миссия 40 vs 40, мультиплеерная, и нужно реализовать следующую вещь, так как я совсем не пойму как это сделать, в скриптах разбираюсь только как новичок и местами мне нужно тыкнуть пальцем и показать как то или иное работает. Так вот, мне нужно реализовать индивидуальное снаряжение, а именно выдачу всем сквадным ДВ, сквадным и помощникам гранотомётчика/пулемётчика биноклей, полностью всем бойцам бронежилеты. Вот скрипт: _unit = _this select 0; comment "Очищаем инвентарь после респавна"; removeAllWeapons _unit; removeAllItems _unit; removeAllAssignedItems _unit; removeBackpack _unit; removeGoggles _unit; removeVest _unit; comment "Добавляем Items, карту, компас, часы и рацию для всех юнитов, которые заспавнились"; _unit linkItem "ItemMap"; _unit linkItem "ItemCompass"; _unit linkItem "ItemWatch"; _unit linkItem "ItemRadio"; comment "Добавляем ДВ рации командирам отделения и командирам стороны"; blufor_teamleader addBackpack "tf_rt1523g_sage"; blufor_teamleader_2 addBackpack "tf_rt1523g_sage"; blufor_squadleader_1 addBackpack "tf_rt1523g_sage"; blufor_squadleader_2 addBackpack "tf_rt1523g_sage"; blufor_squadleader_3 addBackpack "tf_rt1523g_sage"; blufor_squadleader_4 addBackpack "tf_rt1523g_sage"; blufor_squadleader_5 addBackpack "tf_rt1523g_sage"; opfor_teamleader addBackpack "tf_mr3000_multicam"; opfor_teamleader_2 addBackpack "tf_mr3000_multicam"; opfor_squadleader_1 addBackpack "tf_mr3000_multicam"; opfor_squadleader_2 addBackpack "tf_mr3000_multicam"; opfor_squadleader_3 addBackpack "tf_mr3000_multicam"; opfor_squadleader_4 addBackpack "tf_mr3000_multicam"; opfor_squadleader_5 addBackpack "tf_mr3000_multicam"; comment "Добавляем жилеты командирам отделения и командирам стороны"; blufor_teamleader addVest "V_PlateCarrier_Kerry"; blufor_teamleader_2 addVest "V_PlateCarrier_Kerry"; blufor_squadleader_1 addVest "V_PlateCarrier_Kerry"; blufor_squadleader_2 addVest "V_PlateCarrier_Kerry"; blufor_squadleader_3 addVest "V_PlateCarrier_Kerry"; blufor_squadleader_4 addVest "V_PlateCarrier_Kerry"; blufor_squadleader_5 addVest "V_PlateCarrier_Kerry"; opfor_teamleader addVest "rhsgref_6b23_khaki"; opfor_teamleader_2 addVest "rhsgref_6b23_khaki"; opfor_squadleader_1 addVest "rhsgref_6b23_khaki"; opfor_squadleader_2 addVest "rhsgref_6b23_khaki"; opfor_squadleader_3 addVest "rhsgref_6b23_khaki"; opfor_squadleader_4 addVest "rhsgref_6b23_khaki"; opfor_squadleader_5 addVest "rhsgref_6b23_khaki"; comment "Добавляем жилеты остальным"; bluforUnit_1 addVest "V_PlateCarrier_Kerry"; bluforUnit_2 addVest "V_PlateCarrier_Kerry"; bluforUnit_3 addVest "V_PlateCarrier_Kerry"; bluforUnit_4 addVest "V_PlateCarrier_Kerry"; bluforUnit_5 addVest "V_PlateCarrier_Kerry"; bluforUnit_6 addVest "V_PlateCarrier_Kerry"; bluforUnit_7 addVest "V_PlateCarrier_Kerry"; bluforUnit_8 addVest "V_PlateCarrier_Kerry"; bluforUnit_9 addVest "V_PlateCarrier_Kerry"; bluforUnit_10 addVest "V_PlateCarrier_Kerry"; bluforUnit_11 addVest "V_PlateCarrier_Kerry"; bluforUnit_12 addVest "V_PlateCarrier_Kerry"; bluforUnit_13 addVest "V_PlateCarrier_Kerry"; bluforUnit_14 addVest "V_PlateCarrier_Kerry"; bluforUnit_15 addVest "V_PlateCarrier_Kerry"; bluforUnit_16 addVest "V_PlateCarrier_Kerry"; bluforUnit_17 addVest "V_PlateCarrier_Kerry"; bluforUnit_18 addVest "V_PlateCarrier_Kerry"; bluforUnit_19 addVest "V_PlateCarrier_Kerry"; bluforUnit_20 addVest "V_PlateCarrier_Kerry"; bluforUnit_21 addVest "V_PlateCarrier_Kerry"; bluforUnit_22 addVest "V_PlateCarrier_Kerry"; bluforUnit_23 addVest "V_PlateCarrier_Kerry"; bluforUnit_24 addVest "V_PlateCarrier_Kerry"; bluforUnit_25 addVest "V_PlateCarrier_Kerry"; bluforUnit_26 addVest "V_PlateCarrier_Kerry"; bluforUnit_27 addVest "V_PlateCarrier_Kerry"; bluforUnit_28 addVest "V_PlateCarrier_Kerry"; bluforUnit_29 addVest "V_PlateCarrier_Kerry"; bluforUnit_30 addVest "V_PlateCarrier_Kerry"; bluforUnit_31 addVest "V_PlateCarrier_Kerry"; bluforUnit_32 addVest "V_PlateCarrier_Kerry"; bluforUnit_33 addVest "V_PlateCarrier_Kerry"; bluforUnit_34 addVest "V_PlateCarrier_Kerry"; opforUnit_1 addVest "rhsgref_6b23_khaki"; opforUnit_2 addVest "rhsgref_6b23_khaki"; opforUnit_3 addVest "rhsgref_6b23_khaki"; opforUnit_4 addVest "rhsgref_6b23_khaki"; opforUnit_5 addVest "rhsgref_6b23_khaki"; opforUnit_6 addVest "rhsgref_6b23_khaki"; opforUnit_7 addVest "rhsgref_6b23_khaki"; opforUnit_8 addVest "rhsgref_6b23_khaki"; opforUnit_9 addVest "rhsgref_6b23_khaki"; opforUnit_10 addVest "rhsgref_6b23_khaki"; opforUnit_11 addVest "rhsgref_6b23_khaki"; opforUnit_12 addVest "rhsgref_6b23_khaki"; opforUnit_13 addVest "rhsgref_6b23_khaki"; opforUnit_14 addVest "rhsgref_6b23_khaki"; opforUnit_15 addVest "rhsgref_6b23_khaki"; opforUnit_16 addVest "rhsgref_6b23_khaki"; opforUnit_17 addVest "rhsgref_6b23_khaki"; opforUnit_18 addVest "rhsgref_6b23_khaki"; opforUnit_19 addVest "rhsgref_6b23_khaki"; opforUnit_20 addVest "rhsgref_6b23_khaki"; opforUnit_21 addVest "rhsgref_6b23_khaki"; opforUnit_22 addVest "rhsgref_6b23_khaki"; opforUnit_23 addVest "rhsgref_6b23_khaki"; opforUnit_24 addVest "rhsgref_6b23_khaki"; opforUnit_25 addVest "rhsgref_6b23_khaki"; opforUnit_26 addVest "rhsgref_6b23_khaki"; opforUnit_27 addVest "rhsgref_6b23_khaki"; opforUnit_28 addVest "rhsgref_6b23_khaki"; opforUnit_29 addVest "rhsgref_6b23_khaki"; opforUnit_30 addVest "rhsgref_6b23_khaki"; opforUnit_31 addVest "rhsgref_6b23_khaki"; opforUnit_32 addVest "rhsgref_6b23_khaki"; opforUnit_33 addVest "rhsgref_6b23_khaki"; opforUnit_34 addVest "rhsgref_6b23_khaki"; comment "Добавляем бинокли командирам отрядов, командирам стороны и помощникам пулемётчика и гранотомётчика"; blufor_teamleader addItem "rhsusf_bino_m24"; blufor_teamleader_2 addItem "rhsusf_bino_m24"; blufor_squadleader_1 addItem "rhsusf_bino_m24"; blufor_squadleader_2 addItem "rhsusf_bino_m24"; blufor_squadleader_3 addItem "rhsusf_bino_m24"; blufor_squadleader_4 addItem "rhsusf_bino_m24"; blufor_squadleader_5 addItem "rhsusf_bino_m24"; bluforUnit_3 addItem "rhsusf_bino_m24"; bluforUnit_6 addItem "rhsusf_bino_m24"; bluforUnit_11 addItem "rhsusf_bino_m24"; bluforUnit_14 addItem "rhsusf_bino_m24"; bluforUnit_19 addItem "rhsusf_bino_m24"; bluforUnit_22 addItem "rhsusf_bino_m24"; bluforUnit_27 addItem "rhsusf_bino_m24"; bluforUnit_30 addItem "rhsusf_bino_m24"; opfor_teamleader addItem "Binocular"; opfor_teamleader_2 addItem "Binocular"; opfor_squadleader_1 addItem "Binocular"; opfor_squadleader_2 addItem "Binocular"; opfor_squadleader_3 addItem "Binocular"; opfor_squadleader_4 addItem "Binocular"; opfor_squadleader_5 addItem "Binocular"; opforUnit_2 addItem "Binocular"; opforUnit_7 addItem "Binocular"; opforUnit_11 addItem "Binocular"; opforUnit_14 addItem "Binocular"; opforUnit_19 addItem "Binocular"; opforUnit_22 addItem "Binocular"; opforUnit_27 addItem "Binocular"; opforUnit_30 addItem "Binocular"; Написано это дело всё в onPlayerRespawn.sqf Я так понял, что при респавне одного из игроков он срабатывает, и у живого игрока, у которого уже много патрон и всего остального лежит в жилете, он замениться на новый, пустой. И так в принципе с остальным и происходит. Вопрос: как сделать что бы при респавне выдача того или иного предмета работала только на того человека, который в данный момент респавнится, и что бы снаряжение давалась ему то, которое я ему задам? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
STALKERcHiKoN69 466 Жалоба Опубликовано 29 января, 2020 я конечно НЕ эксперт, но может попробуешь через swich сделать? оно проверяет кто респавнится и выдает ему нужный эквип Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zikofrap 0 Жалоба Опубликовано 29 января, 2020 Ответили на другом форуме. Решение этого вопроса: //Из такого blufor_teamleader addBackpack "tf_rt1523g_sage"; //преврати в это if (_unit == blufor_teamleader) then { blufor_teamleader addBackpack "tf_rt1523g_sage"; }; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
[KND] Liquid 1 087 Жалоба Опубликовано 29 января, 2020 Если ты повторяешь один и тот же код по 40 раз, значит ты что то делаешь не так. Как минимум не используешь циклы и массивы. 1 Oubi отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zikofrap 0 Жалоба Опубликовано 29 января, 2020 4 минуты назад, Liquid сказал: Если ты повторяешь один и тот же код по 40 раз, значит ты что то делаешь не так. Как минимум не используешь циклы и массивы. А как их использовать в данном случае? Я так понимаю, этот код можно сделать проще? Или стабильнее но сложнее? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
[KND] Liquid 1 087 Жалоба Опубликовано 29 января, 2020 (изменено) private _units = [ blufor_teamleader, blufor_teamleader_2, blufor_squadleader_1, blufor_squadleader_2, blufor_squadleader_3, blufor_squadleader_4, blufor_squadleader_5, bluforUnit_3, bluforUnit_6, bluforUnit_11, bluforUnit_14, bluforUnit_19, bluforUnit_22, bluforUnit_27, bluforUnit_30 ]; { _x addItem "rhsusf_bino_m24"; _x addItem "Binocular"; } forEach _units; Как пример куска про пулеметчиков. Мне казалось у респавна армы есть что то и про снаряжение. Изменено 29 января, 2020 пользователем Liquid Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zikofrap 0 Жалоба Опубликовано 29 января, 2020 Так, с кодом в принципе понял. Его так же в onPlayerRespawn.sqf я так понимаю? 7 минут назад, Liquid сказал: Мне казалось у респавна армы есть что то и про снаряжение. Ну да. В общем, расскажу не много о том, что я хочу реализовать. Есть такая игра как Squad, вот, хотелось бы тоже самое сделать только в Arma3 с повышенной реалистичностью, но с респавном. И респавн тут такой, что в целом на игру персонаж сможет им воспользоваться от 1 до 3 раз, так как тикетов на игру много не даётся. Я бы мог сделать выбор класса как в игре Squad, в Arma3 даже есть подобное, это выбор роли на респавне, но я не понимаю как это реализовать таким образом, что бы, например, класс "Командир стороны" был доступен только одному игроку и при выборе его пропадал, далее, не знаю каким образом сделать что бы только SquadLeader мог создавать внутриигровые отряды, и игрок, который не вступил в отряд не мог взять определенные роли. Если Вы играли в Squad, поймёте о чём я. Поэтому вся расстановка происходит в лобби и такие процессы просто решаются условностями игры, а вся экипировка/оружие/боеприпасы и всё остальное находится на главной базе сторон в ограниченном количестве. И при худшем раскладе у одной из сторон в игре действительно могут закончится боеприпасы, от этого роль Командира стороны становится ещё интереснее, да и игра в целом происходит очень хардкорно. Уже тестировали. Но, вот столкнулись с такими проблемами, и самостоятельно я их уже решить никак не могу. Спасибо Вам за помощь. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kelegen 1 Жалоба Опубликовано 30 января, 2020 23 часа назад, zikofrap сказал: например, класс "Командир стороны" был доступен только одному игроку и при выборе его пропадал, далее, не знаю каким образом сделать что бы только SquadLeader мог создавать внутриигровые отряды, и игрок, который не вступил в отряд не мог взять определенные роли. На некоторых серверах есть "Менюшки" для создания своих кланов через инвайты и тд. Думаю, посмотрев содержимое скрипта можно настроить его на свой лад. Через них создать кнопки для захода в отряд/слот. Cерверу дать триггеры для контроля над кнопками/инвайтами/слотами Пример: Игрок сел на КС. Сервер дал ему роль. УДАЛИЛ РОЛЬ. На меню загрузил скрипт чтобы отображалось что слота нет(0/1). Выдал снаряжение. Загрузил скрипт спавна. - Это для идеи создания скрипта, надеюсь немного помог) 1 3 Art2, Met, Tr1ble и 1 другой отреагировали на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты