Как изменить порт dynmap

Работа с плагином Dynmap, использующимся для отображения карты "вид со спутника".

Плагин Dynmap для вашего сервера Minecraft позволяет настроить одну очень полезную функцию — доступ к карте прямо из браузера. Благодаря этому можно не только чатиться с игроками, даже не заходя на сервер, но и обозревать весь мир в формате Гугл-карт.

Вид карты Dynmap

Где скачать Dynmap?

Первым делом нужно найти место, где размещаются последние сборки плагина. На сайте https://dynmap.us/builds/dynmap/?C=M;O=D есть сборки для различных версий игры. Если вам нужна сборка для Spigot — скачивайте файл с названием вида «Dynmap-3.1-SNAPSHOT-spigot.jar». Если же нужна версия для Forge, то выбирайте нужную версию и скачивайте нужный вам файл. Например, здесь можно скачать версию для Forge 1.12.2.

После скачивания версии для Spigot, загрузите jar-файл в папку /plugins/ на вашем FTP-сервере. Если же вы скачали версию для Forge — загружайте jar-файл в папку /mods/.

Как настроить порт Dynmap?

В папке /plugins/dynmap есть файл configuration.txt. Его нужно скачать себе на компьютер и открыть в текстовом редакторе. В файле необходимо найти строчку «webserver-port» поиском (нажмите клавиши CTRL+F). Там вы найдете такую строчку:

# The TCP-port the webserver will listen on. 25565-25665
webserver-port: 25565

Теперь нужно исправить цифру 25565 на другую. Какую же, спросите вы? А вот здесь таится хитрость. Нужно прописать порт вашего сервера Minecraft плюс 100. Например, ваш сервер на нашем хостинге имеет порт 25680? Значит, пропишите webserver-port: 25780

Как открыть карту?

После прописания нового порта в файл настройки, сохраните файл configuration.txt и загрузите через FTP-клиент обратно в папку dynmap. Теперь самое время перезапустить сервер, зайти на него и начать летать вокруг. Допустим, у вашего сервера айпи 123.45.67.89:25680, тогда у карты Dynmap адрес будет такой: http://123.45.67.89:25780/ — пройдите по схожему адресу, после чего карта начнет подгружаться.

Если у вашего тарифного плана не так много доступных гигабайт оперативной памяти, не удивляйтесь: сервер может начать притормаживать. Особенно это касается серверов с 1 гигабайтом оперативной памяти и игроками, находящимися на сервере в момент ваших полетов. Притормаживания очень легко предупредить: достаточно пролететь небольшой отрезок пути и остановиться секунд на 5, после чего продолжить путь. Карта обновится через 10-30 секунд.

Настройки отображения карты

У карты dynmap есть несколько различных режимов отображения. Подвиньте курсор в правую часть экрана и вы увидите выдвигающуюся правую панель с рядом кнопок:

Для 3D-отображения нажмите среднюю кнопку

Первая кнопка представляет из себя плоскую географическую карту, вид сверху. Вторая кнопка — псевдо-3D, в котором мир отображается под углом. Третья кнопка показывает пещеры под землёй.

Второй ряд кнопок представляет из себя то же самое, но для Нижнего мира (Nether). Третий ряд кнопок — аналогично, но для Края (The End).

Настраивайте плагин для отображения карты на вашем сервере, размещайте ссылку на сайте вашего сервера и игроки значительно повысят активность, имея возможность увидеть свой сервер «из космоса».

С любовью,
команда Ru-hoster ❤

Автор:

Alexandr116ru

По сути, это всего лишь объединение двух скриптов в один. По мере сил и возможностей. Вероятно, тут всё грубо и далеко не идеально (ну не владею я такими навыками).
Но скрипт работает 100% корректно.
 
Установка:
1. Создать файл с раширением ИМЯ_ФАЙЛА.sqf, скопировать в него содержимое кода:

 

private[«_textPos»,»_rand_player»,»_playerpos»,»_randomLoot»,»_maxLootRadius»,»_playerPresent»,»_finder»,»_preWaypointPos»,»_startTime»,»_heliStart»,»_heliModel»,»_lootPos»,»_wp1″,»_wp2″,»_wp3″,»_landingzone»,»_aigroup»,»_wp»,»_helipilot»,»_crashwreck»,»_vel»,»_pos»,»_dir»,»_position»,»_num»,»_itemType»,»_CBLBase»,»_weights»,»_cntWeights»,»_index1″,»_index2″,»_crashName»,»_objectID»,»_marker_position»,»_marker»,»_mdot»,»_flyToPlayer»,»_dropPosition»,»_chute»,»_chutePos»,»_FlyingSupplyBox»,»_smoke»,»_var»,»_posATL»,»_SupplyBox»,»_mapLootPos»];
if ((count playableUnits) < 1) exitWith {diag_log(«[ХЕЛИКРАШ ОТМЕНА]: Нет игроков на сервере»);}; //СКРИПТ НЕ БУДЕТ ВЫПОЛНЯТЬСЯ, ЕСЛИ НА СЕРВЕРЕ НЕТ ИГРОКОВ
_rand_player            = playableUnits call BIS_fnc_selectRandom;
_playerpos                = [_rand_player] call FNC_GetPos;

