скрипт Mapmarkers в DayZ

Тема в разделе "Скрипты для DayZ", создана пользователем ч1тер, 29 окт 2012.

Статус темы:
Закрыта.
  1. Оффлайн

    ч1тер Лейтенант

    На форуме с:
    6 мар 2012
    Сообщения:
    1.551
    Симпатии:
    2.094
    Баллы:
    197
    Пол:
    Мужской
    скрипт Mapmarkers в DayZ
    [​IMG]


    [​IMG]

    [​IMG]

    PHP:
    // Map markers by e - v1.2
     
    disableSerialization;
     
     
    _minimap_disp = (uinamespace getvariable "BIS_RscMiniMap");
    _minimap _minimap_disp displayCtrl 101;
    _minimap_frame _minimap_disp displayCtrl 101000;
    _mm_w 0.35;
    _mm_h 0.301;
     
     
    if (
    isnil "mapmarkers"then {
        
    mapmarkers true;
        
    classes = ["UH1Wreck_DZ""TentStorage"];
        
    markme = [];
        
    extraobjects = [];
        
    _map = (findDisplay 12displayCtrl 51;
        
    // May as well disable the huge GPS frame
        
    _minimap_frame ctrlShow false;
        
    // And move GPS
        // To increase gps size, we would need to increase _mm_w, _mm_h, and re-center with ctrlMapAnimCommit every draw?
        //_mm_x = (SafeZoneW + SafeZoneX) - (_mm_w + 0.005); // Bottom right corner
        //_mm_y = (SafeZoneH + SafeZoneY) - (_mm_h + 0.005); // Bottom right corner
        
    _mm_x SafeZoneX 0.005// Top left corner
        
    _mm_y SafeZoney 0.005// Top left corner
        
    _minimap ctrlsetposition [_mm_x_mm_y_mm_w_mm_h];
        
    _minimap ctrlcommit 0.01;
        
    _mapdraw _map ctrlSetEventHandler ["Draw""_this call draw;"];
        
    _minimapdraw _minimap ctrlSetEventHandler ["Draw""_this call draw;"];
        
    gps_zoom_keyEH = (findDisplay 46displayAddEventHandler ["KeyDown","_this call gps_zoom_lvl;"];
        if (
    isnil "gps_zoom"then {
            
    gps_zoom 0.05;
        };   
        
    sleep 0.1;
        
    Hint "Map markers on";   
    } else {
        
    mapmarkers nil;
        
    _map ctrlremoveeventhandler ["Draw"_mapdraw];
        (
    findDisplay 46displayRemoveEventHandler ["KeyDown"gps_zoom_keyEH];
        
    _mm_x = (SafeZoneW SafeZoneX) - (0.625);
        
    _mm_y = (SafeZoneH SafeZoneY) - (0.480);
        
    _minimap_frame ctrlShow true;
        
    _minimap ctrlsetposition [_mm_x_mm_y_mm_w_mm_h];
        
    _minimap ctrlcommit 0.01;   
        
    sleep 0.1;
        
    Hint "Map markers off";
    };
     
     
     
     
    gps_zoom_lvl = {
        if (
    typeName _this == "ARRAY"then {
            private[
    "_dikCode""_shift""_ctrlKey""_alt"];       
            
    //_ctrl = _this select 0;
            
    _dikCode _this select 1;
            
    _shift _this select 2;
            
    _ctrlKey _this select 3;
            
    _alt _this select 4;
     
     
            if (!
    _shift && !_ctrlKey && _altthen {       
                if (
    _dikCode in (actionKeys "ZoomIn")) then {           
                    
    gps_zoom gps_zoom 0.001;
                    if (
    gps_zoom 1then {
                        
    gps_zoom 1.0;
                    };
                    if (
    gps_zoom 0then {
                        
    gps_zoom 0.0;
                    };
                };
                if (
    _dikCode in (actionKeys "ZoomOut")) then {
                    
    gps_zoom gps_zoom 0.001;
                    if (
    gps_zoom 1then {
                        
    gps_zoom 1.0;
                    };
                    if (
    gps_zoom 0then {
                        
    gps_zoom 0.0;
                    };
                };
            };
        };
    };
     
     
     
     
    draw = {
        if (!
    isnil "mapmarkers"then {
            private[
    "_ctrl""_unit""_pos""_dir""_icon""_w""_h""_colour"];
            
    _ctrl =  _this select 0;
            
    // GPS zooming
            
    if (str _ctrl == "Control #101"then {
                
    _ctrl ctrlMapAnimAdd[0gps_zoomgetpos player];
                
    ctrlMapAnimCommit _ctrl;
            };
     
            {
                
    _unit _x select 0;
                if (!
    isnull _unitthen {
                    
    _pos _x select 1;
                    
    _dir _x select 2;
                    
    _icon _x select 3;
                    
    _w _x select 4;
                    
    _h _x select 5;
                    
    //_text = _x select 6;
                    
    _colour _x select 7;
                    
    // map drawIcon [texture, color, position, width, height, angle, text, shadow]
                    // It seems text doesn't work, or at least it doesn't add text like a marker..
                    
    _ctrl drawIcon [_icon_colour_pos_w_h_dir"textnowork"true];
                };
            } foreach 
    markme;
        };
    };
     
     
     
     
    addmarker = {
        
    _ctr2 _this select 0;
        
    _marker_name _this select 1;
        
    _pos_x _this select 2;
        
    _pos_y _this select 3;
        
    _marker_type _this select 4;
        
    _text _this select 5;
        
    _marker_colour _this select 6;   
     
        
    marker_names set [_ctr2_marker_name];
        
    _marker_name createMarkerLocal [_marker_name, [_pos_x_pos_y0]];
        
    _marker_name setMarkerTypeLocal _marker_type;
        
    _marker_name setMarkerTextLocal _text;
        
    _marker_name setMarkerSizeLocal [0.10.1];
        
    _marker_name setMarkerColorLocal _marker_colour;
    };
     
     
     
     
    // Weeks ago I tried MANY (clever) ways to avoid this. This seems the best solution =/
    deletemarkers = {
        {
            
    deleteMarkerLocal _x;
        } foreach 
    marker_names;
        
    marker_names = [];
    };
     
     
     
     
    waituntil {
        
    // TODO check for visiblemap or gps is active before continuing
        // (OR call/spawn update from draw?)
        
    if (!isnil "mapmarkers"then {
            
    call deletemarkers;
            
    _ctr 0;
            
    _ctr2 0;
     
            
    // Check for tents and heli crash sites, but not at all frequently
            
    [] spawn {
                if (
    isnil "objectchk_time"then {
                    
    objectchk_time diag_tickTime;
                };
     
                if ((
    diag_tickTime objectchk_time) > 120then {
                    
    objectchk_time diag_tickTime;
                    
    extraobjects nearestobjects[playerclasses20000];
                };
            };
     
            {
                
    _unit _x;
                
    _pos getposASL _unit;
                
    _dir getdir _unit;
     
                
    _icon "\ca\ui\data\markers\gr_marker_triangle_ca.paa";
                
    _w 15;
                
    _h 20;
                
    _text format["%1"typeOf _unit];
                
    _colour = [0011]; // Blue
     
                
    _marker_name format["%1-%2"_ctr2typeOf _unit];
                
    _marker_type "vehicle";
                
    _marker_colour "ColorBlue";
     
                if (
    _unit iskindof "man"then {
                    if (
    isplayer _unitthen {
                        
    _marker_name format["%1-%2"_ctr2name _unit];
                        if (
    _unit == playerthen {
                            
    _colour = [0001]; // Black
                            
    _marker_colour "ColorBlack";
                            
    _text "You";
                        } else {
                            
    _colour = [1001]; // Red
                            
    _marker_colour "ColorRed";
                            
    _text format ["%1"name _unit];
                        };
                    };
                    
    // Unit is in vehicle, don't want to see their arrow marker (clutter) or name (we show it elsewhere)
                    
    if (vehicle _unit != _unitthen {
                        
    _colour = [0,0,0,0];
                        
    _marker_type "empty";
                    };
                };
     
                if ((
    _unit iskindof "air") or (_unit iskindof "helicopter") or (_unit iskindof "plane") or (_unit iskindof "car") or (_unit iskindof "landvehicle")) then {
                    
    _vehcrew crew _unit;
                    
    // Vehicle is occupado
                    
    if (count _vehcrew 0then {
                        
    _colour = [1001]; // Red
                        
    _marker_colour "ColorRed";
                        
    _vertspace2 20;
                        
    _vertspace _vertspace2;
                        {
                            private [
    "_marker_name""_pos""_marker_type""_text"];
                            
    _marker_name format["%1-%2"_ctr2name _x];
                            
    _pos getposASL _x;
                            
    _marker_type "waypoint";
                            
    _text format ["%1"name _x];
     
                            [
    _ctr2_marker_name, (_pos select 0), (_pos select 1) - _vertspace_marker_type_text_marker_colourcall addmarker;
                            
    _vertspace _vertspace _vertspace2;
                            
    _ctr2 _ctr2 1;
                        } foreach 
    _vehcrew;
                    };
                };
     
                
    // My current solution for adding text/names to the 'markers' is to have a real marker at the same location. It will show behind drawicon. I hope this is temporary.       
                
    [_ctr2_marker_name, (_pos select 0) + 5_pos select 1_marker_type_text_marker_colourcall addmarker;
                
    _ctr2 _ctr2 1;
     
                
    markme set [_ctr, [_unit_pos_dir_icon_w_h_text_colour]];
                
    _ctr _ctr 1;
            } foreach (
    allUnits vehicles extraobjects);
            
    sleep 0.25;
        };
        (
    isnil "mapmarkers")
    };
    // waituntil is over; mapmarkers is no longer true; script disabled
    call deletemarkers;
     
     
    // TODO Clean up. Get rid of unnecessary variables, remove arbitrary constants and think about efficiency.
     
     
    // TODO Re-think names. Maybe dynamictext? .. drawline?? Drawline would be pretty hardcore.
     
     
    // TODO Make vertspacing scale with zoom level
     
     
    // TODO I hate that you need gps open when running the script for gps changes to take effect
     
     
    // Can I do anything about all the global vars? I think most are required.
     
    AntiRuslan1 и dmaggagaga нравится это.
  2.  
  3. Оффлайн

    dretgo рядовой

    На форуме с:
    30 окт 2012
    Сообщения:
    1
    Симпатии:
    1
    Баллы:
    1
    Пол:
    Мужской
    инструкцию напиши пожалуйста. не все же с прямыми руками как вы многоуважаемый ))
     
    Darknots99 нравится это.
  4. Оффлайн

    karbon2010 Оборотень

    На форуме с:
    24 окт 2012
    Сообщения:
    28
    Симпатии:
    12
    Баллы:
    6
    Пол:
    Мужской
    сделай просто из него скрипт формата cqf или dll,в зависимости от того через что ты будешь его использовать
     
Статус темы:
Закрыта.

Поделиться этой страницей

Уважаемый пользователь!

Мы обнаружили, что вы блокируете показ рекламы на нашем сайте.

Просим внести его в список исключения или отключить AdBlock.

Наши материалы предоставляются БЕСПЛАТНО и единственным доходом является реклама.

Спасибо за понимание!