Karte von Altis mit markierten Geldautomaten

Heute gibt es einmal einen kleinen Tipp von mir. Sicher hat sich der ein oder andere schon einmal gefragt wie man alle schon standardmäßig vorhandene Geldautomaten auf der Map automatisch mit einem Marker auf der Map markiert. Hier ist die Lösung als Codeschnipsel:

/*
    File: fn_atmMarkers.sqf
    Author: B4v4r!4n_Str!k3r ([email protected])
    Licence: THIS FILE AND EXTRACTS OF IT IS THE MINDSET OF CATIONSTUDIO
             AND ONLY AUTHORIZED PEOPLE/SERVERS ARE ALLOWED TO USE IT.
    Description:
    Marks all ATMs on the Map
*/

if (!isServer) exitWith {};

// atms from mission
if ((getNumber(missionConfigFile >> "Cation_Atm" >> "onlyDefault")) isEqualTo 0) then {
    _atms = [];
    {
        if(["atm_",str(_x)] call BIS_fnc_inString) then {
        _atms pushBack _x;
        };
    } forEach allMissionObjects "";
    {
        if (typeof _x in ["Land_Atm_01_F","Land_Atm_02_F"]) then {
            _marker = createMarker [format["%1_marker",_x],visiblePosition _x];
            _marker setMarkerColor "ColorGreen";
            _marker setMarkerType "loc_Tourism";
        };
    } foreach _atms;
};

// default atms on map
_atms = [];
{
    if(["atm_",str(_x)] call BIS_fnc_inString) then {
        _atms pushBack _x;
    };
} foreach nearestTerrainObjects [[0,0,0],["HIDE"],30000];
{
    _marker = createMarker [format["%1_marker",_x],visiblePosition _x];
    _marker setMarkerColor "ColorGreen";
    _marker setMarkerType "loc_Tourism";
} foreach _atms;

Es ist sicher nicht die performancefreundlichste Funktion, aber ein besseres Mittel habe ich nicht gefunden. Und wenn man die Funktion nur einmal bei Serverstart nur auf dem Server ausführt, sollte das auch kein Problem darstellen.

Wie ausführen? Entweder packt man diese Funktion in den Server und lässt sie via execVM in der init.sqf aufrufen, oder man installiert, falls noch nicht vorhanden, das Cationstudio Grundsystem und downloaded folgenden Ordner atmmarkers, kopiert dann den Ordner atm in <mission>/cation/ und fügt

in die <mission>/cation/cation_functions.cpp

#include "atm\functions.cpp"

in die <mission>/cation/cation_master.cpp

#include "atm\config.cpp"

und in die <mission>/cation/cation_remoteExec.cpp

#include "atm\remoteExec.cpp"

Auf Wunsch kann in der <mission>/cation/atm/config.cpp noch eingestellt werden, ob auch selbst gesetzte Geldautomaten markiert werden sollen.


0 Kommentare

Schreibe einen Kommentar