_heliModel                = [«Mi17_TK_EP1″,»Mi17_CDF»,»Mi17_Ins»,»Mi17_UN_CDF_EP1″,»Mi171Sh_CZ_EP1″,»AH6J_EP1″,»UH1H_TK_GUE_EP1″,»UH1H_TK_EP1″,»UH1Y»,»MH60S»,»UH60M_EP1″,»AH6X_EP1″,»MH6J_EP1″,»Mi17_Civilian»,»Mi17_medevac_Ins»,»Mi17_medevac_CDF»,»Mi17_medevac_RU»,»UH60M_MEV_EP1″,»BAF_Merlin_HC3_D»,»CH_47F_EP1″,»CH_47F_BAF»,»MV22″,»C130J»] call BIS_fnc_selectRandom;
_heliStart                = [[1000.0,2.0],[3500.0,2.0],[5000.0,2.0],[7500.0,2.0],[9712.0,663.067],[12304.0,1175.07]] call BIS_fnc_selectRandom; //КООРДИНАТЫ, ОТКУДА БУДЕТ ВЫЛЕТАТЬ БОРТ. ДЛЯ ЧЕРНО
_crashName                = getText (configFile >> «CfgVehicles» >> _heliModel >> «displayName»);
_finder                    = «»;
_randomLoot                = [«HeliCrash»,»Hospital»,»Military»,»MilitaryIndustrial»,»MilitarySpecial»] call BIS_fnc_selectRandom; //СПИСОК, ОТКУДА БУДЕТ БРАТЬСЯ ЛУТ ДЛЯ ПРИЗЕМЛИВШЕЙСЯ КОРОБКИ

    //ЗДЕСЬ МОЖНО РАЗМЕСТИТЬ ОПОВЕЩЕНИЕ ИГРОКАМ О СТАРТЕ ИВЕНТА
    
    _position = [getMarkerPos «center»,0,5000,10,0,2000,0] call BIS_fnc_findSafePos;

    diag_log(format[«[ХЕЛИКРАШ НАЧАЛО]: %1 вылетел с позиции %2 к позиции %3!», _crashName,  str(_heliStart), str(_position)]); //ЭТУ СТРОКУ МОЖНО УДАЛИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ЛОГГИРОВАНИЕ В СЕРВЕРНЫЙ RPT
    
    _startTime = time;
    _crashwreck = createVehicle [_heliModel,_heliStart, [], 0, «FLY»];
    _objectID = str(round(random 999999));
    _crashwreck setVariable [«ObjectID», _objectID, true];
    _crashwreck setVariable [«ObjectUID», _objectID, true];
    PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_crashwreck];
    waitUntil {(!isNull _crashwreck)};
    _crashwreck setCombatMode «BLUE»;
    _crashwreck engineOn true;
    _crashwreck flyInHeight 200; //ВЫСОТА ПОЛЁТА. ЕСЛИ НОВИЧОК, ЛУЧШЕ НЕ ТРОГАЙ. ИНАЧЕ БУДЕТ СБОИТЬ СБРОС КОРОБКИ. БОРТ БУДЕТ КРУЖИТЬ НАД ИГРОКОМ, ТЕМ САМЫМ, ДЕМОРАЛИЗУЯ И НАРУШАЯ ЕГО ПСИХИКУ
    _crashwreck forceSpeed 150;
    _crashwreck setspeedmode «NORMAL»;
    
    _landingzone = createVehicle [«HeliHEmpty», [_position select 0, _position select 1,0], [], 0, «CAN_COLLIDE»];
    _aigroup = creategroup civilian;
    _helipilot = _aigroup createUnit [«SurvivorW2_DZ»,getPos _crashwreck,[],0,»FORM»];
    _helipilot setCombatMode «BLUE»;
    _helipilot moveindriver _crashwreck;
    _helipilot assignAsDriver _crashwreck;
    uiSleep 0.5;
    
    if ((isPlayer _rand_player) && (alive _rand_player)) then { //ЕСЛИ ВЫБРАННАЯ ЦЕЛЬ — ИГРОК И ЕСЛИ ИГРОК ЖИВ, ТО ПОЛЕТИТ НА ЕГО ПОЗИЦИЮ
        _wp1 = _aigroup addWaypoint [[(_playerpos select 0),(_playerpos select 1),200],0];
        _wp1 setWaypointType «MOVE»;
        _wp1 setWaypointBehaviour «CARELESS»;
        _flyToPlayer = true;
        for «_x» from 1 to 5 do
        {
            _preWaypointPos = [getMarkerPos «center», 0, 5000, 10, 0, 2000, 0] call BIS_fnc_findSafePos;
            _wp = _aigroup addWaypoint [_preWaypointPos, 0];
            _wp setWaypointType «MOVE»;
            _wp setWaypointBehaviour «CARELESS»;
        };
        diag_log(format[«[ХЕЛИКРАШ]: %1 полетел к игроку %2», _crashName, (name _rand_player)]); //ЭТУ СТРОКУ МОЖНО УДАЛИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ЛОГГИРОВАНИЕ В СЕРВЕРНЫЙ RPT
    } else {  //ЕСЛИ ПОЛЕТЕЛ НЕ К ИГРОКУ, БУДЕТ ПРОСТО ЛЕТАТЬ ПО ТОЧКАМ, ПОКА НЕ СОБЬЮТ ИЛИ ПОКА НЕ ДОЛЕТИТ ДО ФИНАЛЬНОЙ
        for «_x» from 1 to 10 do
        {
            _preWaypointPos = [getMarkerPos «center», 0, 5000, 10, 0, 2000, 0] call BIS_fnc_findSafePos;
            _wp = _aigroup addWaypoint [_preWaypointPos, 0];
            _wp setWaypointType «MOVE»;
            _wp setWaypointBehaviour «CARELESS»;
        };
        diag_log(format[«[ХЕЛИКРАШ]: %1 полетел кружить по карте», _crashName]); //ЭТУ СТРОКУ МОЖНО УДАЛИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ЛОГГИРОВАНИЕ В СЕРВЕРНЫЙ RPT
    };

    _dropPosition = [(_playerpos select 0),(_playerpos select 1),200];
    if (_flyToPlayer) then {  //ЕСЛИ ИЗНАЧАЛЬНО ЛЕТЕЛ К ИГРОКУ — НИЖЕ ОЖИДАНИЕ, КОГДА ПРИБЛИЗИТСЯ К ЕГО ПОЗИЦИИ. НУ И ДРУГИЕ ЧРЕЗВЫЧАЙНЫЕ СИТУАЦИИ. ЧТОБЫ ПРОДОЛЖИЛОСЬ ВЫПОЛНЕНИЕ СКРИПТА
        waitUntil {(_crashwreck distance _dropPosition < 50) || !alive _crashwreck || (getPosATL _crashwreck select 2) < 5 || (damage _crashwreck) >= 1};
        diag_log(format[«[ХЕЛИКРАШ]: %1 долетел до игрока или был сбит», _crashName]); //ЭТУ СТРОКУ МОЖНО УДАЛИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ЛОГГИРОВАНИЕ В СЕРВЕРНЫЙ RPT
    };

    if ((_flyToPlayer) && (alive _crashwreck)) then { //ЕСЛИ ИЗНАЧАЛЬНО ЛЕТЕЛ К ИГРОКУ И НЕ СБИЛИ, ТО СБРОСИТ КОРОБКУ ПОЧТИ НА ГОЛОВУ БЕДНОЙ КЕПКИ, В ДРУГОМ СЛУЧАЕ, КУСОК СКРИПТА ПРОПУСКАЕТСЯ И СБРОСА НЕ БУДЕТ
        diag_log(format[«[ХЕЛИКРАШ]: %1 сбросил груз. Значит долетел», _crashName]); //ЭТУ СТРОКУ МОЖНО УДАЛИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ЛОГГИРОВАНИЕ В СЕРВЕРНЫЙ RPT
        _aircraftpos = [_crashwreck] call FNC_GetPos;
        _chute = createVehicle [«ParachuteMediumEast», _aircraftpos, [], 0, «FLY»];
        _chutePos = getPos _chute;
        _FlyingSupplyBox = createVehicle [«Supply_Crate_DZE», _chutePos, [], 0, «FLY»];
        _FlyingSupplyBox attachTo [_chute, [0,0,0]];
        _FlyingSupplyBox setVariable [«permaLoot»,true];
        _FlyingSupplyBox setVariable [«ObjectID», «»];
        _FlyingSupplyBox addEventHandler [«handleDamage», {false}];
        _chute setVariable [«ObjectID», «»];
        _smoke = «SmokeShellGreen» createVehicle (getPos _FlyingSupplyBox);
        _smoke attachTo [_FlyingSupplyBox, [0,0,1]];
        _var = floor((random 2) + 1);
        while {getPos _FlyingSupplyBox select 2 > 4} do
        {
            _chute SetVelocity [0,0,-5];
            uiSleep 0.1;
        };
        detach _FlyingSupplyBox;
        while {getPos _FlyingSupplyBox select 2 > 0} do {
            _FlyingSupplyBox setPos [getPos _FlyingSupplyBox select 0, getPos _FlyingSupplyBox select 1, (getPos _FlyingSupplyBox select 2) — .25]
        };
        deleteVehicle _chute;
        _posATL = getPosATL _FlyingSupplyBox;
        _mapLootPos = mapGridPosition getPos _FlyingSupplyBox;
        deleteVehicle _FlyingSupplyBox;
        _SupplyBox = «Supply_Crate_DZE» createVehicle _posATL;
        _SupplyBox setVariable [«permaLoot»,true];
        _SupplyBox enableSimulation false;
        if (DZE_MissionLootTable) then {
            dgx_itemTypes = [] + getArray (missionConfigFile >> «CfgBuildingLoot» >> _randomLoot >> «lootType»);
        } else {
            dgx_itemTypes = [] + getArray (configFile >> «CfgBuildingLoot» >> _randomLoot >> «lootType»);
        };
        _CBLBase = dayz_CBLBase find (toLower(_randomLoot));
        _weights = dayz_CBLChances select _CBLBase;
        _cntWeights = count _weights;
        _num = (round(random 12)) + 12;
        for «_x» from 1 to _num do {
            _maxLootRadius = (random 4) + 4;
            _lootPos = [_posATL, _maxLootRadius, random 360] call BIS_fnc_relPos;
            _index1 = floor(random _cntWeights);
            _index2 = _weights select _index1;
            _itemType = dgx_itemTypes select _index2;
            [_itemType select 0, _itemType select 1, _lootPos, 5] call spawn_loot;

            diag_log(format[«[ХЕЛИКРАШ СБРОС КОРОБКИ]: %1 сбросил груз из %2 на позиции @%3», _crashName, _randomLoot, _mapLootPos]); //ЭТУ СТРОКУ МОЖНО УДАЛИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ЛОГГИРОВАНИЕ В СЕРВЕРНЫЙ RPT

        };
        _nearby = _dropPosition nearObjects [«ReammoBox», sizeOf(«Supply_Crate_DZE»)];
        {
            _x setVariable [«permaLoot»,true];
        } count _nearBy;
        //_textPos = format [«Воздушный транспорт сбросил груз на координтах %1.», _mapLootPos];
        //RemoteMessage = [«radio»,_textPos];
        //publicVariable «RemoteMessage»;
        //ЗДЕСЬ МОЖНО РАЗМЕСТИТЬ ОПОВЕЩЕНИЕ ИГРОКАМ О СБРОСЕ ГРУЗА, В КАЧЕСТВЕ ПРИМЕРА, ПРИВЕДЕНО СООБЩЕНИЕ, ВЫВОДЯЩЕЕСЯ ПРИ ПОМОЩИ REMOTE MESSAGE ИЗ МОДА WAI 2.2.0
        //_mapLootPos — ПОКАЖЕТ КВАДРАТ, В КОТОРОМ СБРОШЕНА КОРОБКА.
    

    };

    _wp2 = _aigroup addWaypoint [position _landingzone, 0];
    _wp2 setWaypointType «MOVE»;
    _wp2 setWaypointBehaviour «CARELESS»;
    _wp2 setWaypointStatements [«true», «_crashwreck setdamage 1;»];
    
    _wp3 = _aigroup addWaypoint [[0,16000,0], 0];
    _wp3 setWaypointType «CYCLE»;
    _wp3 setWaypointBehaviour «CARELESS»;
    
    waitUntil {(_crashwreck distance _position) <= 1000 || !alive _crashwreck || (getPosATL _crashwreck select 2) < 5 || (damage _crashwreck) >= 1};
    
    _crashwreck flyInHeight 100;
    _crashwreck forceSpeed 100;
    _crashwreck setspeedmode «NORMAL»;
    
    waitUntil {(_crashwreck distance _position) <= 500 || !alive _crashwreck || (getPosATL _crashwreck select 2) < 5 || (damage _crashwreck) >= 1};
    deletevehicle _helipilot;
    
    _crashwreck setHit [«mala vrtule», 1];
    _ran15 = random 15;
    _crashwreck setVelocity [_ran15,_ran15,-25];
    _crashwreck setdamage .9;
    waitUntil{uiSleep 1; getpos _crashwreck select 2 <= 30};
    _helipilot setdamage 1;
    _crashwreck setVelocity [_ran15,_ran15,-20];
    waitUntil{uiSleep 1; getpos _crashwreck select 2 <= 10};
    _crashwreck setdamage 1;
    
    waitUntil{uiSleep 1; getpos _crashwreck select 2 <= 5};
    
    diag_log(format[«[ХЕЛИКРАШ ПАДЕНИЕ]: %1 упал на позиции %2!», _crashName, getpos _crashwreck]); //ЭТУ СТРОКУ МОЖНО УДАЛИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ЛОГГИРОВАНИЕ В СЕРВЕРНЫЙ RPT
    
    _pos = [getpos _crashwreck select 0, getpos _crashwreck select 1,0];
    _dir = getdir _crashwreck;
    deletevehicle _landingzone;
    
    _isWater = surfaceIsWater [getpos _crashwreck select 0, getpos _crashwreck select 1];
    if(_isWater) then {
    //ЗДЕСЬ МОЖНО РАЗМЕСТИТЬ ОПОВЕЩЕНИЕ, ЧТО ВОЗДУШНЫЙ ТРАНСПОРТ УПАЛ В ВОДУ. И НА ЭТОМ СКРИПТ ЗАКОНЧИТ СВОЮ РАБОТУ.
    } else { //ЕСЛИ ВСЁ ХОРОШО, ТО НА МЕСТЕ КРУШЕНИЯ СПАВНИТСЯ ЛУТ ИЗ ТАБЛИЦЫ «HeliCrash». ЕСЛИ ХОЧЕТСЯ РАНДОМА, МОЖНО НИЖЕ ВСЕ ТРИ «HeliCrash» ЗАМЕНИТЬ НА _randomLoot
        _num = round(random 12) + 12;
        if (DZE_MissionLootTable) then {
            dgx_itemTypes = [] + getArray(missionConfigFile >> «CfgBuildingLoot» >> «HeliCrash» >> «lootType»);
        } else {
            dgx_itemTypes = [] + getArray(configFile >> «CfgBuildingLoot» >> «HeliCrash» >> «lootType»);
        };
        _CBLBase = dayz_CBLBase find(toLower(«HeliCrash»));
        _weights = dayz_CBLChances select _CBLBase;
        _cntWeights = count _weights;
        for «_x» from 1 to _num do
        {
            _maxLootRadius     = (random 20) + 10;
            _lootPos = [_pos, _maxLootRadius, random 360] call BIS_fnc_relPos;
            _index1 = floor(random _cntWeights);
            _index2 = _weights select _index1;
            _itemType = dgx_itemTypes select _index2;
            [_itemType select 0, _itemType select 1, _lootPos, 5] call spawn_loot;
            
            diag_log(format[«[ХЕЛИКРАШ СПАВН ЛУТА]: %1 упал на позиции %2», _crashName, _lootPos]); //ЭТУ СТРОКУ МОЖНО УДАЛИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ЛОГГИРОВАНИЕ В СЕРВЕРНЫЙ RPT
            
            _nearby = _pos nearObjects [«ReammoBox», 20];
            {
                _x setVariable [«permaLoot»,true];
            } forEach _nearBy;
        };
        
        //ЗДЕСЬ МОЖНО РАЗМЕСТИТЬ ОПОВЕЩЕНИЕ ИГРОКАМ, О ТОМ, ЧТО БОРТ УПАЛ. ДАЛЕЕ ПОЯВИТСЯ МАРКЕР, НО ОСТАТКИ СГОРЕВШЕГО БОРТА, БУДУТ РАСПОЛАГАТЬСЯ НЕ ТОЧНО ПО ЦЕНТРУ МАРКЕРА, ИБО ПУСТЬ ИЩУТ

        _marker_position = [_pos,0,400,0,1,2000,0] call BIS_fnc_findSafePos;
        waitUntil
        {
            _marker = createMarker [ format [«loot_event_marker_%1», _startTime], _marker_position];
            _marker setMarkerColor «ColorRed»;
            _marker setMarkerShape «ELLIPSE»;
            _marker setMarkerAlpha 0.5;
            _marker setMarkerSize [400,400];
            _marker setMarkerText _crashName;
            _mdot = createMarker [format [«dot_%1», _startTime], _marker_position];
            _mdot setMarkerColor «ColorBlack»;
            _mdot setMarkerType «hd_destroy»;
            _mdot setMarkerText (format[«Место крушения: %1», _crashName]); //ТЕКСТ КОТОРЫЙ БУДЕТ ОТОБРАЖАТЬСЯ НА МАРКЕРЕ, С НАЗВАНИЕМ УПАВШЕГО БОРТА
            uiSleep 10;
            deleteMarker _marker;
            deleteMarker _mdot;
            _playerPresent = false;
            {
                if((isPlayer _x) && (_x distance _pos <= 25)) then {
                    _playerPresent = true;
                    _finder = name _x;
                };
            } foreach playableUnits;
            (_playerPresent)
        };
        deleteMarker _marker; //НЕ УВЕРЕН, НАДО ЛИ ДУБЛИРОВАТЬ УДАЛЕНИЕ МАРКЕРОВ, ИБО НЕ СПЕЦ. НЕ ЗНАЮ. НО НЕ МЕШАЕТ (ЭТА СТРОКА И НИЖЕ).
        deleteMarker _mdot;
        //МАРКЕР БУДЕТ ПЕРЕСОЗДАВАТЬСЯ КАЖДЫЕ 10 СЕКУНД, ЧТОБЫ ВСЕ ИГРОКИ ЕГО ВИДЕЛИ, ДАЖЕ ПОСЛЕ ПЕРЕЗАХОДА. БУДЕТ ОТОБРАЖАТЬСЯ ДО ТЕХ ПОР, ПОКА К СГОРЕВШЕМУ БОРТУ НЕ ПОДОЙДЁТ ИГРОК
        //ЗДЕСЬ МОЖНО РАЗМЕСТИТЬ ОПОВЕЩЕНИЕ ИГРОКАМ, О ТОМ ЧТО ХЕЛИКРАШ НАЙДЕН

        diag_log(format[«[ХЕЛИКРАШ КОНЕЦ]: Обнаружен игроком %1. Ивент выполнен!» , _finder]); //ЭТУ СТРОКУ МОЖНО УДАЛИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ЛОГГИРОВАНИЕ В СЕРВЕРНЫЙ RPT
    };

 
 

