komme mit program_directory nicht klar GM8.1

  • GM 8

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

  • komme mit program_directory nicht klar GM8.1

    hallo community,
    bin neu bei euch, schlage mich aber schon schon länger durch das forum,
    habe auch schon viel von euch gelernt :thumbsup:
    eine sache schaffe ich aber nicht und ich verzweifle schon ?(
    ich glaube, ich bin zu dumm dafür ;(

    beispiel,
    spr = sprite_add(program_directory + "\texturen\sand.png", 1, false, false, 0, 0);
    draw_sprite(spr, 0, 10, 10);

    ergebnis
    Error...
    Trying to draw non-existing sprite.

    ich habe mir das program_directory anzeigen lasse
    f:\steam\steamapps\common\gamemaker_studio

    der ordner texturen mit sand.png sind im ordner gamemaker_studio.

    Bitte um Hilfe, wo ist mein Fehler ???
    lg joe
  • program_directory ist das Verzeichnis, in dem die .exe-Datei liegt. Du musst das Spiel also erst kompilieren, damit program_directory wie gewünscht funktioniert. Wenn du das Spiel über den Playknopf im Game Maker startest, ist program_directory ein temporäres Verzeichnis, weil die .exe-Datei in einem temporären Verzeichnis zwischengespeichert und dann automatisch ausgeführt wird. Zu dieser Zeit ist dieses Verzeichnis das gleiche wie temp_directory, also sowas wie C:/Users/OJOE~1/AppData/Local/Temp/gm_tt_1212 und in diesem Verzeichnis kann dein Bild nicht sein.

    Ansonsten kannst du program_directory einfach durch working_directory ersetzen. Dann funktioniert es auch, wenn du das Spiel über den Game Maker-Playknopf startest - sofern deine .gm*-Datei im gleichen Ordner liegt wie der texturen-Ordner.

    wiki.yoyogames.com/index.php/Working_directory
    wiki.yoyogames.com/index.php/Program_directory
    wiki.yoyogames.com/index.php/Temp_directory

    Ach so und willkommen im Forum. :)

    GML-Quellcode

    1. if ! (freedom) { instance_destroy(gamemaker); instance_create(x, y, html5); }

    Dieser Beitrag wurde bereits 15 mal editiert, zuletzt von Bonsaiheld ()

  • hallo und danke für das willkommen und die hilfe, 8o

    program_directory ... Verzeichnis der .exe ... verstehe ich nun, hab ich so auch testen können. "abgehakt"

    working_directory macht mir leider noch probleme,
    es wird mir z.B.
    C:\users\joe\AppData\Loacl\Temp\gm_ttt_17410 angezeigt

    wenn ich den ordner texturen mit sand.png in das gm_ttt_17410 verzeichnis kopiere geht es.
    wenn ich eine .exe mach, ist das working_directory wie das program_directory ist auch noch ok
    nach einem GM neustart war es dass, weil sich das verzeichnis von gm_ttt_17410 verändert,
    ist auch noch verständlich.


    warum geht es nicht einfach, so zB.

    spr = sprite_add( "\texturen\sand.png", 1, false, false, 0, 0);

    Wo müsste hier nun das verzeichnis texturen sein ???

    oder warum geht es nicht so

    spr = sprite_add( "c:\texturen\sand.png", 1, false, false, 0, 0);


    da hast doch was !!??
    oder ich bin nicht geschaffen für GM :headtouch:
  • Äh mal aus dem Ärmel geschüttelt:

    Relative Pfade brauchen keinen Schrägstrich am Anfang, also:

    GML-Quellcode

    1. spr = sprite_add( "texturen\sand.png", 1, false, false, 0, 0);


    Und voll-absolute Pfade (die man im GM nicht verwenden sollte da nicht jeder das Spiel an die selbe Stelle abspeichert) brauchen den Festplatten-Buchstaben groß :P

    GML-Quellcode

    1. spr = sprite_add( "C:\texturen\sand.png", 1, false, false, 0, 0);


    Hoffe das klappt (habs grad nicht überprüft)!

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • ojoe73 schrieb:

    warum geht es nicht einfach, so zB.

    spr = sprite_add( "\texturen\sand.png", 1, false, false, 0, 0);

    Wo müsste hier nun das verzeichnis texturen sein ???
    Geht auch. Ich weiß nur nicht, ob das immer fehlerfrei läuft, weil ich mir einbilde, dass die directory-Konstanten einen tieferen Sinn haben.
    Der texturen-Ordner müsste in dem Fall in dem Ordner sein, indem das Spiel ist, egal ob .gm*- oder .exe-Datei. Also im Grunde das gleiche wie working_directory.

    Groß-und Kleinschreibung ist bei Windows egal, soweit ich weiß. Das interessiert nur unixoide Systeme (GNU/Linux, Mac OSX, Solaris,...).

    Warum es immer noch nicht geht, kann man aus der Ferne schlecht beurteilen. Entweder du lädst dein Spiel mal irgendwo komplett hoch, inklusive Spieldatei, damit man nachsehen kann oder du kopierst einfach wieder den Code und schreibst, wie die Ordnerstruktur ist.

    GML-Quellcode

    1. if ! (freedom) { instance_destroy(gamemaker); instance_create(x, y, html5); }
  • danke für eure unterstützung 8o

    hab mal neu installiert, auf H, war egal.

    zum testen habe ich mal sand.png in alle ordner drinnen, im H:, im Demo GM, Project1.gmx, config, objects, rooms, ...

    und auch im ordner wo GameMaker-Studio, Runner, ... usw drinnen ist.



    noch immer error... Trying to draw non-existing sprite.

    es gibt ein object mit
    create > execute a piece of code mit spr = sprite_add( "sand.png", 1, false, false, 0, 0);
    draw > execute a piece of code mit draw_sprite(spr, 0, 10, 10);
    ein room mit dem object

    wenn ich eine exe mach und in dem ordner ist sand.png drinnen geht es !

    ;(
    lg joe
  • ojoe73 schrieb:

    wenn ich eine exe mach und in dem ordner ist sand.png drinnen geht es !


    GML-Quellcode

    1. spr = sprite_add((working_directory+"\objects\sand.png", 1, false, false, 0, 0);
    Funzt also nicht?
    Das ist ziemlich eigenartig!

    Schreib mal

    GML-Quellcode

    1. if file_exists(working_directory+"\objects\sand.png")
    2. show_message(sprite_add(working_directory+"\objects\sand.png", 1, false, false, 0, 0));
    und sag uns was die message anzeigt.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

  • spr = sprite_add(working_directory+"\objects\sand.png", 1, false, false, 0, 0);
    Funzt nicht ! :S

    und bei


    if
    file_exists(working_directory+"\objects\sand.png")
    show_message
    (sprite_add(working_directory+"\objects\sand.png", 1, false, false, 0, 0));

    kommt nur das fenster sonst nichts, wenn ich
    if file_exists(working_directory+"\objects\sand.png")
    weg lasse, kommt
    -1 mit OK button, nach klick auf den button geschieht nichts

    mach ich eine exe, mit ordner objects & sand.png kommt
    1 mit
    OK button, nach klick auf den button kommt 2, 3, 4, 5, ....


    tja,
    lg joe
  • Okey, also aus irgendeinem Grund erkennt der bei dir keine Unterordner. Bist du dir sicher dass in dem sleben Verzeichnis in dem die .gmk deines SPiels ist, sich ein Ordner namens "objects" befindet in dem die Datei ist?
    Gibt es irgendwelche "besonderen Umstände"? Also machst du dies alles in einer virtuellen Maschiene, oder was ähnliches?

    Sonst pack mal die gesamte Ordner-Struktur in eine zip und lad es hoch!

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Äh was soll das denn?
    Benutzst du GM 8.1 und GM-Studio etwa parallel?

    Der Unterordner-Objects befindet sich ja nur in dem Ordner "Project1.gmx".
    Wenn du also die gm81 benutzst welche sich außerhalb dieses Unterordners befindet, dann kann das ja nicht funktionieren! (wie denn auch? )

    Kopiert man den Unterordner "objects" in den selben Ordner wo die Datei "Project1.gm81" ist, dann funktioniert alles tadellos.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • warum die frage ob ich GM 8.1 und GM-Studio parallel benutze ???

    ich hab GameMaker Studio über Steam, da gibts nur ...
    Start ...
    dann Play / Make
    dann auf zB. New oder gleich auf Project1.gmx
    Create

    Ein .gm81 File mach der GM nur wenn ich auf Export Project gehe

    auch wenn ich Unterordner-Objects zu Project1.gm81 kopiere, geht nicht.


    Das mach GM bei der schrittfolge ...
    Make > New > Create > Object + Room erstellen > Save
    filedropper.com/project1gmx
  • >< Du hast dort oben im Titel gesagt du benutzt GM 8.1!
    Was hast du dann mit .gmx Dateien und dem Studio zutun?

    Du musst zu keinem Zeitpunkt irgendwas aus dem Studio exportieren.

    Entweder du benutzt den GM 8.1 und erstellst DARIN das gesamte Projekt und lässt das Studio vollkommen außen vor.

    Oder du machst das ganze im Studio wobei du aber NICHTS nach .gm81 exportierst! Sondern einfach starten lässt.


    Wenn man den object-ordner in das Verzeichnis mit der .gm81 Datei kopiert und dann genau diese startet! (also die .gm81, NICHT die .gmx- Datei) dann funktioniert das ohne jegliche Probleme. Hab ich anhand deiner Projektdatei getestet.


    EDIT: Ich nehme an du benutzst dies alles im Studio. Das hättest du sagen sollen - und diesen Thread im Studio-Unterforum plazieren.
    Denn wie ich grad feststelle funktioniert das ganze Dateisystem darin anders. Sowohl working_directory als auch program_directory geben nicht den Ordner der .gmx Datei aus sondern andere Dinge weswegen man nicht von der Projekt-Datei aus, gehen kann...

    Bin ich im Moment überfrag wie dies zu lösen ist.. Hoffentlich weiss jemand der das Studio regelmäßiger benutzt als ich, wie man eine eigene Unterordner-Struktur im Studio verwenden kann. Bin grad verwirrt dass das nicht wie gewohnt funktioniert.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von DragonGamer ()