Tastaturbelegung aus einer ini Datei abrufen

  • GM 8

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

  • Tastaturbelegung aus einer ini Datei abrufen

    Hallo, ich bins mal wieder :D

    Öhm ich versuche gerade mein Spiel weiter zu machen und brauch jetzt wieder hilfe!
    Ich hab 4 Varialben (global.rechts, global.links, global.rauf, global.runter)
    am Anfang hab ich

    GML-Quellcode

    1. global.rechts = ord("D");
    2. global.links = ord("A");
    3. global.rauf = ord("W");
    4. global.runter = ord("S");

    //Das klappt

    so und dann hab ich darunter

    GML-Quellcode

    1. ini_open("Optionen.ini");
    2. ini_read_string("Interface", "Rechts", global.rechts);
    3. ini_read_string("Interface", "Links", global.links);
    4. ini_read_string("Interface", "Rauf", global.rauf);
    5. ini_read_string("Interface", "Runter", global.runter);
    6. ini_close();

    //ob das klappt weiß ich nicht, glaub aber nicht

    so und dann in step event vom Spieler

    GML-Quellcode

    1. if keyboard_check_pressed(global.rechts)
    2. {
    3. ...meine ganzen Befehle xD;
    4. }

    //das Klappt, aber man bewegt sich nur mit wasd, und nicht mit dem das in der ini datei steht
    Hoffe ihr versteht mich, was mach ich beim 2ten code falsch?
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • das lesen aus einer ini datei funktioniert anders ^^

    GML-Quellcode

    1. ini_open("Optionen.ini");
    2. ini_read_string("Interface", "Rechts", global.rechts);
    3. ini_read_string("Interface", "Links", global.links);
    4. ini_read_string("Interface", "Rauf", global.rauf);
    5. ini_read_string("Interface", "Runter", global.runter);
    6. ini_close();

    ist zwar ein guter anfang, jedoch hat hier vor 2 tagen jmd genau den gleichen fehler gemacht wie du
    es funktioniert so, dass du erst eine vraiable schreibst, und dahinter ini read, denn ini read gibt den wert zurück den das ganze beinhaltet.
    richtig wäre:

    GML-Quellcode

    1. ini_open("Optionen.ini");
    2. global.rechts=ini_read_string("Interface", "Rechts","D"); //bei "D" kommt das hin, was in global.rechts geschrieben wird, falls der vorgang fehl schlägt
    3. global.links=ini_read_string("Interface", "Links","A"); //hier genause
    4. global.rauf=ini_read_string("Interface", "Rauf", "W"); //...
    5. global.runter=ini_read_string("Interface", "Runter", "S"); //...
    6. ini_close();
  • Danke für die schnelle Antwort aber klappt irgendwie nicht,


    also meine ini datei sieht so aus:
    [Interface]
    Sound =true
    Musik =false
    Rechts =vk_right
    Links =vk_left
    Rauf =vk_up
    Runter =vk_down



    und jetzt geht bewegen garnicht mehr...

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • jo gerade jetzt :D

    Also es steht da das die Variable global.right mit vk_right besetzt ist und die andern sind auch richtig also muss doch daran was falsch sein oder?:

    GML-Quellcode

    1. if keyboard_check_pressed(global.rechts)

    Muss ich da vllt? string(global.right) oder so machen?

    MfG Rodrog

    Edit: Ok mit string(global.right) klappts auch nicht!
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • string kann nicht sein, ich das problem liegt darin, das vk_up usw kein text sind sondern constants.
    das sind wörter hinter denen sich zahlen befinden bsp ist true eine konstante und beinhaltet 1 flase beinhaltet 0
    wenn du also aus deiner ini datei ausliest "vk_up" geht das nicht. jedoch wenn du schreibst, keyboard_check_pressed(vk_up) sieht der computer
    keyboard_check_pressed(38) und bei down 40.
    du musst also die zahlen herausfinden und dann den computer unterscheiden lassen ob in deiner datei eine zahl oder text steht. wennn eine zahl steht zb 38 für up musst du diese so hineinschreiben und den jeweiligen buchstaben mkit ord().
    klingt kompliziert, udn wenn dus flasch machst ist es das auch^^ ansonsten nicht
    hoffe du verstehst meine wirren sätze, bin gard etwas ermüdet
  • hab´s nach dem vierten mal lesen, so halbwegs verstanden... also so wie ich das verstanden hab (und einen kleinen Ansatz hab ich aus der schule)
    jeder buchstabe bzw. zeichen entspricht eine Zahl von 0-256, jetzt muss ich herausfinden was Pfeiltaste rauf, runter, links und rechts ist, oder?
    Danke und ich versuch mal herauszufinden, was die Pfeiltasten für zahlen haben!

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • So ungefähr, jetzt will ich halt das man mit den Pfeiltasten bewegt und nicht mit WASD, bzw. will ich das so machen das der Spieler das selber ausuchen darf. Aber ich glaub ich weiß jetzt schon so ungefähr wie ich das machen werde! Danke an alle, ich werd mal meine Idee machen und wenns dann nicht klappt meld ich mich wieder

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • und jez nochmal verständlicher un dmit zusammenhang:
    vk_up vk_down vk_left vk_right sind Constants. Constants sind wie variablen. sie beinhalten einen wert. Constanten erkennt man daran dass sie im GM rotbraun gefärbt sind.
    Es gitb vorgefertigte konstanten und du kannst eigene mahcen indem du unter den game properties nachsiehst.
    Constants haben den sinn dein programm übersichtlicher zu machn. Anstatt zu schreiben spielmodus = 3 kannst du spielmodus = multy schreiben, wenn du das wort multy vorher als constant deklarierst die die zahl 3 beinhaltet.
    vorgefertigte constants sind zb. true oder false. wenn du schreibst variable1 = true und danach checkst was sie beinhaltet wird sie 1 beinhalten.
    wenn du schreibst variable1 = false beinhaltet sie 0.
    so, also vk_up ist also eine constante.
    zum verstehen was nicht läuft: wenn du in eine datei hineinschreibst blabla=hi
    und hi eine variable sein soll und du das ausliest, dann steht in der variable in der du den inhalt von blabla speicherst nicht hi sondern "hi", will
    bedeuten, es steht da kein variablen name sondern ein text. deswegen kannst du in deine datei nicht schreiben vk_up.
    denn er liest es aus, als text.
    wenn du schreibst ord(D) dann sucht er sich den zahlenwert von D heraus und überprüft ob diese taste gedrückt ist. denn jede taste hatr einen zahlenwert. und der zahlenwert von den pfeiltasten, wird zur vereinfachung standartmäßig in der Constante vk_up gespeichert.
    also finde heraus was für zahlenwerte vk_up -down -left -right haben und schreibe diese4 in deine ini datei. dann gehts.
    du findest die zahlenwerte heraus indem du schreibst show_message(string(vk_up)) damit erhälst du den für vk_up(der ist übrigens 38 ).
    ich hoffe das ist verständlicher.

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

  • Jo verständlicher als der Text vorhin, danke.

    Habs jetzt so gemacht.

    GML-Quellcode

    1. keyboard_wait();
    2. taste1=keyboard_lastkey;
    3. ini_open("Optionen.ini");
    4. ini_write_real("Interface", "Rechts", taste1);
    5. ini_close();




    Danke für eure Hilfe, klappt jetzt super!
    Jetzt dauerts nicht mehr lang und mein Game ist fertig.



    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • So also mache das Game weiter, und habe schon an bar leuten geschickt und die haben gemeint, es wer nicht schlecht anzuzeigen mit was rechts bewegen belegt ist.
    Gibt es eine Funktion die den Zahlencode umwandelt wieder in den richtigen Text das heißt.

    Rechts=68 = D
    Links=65 = A
    Runter=83 = s
    Rauf=87 = W



    MfG Rodrog

    P.S.:
    1.) Hab das Thema wieder extra rausgesucht, weil neu erstellen ist nie gut :)
    2.) Sorry für Doppelpost, würde man aber sonst nicht sehen
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.