ACE 3 im Unconscious mode Dialog erstellen.

  • Sonstiges

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

  • 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...

    Quellcode

    1. disableSerialization;
    2. params ["_unit", "_state"];
    3. if _state then {
    4. _Wasted = (findDisplay 46) ctrlCreate ["RscStructuredText",1930];
    5. _Wasted ctrlSetPosition [-0.000156274 * safezoneW + safezoneX,0.423 * safezoneH + safezoneY,1.02094 * safezoneW,0.099 * safezoneH];
    6. _Wasted ctrlCommit 0;
    7. _Wasted ctrlSetBackgroundColor [0, 0, 0, 0.9];
    8. _Wasted ctrlSetStructuredText parseText format["<t size='4' color='#FF0000' align = 'center'>Du bist ohnmächtig!</t>"];
    9. waitUntil {_unit getVariable "ACE_isUnconscious"};
    10. _rspbutton = (findDisplay 46) ctrlCreate ["RscButton",1931];
    11. _rspbutton ctrlSetPosition [0.5 * safezoneW + safezoneX,0.533 * safezoneH + safezoneY,0.195937 * safezoneW,0.077 * safezoneH];
    12. _rspbutton ctrlCommit 0;
    13. _rspbutton ctrlSetBackgroundColor [0, 0, 0, 0.7];
    14. _rspbutton ctrlSetText "Aufgeben";
    15. _rspbutton buttonSetAction "closeDialog 0; player setDamage 1;";
    16. _reqMedic = (findDisplay 46) ctrlCreate ["RscButton",1932];
    17. _reqMedic ctrlSetPosition [0.304062 * safezoneW + safezoneX,0.533 * safezoneH + safezoneY,0.190781 * safezoneW,0.077 * safezoneH];
    18. _reqMedic ctrlCommit 0;
    19. _reqMedic ctrlSetBackgroundColor [0, 0, 0, 0.7];
    20. _reqMedic ctrlSetText "Medic Rufen";
    21. _reqMedic buttonSetAction "[]spawn life_fnc_requestMedic;";
    22. } else {
    23. ctrlDelete ((findDisplay 46) displayCtrl 1930);
    24. ctrlDelete ((findDisplay 46) displayCtrl 1931);
    25. ctrlDelete ((findDisplay 46) displayCtrl 1932);
    26. };
    Alles anzeigen

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

    Liebe Grüße
    Pasi
  • JavaScript-Quellcode

    1. waitUntil {_unit getVariable "ACE_isUnconscious"};
    Bitte nicht. Für genau so etwas gibt es Events:

    JavaScript-Quellcode

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


    buttonSetAction ist ebenfalls nicht so toll. Stattdessen solltest du ctrlAddEventHandler verwenden: community.bistudio.com/wiki/User_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:

    Quellcode

    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 :)

    Quellcode

    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 :)


    Quellcode

    1. disableSerialization;
    2. params ["_unit", "_state"];
    3. if _state then {
    4. _Wasted = (findDisplay 46) ctrlCreate ["RscStructuredText",1930];
    5. _Wasted ctrlSetPosition [-0.000156274 * safezoneW + safezoneX,0.423 * safezoneH + safezoneY,1.02094 * safezoneW,0.099 * safezoneH];
    6. _Wasted ctrlCommit 0;
    7. _Wasted ctrlSetBackgroundColor [0, 0, 0, 0.9];
    8. _Wasted ctrlSetStructuredText parseText format["<t size='4' color='#FF0000' align = 'center'>Du bist ohnmächtig!</t>"];
    9. uiNamespace getVariable ["ace_common_dlgDisableMouse", displayNull];
    10. with uiNamespace do {
    11. _rspbutton = (findDisplay 46) ctrlCreate ["RscButton",1931];
    12. _rspbutton ctrlSetPosition [0.5 * safezoneW + safezoneX,0.533 * safezoneH + safezoneY,0.195937 * safezoneW,0.077 * safezoneH];
    13. _rspbutton ctrlCommit 0;
    14. _rspbutton ctrlSetBackgroundColor [0, 0, 0, 0.7];
    15. _rspbutton ctrlSetText "Aufgeben";
    16. _rspbutton ctrlAddEventHandler ["onButtonClick", "closeDialog 0; player setDamage 1;"];
    17. _reqMedic = (findDisplay 46) ctrlCreate ["RscButton",1932];
    18. _reqMedic ctrlSetPosition [0.304062 * safezoneW + safezoneX,0.533 * safezoneH + safezoneY,0.190781 * safezoneW,0.077 * safezoneH];
    19. _reqMedic ctrlCommit 0;
    20. _reqMedic ctrlSetBackgroundColor [0, 0, 0, 0.7];
    21. _reqMedic ctrlSetText "Medic Rufen";
    22. _reqMedic ctrlAddEventHandler ["onButtonClick", "[]spawn life_fnc_requestMedic;"];
    23. };
    24. } else {
    25. ctrlDelete ((findDisplay 46) displayCtrl 1930);
    26. ctrlDelete ((findDisplay 46) displayCtrl 1931);
    27. ctrlDelete ((findDisplay 46) displayCtrl 1932);
    28. };
    Alles anzeigen

    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.

    Dieser Beitrag wurde bereits 1 mal 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:

    Quellcode

    1. ["ace_unconscious", life_fnc_onPlayerUnconscious] call CBA_fnc_addEventHandler;
    Leider rückt das Forum den Code so komisch ein.

    Quellcode

    1. params ["_unit", "_state"];
    2. hint "TRUE"; // Skript wird ausgeführt !
    3. if _state then {
    4. _Wasted = (uiNamespace getVariable ["ace_common_dlgDisableMouse", displayNull]) ctrlCreate ["RscStructuredText",1930];
    5. _Wasted ctrlSetPosition [-0.000156274 * safezoneW + safezoneX,0.423 * safezoneH + safezoneY,1.02094 * safezoneW,0.099 * safezoneH];
    6. _Wasted ctrlCommit 0;
    7. _Wasted ctrlSetBackgroundColor [0, 0, 0, 0.9];
    8. _Wasted ctrlSetStructuredText parseText format["<t size='4' color='#FF0000' align = 'center'>Du bist ohnmächtig!</t>"];
    9. _rspbutton = (uiNamespace getVariable ["ace_common_dlgDisableMouse", displayNull]) ctrlCreate ["RscButton",1931];
    10. _rspbutton ctrlSetPosition [0.5 * safezoneW + safezoneX,0.533 * safezoneH + safezoneY,0.195937 * safezoneW,0.077 * safezoneH];
    11. _rspbutton ctrlCommit 0;
    12. _rspbutton ctrlSetBackgroundColor [0, 0, 0, 0.7];
    13. _rspbutton ctrlSetText "Aufgeben";
    14. _rspbutton ctrlAddEventHandler ["ButtonClick", "closeDialog 0; player setDamage 1;"];
    15. _reqMedic = (uiNamespace getVariable ["ace_common_dlgDisableMouse", displayNull]) ctrlCreate ["RscButton",1932];
    16. _reqMedic ctrlSetPosition [0.304062 * safezoneW + safezoneX,0.533 * safezoneH + safezoneY,0.190781 * safezoneW,0.077 * safezoneH];
    17. _reqMedic ctrlCommit 0;
    18. _reqMedic ctrlSetBackgroundColor [0, 0, 0, 0.7];
    19. _reqMedic ctrlSetText "Medic Rufen";
    20. _reqMedic ctrlAddEventHandler ["ButtonClick", "[]spawn life_fnc_requestMedic;"];
    21. } else {
    22. hint "state false";
    23. };
    Alles anzeigen
  • Das funktioniert leider nicht :/

    beim testen bekomme ich mit diesem Code:

    Quellcode

    1. params ["_unit", "_state"];
    2. hint "TRUE"; // Skript wird ausgeführt !
    3. if _state then {
    4. hint str (uiNamespace getVariable ["ace_common_dlgDisableMouse", displayNull]);
    5. _Wasted = (uiNamespace getVariable ["ace_common_dlgDisableMouse", displayNull]) ctrlCreate ["RscStructuredText",1930];
    6. _Wasted ctrlSetPosition [-0.000156274 * safezoneW + safezoneX,0.423 * safezoneH + safezoneY,1.02094 * safezoneW,0.099 * safezoneH];
    7. _Wasted ctrlCommit 0;
    8. _Wasted ctrlSetBackgroundColor [0, 0, 0, 0.9];
    9. _Wasted ctrlSetStructuredText parseText format["<t size='4' color='#FF0000' align = 'center'>Du bist ohnmächtig!</t>"];
    10. _rspbutton = (uiNamespace getVariable ["ace_common_dlgDisableMouse", displayNull]) ctrlCreate ["RscButton",1931];
    11. _rspbutton ctrlSetPosition [0.5 * safezoneW + safezoneX,0.533 * safezoneH + safezoneY,0.195937 * safezoneW,0.077 * safezoneH];
    12. _rspbutton ctrlCommit 0;
    13. _rspbutton ctrlSetBackgroundColor [0, 0, 0, 0.7];
    14. _rspbutton ctrlSetText "Aufgeben";
    15. _rspbutton ctrlAddEventHandler ["ButtonClick", "closeDialog 0; player setDamage 1;"];
    16. _reqMedic = (uiNamespace getVariable ["ace_common_dlgDisableMouse", displayNull]) ctrlCreate ["RscButton",1932];
    17. _reqMedic ctrlSetPosition [0.304062 * safezoneW + safezoneX,0.533 * safezoneH + safezoneY,0.190781 * safezoneW,0.077 * safezoneH];
    18. _reqMedic ctrlCommit 0;
    19. _reqMedic ctrlSetBackgroundColor [0, 0, 0, 0.7];
    20. _reqMedic ctrlSetText "Medic Rufen";
    21. _reqMedic ctrlAddEventHandler ["ButtonClick", "[]spawn life_fnc_requestMedic;"];
    22. } else {
    23. hint "state false";
    24. };
    Alles anzeigen


    EH ist der hier:

    Quellcode

    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 ?

  • Pasi schrieb:

    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:

    Quellcode

    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) ;)
    Entwickler von SQDev
    Co-Entwickler von OurAltis
  • 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 ;)


    Pasi schrieb:

    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...
    Entwickler von SQDev
    Co-Entwickler von OurAltis
  • ESSS FUNKTIONIERT ^^

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

    hier mal der richtige EH:

    Quellcode

    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 ^^

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