Acre Funkfrequenzen herausfinden

  • Sonstiges

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Hilf mit, die Ausbreitung des Coronavirus einzudämmen.

Zum Bundesministerium für Gesundheit

  • Acre Funkfrequenzen herausfinden

    Wie kriege ich die Funkfrequenz des Senders raus, wenn ich die acre_api_customsignal_fnc benutze? Das Problem ist, dass ich als Parameter "_f" immer den Wert [] erhalte, was für mich keinen Sinn ergibt.
    Ich stosse bei meiner Suche nur auf folgende Hinweise in einer Funktion zum Festlegen des Kanals des SEM 52SL beispielsweise:

    GVAR(newFrequency)
    private _freq = HASH_GET(_channel,"frequencyRX");

    Ist das der Weg, um die Frequenz zu finden? Und ist HASH_GET ein cba_macro oder ein Acre macro weiss das wer auf die Schnelle?
    Edit: Hab HASH_Get gefunden: #define HASH_GET(hash, key) (hash getVariable key)
    Also ist es (_channel getvariable "frequencyRX"), sprich ich muss den Kanal des Spielers wohl rausfinden und die Variable abfragen?

    Wäre es dann
    GVAR(selectedChannel) getvariable "frequencyRX")
    ?

    Und müsste ich dann ebenfalls immer abfragen, welches Funkgerät der Spieler gerade verwendet, weil die GVAR ja nach System (SEM 52, AN/PRC 152 usw.) unterschieden wird? Das ergäbe dann ACRE_ACTIVE_RADIO und das ist das item plus ne unique ID, z. Bsp "ACRE_PRC343_ID_1"... Womit ich noch nicht viel anfangen kann.
    Edit: Gefunden im Ordner API:
    _currentChannel = ["ACRE_PRC343_ID_1"] call acre_api_fnc_getRadioChannel;

    Ich probiers mal aus und melde mich dann...

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Zumi ()

  • Ok ein neues Problem ist aufgetaucht:

    ACRE spuckt im Log den Fehler aus:

    Quellcode

    1. 15:35:50 [ACRE] (api) ERROR: acre_api_fnc_setCustomSignalFunc called with invalid argument.



    Zuvor wird von mir

    Quellcode

    1. [{}] call acre_api_fnc_setCustomSignalFunc;
    ausgeführt.


    Die Funktion selber von ACRE sieht so aus:

    Quellcode

    1. if !(_this params [["_code",{},[{}]]]) exitWith {
    2. ERROR("acre_api_fnc_setCustomSignalFunc called with invalid argument.");
    3. };
    4. if (_code isEqualTo {}) then {
    5. EGVAR(sys_signal,customSignalFunc) = nil;
    6. } else {
    7. EGVAR(sys_signal,customSignalFunc) = _code;
    8. };
    Jemand eine Idee? Soll ich einfach das hier tun?

    Quellcode

    1. acre_sys_signal_customSignalFunc = nil;
  • Der Framehandler, an dem es liegt:

    Alte Variante:

    Quellcode

    1. [
    2. {
    3. zumi_jammers = zumi_jammers select {(_x getvariable ["jamming", false])};
    4. if ((count zumi_jammers) < 1) exitWith {
    5. if !(isNull (player getVariable ["currentJammer", objNull])) then {
    6. player setVariable ["currentJammer", objNull];
    7. };
    8. if !(isNil "acre_sys_signal_customSignalFunc") then {
    9. [{}] call acre_api_fnc_setCustomSignalFunc;
    10. };
    11. };
    12. private _closestJammer = [zumi_jammers, {-(player distance2d _x)}, objNull] call CBA_fnc_selectBest;
    13. private _currentJammer = player getVariable ["currentJammer", objNull];
    14. if (_currentJammer != _closestJammer) then {
    15. player setVariable ["currentJammer", _closestJammer];
    16. };
    17. if (isNil "acre_sys_signal_customSignalFunc") then {
    18. [zumi_fnc_signal_fnc] call acre_api_fnc_setCustomSignalFunc;
    19. };
    20. }, 1, []
    21. ] call CBA_fnc_addPerFrameHandler;
    Alles anzeigen

    Neue Variante:

    Quellcode

    1. [
    2. {
    3. zumi_jammers = zumi_jammers select {(_x getvariable ["jamming", false])};
    4. if ((count zumi_jammers) < 1) exitWith {
    5. if !(isNull (player getVariable ["currentJammer", objNull])) then {
    6. player setVariable ["currentJammer", objNull];
    7. };
    8. if !(isNil "acre_sys_signal_customSignalFunc") then {
    9. acre_sys_signal_customSignalFunc = nil;
    10. };
    11. };
    12. private _closestJammer = [zumi_jammers, {-(player distance2d _x)}, objNull] call CBA_fnc_selectBest;
    13. private _currentJammer = player getVariable ["currentJammer", objNull];
    14. if (_currentJammer != _closestJammer) then {
    15. player setVariable ["currentJammer", _closestJammer];
    16. };
    17. if (isNil "acre_sys_signal_customSignalFunc") then {
    18. [zumi_fnc_signal_fnc] call acre_api_fnc_setCustomSignalFunc;
    19. };
    20. }, 1, []
    21. ] call CBA_fnc_addPerFrameHandler;
    Alles anzeigen
  • Warum wird die Funktion überhaupt jede Sekunde geändert? Es wäre doch viel einfacher den Zustand innerhalb der Funktion abzufragen.
    Verschwindet der Fehler mit der Änderung überhaupt?
    [{}] call {_this params [["_a",{},[{}]]]} gibt bei mir true zurück. Ich glaube, du täuscht dich hier irgendwo.
    currentJammer ist eine globale Variable und braucht einen Tag.
  • Quellcode

    1. zumi_jammers = zumi_jammers select {(_x getvariable ["zumi_jamming", false])};
    2. if ((count zumi_jammers) < 1) then {
    3. if !(isNull (acre_player getVariable ["zumi_currentJammer", objNull])) then {
    4. acre_player setVariable ["zumi_currentJammer", objNull];
    5. };
    6. } else {
    7. private _closestJammer = [zumi_jammers, {-(acre_player distance2d _x)}, objNull] call CBA_fnc_selectBest;
    8. private _currentJammer = acre_player getVariable ["zumi_currentJammer", objNull];
    9. if (_currentJammer != _closestJammer) then {
    10. acre_player setVariable ["zumi_currentJammer", _closestJammer];
    11. };
    12. };
    Alles anzeigen
  • Du machst das schon richtig, aber currentJammer hatte nun mal zuvor keinen Tag. Ob du nun Global Assignment benutzt oder setVariable ist egal.
    Die schreiben beide in globale Namespaces. Du scheinst Local/Global/Public Variables mit Local/Global Effects zu verwechseln.

    Quellcode

    1. // Lokales Assignment einer lokalen Variable = local Variable
    2. _var = 1;
    3. // Lokales Assignment einer globalen Variable = global Variable
    4. var = 1;
    5. // Lokales Assignment einer globalen Variable = global Variable
    6. missionNamespace setVariable ["var", 1];
    7. // Globales Assignment einer globalen Variable = public global Variable
    8. missionNamespace setVariable ["var", 1, true];
    9. // Globales Assignment einer globalen Variable = public global Variable
    10. var = 1;
    11. publicVariable "var";
    Alles anzeigen
    Es ist dabei egal ob es sich um das missionNamespace oder ein Object Namespace handelt. Das Namespace spielt keine Rolle.
  • Neu

    Update

    Diese Funktion prüft, ob eine customSignalFuncdefiniert ist.
    Dies ist die customSignalFunc.

    --> Die Funktion müsste, wenn local gecalled, ja folgendes tun:

    Quellcode

    1. acre_sys_signal_customSignalFunc = nil;
    Sie tut es aber irgendwie nicht... Die Abfrage

    Quellcode

    1. (isNil "acre_sys_signal_customSignalFunc")
    retourniert false


    Das ist ärgerlich

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Zumi ()