Jump to content

Добро пожаловать на проект
Weekly Open Games

Weekly Open Games — это проект для людей, которым интересен хардкорный тип игры. Мы стараемся максимально эффективно использовать структуру, слабые и сильные стороны, а также технику и вооружение различных сторон конфликта, но не ставим перед собой цель провести 100% сбалансированного боестолкновения. Командная игра, командное взаимодействие — фундамент нашего проекта.
О проекте WOG Как начать играть Правила серверов
zikofrap

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

//Из такого  

blufor_teamleader addBackpack "tf_rt1523g_sage";

 

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

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

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
4 минуты назад, Liquid сказал:

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

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

Share this post


Link to post
Share on other sites
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;

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

Edited by Liquid

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites
23 часа назад, zikofrap сказал:

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

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

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.