Probleme mit Highscore-Tabelle

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

  • Probleme mit Highscore-Tabelle

    Hallo,

    ich habe folgendes Script gefunden und mal laufen lassen:


    // Mal gucken, ob da nicht schonwas in der Highscore ist
    if highscore_value(1) > 0 then exit;
    // wenn nicht, dann rein mit etwas Schwachsinn
    highscore_add('Gerhard',200);
    highscore_add('Herbert', 180);
    highscore_add('Manfred', 160);
    highscore_add('Horst', 140);
    highscore_add('Helge',120);
    highscore_add('Harald', 100);
    highscore_add('Dieter', 80);
    highscore_add('Joachim' , 60);
    highscore_add('Roland', 40);
    highscore_add('Klaus', 20);

    Dann habe ich es gelöscht und nun stehen immer noch die Einträge im Highscore wenn ich auf die Highscore Seite wechsele.

    Wie bekomme ich das wieder weg?

    Thx
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • highscore_clear()
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik

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

  • die highscore einies jeden GM spiels wird in der registry von windows gespeichert. du kannst die eingetragenen daten finden, wenn du im startmenue unter ausführen "regedit" eingibst. dann diesem pfad folgen:
    HKEY_CURRENT_USER\Software\Game Maker\Scores
    dort sind alle games als ID abgespeichert. die scores können nätürlich nicht in der exe sein, da diese nicht veränderbar ist. deswegen sollte man bei einer installation, bzw. wenn noch keine scores eingetragen sind, seine scrores eintragen (sofern man das überhaupt will).
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Danke euch beiden...

    WIN, ich habe dich in den Credits an erste Stelle gesetzt...

    Vielleicht hast du noch etwas Zeit um mir zu helfen...

    Ich will das jemand seinen Namen nach dem Spiel eingibt und der Highscore geschrieben wird.

    Mein Code:

    name = get_string("Please enter your name",1);
    highscore_add(name,1);


    Allerdings wird der Score nicht richtig angezeigt, wenn ich die Option
    Show highscore setze... (über nen Grafikbutton und Left pressed). Er zeigt egal wie hoch der Score ist, immer nur den Wert 1 an!

    EDIT: hmmm... kann das mit der 1 hinterm Namen zu tun haben???



    EDIT: EDIT: Logisch, ich muß den Wert 1 durch das Wort Score ersetzen!

    Und außerdem will ich nicht nur den Score speichern sondern auch die Anzahl der zerstörten Blöcke in der Highscore-Tabelle anzeigen..

    gut ich würde es wohl wie oben machen mit

    var blocks = global.blocks
    highscore_add(name,blocks,1);

    Wäre nett wenn du oder jemand anderes mir helfen kann...
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

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

  • die funktion get_string() verlangt 2 argumente: den text der bei der frage angezeigt werden soll und den text der verwendet wird, wenn der user nichts eingibt. die funktion highscore_add() verlangt ebenfalls 2 argumente. einmal den namen, der eingetragen werden soll, sowie den score den der spieler erreicht hat.
    verusch es also so, das du den score als variable "score" (o.ä.) festlegst, und dann diesen code verwendest:

    name=get_string('Please enter your Name.','');
    highscore_add(name,score);

    der highscore tabelle kann leider kein weiterer wert zugefügt werden. wenn du die anzahl der blöcke anzeigen lassen willst, musst du dafür ein eigenes array abspeichern. da in deinem spiel aber alle blöcke 10 punkte bringen kannst du die punkte auch einfach durch 10 teilen :D

    EDIT: ein crediteintrag für meine hilfe ist nicht nötig.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x

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

  • ;( nicht mehr...

    Ich habe die Blöcke auf Random zwischen 4-10 Punkte gesetzt...

    Gut, wie ich das verstehe soll ich eine eigene Highscore Tabelle erschreiben.... Na dann mal auf....

    Übrigens ich wills ja nicht so direkt sagen, aber sogar ich als absoluter Anfänger habe einen Fehler bei deinem Coding entdeckt...

    Naja mehr so ne Art falsche Eingabe...

    Du hast bei Time ceil 1/100 gesetzt... und bei Alarm 10000 Steps...

    Das ist nicht der Takt der Zeit.. :D

    Es muß heißen 1/60 und 3600... dann haben wir genau eine Minute Zeit...

    Aber vielen Dank für deine Hilfe.... echt super. Ohne dich hätte ich das nie hinbekommen....
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • oh ja, ich habe vergessen es entsprechend einzustellen.
    das funktioniert aber nur, solange du die FPS rate (den speed des raumes) auf 30 stehen lässt. wenn du es 100% genau haben willst kannst du
    ceil(alarm[0]/(2*fps))
    benutzen. dann wird auch nach kurzen lags oder nach einer eventuellen pause richtig gezählt.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Da du das Game kennst, noch eine letzte Frage...

    Ich will Bonussteine von oben abwerfen...

    Das heißt zum Beispiel steht ein B in so einem Stein drauf und dann muß der Spieler das Teil fangen(fällt nur nach unten richtung boden). Dafür bekommt er 500 Punkte...

    Dieser Stein soll aber nur auf dem Bildschirm erscheinen, wenn der Spieler es schafft mindestens 6 Blöcke einer Farbe auf einmal im view zu zerstören. Also das ist halt Glücksache für den Spieler ob soviele Steine im View sind...

    Aber wie mache ich sowas?


    Ich hatte schon solche Boni-Steine auf dem Bildschirm. Aber jedesmal wenn ich den B-Stein für 500 Punkte berührte, dann zählte er immer weitere 500er auf den Score und verschwand auch nicht...

    Ich hatte in den Figur-Properties ein Collision-Event mit dem Boni-Stein (dem B-Stein) erstellt.

    Dann im B-Stein-Properties ein Destroy-Event mit Set score +500 Relative...

    Und halt in dem controller_set properties im step mode
    if global.blocks larger 6 then
    create B-stone at pos. x y...

    Frage 1,1 :D

    Bei einem L-Stein, soll ein Laserstrahl genau die Instanzen(hier die Blöcke) zerstören, welche auf seiner Höhe sind. Natürlich muß der Spieler den L-Stein auch erst berühren. Denn L-Stein bekommt man wenn der Highscore immer 100 weiter überschritten ist. Also bei 101,201,301,401 usw...
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • einen solchen stein kannst du erschaffen indem du die funktion
    der destroy-event des b-blocks muss natürlich auch aufgerufen werden. das bedeuted dasdu in den kollisionsevent in den player noch ein destroy-icon packen musst, das auf das object "b-block" eingestellt sein muss. erst dann wird der block zerstört und der destroy-event des blocks wird ausgeführt.

    das der b-block nur erscheint, wenn 6 blöcke gleichzeitig zerstört werden, ist wegen der bisherigen machart des games, gar nicht so einfach. mit dem code
    if global.blocks larger 6 then
    create B-stone at pos. x y...
    kommst du jeden falls nicht weit, weil global.blocks die anzahl der bisher zerstörten blöcke zählt. nicht die der gleichzeitig zerstörten. also wenn der player mehr als 6 blöcke kaputt macht wird nach deinem code in jedem step 500 punkte addiert.ich denke, das du mit einem ahnlichen code wie diesem weiter kommst (NAME durch den object namen ersetzen und temp mit der entsprechnden nummer versehen):
    if temp1 = 0 {temp=instance_number(NAME1);}
    if temp1 > 6 && instance_number(NAME1)=0
    {instance_create(x,y,B-stone); temp=0;}
    dieser code arbeitet so, das wenn die anzahl des entsprechnden blocks 6 überschreitet, eine variable tempX auf die entsprechende anzahl blöcke gestellt wird. werden die blöcke zerstört wird ein b-block erstellt und der code zurückgesetzt. (ich hab es nicht ausprobiert, wenn fehler auftauchen noch mal melden!)

    auch den L-Stein kannst du nicht über eine abfrage wie "if score>101" erstellen, weil sonst pro step ein stein erstellt werden würde. auch hier ist ein etwas längerer code von nöten:
    if score=101 && lblock=0 {instance_create(x,y,L-stone) lblock=1;}
    if score=201 && lblock=1 {instance_create(x,y,L-stone) lblock=2;}
    etc.
    es würde natürlich auch galantere methoden geben, die auch bevorzugt werden müssten, wenn dein spiel einen größeren umfang hätte. aber ich denke das dieser code verständlicher und für dich einfacher zu ändern ist.

    p.s.: wenn du die extras zufällig am oberen rand des level erscheinen lassen willst nutze diesen code:
    instance_create(0,random(room_width),NAME);

    puh! ich hoffe ich hab keine fehler gemacht :D
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x

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

  • Original von WIN
    if temp1 = 0 {temp=instance_number(NAME1);}
    if temp1 > 6 && instance_number(NAME1)=0
    {instance_create(x,y,B-stone); temp=0;}
    dieser code arbeitet so, das wenn die anzahl des entsprechnden blocks 6 überschreitet, eine variable tempX auf die entsprechende anzahl blöcke gestellt wird. werden die blöcke zerstört wird ein b-block erstellt und der code zurückgesetzt. (ich hab es nicht ausprobiert, wenn fehler auftauchen noch mal melden!)


    Es trat ein Fehler auf. Ich habe deinen Code genommen und in den Step-Event im controller_set Object( das ist immer im Spielfeld invisibel und für allgemeine Gameeinstellungen vorhanden) als Execute a piece of code eingesetzt: (Bonus ist der B-Stone) Object2 ist der grüne Stein.

    {
    if temp1 = 0 {temp=instance_number(object2)};
    if temp1 > 6 && instance_number(object2)=0;
    {instance_create(150,150,bonus); temp=0};
    }
    Doch ich bekomme halt immer die Fehlermeldung beim Start des Games:

    Unknow Variable temp1

    Was habe ich falsch gemacht?

    Danke für Hilfe...
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • Original von Agnahim
    setze die variable im creation event einfach auf 0


    Agnahim hat natürlich recht. die variable muss natürlich erst Iniziiert werden. ich benutze meistens die funktion, das uninizierte variablen als 0 behandelt werden. da vergisst man sowan schonmal :D
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Nun klappts mit der Variable....

    Aber! Jetzt kommts...

    Der Code scheint nicht zu funktionieren

    Wenn ich Object2 (grüner Block) im Code angebe und es sind wirklich 6 Blöcke auf dem Bildschirm, dann erscheint der Bonus-Stone...

    Er soll aber doch nur erscheinen wenn ich mindestens 6 Blöcke auf einmal derselben Farbe im View vernichtet habe....

    geht das in etwa mit
    instance_destroy(object2)? anstatt
    mit instance_number?
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

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

  • in meinem code ist ein fehler, ich bin aber nicht ganz sicher ob es daran liegt. hier der richtige:

    if temp1 = 0 {temp1=instance_number(NAME1);}
    if temp1 > 6 && instance_number(NAME1)=0
    {instance_create(x,y,B-stone); temp1=0;}

    wie gesagt für jeden stein mit temp1, temp2 usw aberert testen obs funzt
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Original von WIN
    in meinem code ist ein fehler, ich bin aber nicht ganz sicher ob es daran liegt. hier der richtige:

    if temp1 = 0 {temp1=instance_number(NAME1);}
    if temp1 > 6 && instance_number(NAME1)=0
    {instance_create(x,y,B-stone); temp1=0;}

    wie gesagt für jeden stein mit temp1, temp2 usw aberert testen obs funzt


    Also dieser Code bringt nicht das Ergebnis. Auch wenn 8 Blöcke zerstört sind, kommt kein B-Stone.

    Wie wird das den bei Breakout gemacht? Da gibts doch auch dieses einfache Coding???

    Ich habe auch schon Klammern weg gelassen und Semikolons versetzt im obigen Code. Manchmal erscheint der Stein dann, aber dann schon zum Anfang des Spiels...

    Schade das GML so schwer ist... Ich will doch nur einen kleinen B-Stone.... mehr nicht :(
    Was man mit Händen baut, kann auch mit Händen zerstört werden...
  • es gibt bestimmt eine eifachere löung, mir fällt nur grade keine ein. lad doch nochmal das game hoch, dann kann ich mir das nochmal ansehen, und ein bischen herumprobieren.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • ok ich habs:

    GML-Quellcode

    1. if temp1 < 6
    2. {temp1=instance_number(object1);}
    3. else
    4. {
    5. if temp1 >= 6 && instance_number(object1)=0
    6. {instance_create(150,150,bonus); temp1=0;}
    7. }


    mein fehler sry!
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x

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

  • EDIT:

    Hallo WIN,

    eine Sache wäre noch asuzubessern.. Du wolltest mal schauen warum man die Farbtöpfe erst mehrmal berühren muß, bevor die Blöcke zerstört werden.. Irgendwas war falsch am Parent-Objekt.

    Also ich muß die Töpfe drei-viermal berühren, bevor die zerstört werden. Kannst du mir da noch helfen?

    Danke sehr...


    Vielen Dank WIN..

    einfach super Lösung.

    Nun habe ich wieder ein Stück dazu gelernt...

    Jetzt werde ich mich an die restlichen Bouns-Steine machen...

    Laserstein, Destroy_all-Stein und den altbekannten Speedup-Stein...

    Thx

    Achso nur noch eine Frage... :D (jetzt aber wirklich)

    EDIT: Habe gerade die Lösung gefunden...

    Wenn ich in deinem Code nicht unbedingt die Position x, y für den instance_create b-stone angeben will, wie mache ich das? Er soll halt einfach runterfallen. Von der Decke bis Boden und wenn er am Boden ist soll es verschwinden.... falls man ihn nicht erreicht hat.
    Was man mit Händen baut, kann auch mit Händen zerstört werden...

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

  • Benutzer online 1

    1 Besucher