Image_blend und extern laden problem

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

  • Image_blend und extern laden problem

    Ich habe nun wieder 2 Fragen die den Game MAker Pro betreffen.

    Ich habe mit meinem Freund zuhause überlegt woran der Fehler bei der Image Blend funktion liegen könnte.
    folgendes:

    Wir haben ein Sprite das unsichtbar ist und statdessen mit der Image_blend funktion aufgeleuchtet wird. das klappt perfekt! (xiebels licht Tut...)
    Doch dieses Sprite folgt einem Objekt. Doch diese Blend funktion bewegt sich mit verzögerung! Wir haben überprüft ob es an dem unsichtbarem Sprite liegt welches mit image_blend aufgeleuchtet wird. Aber dieses Lichtsprite folgt brav dem Objekt! Doch das leuchten nur mit verzögerung.

    Woran kann das liegen?

    2:

    wir wollen dass ein Sprite extern geladen wird. Doch wie können wir es machen dass der User selbst ein Sprite aussuchen kann welches geladen werden soll?
    Also z.b: Der User klickt das obj_dummy an. dannach öffnet sich ein Fenster wo man ein bestimmtes Sprite auswählen kann. nach der auswahl wird das Sprite an die Position x=0 y=0 geladen.

    Nach neustarten der exe wird das Sprite das vorhin ausgewählt wurde wieder geladen. solange bis man das obj_dummy anklickt und wieder ein neues Sprite ladet.

    Wie funktioniert das mit der Pro?

    (Hilfe und suche hat nichts ergeben...)
  • zu 1.:
    Wie wärs mit (d)einem Code?

    zu 2.:
    Man könnte jetzt ganz einfach get_open_filename nehmen.
    Aber wenn du/ihr möchte(s)t, dass man nur bestimmte Sprites nehmen darf, könnte man ein Menü Programmieren, in dem der Spieler sich ein Sprite ausscuhen kann.
    Also mehrere Anklickbare Objecte mit den jeweiligen Sprites.
    Und erstellen ist ja einfach:

    GML-Quellcode

    1. inst = instance_create(x,y,dein_object);
    2. inst.sprite_index = sprite; //ausgewaehlter sprite


    Ein zweites Fenster dafür, eght nur mit dem GM glaub ich nicht.
    Dafür könnte man die maxwin.dll nehmen.

    LG
    -iBot
  • den Code?

    naja. viel gibt es da nicht.

    Create event des Lichtobjekts:

    Quellcode

    1. image_blend = c_white;
    2. image_alpha = 0.75;


    step event:

    x=obj_player.x
    Y=obj_player.y

    grundsätzlich ist es ja nur das ganze Lichtutorial von xiebel. doch die lichtquelle verfolg das Objekt...
  • ok. danke. nur noch zu den externen dateien:

    wie funktioniert das genau? Also: wie kann ich machen dass nur bestimmte dateitypen geöffnet werden können? (Beispielsweise nur musikdateien oder nur Bilddateien?)

    Und wie kann ich es schaffen das das ausgewählte Sprite nach beenden der Exe und wieder neustarten es vorhanden bleibt?

    (Also das die exe sozusagen den namen der Datei speichert und bei mstart wieder aufruft.)
  • GML-Quellcode

    1. get_open_filename('Alle Möglichen|*.png;*.gif;*.jpg','datei')


    Und zum Anderen: speichere den Dateinamen einfach in eine Datei (Ini oder Textdatei) und lies ihn beim nächsten Start aus.

    © 2008 by Teamgrill Productions
  • Hab ich es richtig verstanden? Wenn ich bei dem obrigen Code einen Deteinamen weglasse wird er nicht geladen werden können?

    Tut mir leid aber ich kenn mich bei den externen Daten noch nicht so gut aus...

    Und wie mache ich das mit einer Ini?

    /Edit:

    Wie sollte der inhalt dieser Ini datei aussehen?

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

  • Genau. In der Hilfe erfährst du, dass man einzelne Auswahlmöglichkeiten so in einen String packen soll: 'GIF|*.gif|PNG|*.png'
    Also zuerst die Beschreibung, dann der Dateityp. Das heißt, wenn du unter einer Beschreibung mehrere Typen haben willst machst du es so: 'ALLE|*.png;*.gif;*.jpg'

    Zu der Datei. Du könntest es so machen, dass einfach der Dateiname des geladenen Bildes geschrieben wird. Die Auswahl sieht also ungefähr so aus:

    GML-Quellcode

    1. file=get_open_filename('Alle Möglichen|*.png;*.gif;*.jpg','datei')
    2. if !(file_exists(file))
    3. {
    4. exit
    5. }
    6. f=file_text_open_write('conf.cfg')
    7. file_text_open_write(f,file) // Dateiname von oben
    8. file_text_close(f)


    Und beim Spielstart könntest du abfragen:

    GML-Quellcode

    1. if !(file_exists('conf.cfg'))
    2. {
    3. exit
    4. }
    5. f=file_text_open_read('conf.cfg')
    6. spr=file_text_read(f)
    7. if (file_exists(spr))
    8. {
    9. sprite_replace(sprite,spr,imgnumb,precise,transparent,smooth,preload,xorig,yorig)
    10. }
    11. file_text_close(f)
    Alles anzeigen

    © 2008 by Teamgrill Productions
  • aha.
    Doch mir ist noch einiges unklar was ich noch wissen wollte. (Falls ich auf die Nerven gehe dann entschuldige ich mich...)



    file=get_open_filename('Alle Möglichen|*.png;*.gif;*.jpg','datei')



    f=file_text_open_write('conf.cfg')
    file_text_open_write(f,file) // Dateiname von oben
    file_text_close(f)



    Das rot markierte ist ein bisschen verwirrend.

    Soll ich wortwörtlich "Allemöglichkeiten" schreiben und dann ale Dateiendungen auflisten um alle Daten laden zu können? Wenn ja, wie mache ich das um nur Bildformate oder nur Musikformate laden zu können?

    2.: was ist dieses einzelne "f"?
    3:was ist dieses f, file?
    4:was für eine Dateiendung ist .cfg?

    sorry für so viele Fragen... aber leider habe ich noch nie mit extern, inis, usw... zu tun gehabt. :S
  • LEWA schrieb:

    aha.
    Doch mir ist noch einiges unklar was ich noch wissen wollte. (Falls ich auf die Nerven gehe dann entschuldige ich mich...)



    file=get_open_filename('Alle Möglichen|*.png;*.gif;*.jpg','datei')



    f=file_text_open_write('conf.cfg')
    file_text_open_write(f,file) // Dateiname von oben
    file_text_close(f)



    Das rot markierte ist ein bisschen verwirrend.

    Soll ich wortwörtlich "Allemöglichkeiten" schreiben und dann ale Dateiendungen auflisten um alle Daten laden zu können? Wenn ja, wie mache ich das um nur Bildformate oder nur Musikformate laden zu können?

    2.: was ist dieses einzelne "f"?
    3:was ist dieses f, file?
    4:was für eine Dateiendung ist .cfg?

    sorry für so viele Fragen... aber leider habe ich noch nie mit extern, inis, usw... zu tun gehabt. :S


    Also f ist eine Variable in der die id der Datei gespeichert wird, in der du was schreiben willst. Das ist nötig um überhaupt auf die Datei zugreifen zu können.
    Bei "Alle Möglichkeiten", kannst du auch "Bilder" oder was auch immer hinschreiben. In "file" ist der Dateiname von dem Bild gespeichert, das der Spieler ausgewählt hat und der wird halt in die Datei f geschrieben. Die Dateiendung ist in diesem Fall egal, die Datei ist immer eine Textdatei.

    © 2008 by Teamgrill Productions
  • Wie sollte der Inhalt der Ini aussehen? Muss ich da was spezielles reincoden?

    und was ist der befehl: file_text_open_write?

    Vielleicht könnte jemand ein einfaches example machen wie das geht... :(

    /Edit: Ich brauch umbedingt ein einfaches example. ich weiss nähmlich wirklich nicht wie ich das machen soll.
    Könnte irgendjemand so ein einfaches example hinbekommen?

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

  • Danke! Hat mir sehr geholfen.^^ Nun ist alles klarer.

    Doch das example hat 2 Probleme. Ich habe den Code auch angepasst, doch der Fehler ist immernoch da.

    Also beim example passiert volgendes: Ich lade das bild, doch es wird nicht angezeigt. Wenn ich das example von neu starte kommt dieser error:

    ERROR in
    action number 2
    of Other Event: Room Start
    for object obj_controller_Lite_Menü:

    Cannot execute C:\Dokumente und Einstellungen\User1\Desktop\GM\tests\11903Black.jpg


    Wieso kann er das bild nicht laden?
  • Man kann, anstatt es im draw zu machen (x/y anpassung) es auch in den EndStep tun. Dann hast du zumindest nich dein Draw vollgemüllt.
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • Dieser Script taucht bei einem Befehl auf der mit der tastatur eingegeben wird:
    (Nach den Script zufolge sollte das Bild doch sofort nach dem Laden im Spiel auftauchen. oder? Den ngenau das tut es nicht...)

    Quellcode

    1. var f, s;
    2. if (!(file_exists("conf.cfg"))) {
    3. s = get_open_filename("Bilddateien|*.gif;*.png;*.bmp;*.jpeg;*.jpg", ""); // Lässt den Benutzer eine (Bild-)Datei auswählen
    4. if (s == "") exit; // Falls der Benutzer auf 'Abbrechen' geklickt hat, wird das aktuelle Event/Script nicht weiter ausgeführt
    5. f = file_text_open_write("conf.cfg"); // Öffnet die Datei 'conf.cfg' zum Schreiben; falls diese noch nicht existiert, wird sie erstellt
    6. file_text_write_string(f, s); // Schreibt den Pfad zum ausgewählten Bild in die Datei 'conf.cfg'
    7. file_text_close(f); // Schließt die Datei 'conf.cfg'
    8. }


    Dieser Code wird beim "Room Start" Event ausgelöst.
    Aber da taucht dasselbe Problem auf wie beim example.
    Das Bild ansich selbst wird nicht ausgeführt. :S

    Quellcode

    1. var f, s;
    2. if (file_exists("conf.cfg")) {
    3. f = file_text_open_read("conf.cfg"); // Öffnet die Datei 'conf.cfg' zum Lesen
    4. s = file_text_read_string(f); // Liest den Pfad zum ausgewählten Bild aus der Datei
    5. execute_shell(s, 0); // Zeigt das Bild an
    6. file_text_close(f); // Schließt die Datei 'conf.cfg'
    7. }


    (PS: Ich habe mehrere Bilder und das Format PNG und jpg versucht. nichts ging.)

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

  • GML-Quellcode

    1. var f, s;
    2. if (file_exists("conf.cfg")) {
    3. f = file_text_open_read("conf.cfg"); // Öffnet die Datei 'conf.cfg' zum Lesen
    4. s = file_text_read_string(f); // Liest den Pfad zum ausgewählten Bild aus der Datei
    5. execute_shell(s, 0); // Zeigt das Bild an
    6. file_text_close(f); // Schließt die Datei 'conf.cfg'
    7. }


    was is denn das bitte?^^

    execute_shell hat absolut nix mit dem anzeigen von nem bild zu tun...
    such mal in der hilfe nach sprite_add:

    GML-Quellcode

    1. sprite= sprite_add(file-path.. blabla.)

    und zeichnest dann das sprite im draw event:

    GML-Quellcode

    1. draw_sprite(bla
    "das war meine letzte flamewar PM an dich ."
  • @LEWA: Bei mir ging das, vielleicht hast du keine Anwendung mit dem Dateityp verknüpft?

    @blubberblub: Ja, aber normalerweise schon. Natürlich kann man den Code auch mit

    GML-Quellcode

    1. sprite_add(...) // [...]
    ersetzen, aber ich habe LEWA ja nur mal gezeigt, wie man den Spieler ein Bild auswählen lässt, wenn man das Spiel zum ersten mal ausführt.

    MfG,
    -fabse64
    fabse64 -> haiyyu