Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной

Таблица лидеров


Популярные публикации

Отображаются публикации с наибольшей репутацией на 04/28/16 во всех областях

  1. 1 балл
    Atavis

    BEC

    В BEServer.cfg пропишите такой (пример) RConIP 127.0.0.1 RConPort 3302 RConPassword 1234 MaxPing 350 Потом BEC\Config\Config.cfg # Set the port to the server. default port is 2302 Port = 3302
  2. 1 балл
    vitacite

    GREENZONE VER 0.3 + DONAT + обвязка

    Обвязка для SAFEZONE с донатом. Конечный результат будет выглядеть так : Что реализовано: 1) SAFEZONE без дамага. 2) Визуализация 3) Сообщение о вхождение - выхождении из SAFE ZONE 4) Для донаторов починка техники, заправка, перезарядка оружия в SAFEZONE. 5) Loadout на старте. Итак: Шаг №1: модификация mission.sqf ищем следующий код: class Item99 { side = CIV; class Vehicles { items = 1; class Item0 { position[] = {23605.1, 3.19, 17998.1}; azimut = 130.016; special = NONE; id = 99; side = CIV; vehicle = "VirtualMan_EPOCH"; player = "PLAY CDG"; leader = 1; skill = 0.6; }; }; }; }; обратите внимание на последнюю 4-ю скобку закрывающую блок спавна!!! Если ее не поставить сервер работать не будет. После этого блока вставляем следующее: //TODO Реализация возможностей для донаторов (начальный лут и станция тех обслуживания) class Vehicles { items=4; class Item0 { position[]={23599.836,3.1900001,18000.484}; azimut=153.62447; id=102; side="EMPTY"; vehicle="O_supplyCrate_F"; skill=0.60000002; init="clearMagazineCargoGlobal this; clearWeaponCargoGlobal this; clearItemCargoGlobal this; clearAllItemsFromBackpack this; clearBackpackCargoGlobal this; this addAction[""<t color='#D11313'>Экипировка</t>"", ""addons\loadoutfrombox.sqf""];"; }; class Item1 { position[]={13279.555,2.4851172,14563.375}; azimut=330; id=103; side="EMPTY"; vehicle = "Land_CarService_F"; skill = 0.6; init = "this addAction [""Тех.обслуживание"", ""addons\devs_land.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'LandVehicle'""];"; }; class Item2 { position[]={13292.752,2.3035169,14549.961}; azimut=140; id=104; side="EMPTY"; vehicle="Land_MobileLandingPlatform_01_F"; skill=0.60000002; }; class Item3 { position[]={13286.655,2.2886071,14545.61}; azimut=140; id=105; side="EMPTY"; vehicle="Land_JetEngineStarter_01_F"; init = "this addAction [""Heli-Service"", ""addons\devs_air.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'Air'""];"; skill=0.60000002; }; }; class Sensors { items=3; class Item0 { position[]={13330.902,2.2880001,14528.784}; a=75; b=75; angle=-88.355904; activationBy="ANY"; repeating=1; interruptable=1; type="SWITCH"; age="UNKNOWN"; expCond="this && (local player) && (vehicle player in thisList)"; expActiv="hint parseText format[""<t align='center' size='1.8' color='#d8bc00'> ТОРГОВАЯ ЗОНА::</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Любое насилие запрещено! <br/> За убийство или воровство в пределах круга <br/> последует немедленное наказание <br/>""];player allowDamage false;"; expDesactiv="hint parseText format[""<t align='center' size='1.8' color='#ff0000'> ВНИМАНИЕ !</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Вы покинули торговую зону <br/> Ваша жизнь находится в потенциальной опасности. <br/>""]; player allowDamage true;"; class Effects { soundDet="BattlefieldFirefight"; // play ambient sound }; }; class Item1 { position[]={6195.0264,88.872307,16855.523}; a=75; b=75; angle=-88.355904; activationBy="ANY"; repeating=1; interruptable=1; type="SWITCH"; age="UNKNOWN"; expCond="this && (local player) && (vehicle player in thisList)"; expActiv="hint parseText format[""<t align='center' size='1.8' color='#d8bc00'>ТОРГОВАЯ ЗОНА::</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Любое насилие запрещено! <br/> За убийство или воровство в пределах круга <br/> последует немедленное наказание <br/>""];player allowDamage false;"; expDesactiv="hint parseText format[""<t align='center' size='1.8' color='#ff0000'> ВНИМАНИЕ !</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Вы покинули торговую зону <br/> Ваша жизнь находится в потенциальной опасности. <br/>""]; player allowDamage true;"; class Effects { soundDet="BattlefieldFirefight"; // play ambient sound }; }; class Item2 { position[]={18474.422,24.701738,14291.331}; a=75; b=75; angle=-88.355904; activationBy="ANY"; repeating=1; interruptable=1; type="SWITCH"; age="UNKNOWN"; expCond="this && (local player) && (vehicle player in thisList)"; expActiv="hint parseText format[""<t align='center' size='1.8' color='#d8bc00'>ТОРГОВАЯ ЗОНА::</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Любое насилие запрещено! <br/> За убийство или воровство в пределах круга <br/> последует немедленное наказание <br/>""];player allowDamage false;"; expDesactiv="hint parseText format[""<t align='center' size='1.8' color='#ff0000'> ВНИМАНИЕ !</t><br/><t size='1.2' color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>Вы покинули торговую зону <br/> Ваша жизнь находится в потенциальной опасности. <br/>""]; player allowDamage true;"; class Effects { soundDet="BattlefieldFirefight"; // play ambient sound }; }; }; Не забудьте, что текст отображается на русском только в случае кодировки UTF 8/// Что сделано в данном блоке? в новом разделе Vehiсle добавлен в фабрике по клонированию Алтис объект O_supplyCrate_F который будет выдавать начальный лут для обычных игроков и для донаторов. В на центральном спавне установлен автосервис и передвижная вертолетная площадка которая будет чинить, заправлять и перевооружать (за крипто) технику у донаторов. В разделе сенсоров прописаны звуки боя при нахождении в SAFEZONE, граница локаций визуализирована яркими утопленными в землю оранжевыми шарами (может меняться). Damage убран. PS: помните что mission.sqf чувствителен к пробелам!! не допускайте лишнее редактируйте в notepad++ либо FAR чтобы контролировать правильность открытия закрытия скобок и знаков препинания. Шаг № 2: Скрипт конфигурации создаем в папке с миссией папку cfg, в этой папке создаем файл olkecfg.sqf ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TODO:Файл конфигураций для S-PLATOON //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TODO:Настройка SAFE ZONE //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TODO: Дополненная реальность для Epoch, скрипт обозначения SAFE ZONE Включить выключить: USE_GREENZONE = true / false USE_GREENZONE = true; //TODO: Использовать или нет маркеры на карте SET_MARKER = true / false SET_MARKER = true; //TODO: SET_ZONECOORD = координаты GREENZONE для AltisEpoch для других карт используйте свои формат [[_center],_radius,_name,_string,_lSign],[[_center],_radius,_name,_string,_lSign]]; SET_ZONECOORD = [ [[13325,14515,0],75, 'Center', true], // Center GreenZone [[6192.46,16834,0],75, 'West', true], // West GreenZone [[18451.9,14278.1,0],75, 'East', true] // East GreenZone ]; SET_SIGNS = 'Sign_Sphere200cm_F'; //TODO: Рисуем круг заполняем круг моделью виртуального указателя. Можно и не виртуального, со своей текстурой (пока в разработке) варианты указателя: //TODO: Sign_Sphere200cm_F - большая оранжевая сфера //TODO: Sign_Arrow_Green_F - большая зеленая стрела острием направленная вниз //TODO: Sign_Arrow_Direction_Green_F - зеленая стрела направленная на центральную точку GREENZONE ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TODO: Настройки для донаторов ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// SET_DONATOR = [ 'ID641','ID642','ID643' ]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TODO: Настройки рапторов в случае использования мода ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// rup_raptor_dam = 0.5; rup_raptor_dam_AI = 0.4; rup_raptor_dam_maul = 0.2; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TODO: Настройка цветовой гаммы на сервере ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// "ColorCorrections" ppEffectEnable true; "ColorCorrections" ppEffectAdjust [0.9, 0.9, 0, [0, 0.1, 0.25, -0.14], [1, 1, 1, 1.26], [0.15, 0.09, 0.09, 0.0]]; "ColorCorrections" ppEffectCommit 0; PS: В массив SET_DONATORS вносим через запятую 64 битный STEAM ID, после последнего запятая не ставится! TODO подкрашивает в FAR комментарии желтым. Шаг № 3. Идем в ваш init.sqf в корне с миссией и подключаем в нем наш olkecfg.sqf (если нет Init.sqf - надо его создать) В саааамом верху пишем #include "cfg\olkecfg.sqf" (внимание строка не закрыта ; т.к. после include она не закрывается) Шаг № 4. Ставим донаторские объекты в центральной safezone Создаем папку Addons в ней создаем два файла. mpmission/epoch.Altis/addons/devs_air.sqf mpmission/epoch.Altis/addons/devs_land.sqf devs_air.sqf /* Скрипт для донаторов. Обслуживание вертолетов */ private ["_user", "_veh", "_title", "_htext"]; _user = (_this select 1); _veh = vehicle _user; _title = "<t color='#ff0000' size='1.2' shadow='1' shadowColor='#000000' align='center'>ЦЕНТР ТЕХ.ОБСЛУЖИВАНИЯ:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>"; // if (getPlayerUID player in SET_DONATOR) then { if (EPOCH_playerCrypto >= 500) then { //--> text: welcome-messages _htext = "Обнаружен премиум аккаунт. Вам доступно обслуживание коптера. Внимание до завершение обслуживания не двигайтесь с места и не покидайте транспорт иначе деньги спишутся без оказания услуги."; hint parseText ( _title + _htext); uisleep 5; //--> action: remove crypto EPOCH_playerCrypto = EPOCH_playerCrypto - 500 ; _htext = "Списание 500 Crypto со счета."; hint parseText ( _title + _htext); uisleep 3; _htext = "Оперативный ремонт техники."; hint parseText ( _title + _htext); _veh setDamage 0; uisleep 3; _htext = "Заливаем керосин. Не двигайтесь"; hint parseText ( _title + _htext); _veh setFuel 1; uisleep 3; _htext = "Еще немного....."; hint parseText ( _title + _htext); uisleep 5; _htext = "Перезаряжаем турели"; hint parseText ( _title + _htext); _veh setVehicleAmmo 1; uisleep 0.1; _veh setAmmoCargo 1; uisleep 7; _htext = "Ваша птичка готова лететь дальше."; hint parseText ( _title + _htext); } else { _htext = "Недостаточно CRYPTO на вашем счете"; hint parseText ( _title + _htext); }; /* } else { //--> text: only driver can do this _htext = "Услуга доступна только премиум аккаунту"; hint parseText ( _title + _htext); };*/ и devs_land.sqf /* Скрипт для донаторов. Обслуживание техники. */ private ["_user", "_veh", "_title", "_htext"]; _user = (_this select 1); _veh = vehicle _user; _title = "<t color='#ff0000' size='1.2' shadow='1' shadowColor='#000000' align='center'>ЦЕНТР ТЕХ.ОБСЛУЖИВАНИЯ:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>"; if (! isnull (driver _veh)) then { // if (getPlayerUID player in SET_DONATOR) then { if (EPOCH_playerCrypto >= 500) then { //--> text: welcome-messages _htext = "Обнаружен премиум аккаунт. Вам доступно обслуживание техники. Внимание до завершение обслуживания не двигайтесь с места и не покидайте транспорт иначе деньги спишутся без оказания услуги."; hint parseText ( _title + _htext); uisleep 10; //--> action: remove crypto EPOCH_playerCrypto = EPOCH_playerCrypto - 500 ; _htext = "Удерживается оплата да тех.обслуживание."; hint parseText ( _title + _htext); uisleep 3; //--> action: repair vehicle _veh setDamage 0; _htext = "Ремонт произведен в полном объеме."; hint parseText ( _title + _htext); uisleep 3; _htext = "Заливаем первоклассный бензин."; hint parseText ( _title + _htext); uisleep 3; //--> action: refuel Vehicle _veh setFuel 1; _htext = "До полного....."; hint parseText ( _title + _htext); //--> action: ReAmmo Guns _htext = "Смазываем пушки."; hint parseText ( _title + _htext); //--> action: move player to gunnerposition to rearm ALL magazines, otherwise only the actual magazine will be reloaded player action ["moveToGunner", _veh]; uisleep 5; _htext = "Перезарядка..."; hint parseText ( _title + _htext); _veh setVehicleAmmo 1; uisleep 0.1; _veh setAmmoCargo 1; uisleep 0.1; //--> action: bring player back to driverposition uisleep 0.1; player action ["moveToDriver", _veh]; uisleep 5; _htext = "Ваша машина, как новенькая. Можно ехать!!!"; hint parseText ( _title + _htext); } else { //--> text: not enough crypto _htext = "Недостаточно средств на счете.."; hint parseText ( _title + _htext); }; /*} else { //--> text: only driver can do this _htext = "Услуга доступна только премиум аккаунту"; hint parseText ( _title + _htext); };*/ } else { _htext = "Вы должны находиться за рулем и без пассажиров..."; hint parseText ( _title + _htext); }; оба скрипта взяты на форуме dayzepoch, перевод и доработка для доната - мой. Шаг № 5. Создаем файл greenzone.sqf (визуализация safezone и маркеры) mpmission/epoch.Altis/greenzone/greenzone.sqf greenzone.sqf if (isServer) exitWith { if (USE_GREENZONE) then // проверка, что используется оформление GREENZONE { { _center = _x select 0; _radius = _x select 1; _name = _x select 2; _lsign = _x select 3; if (_lSign) then // проверка, что оформляем конкретную SAFEZONE (true/false в координатах) { for '_i' from 0 to 360 step (270 / _radius)*2 do { _location = [(_center select 0) + ((cos _i) * _radius), (_center select 1) + ((sin _i) * _radius),0]; _dir = ((_center select 0) - (_location select 0)) atan2 ((_center select 1) - (_location select 1)); _object = createVehicle [ SET_SIGNS , _location, [], 0, 'CAN_COLLIDE']; // Изменяем модель указателя тут.... _object setDir _dir; }; if (SET_MARKER) then { // проверка, что наносим метки с SAFEZONE на карту _marker = createMarker [format["GreenZone:%1", _name], _center]; _marker setMarkerShapeLocal "Icon"; _marker setMarkerType "mil_circle"; // _marker setMarkerType "selector_selectedMission"; _marker setMarkerText " Безопасная торговая зона"; _marker setMarkerColor "ColorGUER"; _marker = createMarker [format["GreenZone1:%1", _name], _center]; _marker setMarkerShapeLocal "ELLIPSE"; _marker setMarkerTypeLocal "Empty"; _marker setMarkerColorLocal "ColorGUER"; _marker setMarkerBrushLocal "Solid"; _marker setMarkerSize [_radius, _radius]; }; }; } forEach SET_ZONECOORD ; }; }; Шаг № 6. В уже созданной нами папке addons - создаем loadout для донаторов. loadoutfrombox.sqf mpmission/epoch.Altis/addons/loadoutfrombox.sqf if (getPlayerUID player in SET_DONATOR) then { hint "Выдан премиум набор"; RemoveAllItems player; RemoveAllWeapons player; Removeallcontainers player; player addItem "NVGoggles"; player addBackpack "B_BergenG"; player addItem "H_Shemag_khk"; player assignitem "H_Shemag_khk"; // player addItem "NVGoggles"; // player addMagazine "handgrenade"; // player addMagazine "handgrenade"; // player addMagazine "handgrenade"; player addVest "V_Chestrig_rgr"; player addWeapon "hgun_Pistol_heavy_01_F"; player addMagazine "11Rnd_45ACP_Mag"; player addMagazine "11Rnd_45ACP_Mag"; player addWeapon "SMG_02_ACO_F"; player selectWeapon "SMG_02_ACO_F"; player addMagazine "30Rnd_9x21_Mag"; player addMagazine "30Rnd_9x21_Mag"; player addMagazine "30Rnd_9x21_Mag"; player addWeapon "EpochRadio0"; player addWeapon "ItemMap"; // EPOCH_playerCrypto = 100; _modelMale = (typeOF player == "Epoch_Male_F"); _modelFemale = (typeOF player == "Epoch_Female_F"); if (_modelFemale) then { player forceAddUniform "U_BasicBodyFemale"; }; if (_modelMale) then { player forceAddUniform "U_OG_Guerilla2_1"; }; newPlayer = false; } else { hint "Выдан стандартный набор"; RemoveAllItems player; RemoveAllWeapons player; Removeallcontainers player; player addWeapon "EpochRadio0"; player addWeapon "ItemMap"; player addWeapon "hgun_Pistol_heavy_01_F"; player addMagazine "11Rnd_45ACP_Mag"; // EPOCH_playerCrypto = 100; }; }; }; Шаг № 7: Подцепляем визуализацию greenzone из init.sqf в саамом низу вашего init.sqf пишем [] execVM "greenzone\greenzone.sqf"; Шаг № 8. Убираем дамаг в Safezone. Идем в файл Arma3/@epochhive/addons/server_settings.pbo. С помощью pbo манагера вскрываем содержимое. Находим файл /configs/maps/altis.h и в нем ищем раздел связанный с трейдзонами ... добавляем туда следующий код сразу после propsPos[] = { //phones olke path { "Land_PhoneBooth_02_F", { 13351, 14515.4, 0.0014267 }, 38.3472 }, { "Land_PhoneBooth_02_F", { 18467.5, 14263.8, 0.0297527 }, 38.3472 }, { "Land_PhoneBooth_02_F", { 6196.38, 16849.9, 0.00205231 }, 63.7064 }, //protection zone by olke central 3x3 25m radius circle { "ProtectionZone_Invisible_F", { 13351.1, 14540.1, 0.0110912 }, 359.768 }, { "ProtectionZone_Invisible_F", { 13351.1, 14515.1, 0.0110912 }, 359.768 }, { "ProtectionZone_Invisible_F", { 13351.1, 14490.1, 0.0110912 }, 359.768 }, { "ProtectionZone_Invisible_F", { 13326.1, 14540.1, 0.0110912 }, 359.768 }, { "ProtectionZone_Invisible_F", { 13326.1, 14515.1, 0.0110912 }, 359.768 }, { "ProtectionZone_Invisible_F", { 13326.1, 14490.1, 0.0110912 }, 359.768 }, { "ProtectionZone_Invisible_F", { 13301.1, 14540.1, 0.0110912 }, 359.768 }, { "ProtectionZone_Invisible_F", { 13301.1, 14515.1, 0.0110912 }, 359.768 }, { "ProtectionZone_Invisible_F", { 13301.1, 14490.1, 0.0110912 }, 359.768 }, //protection zone by olke east 3x3 25m radius circle { "ProtectionZone_Invisible_F", { 18492.5, 14288.8, 0.0297527 }, 359.768 }, { "ProtectionZone_Invisible_F", { 18492.5, 14263.8, 0.0297527 }, 359.768 }, { "ProtectionZone_Invisible_F", { 18492.5, 14238.8, 0.0297527 }, 359.768 }, { "ProtectionZone_Invisible_F", { 18467.5, 14288.8, 0.0297527 }, 359.768 }, { "ProtectionZone_Invisible_F", { 18467.5, 14263.8, 0.0297527 }, 359.768 }, { "ProtectionZone_Invisible_F", { 18467.5, 14238.8, 0.0297527 }, 359.768 }, { "ProtectionZone_Invisible_F", { 18442.5, 14288.8, 0.0297527 }, 359.768 }, { "ProtectionZone_Invisible_F", { 18442.5, 14263.8, 0.0297527 }, 359.768 }, { "ProtectionZone_Invisible_F", { 18442.5, 14238.8, 0.0297527 }, 359.768 }, //protection zone by olke west 3x3 25m radius circle { "ProtectionZone_Invisible_F", { 6221.38, 16874.9, 0.00205231 }, 63.7064 }, { "ProtectionZone_Invisible_F", { 6221.38, 16849.9, 0.00205231 }, 63.7064 }, { "ProtectionZone_Invisible_F", { 6221.38, 16824.9, 0.00205231 }, 63.7064 }, { "ProtectionZone_Invisible_F", { 6196.38, 16874.9, 0.00205231 }, 63.7064 }, { "ProtectionZone_Invisible_F", { 6196.38, 16849.9, 0.00205231 }, 63.7064 }, { "ProtectionZone_Invisible_F", { 6196.38, 16824.9, 0.00205231 }, 63.7064 }, { "ProtectionZone_Invisible_F", { 6171.38, 16874.9, 0.00205231 }, 63.7064 }, { "ProtectionZone_Invisible_F", { 6171.38, 16849.9, 0.00205231 }, 63.7064 }, { "ProtectionZone_Invisible_F", { 6171.38, 16824.9, 0.00205231 }, 63.7064 }, Дабы адекватно добавились телефонные будки, чтобы можно было снимать деньги в торговой зоне непосредственно, комментируем следующие строки. //116: { "ProtectionZone_Invisible_F", { 13344.1, 14483.7, 0.00191855 }, 359.768 }, //180: { "Land_ToiletBox_F", { 13351, 14515.4, 0.0014267 }, 38.3472 }, //283: { "Oil_Spill_F", { 18467.5, 14263.8, 0.0297527 }, 0.257763 }, Взято с работающего сервера. Видео, как это все выглядит будет чуть позже. PS: переменная SET_DONATOR - (как и остальные в olkecfg.sqf) являются глобальными. Т.е. вы можете вызывать их из других своих скриптов.
×
×
  • Создать...

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

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.

Поддержка