Перейти к содержанию
zikofrap

Respawn с индивидуальным снаряжением

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

Ребят, всем здравствуйте.
Вопрос такого характера: есть миссия 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
Я так понял, что при респавне одного из игроков он срабатывает, и у живого игрока, у которого уже много патрон и всего остального лежит в жилете, он замениться на новый, пустой. И так в принципе с остальным и происходит. Вопрос: как сделать что бы при респавне выдача того или иного предмета работала только на того человека, который в данный момент респавнится, и что бы снаряжение давалась ему то, которое я ему задам?

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


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

я конечно НЕ эксперт, но может попробуешь через swich сделать? оно проверяет кто респавнится и выдает ему нужный эквип
 

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


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

Ответили на другом форуме. Решение этого вопроса:
 

//Из такого  

blufor_teamleader addBackpack "tf_rt1523g_sage";

 

//преврати в это

if (_unit == blufor_teamleader) then { blufor_teamleader addBackpack "tf_rt1523g_sage"; };

 

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


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

Если ты повторяешь один и тот же код по 40 раз, значит ты что то делаешь не так. Как минимум не используешь циклы и массивы.

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


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

Если ты повторяешь один и тот же код по 40 раз, значит ты что то делаешь не так. Как минимум не используешь циклы и массивы.

А как их использовать в данном случае? Я так понимаю, этот код можно сделать проще? Или стабильнее но сложнее?

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


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

Как пример куска про пулеметчиков. Мне казалось у респавна армы есть что то и про снаряжение.

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

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


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

Так, с кодом в принципе понял. Его так же в onPlayerRespawn.sqf я так понимаю?

7 минут назад, Liquid сказал:

Мне казалось у респавна армы есть что то и про снаряжение.

Ну да. В общем, расскажу не много о том, что я хочу реализовать. Есть такая игра как Squad, вот, хотелось бы тоже самое сделать только в Arma3 с повышенной реалистичностью, но с респавном. И респавн тут такой, что в целом на игру персонаж сможет им воспользоваться от 1 до 3 раз, так как тикетов на игру много не даётся. Я бы мог сделать выбор класса как в игре Squad, в Arma3 даже есть подобное, это выбор роли на респавне, но я не понимаю как это реализовать таким образом, что бы, например, класс "Командир стороны" был доступен только одному игроку и при выборе его пропадал, далее, не знаю каким образом сделать что бы только SquadLeader мог создавать внутриигровые отряды, и игрок, который не вступил в отряд не мог взять определенные роли. Если Вы играли в Squad, поймёте о чём я. Поэтому вся расстановка происходит в лобби и такие процессы просто решаются условностями игры, а вся экипировка/оружие/боеприпасы и всё остальное находится на главной базе сторон в ограниченном количестве. И при худшем раскладе у одной из сторон в игре действительно могут закончится боеприпасы, от этого роль Командира стороны становится ещё интереснее, да и игра в целом происходит очень хардкорно. Уже тестировали. Но, вот столкнулись с такими проблемами, и самостоятельно я их уже решить никак не могу. Спасибо Вам за помощь.

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


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

например, класс "Командир стороны" был доступен только одному игроку и при выборе его пропадал, далее, не знаю каким образом сделать что бы только SquadLeader мог создавать внутриигровые отряды, и игрок, который не вступил в отряд не мог взять определенные роли. 

На некоторых серверах есть "Менюшки" для создания своих кланов через инвайты и тд.
Думаю, посмотрев содержимое скрипта можно настроить его на свой лад.
Через них создать кнопки для захода в отряд/слот.
Cерверу дать триггеры для контроля над кнопками/инвайтами/слотами
Пример:
Игрок сел на КС.
Сервер дал ему роль.
УДАЛИЛ РОЛЬ.
На меню загрузил скрипт чтобы отображалось что слота нет(0/1).
Выдал снаряжение.
Загрузил скрипт спавна.
-
Это для идеи создания скрипта, надеюсь немного помог)

 

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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