2. Закинуть файл ИМЯ_ФАЙЛА.sqf в папку @DayZ_Epoch_Serveraddonsdayz_servermodules
3. Добавить в init.sqf в EpochEvents, внутри [], код [«any»,»any»,»any»,»any»,30,»ИМЯ_ФАЙЛА»], не забыв поставить запятую после предыдущего ивента.
Пример: EpochEvents = [[«any»,»any»,»any»,»any»,10,»другой_ивент»],[«any»,»any»,»any»,»any»,30,»ИМЯ_ФАЙЛА»]];
 
Что происходит и как это работает:
— По заданному в init.sqf промежутку времени, вылетает вертолёт/самолёт;
— Если есть игроки и выбранная цель из всех юнитов игрок, то воздушный транспорт направляется к его позиции;
— Долетев до позиции игрока, «сбрасывает» ящик на парашюте и продолжает свой маршрут по точкам;
— После приземления, вокруг ящика спавнится лут. Да и сам ящик можно разобрать;
— Если изначально цель не игрок, то борт сразу полетит кружить по карте;
— Отлетав определённое количество точек, пойдёт на финальную, разобьётся и вокруг него отспавнится лут, с отображением информации на карте маркером;
— Маркер будет отображаться до тех пор, пока кто либо из игроков не подойдёт к крашу;
В принципе, функционал двух скриптов в одном, как оно и было, ничего экстраординарного.
 
