Screenshot speichern MIT Surface

  • Win

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

  • Screenshot speichern MIT Surface

    Guten Abend :)

    Für die wo Whatsy schon mal angezockt haben, die wissen es vll. In meinem "Spiel laden" menü sieht man einen kleinen Screenshot vom gespeicherten Spiel.
    Der Screenshot wird im Spiel einfach mit der

    GML-Quellcode

    1. screen_save(fname);


    Funktion erstellt. In meinen "normalen" Leveln funktioniert das einwandfrei. In den Level wo ich Surfaces benutze (Um es zu verdunkeln, oder Lichtkegel) Speichert
    er bei dieser Funktion aber leider die Surface nicht mit... Das ergibt komische Screenshots...
    Nach öffnen von so einem Screenshot is mir aufgefallen das dort wo der Surface sein sollte alles Transparent ist...

    Wie kann man das ganze lösen das die / der Surface mitgespeichert wird beim Screenshot?

    Thx euch!

    Edit: Anbei mal zwei Screenshots... Bild 1: So sollte es eig sein... Bild 2: Die Surface ist wie man sieht transparent... (wegen HP Hintergurund nun weiß) :(
    Bilder
    • 2.png

      219,84 kB, 800×450, 608 mal angesehen
    • 1.png

      180,06 kB, 800×600, 628 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Atomicmaster ()

  • Ok war mir unbekannt bis jetzt... hört sich in der Theorie aber gut an :) Werds heute Abend testen und melde mich dann! Danke schonmal.

    Edit:
    Also hab nun etwas rumgewerkelt... leider bekomm ich es nicht gebacken -.-
    Die Surface wir per Script erstellt. Wüsste nicht wie ich dann genau auf die Surface zugreifen kann.
    Brauche ja die Variable für den surface_save(application_surface, "screen.png") befehl.

    Edit2:
    Ok weiter probiert... und leider keine Lösung gefunden. Aber habe einige Tuts im Englischen Forum gefunden
    wie man den gesamten Screen in eineer Surface speichern kann und den dann als Screenshot speichern kann.
    Nur leider benutzen diese alle den "screen_redraw" befehl, den es in GM:Studio anscheinend nicht mehr gibt.
    Kennt jemand ein Tut / Link der mir weiterhelfen kann? Danke für die mühen.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Atomicmaster ()

  • Nabend Chinafreak :)

    Habe mich bei den Surfaces hier an einem Tutorial angelehnt aus dem Forum. Habe 2 Objekte im Raum die die Scripte ausführen.


    script light_init:

    GML-Quellcode

    1. a_color = make_color_rgb(255-color_get_red(argument0),255-color_get_green(argument0),255-color_get_blue(argument0));
    2. surface = surface_create(800,600);


    Script light_draw:

    GML-Quellcode

    1. if !surface_exists(surface)
    2. {
    3. light_init(make_color_rgb(24,24,24));
    4. }
    5. else
    6. {
    7. draw_set_blend_mode(bm_subtract);
    8. draw_surface(surface,view_xview[0],view_yview[0])
    9. draw_set_blend_mode(bm_normal);
    10. }


    script light_refresh:

    GML-Quellcode

    1. surface_set_target(surface);
    2. draw_clear(a_color);
    3. draw_set_blend_mode(bm_subtract);
    4. with (obj_spot)
    5. {
    6. draw_sprite_ext(sprite_index,image_index,x-view_xview[0] ,y-view_yview[0],image_xscale,image_yscale,image_angle,image_blend,image_alpha);
    7. }
    8. draw_set_blend_mode(bm_normal);
    9. surface_reset_target();


    HAbe dann im Raum einen Light controller:
    Create:

    GML-Quellcode

    1. light_init(make_color_rgb(24,24,24));


    im Step:
    Führt er light_refresh aus

    und im Draw:

    GML-Quellcode

    1. light_draw()


    Dann noch ein Objekt für das Spotlight.
    Create:

    GML-Quellcode

    1. sprite_index = spr_light1;
    2. image_blend = c_white;
    3. image_alpha = 0.3;


    und im Step wird das Spotlight immer an die Position des Spielers gesetzt.

    Wie du im ersten Post sehen kannst, wenn ich dann mit screen_save() einen Screenshot
    mache sind die Stellen vom Surface transparent. ?(

    Danke für deine mühen!
  • hmm, komisch, bei mir funktioniert es wunderbar trotz deine Skript.



    Projekt-Datei: dl.dropbox.com/s/cc6kw2z70lh5a57/LightScreenSave.gmz

    Schau mal nach, ob das Problem immernoch weiterhin besteht. Falls ja, dann könnte es entweder veraltete Game Maker-Version sein oder dein Rechner spinnt. Ich benutze zurzeit Game Maker: Studio (1.3.1373 Beta).

    Leertaste = Screenshot
    Screenshot befindet sich dann unter %localappdata%/LightScreenSave.
    Ihr stinkt.