Daten schicken

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

  • Daten schicken

    Hey Jungs ich bins!

    Wollte mal fragen ob man mit dem Gamemaker Daten online verschicken kann?
    Das heißt :
    Bsp:SpielerA&SpielerB haben das Spiel:SpielXY!SpielerA schickt SpielerB eine Datei über den Gamemaker.Diese Datei kommt bei SpielerA an.Er schaltet den Computer an:Irgendwas von SpielerB erhalten!SpielerB öffnet den Gmaker-Irgendwas erhalten.Dann löst die Datei einen Auslöser im Spiel von SpielerB aus.

    Ist das möglich?
    probieren geht über studieren!

    GML-Quellcode

    1. show message(10,10,Hello!)
  • hmmm... also ganz wichtig ist: du brauchst einen Server, der die daten zeitweilig sichert, das kannst du mit einem code, der der deine datei in eine zeile packt (Trennzeichen z.B. "|"), die an den Server/Host oder direkt an den Spieler verschickt. Das schwierige ist eigentlich nur das lange coden und versuchen...
    was ist sonst noch wichtig?
    das musst du beherrschen:
    Multiplayer Funktionen (Messages)
    Dateien (Text-Funktionen)
  • kein Thema nen Server hab ich,also eigentlich 2!

    Aber wie mache ich das der Server das automatisch weiterleitet?!

    ...also eigentlich brauche ich nur die Datei,die man halt über Internet zu einem anderen Spieler schickt und die dann etwas auslöst(-100Leben oder so).
    probieren geht über studieren!

    GML-Quellcode

    1. show message(10,10,Hello!)

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

  • Das musst du dann jeweils vom anderen Clienten abfragen lassen.

    Sprich: Der Client greift auf die Aktionsdaten zu und überprfüft, ob etwas dabei ist, was ihn betrifft/an ihn adressiert ist.
    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
  • Falls du es so wie Copyboy annehmt machen willst:
    Aus der Help:
    mplay_data_write(ind,val) schreibt den Wert val (string oder real) in Position ind (zwischen 0 und 1000000).
    mplay_data_read(ind) gibt den Wert von Position ind an (zwischen 0 und 1000000). Anfangs sind alle Werte auf 0.

    Damit kannste bei beiden Spielern auf die selben Daten zugreifen.
    Vorher musste natürlich die Verbindung erstmal aufbauen.
  • du kannst einen befehls sting übertragen, z.B.:
    "spieler.leben-=100;"
    und diesen mit

    GML-Quellcode

    1. execute_string(...)

    ausführen, sobalt du ihn erhalten hast.
    das ganze sollte kein problem sein, wenn du diese funktion nicht zu oft benutzt (langsam) und dein spiel nicht zu auswendig ist.
  • ahhh gut

    thx thx thx!


    Ich wollt dann noch mal eine zweite Frage dran hängen:

    Wie kann ich denn machen das z.B jede 3Stunden der SpielerA +50Gold bekommt(aber auch wenn er den Computer aus hat!)?
    probieren geht über studieren!

    GML-Quellcode

    1. show message(10,10,Hello!)

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

  • wenn du so viele server hast, kannst du doch einen dafür verwenden. ;).
    2 beispeiele: ein cronjob ruft alle 3 stunden nen php skript auf, der dem spieler-account in der datenbank (zb mysql) 100 gold dazu addiert. das spiel muss sich also bei jedem starten/beenden mit dem server synchronisieren.
    oder das game hohlt sich beim beenden die zeit von nem server, speichert die ab, hohlt die sich beim nöchsten start wieder und rechnet dementsprechend ab. könnte man aber auch cracken in dem man das abgespeicherte datum ändert.
    am sichersten wäre die erste methode, natürlich auch etwas komplizierter.
    was anderes fällt mir dazu nicht ein.

    schlieperich

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

  • Wenn das ohne Server geht wäre es besser.Meine Server brauche ichschon für andere Dinge!

    Es muss nicht sicher sein.Also geht das mit der Computer Uhr?Wie mache ich das dann?
    probieren geht über studieren!

    GML-Quellcode

    1. show message(10,10,Hello!)

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

  • mit der computer-uhr?!? es gibt leute, die keine uhr haben (also keine batterie). oder man kann wie gesacht schummeln ^^ naja, wenn du s umbedingt willst :P
    dann musst du wenn das spiel beendet wird das momentane Datum sichern - da gibts ein kapitel inna hilfe :D ("Dealing with dates and time") - und dann, beim nächsten start das jetzige Datum vom gespeicherten subtrahieren, die Stunden ausrechnen lassen, und das ganze durch 3 (weil du das ganze ja mal 3 haben willst)

    also...

    GML-Quellcode

    1. date_current_datetime();

    das musst du beim beenden speichern (z.B. in einer INI -->Files, registry, and executing programs<--)

    beim starten dann:

    GML-Quellcode

    1. hours=date_hour_span(global.lasttime,date_current_datetime());
    2. global.gold+=floor(hours/3)*100; // global.lasttime ist das gespeicherte datum

    also, z.B. hast du 40 Stunden nicht gespielt, bekommst du 13 * 100 = 1300 Gold (eigentlich 13.33333... , nicht aber wegen der floor()-Funktion)
  • coool Danke! 8o -aber mit der Uhr wie mache ich das dan das jemand pro Goldmine nochmal jede 3Stunden zusätzliche 10Gold bekomt?

    Gibt es aber noch eine Möglichkeit das so zu mache,dass nur wenn jemand das Spiel spielt er jede halbe Stunde etwas bekommt?
    probieren geht über studieren!

    GML-Quellcode

    1. show message(10,10,Hello!)

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

  • 1. das ist doch ganz easy:

    GML-Quellcode

    1. global.gold+=floor(hours/3)*10*instance_number(goldminen);

    2. auch einfach
    zum start:

    GML-Quellcode

    1. global.time=date_current_datetime();

    im step event:

    GML-Quellcode

    1. if(date_minute_span(global.time,date_current_datetime()) > 30) // diesesmal sind 's minuten!!!
    2. {
    3. global.gold+=10*instance_number(goldminen);
    4. global.time=date_current_datetime();
    5. }

    das heißt also, wenn die 30 minuten um sind, bekommt man 10 mal die anzahl an goldminen dazu, danach wird die variable global.time erneut auf die jetztige zeit gesetzt, und das spiel geht von vorne los. wenn du das spiel pausierst, funktioniert das nicht!

    EDIT: ACHTUNG!!! FEHLER!!! Statt global.lasttime musst du hier global.time nehmen!!! (geändert)

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