Я лишь внёс пару проверок и поправок:
— Если игроков нет на сервере, то работа скрипта прекращается;
— Скрипт отработает всегда (в оригинале, только если выбранная цель — игрок). В моём случае, он стартанёт всегда, но если выбранная цель не игрок, то просто отработает, как анимированный хеликраш, без сброса груза;
— Маркер будет отображаться даже после перезахода игрока на сервер. Пересоздаётся раз в 10 секунд. Увы, более ювелирных способов не нашёл. В миссиях WAI, маркеры вообще раз в секунду пересоздаются. Тут работает по тому же принципу;
— Если борт сбить, на любом этапе, он упадёт и лут отспавнится вокруг него, с отображением маркера;
— Читайте комментарии в скрипте, если хотите добавить оповещения игрокам о старте, сбросе груза, падении борта.

Dynmap shot.png

Автор

mikeprimm, FrozenCow2

Платформа

JRE

Написано на

Java

Дата выпуска

30 августа 2011 г.

Последняя
версия

v3.2.1

Размер

6.83 МБ

Лицензия

Apache License version 2.0

Исходный код

Доступен

Совместимо с

до 1.17.1

Поддержка Нижнего мира

Есть

Ссылки

Форум

Веб-сайт

DynMap — это плагин для сервера под управлением Bukkit. Он нарисует карту вашего сервера Minecraft прямо в браузере, наподобие привычного Google Maps. Он очень прост в установке, так как веб-сервер встроенный в DynMap работает прямо из коробки, хотя всё также есть возможность интеграции карты с существующим сайтом на своем веб-сервере, например Apache. Гибкость DynMap позволяет рисовать ваш мир, используя различные технологии построения, тем самым поставив упор на быстродействие, либо наоборот на проработку высокой детализации.

