ACE 3 im Unconscious mode Dialog erstellen.

  • Hi Leute ich bin gerade dabei ein Dialog zu erstellen der ausgeführt wird sobald ein Spieler durch ace, Unconscious wird.


    das ganze wird auch aufgerufen und ich sehe den Dialog auch, aber leider funktionieren die Buttons nicht.


    Hier mal mein Skript.
    kann mir bitte jemand sagen wie ich auf den Unconscious Display ein Controldialog einfügen kann ? ich finde da einfach nichts im Internet...



    freue mich über Hilfe, ich weiß ja das es hier experten gibt ^^


    Liebe Grüße
    Pasi

  • JavaScript
    1. waitUntil {_unit getVariable "ACE_isUnconscious"};

    Bitte nicht. Für genau so etwas gibt es Events:

    JavaScript
    1. ["ace_unconscious", {
    2. // hier Dialog erstellen etc
    3. }] call CBA_fnc_addEventHandler;


    buttonSetAction ist ebenfalls nicht so toll. Stattdessen solltest du ctrlAddEventHandler verwenden: https://community.bistudio.com…_Interface_Event_Handlers
    Wenn man in ACE ohnmächtig ist wird ein Dialog geöffnet, der die Maus blockiert. Es kann sein dass der über deinen Buttons liegt und sie deswegen nicht funktionieren. Du könntest versuchen die Buttons zu dem Dialog hinzuzufügen, statt zum Hauptdisplay. An den Dialog kommst du mit:


    Code
    1. uiNamespace getVariable ["ace_common_dlgDisableMouse", displayNull];
  • Hi @BlauBaer


    sry ich hätte noch rein schreiben sollen das das ganze durch einen eventhandler ausgelöst wird :)

    Code
    1. ["ace_unconscious", life_fnc_onPlayerUnconscious] call CBA_fnc_addEventHandler;


    Leider funktioniert das ganze so nicht... die Buttons werden angezeigt aber ich kann sie nicht anwählen oder klicken.
    es scheint so als ob sie nicht im Vordergrund stehen...


    ich habe hier mal ein Screenshot und mein aktuelles Script :)




    hier der Screenshot:

  • Statt dem RscDisplayMain (findDisplay 46 im Code) müsste man die Controls dem "Bewusstlosigkeitsdialog" (uiNamespace getVariable ["ace_common_dlgDisableMouse", displayNull]) hinzufügen.


    Das with uiNamespace do {}; ist bei dir sinnlos.


    Und der ctrlDelete else-block ist auch sinnlos. Wenn der Dialog geschlossen wird, dann sind auch alle Controls weg.


    Ach und disableSerialization; ist auch überflüssig. Der Eventhandler wird in der unscheduled Environment aufgerufen. Da gibt es gar keine Serialization.


    Wenn du ctrlAddEventHandler benützt, dann musst du das "on" in "onButtonClick" streichen. Steht auch so im Wiki.


    Ansonsten sehe ich da nix weiter. Die Einrückung ist irgendwie kaputt.

    Einmal editiert, zuletzt von NetFusion () aus folgendem Grund: Mehrfach-Posts zusammengefasst

  • Hi @commy2


    danke für die Hilfe nur leider wird nun gar kein Dialog mehr angezeigt :/
    hier nochmal mein aktueller Code habe alles so umgesetzt wie du es gesagt hast...


    Aufgerufen wird es immer noch über den EH:


    Code
    1. ["ace_unconscious", life_fnc_onPlayerUnconscious] call CBA_fnc_addEventHandler;

    Leider rückt das Forum den Code so komisch ein.

  • Wahrscheinlich existiert der "Bewusstlosigkeitsdialog" noch nicht, wenn man Bewusstlos wird.




    Code
    1. ["ace_unconscious", {
    2. [life_fnc_onPlayerUnconscious, _this] call CBA_fnc_execNextFrame;
    3. }] call CBA_fnc_addEventHandler;

    Damit kann man das Skript um einen Frame verzögern.

  • Das funktioniert leider nicht :/


    beim testen bekomme ich mit diesem Code:


    EH ist der hier:


    Code
    1. ["ace_unconscious", {
    2. [life_fnc_onPlayerUnconscious, _this] call CBA_fnc_execNextFrame;
    3. }] call CBA_fnc_addEventHandler;


    diese Meldung:


    Mache ich nun die Debug konsole auf und führe das ganze da mal aus, ist der Display da :/ also muss ich das Script noch anders warten lassen oder ?


  • Probier mal damit. Verzögert 1 Sekunde statt einen Frame. Der Dialog wird über eine 2 Hertz Schleife aufgerufen.

    Code
    1. ["ace_unconscious", {
    2. [life_fnc_onPlayerUnconscious, _this, 1] call CBA_fnc_waitAndExecute;
    3. }] call CBA_fnc_addEventHandler;
  • Habe ich doch dran gehängt

    Oh sorry... Das hats bei mir iwie nicht geladen/angezeigt xD


    Joko hat die eigentliche Frage ja schion beantwortet... Die Lösung dazu müsste dann so aussehen:

    Code
    1. [{
    2. [life_fnc_onPlayerUnconscious, _this] call CBA_fnc_execNextFrame;
    3. },[], 1] call CBA_fnc_waitAndExecute;

    Das "ace_unconcious" hatte da nix mehr verloren... Außerdem musst du noch Argumente angeben, bevor du den delay spezifizieren kannst. (Siehe hier) ;)

  • Ja aber wenn das ace_unconcious nicht mehr gebraucht wird woher bekommt er dann die ? Info das jemand in Ace Unconcious geworden ist ? :D und welche Argumente brauch ich den ? weil es gibt ja eigentlich keine außer die vom ace_unconcious ???? :D

  • Dat Dingen war nur zum Hinzufügen von dem EH da... Das musst du natürlich immernoch machen und da rein packst du dann den von mir geposteten Code ;)



    und welche Argumente brauch ich den ?

    Dafür bei dem Link nachschauen den ich dir oben mit gegeben hab... Das ist der Quellcode der Funktion und da steht im header ganz genau was für Parameter erwartet werden...

  • ESSS FUNKTIONIERT ^^


    ich stand eben etwas auf dem schlauch :D habs aber dann gerafft xD


    hier mal der richtige EH:

    Code
    1. ["ace_unconscious", {
    2. params ["_unit", "_state"];
    3. [{
    4. [life_fnc_onPlayerUnconscious, _this] call CBA_fnc_execNextFrame;
    5. },[_unit,_state], 1] call CBA_fnc_waitAndExecute;
    6. }] call CBA_fnc_addEventHandler;

    DANKE DANKE DANKE DANKE ^^
    an alle


    Liebe Grüße
    Pasi

  • Das Thread ist zwar schon älter aber ich habe vor, ebenfalls sowas in der Art zu machen. Ich weiß aber erstens nicht, wo ich mit dem EH hin muss und zweitens weiß ich nicht, ob ich jetzt einen Dialog erstellen soll oder eine .sqf Datei.
    Ich bin ein kompletter Noob ^^


    //Edit: Hat sich geklärt ^^

  • Ich knüpf hier mal an.
    Zu ArmA II Zeiten wurde unter ACE noch die Revive- Time angezeigt. Ist derartiges irgendwie einstellbar oder machbar?