39Dll: Einen Player Hinzufügen/die jeder für sich spielt.

  • GM 8

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

  • 39Dll: Einen Player Hinzufügen/die jeder für sich spielt.

    Hallo, und ersteinmal einen Schönen Freitag Abend,

    In diesem Threrad möchte ich grundsetzlich über das Hinzufügen eines Players machen, wie ihr vllt den " 39DLL: Multiplayer Chat Example " kennt Funktioniert er sauber, und mir gelegentlich stört dieser Chat, darum wollte ich dieses Chat entfernen, daraus einen Player machen, die jeder bekommen soll, wenn er ins Multiplayer " Online " Beitretet.

    Habt ihr ein kleines Ahnung, oder vielleicht könntet ihr mir einen Tipp geben, also ich habe schon die ganze zeit versucht das " Chat " wegzumachen, dafür einen Player zumachen, denn jeder bekommt, und mit einander Kommuniziert " nur sehen ", keine " Chats "...

    Wenn einer das Chat 39dll: Example nicht kennt( ich weiß nicht von wem es ist, aber Funktioniert er sauber! ) lan + Online!
    Dateien
    • EXAMPLE.rar

      (221,56 kB, 114 mal heruntergeladen, zuletzt: )
  • Ich dachte ich währe am verständlichsten.

    Nochmals:

    Ich möchte in diesem Example(Chat) das ganze " Chat " rausmachen( nicht die Connect - Online, die sind schon gut, und dafür den Chat durch einen player_object ersetzen/geben, somit man alle mit einem Player im Multiplayer anfangen können. Das schaffe ich aber nicht.
  • Das schaffe ich aber nicht.
    Dann solltest du die Finger davon lassen. Du verstehst nicht mal wie man ein paar Zeilen Code aus dem Programm entfernt. Du müsstes alles von dem Chat entfernen (indem Fall "controller" beim Client, beim Server hab ich nicht reingeguckt) und deinen eigenen Code einbauen. Wenn du das kannst brauchst du kein Example als Basis mehr. Im Prenzip sind für den Verbindungsaufbau nur tcpaccept, tcplisten und tcpconnect zuständig.

    Du brauchst drei Nachrichten: PlayerCreate, PlayerPosition und PlayerDestroy. Wenn ein Spieler joint, ein Spieler sich bewegt und wenn er den Server verlässt. Du gibts jedem der Spieler einen zwischen Client und Server eindeutige und gleiche ID. (Die ID von der Instance funktioniert da nicht!). Du könntest zum Beispiel einen Array mit allen Spielerinstancen haben, -1 ist ein leerer Slot. Dann gehst du den Array durch und gibts die SlotID aus die noch unbelegt ist. Sagst den anderen Clients das ein Spieler gejoint ist mit dieser Spieler ID. Der Client hat auch einen Array in dem die Instance gespeichert sind:

    GML-Quellcode

    1. global.Spieler[SpielerID] = instance.id;

    Dann wenn z.B. die Spieler Position gesendet wird musst du die Spieler ID wieder mit senden (vom Server aus, nicht vom Client; Der Client muss seine Spieler ID nicht wissen) und die Position. Für den Client könntest du folgenden Code benutzen (nicht fertig):

    GML-Quellcode

    1. with(global.Spieler[SpielerID]) {
    2. x=//position lesen
    3. y=//position lesen
    4. }


    Wenn der Spieler den Server verlässt gibst du den Befehl an die Clients die Spieler Instance einfach wieder zu löschen (und auch hier wieder mit der Spieler-ID).

    Nun muss der Client nurnoch seine Position zum Server senden und Server verteilt diese dann ja weiter.

    Wo bleibt der Code?!?!?!?!

    Gibt keinen. Wenn du nun Schüsse oder so einbauen willst kommste wieder mit der selben Frage. Du sollst lernen und nicht kopieren.


    Hier im Forum gibt es auch eine Datei, die sich "MMO-Example" nennt, da kannste mehr als nur zwei Spieler auf einem Server haben.

    PS.: Deine Rechtschreibung ist nicht die Tollste.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Normalerweise krittel ich ja schon länger nicht mehr an der Rechtschreibung/Audrucksweise einzelner Leute rum, aber bei dir fällt es deswegen doch ziemlich schwer, zu begreifen, was du jetzt eigentlich ausdrücken willst.
    Wenn du diesbezüglich ne chronische Krankheit hast, kannst du natürlich nix dafür - aber du solltest dir für deine Posts vielleicht doch etwas mehr Zeit nehmen und evtl. noch jemanden drübergucken lassen, bevor du sie abschickst. Wenn man nicht erschließen kann, was dein Problem ist, ist Hilfeleistung auch etwas schwer.

    Außerdem wär's nicht schlecht, den Code, in dem du den Fehler vermutest, rumzuzeigen und deine Fragen etwas konkreter zu stellen als "will was machen, geht nicht, wie mach ich's denn am besten?" - wenn man jemandem nämlich alle Infoschnipselchen aus der Nase ziehen muss, verliert man irgendwann die Motivation daran (ein gewisser Abbreviationsnickname darf sich hier gerne mit angesprochen fühlen :P).
    Ich mein, gut, mit dir hat man Nachsicht, weil du noch Anfänger bist, aber brauchbare Fragestellungen sind auch für Anfänger wichtig - vielleicht sogar noch wichtiger, als für fortgeschrittene User, denen man sie automatisch zutraut. Wenn du als Anfänger deine Probleme so schildern kannst, dass man wirklich sofort drübergucken kann, gewinnst du hier einiges an Ansehen, garantiert. ;)
    Konkret heißt das,
    Schritt 1: Kommentier systematisch Codeteile aus und pass Bedingungen an, um den fehlerhaften Codeteil ausfindig zu machen.
    Schritt 2: Wenn du eine Fehlermeldung kriegst, poste sie. Wenn nicht, gib an, wann genau das Programm abstürzt.
    Schritt 3: Poste außerdem den fehlerhaften Codeteil und am besten noch alle anderen, mit denen er interagiert.
    Schritt 4: ?????
    Schritt 5: Profit!

    Das wär's dann von mir. Viel Glück noch!
  • Das " MMO " Example geht nicht´?
    Wenn ich Server und Client starte kommt bei dem Fehlermeldung raus.

    "ERROR in
    action number 1
    of Create Event
    for object server:

    Error defining an external function."

    Unzwar habe ich die winrar datei vom MMO ausgepackt, die 39dll ist auch drin, aber warum? :(
  • kaano123 schrieb:

    Das " MMO " Example geht nicht´?
    Wenn ich Server und Client starte kommt bei dem Fehlermeldung raus.

    "ERROR in
    action number 1
    of Create Event
    for object server:

    Error defining an external function."

    Unzwar habe ich die winrar datei vom MMO ausgepackt, die 39dll ist auch drin, aber warum? :(

    dieser fehler weißt meistens auf einen fehler bei der kommunikation mit der dll hin.
    Da ich die Codes nicht kenne kann ich nur raten was der Fehler ist.
    Entweder hat die Dll die falsche Version oder die Scripts sind fehlerhaft/wurden falsch eingesetzt was sehr schnell passiert wenn man nur sachen löscht ohne die codes dahinter zu verstehen. In dem fall solltest du Vileicht
    komplett neu beginnen statt zu versuchen das example zu dingen zu bewegen für das es nicht gedacht ist
    Es gibt genug Anleitungen die genau das zeigen: wie man 2 spieler erstellt und sie synchron hält.
    man brauct allerdings zum teil gute englisch kentnisse und ein gewisses verständnis von gml was vor allem als Anfänger oft schwer ist.
    Allerdings solltest du wenn du wenn du keine Ahnung von dlls und externen funktionen erst mal Abstand von
    multiplayer projekten nehmen. Auch wenn ich deinen Tatendrang natürlich nicht veringern möchte es ist nur oft frustrierend wenn es dann doch nicht so klappt wie es soll und man nicht weis warum.
    Examples sind hauptsächlich zum verstehen gedacht man kann sie zwar auch als grundlage nehmen jedoch nur, wenn man den code zu 100% versteht und nur zu faul ist selbst zu schreiben. (wie z.b ich ;) )
    Wenn du trotzdem unbedingt multiplayer machen willst guck dir vileicht mal diese extention an:
    Spoiler anzeigen
    gmc.yoyogames.com/index.php?showtopic=521378
    mit ein wenig englisch kenntnissen kannst du hiermit sogar mit D&D brauchbare ergebnisse erzielen allerdings auch nur wenn du dir die Zeit nimmst die Hilfe zu lesen und die Beispiele zu verstehen.
    :rage:

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

  • Joa danke das hatschonmal Funktioniert.
    Ich will kein Neues Thema erstellen aber...

    eine kurze frage: Bei dem MMO Example wenn ich einfach im Skript
    playerlocation
    schreibe findet und wird braun.

    wenn ich in meinem GM mache, und im Script " playerlocation " schreibe sieht er nicht, und macht kein Braun.

    Bei dem MMO example Client (39dll) und bei meinem sind es die GLEICHEN! also wo ist dieser fehler? sodass der das playerlocation nicht findet?

    PS: Darum werden auch nicht die Daten des Spielers gesendet.
  • Okay ich erklärs besser:

    Also in diesem MMO example ( client ) gibt es eine script die nennt sich ' playerlocation ' und zeigt auf Braun.

    Und wenn ich es in meinem Gamemaker dieses Script auf einem Object als Create schreibe zeigt es fehler( also es zeigt nicht auf Braun ).

    Die 39Dll vom MMo example und mein Gamemaker sind gleich, ALLES ist gleich, aber warum wird es bei mir nicht braun?

    PS: Durch diese playerlocation muss die Daten gesendet werden, darum brauche ich es
  • Und wenn ich es in meinem Gamemaker dieses Script auf einem Object als
    Create schreibe zeigt es fehler( also es zeigt nicht auf Braun ).



    Die 39Dll vom MMo example und mein Gamemaker sind gleich, ALLES ist gleich, aber warum wird es bei mir nicht braun?
    Dieses Verhalten nennt man Syntax-Highlighting. Der Game Maker markiert bekannte Wörter (Schlüsselwörter, Ressourcen oder Konstanten). Ich weiß nicht welche Gamer Maker Version du benutzts und wie diese Version die unterschiedlichen Wörter einfärbt, ich würde aber auf die Konstanten tippen, die du wahrscheinlich nicht kopiert hast. Ich glaube damit will das Example die unterschiedlichen Nachrichten Typen markieren.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • So langsam reichts...
    Ohne dich jetzt hier beleidigen zu wollen, aber es muss dir mal klar gemacht werden, dass du so nicht weiter machen kannst.
    Was du machst ist echt nicht mehr ok.

    Ich fasse mal kurz zusammen:
    • Du hast keine/sehr wenig Ahnung vom Gamemaker+GML
    • Anstatt kleine Spiele zu machen, um den Umgang mit dem GM und der GML zu
      lernen, willst du gleich ein tolles Multiplayer Spiel machen mit allem
      drum und dran
    • Alles was du machst ist Copy & Paste
    • Du kannst dein Problem nicht richtig schildern und dich nicht ausdrücken und erwartest trotzdem, dass dir jeder hilft.
    • Du kannst nicht einmal richtig deutsch. Nutzt du den Google Übersetzer
      oder was? Wenn ja, warum gehst du nicht in ein Forum deiner Sprache

    Wenn man eine neue Sprache lernt, fängt man nicht gleich mit dem Schwersten an, wovon man überhaupt keine Ahnung hat. Auch scheinst du allgemein wenig Ahnung zu haben.
    Man fängt mit etwas einfachem an, schaut sich Tutorials an, probiert ein wenig rum und liest, wenn man mal nicht weiter kommt, in der Hilfe nach, anstatt gleich ein neuen Thread zu starten.

    Aber nein, du musst sofort mit Multiplayer anfangen.
    Und zwar mit einer sehr ausgereiften Programmiertechnik: Copy & Paste, auch genannt die "Guttenberg Methode".
    Und dann, wenn du ein Problem hast, weil du keinen blassen Schimmer hast, was du überhaupt machst, kommst du gleich wieder zurück ins Forum und postest ein grammatikalisches Massaker darüber, dass dein Spiel nicht mehr funktioniert. Fehlermeldungen, Vermutungen, etc bleiben völlig weg, wer braucht das denn auch, wir können alle hellsehen.

    Da dann letztendlich niemand eine Lösung für dich hat, entweder weil niemand Lust hat dir zu helfen, oder weil man dich einfach nicht versteht, kommt ein weiterer Post, in dem du nach einem example fragst, dass am besten schon vollkommen so funktioniert, wie du es willst, sodass du es nur doch in dein Spiel einfügen musst.
    Wenn du dann vielleicht etwas nach deiner Vorstellung bekommen hast, musst du es vielleicht doch noch einmal verändern, weißt aber nicht wie und wir kommen wieder zum vorherigen Absatz.
    Falls niemand etwas für dich hat führt das wieder zu einem 3.Post deinerseits und die ganze Geschichte endet in endlosem Spam.

    Ich bitte dich also, wenn du Interesse daran hast, wirklich ein Spiel selbst zu programmieren, dann leg deine ganzen überdimensionierten Projekte auf Seite und fang bei den Basics an.
    Und dann, Stück für Stück kommst du irgendwann zu dem Punkt, bei dem du weißt, wie alles funktioniert, wie du herangehen musst und wie du deine Probleme selber löst.
    Wenn bei dir aber alles ganz schnell sein muss, sodass du keine Zeit hast, die Basics zu lernen und lieber hier und da was zusammen klaust, dann bist du hier eindeutig falsch.


    Ich hoffe, dass du dich für eine dieser Möglichkeiten entscheidest und diesen Post nicht einfach ignorierst.

    Hier sind noch ein paar nützliche Links:
    GML - Die Einsteigerreferenz
    Yoyogames Tutorials
    Die deutsche Übersetzung der Hilfe


    mfg Marvin
  • Dankeschön Henrik, dafür gibts ein ' hilfreichste ' button..

    Marvin wenn du nicht mir helfen möchtest, dsnn ist dieser Threrad für dich leider falsch gewesen.
    Nimm Beispiel an Henrik, auch wenn ich ihm auf die nerven gehe, erläutert mir ständlich, aber gibt gewissen mir den Problem nach.

    In deinem Verhaltensweiße, oder deines gesendeten Post, ist das nicht was ich als Antwort gesucht habe, " ich will dich nicht Beleidigen aber... " das kann ich auch sagen.
    Ich bin leider kein Deutscher, um den Rechtschreibung oder des deutschen Sprache ohne fehlers aufzuschriben kann, dazu sage ich auch nichts.
    Aber das mit Translozer...tut mir leid.
  • kaano123 schrieb:

    Nimm Beispiel an Henrik, auch wenn ich ihm auf die nerven gehe, erläutert mir ständlich, aber gibt gewissen mir den Problem nach.
    Und was bringt es dir, wenn dir jemand die Lösung sagt und du damit nichts anzufangen weißt? Soll er dein Spiel programmieren?
    Auch wenn deine letzte Frage eigentlich nichts mit Programmieren zu tun hatte, darfst du dir das ruhig für alle anderen Fragen die du schon gestellt hast merken.


    kaano123 schrieb:

    In deinem Verhaltensweiße, oder deines gesendeten Post, ist das nicht was ich als Antwort gesucht habe, " ich will dich nicht Beleidigen aber... " das kann ich auch sagen.
    Um ehrlich zu sein, war das nur eine Höflichkeitsfloskel...



    kaano123 schrieb:

    Ich bin leider kein Deutscher, um den Rechtschreibung oder des deutschen Sprache ohne fehlers aufzuschriben kann, dazu sage ich auch nichts.
    Warum gehst du dann nicht in ein Forum deiner Sprache?


    kaano123 schrieb:

    Marvin wenn du nicht mir helfen möchtest
    Im Grunde war der untere Teil meiner Antwort dazu gedacht dir zu helfen. Zwar nicht zu deinem momentanen Problem, allerdings für die Zukunft, wenn du weiterhin programmieren willst (auch wenn das, was du zur Zeit machst, das Gegenteil ist).
    Es bringt einfach nichts, C&P zu benutzen und alles zusammenzuklauen. Aber anscheinend willst du das nicht begreifen.
    Mein Post war dazu da, um es dir mal deutlich zu machen, dass du so nichts erreichen kannst/wirst.
    Und ohne vorher Kritik zu äußern, hätte die ganze Sache sowieso nichts gebracht.
    Außerdem, wenn ich es nicht getan hätte, hätte es demnächst irgendeinanderer getan.
  • Okay, ich werde dann keines neue thema (zurzeit) mehr öffenen.
    Aber diese frage die ich grad gestellt habe Funktioniert immernoch nicht.

    In diesem Example Gamemaker wird dieser ,, playerlocation ,, braun, wenn ich es bei mir hinzufüge wird es nicht braun, und darum Funktioniert der Übertragund des Players nicht.

    //send my position to server
    clearbuffer();
    writebyte(playerlocation); // DAS HIER WIRD NICHT BRAUN...
    writeshort(x); // das , x , wird braun.
    writeshort(y); // das ,y , auch.
    sendmessage(objControl.socket);
    //repeat alarm
    alarm[0] = 2;

    Ich benutze Gamemaker 8 Pro.