В зависимости от ваших требований к DynMap, встроенные компоненты позволят вам добавлять/удалять ту или иную функциональность. Сейчас DynMap поставляется с такими компонентами, которые добавляют поддержку чата с воздушными шарами, переписку через веб + интеграция с HeroChat, а также отображение на карте регионов созданных в WorldGuard, Residence и Towny.

Основные возможности

  • Настраиваемые карты для каждого мира
  • Прорисовка карт в режиме реального времени
  • Отображение лиц игроков на карте
  • В браузере можно чатиться с игроками
  • А их сообщения отображаются в облачках (а-ля комикс) или в обычном чате
  • На карте отображается текущее время Minecraft
  • На карте отображается текущая погода Minecraft
  • На карте могут отображаться регионы, созданные при помощи WorldGuard, Residence и Towny
  • Ну и конечно, всё это добро легко конфигурируется и настраивается

Установка

Распакуйте архив dynmap-*-bin.zip в папку «plugins».
Если вы обновляете плагин, то согласитесь перезаписать все файлы.

Если у вас запущен отдельный веб-сервер (например Apache), то скопируйте файлы из «plugins/dynmap/web/» в корень «http-root». При следующем обновлении плагина, не забудьте обновить только что скопированные файлы на веб-сервер.

Первый запуск

