Eigenes Eingabefeld Highscore // Onlinescore Cheatsicherheit

  • GM 8

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

  • Eigenes Eingabefeld Highscore // Onlinescore Cheatsicherheit

    Hallo.

    Mein Minigame Pikslar bräuchte etwas hilfe auch im Hiscore-Bereich. Die Grafische Darstellung ist kein Problem. Aber wie geb ich die Info an den Hiscore.

    1. Ich würde gerne ein eigenes "get_string" Eingabefeld machen, dass auf Mouseklick funkt. Siehe Anhang.

    EDIT zu1: Ich gebe Buchstaben vor (sieheBild) auf die der User klickt um seinen Namen einzutragen! Keine Key-eingabe!!

    2. Der Spieler soll nicht mehr als 10Zeichen eingeben können. (Generell)

    3.Gibt es ne Möglichkeit noch freien Stellen des Hiscores mit Nullen zu befüllen? (6Stellen).

    4.Da das Game einen Onlinescore bekommen wird möchte ich zusätzlich was gegen Cheater unternehmen. Meine Idee. Da ich im Game meinen Score unabhänig des GM-scores darstelle habe ich vor dem Spieler einen Score im Millionenbereich zu geben der nicht dagestellt wird. Ähnlich einer 4Stelligen pin. Da der Spieler diesen Millionenbereich nie erreichen wird bleiben diese Zahlen immer gleich. Nun möchte ich nur scores aus der Liste in das Game laden die Plus/Minus in diesem Bereich liegen. Bei der Darstellung möchte ich den geschenkten Score dann wieder abziehen/nicht darstellen. Da ich nicht weis wie man Betügen kann, ist diese Idee vielleicht dumm und wird nichts bringen. Wills aber trotzdem haben.

    Ich hoffe hier jemanden zu finden der mir Wege oder Überlegungen geben kann wie ich das hinbekomme.

    Danke und LG Wildor





    EDIT:

    Danke für die Denkanstösse. So is es geworden. Wers sehen will (Zum Testen gibts 6666Points geschenkt)

    hotfile.com/dl/133566197/3642b71/pikslar-demo.exe.html

    Zugleich ist das ne Demo von dem Game für das ich ne neue Post mache!!
    Bilder
    • eingabe1.png

      49,7 kB, 400×600, 609 mal angesehen
    • eingabe2.png

      51,13 kB, 400×600, 590 mal angesehen
    Aktuelles Game: "Pikslar" mit Online Hiscore





    PS: Will mit dieser Frage mal fragen, ob jemand zur zeit, Zeit hat. Suche Grafiker/Pixler










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

  • Bei Spielstart lade ich in einem Create_event: mit Code

    if highscore_value(1) > 0 then exit;

    highscore_add('MAGICMAN',005000);
    highscore_add('MAGICMAN',005000);
    highscore_add('MAGICMAN',005000);
    highscore_add('MAGICMAN',005000);
    highscore_add('MAGICMAN',005000);
    highscore_add('MAGICMAN',005000);
    highscore_add('MAGICMAN',005000);
    highscore_add('MAGICMAN',005000);
    highscore_add('MAGICMAN',005000);
    highscore_add('MAGICMAN',005000);

    im Draw-event eines Obj. im Raum: in dem das steht:

    var i;
    space[true]=" ";
    space[false]="";
    for(i=1;i<=9;i+=1)
    {
    draw_text(198,40+32*i,highscore_value(i));
    draw_text(376,40+32*i,space[i<9]+highscore_name(i));
    }

    die Nameneingabe mache ich noch über:

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

    was ich ändern will!
    also: ...der internen GM-Highscore!
    Warum?
    Aktuelles Game: "Pikslar" mit Online Hiscore





    PS: Will mit dieser Frage mal fragen, ob jemand zur zeit, Zeit hat. Suche Grafiker/Pixler










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

  • Eigentlich musst du nur eine eigene Textbox erstellen. Dafür zeichnest du ein rechteck(für design zwecke am besten zwei wobei eines davon outline=true ist) und lässt in dieses eine variable drawen.
    Diese setzt du dann im step event gleich mit keyboard_string (var=keyboard_string), sofern string_lenght(keyboard_string)<=10 ist.

    Zur online sache:
    Es gibt zwei mir bekannte möglichkeiten, bei so etwas zu hacken:
    1. Du manipulierst per Programm die values der zugehörigen Adressen deines Spiels. Dagegen tust du im Grunde genommen etwas ähnliches, wie du es schon erwähnt hast:
    Du nimmst 2 variablen, eine die den score anzeigt, und eine andere die im Hintergrund läuft und der eigentliche score ist. Sammelt man punkte, wird diese Hintergrund variable erhöht und durch verschiedene rechenoperationen von der angezeigten score variable unterschieden.
    Bsp: wenn man einen Punkt bekommt, werden 3/10tel von diesem von der Hintergrund-variable abgezogen, hochgeladen und beim anzeigen wieder mal genommen.
    2. Du rufst das php skript auf, welches du zum highscore hochladen verwendest, auf und übergibst diesem einen beliebigen score.
    Alles was du dagegen machen kannst, ist ein passwort mit übergeben, das vor dem eintragen in die highscore übergeben wird.

    Ich hoffe das war einigermaßen verständlich und hilfreich.
    mfg gmr_08
  • Sorry. ;( Habs vermutlich nicht richtig erklärt:

    Ich gebe Buchstaben vor auf die der User klickt um seinen Namen einzutragen! Keine Key-eingabe!!



    Zu Hacken 1: Ja das mit der Var im Score ist gut. Aber woher weis das Game das dieser Score nicht erspielt wurde?? Dur das was ich meinte gibt es nur einen bestimmten Scorbereich z.B. 123400500 wobei die 5000 erspielt wurden. Das Spiel wird nur Scores zw. 123400000 und 123499999 anzeigen, oder weis der Cheater was da vorne steht. Pass wie in 2. ist klar
    Aktuelles Game: "Pikslar" mit Online Hiscore





    PS: Will mit dieser Frage mal fragen, ob jemand zur zeit, Zeit hat. Suche Grafiker/Pixler










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

  • dann brauchst du trotzdem ein textfeld das du wie oben erklärt erstellen kannst. im global.left pressed machst du dann eine abfrage ob die maus an der richtigen position ist so dass einer der buchstaben gedrückt wird.(mouse_x>[linke seite des buchstaben] && mouse_x<[rechte seite] && mouse_y>[obere seite] && mouse_y<[untere seite])
    dann musst du die buchstaben im draw event natürlich auch drawen.
  • Hab vorherige post zu Cheat editet.

    OK. Das versteh ich auch, aber wie weis das Spiel nach Eingabe und Mauseklick auf ende das es ein Highscorname ist? Wie bastle ich das zusammen. Wie wird ein string daraus?

    [Zusammengeschoben von xxskxx]

    oder doch nicht? ;(

    ?( Ist damit gemeint das ich meine Buchstaben als Tiles lassen kann und die Textbox versteht wo sich meine Mouse befindet und durch klick an diesen koordinaten sich selbst nen Buchstaben schreibt?

    Das wär cool!
    Aktuelles Game: "Pikslar" mit Online Hiscore





    PS: Will mit dieser Frage mal fragen, ob jemand zur zeit, Zeit hat. Suche Grafiker/Pixler










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

  • Exakt, das letzte.
    Dein skript fragt ab wo sich gerade die Maus befindet, wenn irgendwo hin gedrückt wird. Deswegen nimmt man auch Global-mouse-Pressed.
    Das ganze ist natürlich ein wenig umständlicher, als das per Tastatureingabe zu machen.

    Also Nochmal genauern:
    Du bringst die Buchstaben per tileset in den Room, dann fragst du im global-left-pressed ab ob sich die maus in einem viereck befindet, das du um einen der Buchstaben definierst, das geht so:

    GML-Quellcode

    1. if (mouse_x > [linke seite des buchstabens] && mouse_x < [rechte seite] && mouse_y > [obere seite] && mouse_y < [untere seite])
    2. {
    3. variable_user_name+="Buchstabe" //hier wird der string "Buchstabe" an den Usernamen angehängt, ersetzte es einfach durch Beispielsweise "A"
    4. }

    Das umständliche daran ist, dass du diesen code für JEDEN Buchstaben machen musst. Wesentlich einfacher wäre das per Tastatureingabe, oder wenn man per Pfeiltasten durch die Buchstaben navigiert. Das kannst du lösen wie ein menü(und dafür gibt es mehrere gute Tuts).
  • NENE du!!! Genau so will ichs!°! 100Points.



    Da ich Anfänger bin wirds wohl bisschen dauern. Muss erst mal rausbekommen wie ich mein eigene Textbox dazu mache. Versteh ja

    "variable drawen"

    noch nicht mal richtig, geschweige denn


    "Diese setzt du dann im step event gleich mit keyboard_string (var=keyboard_string), sofern string_lenght(keyboard_string)<=10 ist"

    is noch bisschen Bahnhof, will aber lehrnen was das bedeutet.

    Und wie beende ich die Eingabe?



    Vielen dank!!
    Aktuelles Game: "Pikslar" mit Online Hiscore





    PS: Will mit dieser Frage mal fragen, ob jemand zur zeit, Zeit hat. Suche Grafiker/Pixler










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

  • "Diese setzt du dann im step event gleich mit keyboard_string (var=keyboard_string), sofern string_lenght(keyboard_string)<=10 ist"

    Das vergiss mal schön wieder, wenn du das mit den Buchstaben die auf dem bildschrim zum anklicken sind beibehalten willst.
    Was wichtig ist, du musst die Variable die du gerade +"A" oder so genommen hast auch anzeigen damit der User weis dass er sich nicht verschrieben hat.
    Dafür Drawst(englisch für zeichnen) du die variable auf den bildschirm.
    dafür setzt du im :event_draw: draw event folgendes D&D oder folgenden :action_code: GML code ein:
    D&D: :action_drawtext: Text=die variable in der die eingabe des spielers steckt(bei meinem code variable_user_name) x,y dürft klar sein, relative bedeutet ob er es von der
    position deines objektes aus drawen soll, dann ist x=0 y=0 nicht mehr in der oberen linken ecke, sonder da wo dein objekt ist.


    GML: :action_code:

    GML-Quellcode

    1. draw_text(x,y,string)//string ersetzt du hier mit einer variable bsp:
    2. variable_user_name


    Die eingabe beendest du wie du willst, per button, per prüfen der taste enter...

    Ich will hier kein Miesepeter sein, aber so gerne ich alles nochmal in einfacher kläre glaube ich du solltest dir die DAS HIER einmal durchlesen.
  • Danke. Du bist kein Miesepeter und deinen línk hab ich schon gelesen.

    Die eingabe beendest du wie du willst, per button, per prüfen der taste enter...






    Ich will das ganze mit meiner Grafik und nur Mouse steuern, deshalb helfen die meisten Antworten dort nicht so richtig weiter, oder hab sie noch nicht verstanden.



    Sorry habs einfach nicht gerafft.


    [Zusammengeschoben von xxskxx]
    Danke für die Denkanstösse. So is es geworden. Wers sehen will (Zum Testen gibts 6666Points geschenkt)

    hotfile.com/dl/133566197/3642b71/pikslar-demo.exe.html

    Zugleich ist das ne Demo von dem Game für das ich ne neue Post mache!!



    Noch nicht gelöst:

    3.Gibt es ne Möglichkeit noch freien Stellen des Hiscores mit Nullen zu befüllen? (6Stellen).
    Aktuelles Game: "Pikslar" mit Online Hiscore





    PS: Will mit dieser Frage mal fragen, ob jemand zur zeit, Zeit hat. Suche Grafiker/Pixler










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

  • Hmm also was du haben willst ein system das prüft ob gecheatet wir..! :D

    Ja ich würde mal eine abfrage machen im step event ob der highscore plötzlich größe ist als vor her ist

    müsste selbst test aber in der theorie währe am besten wenn es so auf gebaut werden

    score.normal
    score.save

    es müssen 2 scores laufen der step event fragt ob ( score.normal > score.save ) ist,
    wenn ja dann wird score.save auf normal übertragen.

    so ungefähr ich hoffe du hast es verstanden.

    score.normal > score.save
    1000 = 1000 : ist ok
    1000000 > 1000 : ein veränderung wurde indekt wert wert wird wieder auf 1000 gesetzt

    ;) hoffe konnte ein bisschen helfen am besten weitere versteckte variablen und es gibt die möglich keit eine dreifach abfrage zumachen! fals die save datei auch manipuliert wird sollte auch eine abfrage geben auch eine maximale score abfrage muss erfolgen fals jemand cheatet soll muss sein wert auf null gesetzt werten!

    ok fals das spiel geht und einen cheat sicherheit schick mir per downoad link oder pm eine exe ich kann sie auf cheat möglichkeiten testen!

    lg Calystor
  • zu 3.:
    das ist ganz einfach du füllst die Highscore einfach mit Highscores mit dem Wert 0?
    Entweder 6 mal per Hand oder in einer Schleife:

    GML-Quellcode

    1. for (i = 0 ; i != 6 ; i += 1)
    2. {
    3. highscore_add("unnamed",0)
    4. }


    Edit:


    Ja das mit der Var im Score ist gut. Aber woher weis das Game das dieser Score nicht erspielt wurde?? Dur das was ich meinte gibt es nur einen bestimmten Scorbereich z.B. 123400500 wobei die 5000 erspielt wurden. Das Spiel wird nur Scores zw. 123400000 und 123499999 anzeigen, oder weis der Cheater was da vorne steht.

    Um zu Verstehen, wie man cheaten vehindert, solltest du erstmal verstehen wie man Cheatet.
    Das Cheaten Funktioniert im einfachsten fall so:
    Spoiler anzeigen
    Man nehme ein Programm, das den Prozess deines Spiels scannt. Der Computer weist jedem Wert deines Programmes eine Adresse zu, JEDEM. Das ist wie mit Variablen, nur dass diese aus Buchstaben und Zahlen bestehen die keine Wörter Bilden. Das Programm scannt also nach diesen Adressen und liest deren Werte aus. Der cheater könnte jetzt diese Adressen durchsehen, solange bis es eine gibt die seinem Score gleicht oder ihn beinhaltet. Das ist aber ein wenig aufwändig da jedes Programm einige 100 bis 1000 Adressen besitzt. Also werden die einträge gefiltert:
    1. Der cheater gibt seinen score als "Suchbegriff" ein, das programm überprüft jede adresse ob sie diesen Wert enthält.
    2. Der Cheater filtert nach veränderungen. Er scannt dein Spiel nach adressen, danach sammelt er ein paar punkte. Jetzt lässt er sich nur die Adressen anzeigen, die sich erhöht haben. Dies macht er solange bis er seinen Score unter den anderen Adressen eindeutig identifiziert hat.
    Jetzt verändert er ihn.

    Erstens verhinderst du mit deiner Methode,2tens jedoch nicht.

    Stell es dir folgender maßen vor: du hast eine Variable real_score in der du deinen immer richtigen score speicherst, dieser ist verschlüsselt und kann im grunde genommen nicht gecheatet werden. Dann hast du eine 2te varieble diese nennen wir displayed_score. In dieser speichern wir den Score ab, so wie ihn der Spieler sehen soll.

    Sammelt der Spieler einen Punkt ein, wird real_score verändert. erhöht, villeicht sogar verringert? das bleibt dir überlassen, in diesem beispiel wird sie um 1/3 verringert.

    GML-Quellcode

    1. real_score-=1/3

    Im Draw event, in dem du die Punktzahl anzeigen lässt, schreibst du dann:

    GML-Quellcode

    1. displayed_score=-(score * 3)


    Der Spieler sieht seinen richtgen Score( displayed_score ), versucht er ihn zu ändenrn , wird er direkt wieder zurück geändert.
    Versucht er herrauszufinden welchen inhalt real_score hat, wird er scheitern da diese variable scheinbar nichts mit displayed_score, die er ja sehen kann, zu tun hat.

    ich hoffe, das war einigermaßen verständlich Formuliert.

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

  • [quote='MeRobin','index.php/Thread/?postID=192699#post192699']Du bist witzig.

    Du überprüfst ob der aktuelle Score größer ist als der letzte, falls ja, wirst du als Cheater gebrandmarkt.

    Wo ist der Denkfehler? In deinem System kann man dann ja gar keine Punkte mehr machen, weil man IMMER als Cheater erkannt wird, sobald man legal Punkte macht.[/quote]

    xD was blödsinn wird man eben nicht es wird bei einer highscore vergäben an beide orte, wenn aber plötzlich aber einer abweicht dann wird der wert auf null gesetzt
    da ist kein denk fehler so funktionirt das halt!
  • :thumbsup: Danke an Alle :thumbsup:

    Vor allem Partik!

    Harter Tabbak! Werd´s wohl noch oft lesen müssen.

    2. Der Cheater filtert nach veränderungen. Er scannt dein Spiel nach adressen, danach sammelt er ein paar punkte. Jetzt lässt er sich nur die Adressen anzeigen, die sich erhöht haben. Dies macht er solange bis er seinen Score unter den anderen Adressen eindeutig identifiziert hat.


    Heist das der Ceater muss trotzdem das Game Spielen? Was ist wenn es schon etwas Können verlangt bevor er sich überhaupt eintragen kann. Dann müsste er ein paar mal über diese Hürde spielen? Wenn das gut gewählt ist, wirds dem doch zu blöd? Na ja! Ich versuch erstmal gut Games zu machen dann seh ich weiter



    Gruss Wildor
    Aktuelles Game: "Pikslar" mit Online Hiscore





    PS: Will mit dieser Frage mal fragen, ob jemand zur zeit, Zeit hat. Suche Grafiker/Pixler










  • nein, das bedeutet dass wenn er dein spiel nach adressen und deren werten scannt, er es laufen haben muss, und er natürlich nur etwas ändern kann wenn er in etwa weis was er ändern will. und dafür muss er es sich im spiel angucken. Ich schick dir mal waogramm per PM, da kannst du dir das ein bischen genauer angucken.