ctrlCreate auf Missionfilebasis

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

  • ctrlCreate auf Missionfilebasis

    Hallo zusammen,

    ziemlich begeistert von dem neuen Notification System von Exile "Toasts" (youtube.com/watch?v=MTypM4AHc4k) war ich nun auf der Suche nach einer Lösung, das für ein Missionfile (kein Addon) zu erstellen.

    Ich wollte unterhalb eines RscTitles dynamische Objekte erstellen und diese sich dann bewegen lassen (was kein Problem wäre).

    Ziemlich schnell stuckte ich an folgendem Problem:

    community.bistudio.com/wiki/ctrlCreate

    community.bistudio.com/wiki schrieb:

    class: String - Existing classname (see ctrlCreate/classnames) of the new control (currently only configFile classes are supported)

    Verdammte Axt.

    Daher die Frage:
    Wie bringe ich jetzt dynamisch viele Objekte auf meinem Bildschirm dazu, sich wie im Video von Exile zu verhalten?
    Ich brauche dafür zwingend die Controls dieser Objekte, um sie in einer Schleife bearbeiten zu können.


    Anhängend noch mein Lage



    Grüße,
    Insane

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Insane ()

  • Danke schon einmal für deine Antwort!

    Also vom System her war das (sehr abstrakt) so geplant

    C-Quellcode

    1. // FNC Init
    2. ("Notification_Layer" call BIS_fnc_rscLayer) cutRsc ["Notification_Display", "PLAIN", 0, true];
    3. // FNC AddNotification
    4. ...
    5. groupControl = layer "Notification_Display" ctrlCreate rscGroupControl
    6. groupControl set position
    7. groupControl set text
    8. ... usw
    9. ...
    10. reverse NotificationArray
    11. NotificationArray pushBack [groupControl, status, lastUpdate]
    12. reverse NotificationArray
    13. ...
    14. call pushNotificationToBottom
    15. // ....
    16. // FNC pushNotificationToBottom
    17. // nimm alle und schiebe sie ein element auf dem display nach unten
    18. // FNC Loop
    19. {
    20. if status == 0 then {
    21. deleteControl _x groupControl
    22. } else {
    23. move groupControl
    24. _x set lastUpdate diag_tickTime
    25. };
    26. } foreach NotificationArray;
    Alles anzeigen


    cutRsc gibt mir kein Control zurück, was das in meiner Logik aktuell unlösbar macht :/
  • >cutRsc gibt mir kein Control zurück, was das in meiner Logik aktuell unlösbar macht

    Nope. Man kann dem "dialog" via config ein "onLoad" event handler geben und da ist 'params ["_display"];' das display. Das kann man dann sofort in dem Skript mit cutRsc auslesen.
    cutRsc ist die Methode, um dieses "fade in" und "fade out" zu realisieren. Außerdem kann man es dann auch ohne Probleme in die discription.ext bringen, was man für große und kleine Strings benötigt (wenn man nicht mit diesem widerlichen "strucutured text" hantieren möchte).
  • Danke!

    Dein Hinweis war da ziemlich viel Gold wert, da ich in dem Zusammenhang auf dem Schlauch stand ;)

    Was putzig von Bohemia wieder ist: onUnload geht bei RscTitles wohl nicht (wird einfach nicht gecalled)..

    An die Personen, die auch einmal so etwas realisieren wollen:

    Quellcode

    1. - neue Nachricht: cutRsc mit einem RscTitle (am besten noch RscControlsGroupNoSidebar < oder wie das heißt)
    2. - onLoad den Control in ein großes Array packen
    3. - Boxen nach unten schieben lassen:
    4. > Array von displayNull's befreien (sollte mal bei RscTitle onUnload funktionieren kann man das auch "schöner" lösen)
    5. > Position des ersten Elementes speichern
    6. > bei den nächsten anpassen (ctrlSetPosition usw) (optional noch ctrlSetFade usw) und wieder in eine variable speichern für die nächsten



    sieht dann am Ende (zum Beispiel) so aus

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

  • Sieht gut aus.
    "onUnload" geht in der Tat für sowas nicht. Das feuert nur, wenn das Display mit einem OK/Continue-Button (idc/Exit-Code = 1) oder Close/Abort-Button (idc/Exit-Code = 2) geschlossen wurde. Außerdem kann man das Drücken dieser Buttons mit "closeDisplay" emulieren. Dabei wird der Exit-Code an "onUnload" weitergegeben. Das geht bei cutRsc natürlich nicht, da dort kein Mauscursor vorhanden ist.