После запуска на сервере CraftBukkit, вы можете проверить работу плагина в браузере по адресу http://ipсервера:8123/. В случае если вы запустили CraftBukkit на своём компьютере, то он откроется и по адресу http://localhost:8123/. На загруженной странице вы должны увидеть игроков, разумеется только тех, которые находятся в игре. Обратите внимание что карты ещё нет, поэтому фон будет чёрным.

Если вы хотите карту с высокой детализацией, то сейчас самый удачный момент сделать это. Просто включите (раскомментируйте) опцию deftemplatesuffix: hires в одной из верхних строк файла configuration.txt. Более подробную информацию об опции deftemplatesuffix вы найдёте в разделе о настройках плагина.

Если вы просто хотите посмотреть как работает DynMap, то просто введите в игре команду: /dynmap fullrender. Ниже вы найдете более подробную информацию о командах и уровнях доступа, а пока у нас только первый запуск :). Тем временем карта будет постепенно проявляться в вашем браузере, не надо спешить, дайте ей время загрузиться. Сообщения в игре будут вас информировать о текущем состоянии работы плагина, с итоговой оценкой скорости рендеринга (прорисовки) карты.

Часто задаваемые вопросы

Вопрос: Почему чат отображает вместо русских символов кракозябры?
Ответ: Обновите версию плагина, в новых версиях кириллица отображается корректно.

Вопрос: Я только что изменил конфигурацию плагина, но никаких изменений на карте не вижу?
Ответ: Попробуйте перезапустить сервер или ввести команду /dynmap reload. Если это не поможет, то анализируйте логи сервера (server.log) на предмет ошибок.

Вопрос: Как я могу разместить DynMap на своем веб-сервере, если он находится на том же компьютере?
Ответ: Если ваш веб-сервер находится на том же компьютере что и CraftBukkit, то используйте руководство по настройке DynMap без встроенного веб-сервера(англ.)

Вопрос: Как мне обеспечить доступ к карте для всех, если у меня нет своего веб-сервера?
Ответ: Просто откройте TCP порт № 8123 со своего сервера CraftBukkit, это позволит всем желающим зайти на DynMap. Для более высокой безопасности, всё же лучше использовать веб-сервер (например Nginx или Apache), который займется проксированием трафика DynMap.

Вопрос: Как я могу разместить DynMap на веб-сервере, если он находится на другом компьютере?
Ответ: Проброс портов описанный выше всё ещё может помочь в вашей проблеме. Но если это в вашей реализации невозможно, или вы просто хотите разгрузить свой сервер, то решением может стать периодическая синхронизация данных plugin/dynmap/web между сервером CraftBukkit и внешним веб-сервером, использую RSync или FTP. Конечно потеряется вся прелесть онлайн обновлений: карт, игроков, чата и т. д.
Если сервера у вас на Linux[1], то можно настроить режим реального времени, используя sshfs или fuseftp, смонтировав удалённую директорию web/standalone вашего веб-сервера на ваш CraftBukkit сервер в plugins/dynmap/web/standalone

Вопрос: Как мне разместить DynMap на сайте?
Ответ: Для начала убедись что у всех открывается ссылка на DynMap. Если у вас настроен проброс портов, то ссылка должны быть типа http://внешнийIPадрес:8123. Если же DynMap размещён на веб-сервере, то адрес должен быть типа http://вашсайт/map/
Теперь, для размещения DynMap на вашем сайте можно воспользоваться тегом так жеiframe. Так же, для вёрстки вам понадобится знание HTML, но если у вас стоит CMS, то всё упрощается введением всего лишь одной строки:

<iframe src="http://вашадрес:8123/" width="800" height="600" />

Вопрос: Как переключить карту на высокую детализацию?
Ответ: Для этого вам нужно включить HD прорисовку. Делается это очень просто, откройте файл plugins/dynmap/configuration.txt, и раскомментируйте строку:

#deftemplatesuffix: hires

В итоге должно получиться так:

deftemplatesuffix: hires

Вопрос: Как мне изменить отображаемый порядок расположения миров в боковой панели?
Ответ: Откройте файл plugins/dynmap/worlds.txt, и в разделе описания миров, после строки worlds: запишите названия (который также открывает раздел описания мира) в любом порядке, этот порядок будет использоваться в боковой панели. Пример правильной конфигурации:

worlds:
  — name: world
  — name: world_nether
  — name: world_the_end

В этом примере используются имена миров «world», «world_nether» и «world_the_end».

Вопрос: Как изменить отображаемые названия миров?
Ответ: Откройте файл plugins/dynmap/worlds.txt и в разделе описания мира, в поле title: напишите желаемое название мира. Пример правильной конфигурации:

worlds:
  — name: world
    title: "Обычный мир"
  — name: world_nether
    title: "Нижний мир"
  — name: world_the_end
    title: "Край"

В этом примере используются имена миров «world», «world_nether» и «world_the_end». Так же, для того, что бы DynMap понимал русские символы, необходимо файл конфигурации редактировать в формате UTF-8. Сделать это можно, например при помощи текстового редактора Notepad++. По умолчанию, тот же Notepad++ сохраняет файлы в кодировке ANSI, поэтому, предварительно до редактирования файла, рекомендуется выбрать кодировку файла UTF-8 (Кодировки -> Кодировать в UTF-8).

Вопрос: Как скрыть мир из списка?
Ответ: Откройте файл plugins/dynmap/worlds.txt и в разделе описания мира который вы хотите скрыть, напишите enabled: false. Пример правильной конфигурации:

worlds:
  — name: world
    title: "Обычный мир"
  — name: world_nether
    title: "Нижний мир"
    enabled: false
  — name: world_the_end
    title: "Край"
    enabled: false

В этом примере оба мира «world_nether» и «world_the_end» будут скрыты, так как в их разделе описания мира имеется запись enabled: false.

Вопрос: Как удалить карту пещер (слой Cave) при отключенном режиме высокой детализации (#deftemplatesuffix: hires)?
Ответ: Сделайте копию файла plugins/dynmap/templates/normal.txt с именем custom-normal.txt. У вас должен появится файл plugins/dynmap/templates/custom-normal.txt, откройте его и удалите следующие строки:

          — class: org.dynmap.kzedmap.CaveTileRenderer
            name: cave
            title: "Cave"
            prefix: ct
            maximumheight: 127

Вопрос: Как удалить карту пещер (слой Cave) при включенном режиме высокой детализации (deftemplatesuffix: hires)?
Ответ: Сделайте копию файла plugins/dynmap/templates/normal-hires.txt с именем custom-normal-hires.txt. У вас должен появится файл plugins/dynmap/templates/custom-normal-hires.txt, откройте его и удалите следующие строки:

      — class: org.dynmap.hdmap.HDMap
        name: cave
        title: "Cave"
        prefix: ct
        perspective: iso_SE_60_lowres
        shader: cave
        lighting: default
        mapzoomin: 3

Вопрос: Как можно скрыть на карте определённых игроков?
Ответ: Вам поможет команда /dynmap hide ИмяИгрока, где «ИмяИгрока» — это имя игрока, которого вы хотите скрыть.

Вопрос: А как можно скрыть всех игроков, кроме определённых?
Ответ: Откройте файл plugins/dynmap/configuration.txt и установите параметр display-whitelist равным true. Пример правильной конфигурации:

# Treat hiddenplayers.txt as a whitelist for players to be shown on the map? (Default false)
display-whitelist: true

Теперь все игроки скрыты. Что бы отобразить определённого игрока достаточно ввести команду /dynmap show ИмяИгрока

Вопрос: Как отключить облачки чата?
Ответ: Откройте файл plugins/dynmap/configuration.txt установите знак комментария # в начале следующих строк:

  — class: org.dynmap.ClientComponent
    type: chatballoon
    focuschatballoons: false

После изменений должно получится так:

#  — class: org.dynmap.ClientComponent
#    type: chatballoon
#    focuschatballoons: false

Вопрос:В чате в место русских букв абракадабра(Как включить поддержку русского языка) ?
Ответ: Откройте файл plugins/dynmap/configuration.txt и в параметре cyrillic-support: false
заменить на true .

Настройки плагина

Идём в конфиг configuration.txt находящийся в /plugins/dynmap
Список некоторых параметров и их расшифровка:

renderinterval: используется для указания интервала обновления одного блока карты, который может быть изменён, например при воздействии на этот участок блока игроками. При задании слишком маленького значения, приведёт к чрезмерной нагрузке на сервер. По умолчанию, этот интервал равен 1-ой секунде. Большинство серверов могут работать с малыми значениями, вплоть до 0.2 секунд.

tiles-rendered-at-once: Сколько ядер юзать (по умолчанию 12 ядра)

hideores: true скрыть любые рудные блоки, вынуждая их отображаться как камень.

  •  — blockplaced: заставляет обновить тайлы, когда игрок размещает блок.
  •  — blockbreak: заставляет обновить тайлы, когда игрок разрушает блок.
  •  — blockburn: заставляет обновить тайлы, когда блок уничтожает огонь.
  •  — pistonmoved: этот триггер заставляет обновить тайлы, когда поршни двигают блоки.
  •  — explosion: заставляет обновить тайлы, когда блоки уничтожает взрыв (рекомендуется)

defaultzoom: настройка зума карты по умочанию

defaultworld: мир по умолчанию (по умолчанию world)

defaultmap: вид мира по умолчанию (по умолчанию flat)

sendhealth: отображать или нет здоровье игроков

hideifshadow: скрывать информацию об игроке, если значение уровня света установлена ниже 15 (0 = при полной темноте, 4 = под открытым ночным, 15 = при дневном свете)

Примечания

  1. Хотя пользователи Windows похоже тоже не обделены: существует аналогичный проект Dokan SSHFS

#1

lancelot981

    Новичок

  • Пользователь
  • Pip

  • 47 сообщений

Отправлено 27 Май 2012 — 16:25

Многим известен плагин dynmap. Для тех кто не знает что за плагин поясняю это динамическая карта сервера.
Возможно ли поставить на майарену? Нужен дополнительный порт… Есть возможность его купить?

  • Наверх


#2


splattered

Отправлено 28 Май 2012 — 6:53

возможно поставить! А зачем покупать порт о.О? он и так должен работать.

  • Наверх


#3


LinuxDale

LinuxDale

    Новичок

  • Пользователь
  • Pip

  • 9 сообщений

Отправлено 28 Май 2012 — 16:05

в конфиге дунмапа можно поменять порт, после этого карта начинает работать.

  • Наверх


#4


cbr600rka

Отправлено 30 Май 2012 — 16:50

Вбей в гугл:настройка dynmap,у меня по началу тоже не работало

  • Наверх


#5


VELVET

Отправлено 01 Июнь 2012 — 10:10

Нужен дополнительный порт… Есть возможность его купить?

Покупать его не нужно, если тебе не нужен стандартный порт динмапы.

1. Если тебе нужен стандартный порт (8123), тогда тебе нужно в панели управления своим аккаунтом на МайАрене подключить дополнительную услугу «Выделенный IP (стандартный порт». За 100 рублей в месяц ты получаешь отдельный адрес и забываешь про изменение портов в файлах настройки.

2. Если тебя устраивает любой порт, тогда тебе нужно зайти на свой сервер через FTP в директорию динмапы: /plugins/dynmap
И перезалить туда файлик «configuration.txt», предварительно изменив в нем порт со стандартного «8123» на любой свободный (49152–65535).

3. Где именно менять порт в файле настроек динмапы?

# The TCP-port the webserver will listen on.
webserver-port: 6847

Самый простой способ найти этот параметр в файле настроек — воспользоваться поиском по файлу.

Удачи!

  • Наверх


#6


sharks

sharks

    Новичок

  • Пользователь
  • Pip

  • 4 сообщений

Отправлено 02 Август 2012 — 8:58

Веб-файлов не совпадают с версии плагина: Все файлы должны быть той же версии (0.39-1163)
дайте ссылку на рабочий

  • Наверх


#7


Exclusive

Exclusive

    Новичок

  • Пользователь
  • Pip

  • 44 сообщений

Отправлено 04 Август 2012 — 8:12

Веб-файлов не совпадают с версии плагина: Все файлы должны быть той же версии (0.39-1163)
дайте ссылку на рабочий

Dynmap download
В конфиге замени стандартный порт на rcon порт своего сервера (На сколько я помню)

  • Наверх


Like this post? Please share to your friends:
  • Как изменить порт apache2
  • Как изменить порт apache windows
  • Как изменить порт 8291 winbox mikrotik
  • Как изменить порт 3389 на другой
  • Как изменить порог разряда батареи