Wird das so was?-UDP Multiplayer [NOCHMAL EIN NEUES PROBLEM]

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Tankbuster

BeitragDi, Jun 12, 2007 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Och MAS... das ist doch ne ganz einfache sache Very Happy
Zitat:
string$=""
For c.client=Each client
string$=string$+c\name
next

WriteString(udp,string$) ;dem neuen spieler alle spieler zuschicken
SendUDPMsg udp,neuerplayerip,neuerplayerport ;UDP Message senden
Twitter
Download Jewel Snake!
Windows|Android

mas93

BeitragDi, Jun 12, 2007 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm ich habs jetzt so gemacht:

Code: [AUSKLAPPEN]


If newplayer=1 Then
WriteByte(udp,4)


For c.client=Each client
pp$=pp$+c\name
WriteString(udp,pp$) ;dem neuen spieler alle spieler zuschicken
Next

SendUDPMsg udp,neuerplayerip,neuerplayerport ;UDP Message senden

EndIf



wenn ich den code reintu, bemerkt der server nichmehr wenn ein neuer spieler reinkommt.

Wenn ich ihn raustue dannn schon.

Was könnte an diesesm code blockieren?
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Noobody

BeitragMi, Jun 13, 2007 8:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann es sein, dass du nach dem Schicken der Spieler die Variable newplayer nicht mehr auf null setzt?
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

mas93

BeitragMi, Jun 13, 2007 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
nee, daran lags nich, hab das problem aber behoben.

So, ich hab ein neues Problem und zwar läuft das prog zu 2. ohne probleme.
Wenn es aber mehr spieler sind und alle laufen, wird immer ein spieler nicht angezeigt.

Könnt ihr sagen warum??

Ich hab die dateien einfach mal hochgeladen.
Wäre nett wenns ihr einfach mal 3-mal auf m PC starten könntet und mir evt. weiterhelfen könntet.

mfg
marius

https://www.blitzforum.de/upload/file.php?id=1639

jj2

BeitragFr, Jun 15, 2007 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo,also ich programmiere ja mit marius zusammen und wir kommen einfach nicht weiter.

Habt ihr keine idee woran das liegt??

mfg
jj2
...:::ICH WOHNE IN DER GESÜNDESTEN STADT DEUTSCHLANDS:::...
Meine Pages : www.lpbase.de
mein projekt :Authority von Impulse Soft
User posted image

Progger93

Betreff: writeshort nehmen

BeitragFr, Jun 15, 2007 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde writeshort anstatt writebyte nehmen da writy byte nur ein byte versendet und eure x pos nicht in ein byte passt (1 Byte=Zahlen von 0-255)
für euer Problem weiß ich eigentlich auch nicht weiter.
MfG Pascal
Win 7|T7250@2.0Ghz|3GB RAM|M8600GT

Silver_Knee

BeitragFr, Jun 15, 2007 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
so, was mir auffällt:
1. der Clinent sieht sich selbst nicht als client sodass er sich doppelt darstellt

~weitere folgen mit EDIT~

EDIT

2. Code: [AUSKLAPPEN]
      Case 1
        name$ = ReadString(udp)  ;Name des sendenden Clients
       
      For c.client=Each client
             c\x = ReadByte(udp)  ;Nachricht des sendenden Clients
              c\y = ReadByte(udp)
      Next       

da fehlt eine Namensabfrage: welcher c\name hat eigendlich gesendet und muss an die neue position??
besser:
Code: [AUSKLAPPEN]
      Case 1
        name$ = ReadString(udp)  ;Name des sendenden Clients
       
      For c.client=Each client
         If c\name=name;ist der client-name der name des senders
             c\x = ReadByte(udp)  ;Nachricht des sendenden Clients
              c\y = ReadByte(udp)
         EndIf
      Next     


EDIT

3. SO nun nochmal zum Server die sache mit variablen und new player war ne gute idee ich hab das allerding nochmal zusammengefasst und zwar wenn der server einem anderem spieler(c2) bescheid sagt das ein neuer (c) hinzukommt kann er auch gleich danach dem neuen (c) sagen dass es diesen anderen (c2) auch gibt. was ein satz.... so sieht das dann aus Code: [AUSKLAPPEN]
       For c2.client = Each client
          If Not c2 = c
            WriteByte(udp,2)  ;Nachrichtentyp 2 senden = Client beigetreten
            WriteString(udp,name$)  ;Name weiterleiten
            SendUDPMsg udp,c2\ip,c2\port  ;UDP Message senden
         WriteByte(udp,2)
         WriteString(udp,c2\name) ;dem neuen spieler alle spieler zuschicken
         SendUDPMsg udp,c\ip,c\port ;UDP Message senden
          EndIf
        Next


Acso und nochwas: E HAT GEKLAPPT MIT 3 CLIENTS...

mas93

BeitragSa, Jun 16, 2007 9:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahh,cool vielen dank!!
So is das alles viel besser!!

Gute idee mit dem beitrtetndem spielr alle anderen zuschicken.

DANKE!
hat wunderbar funktioniert




Nur gibts n neues problem^^
Also, ich hab jetzt, da das udp online grungerüst funktioniert hat, mal versucht das in das eigentliche bis jetzt kleine game einzubauen.

Es kommt auch keine Fehlermeldung usw. nur habe ich, so sieht es aus, irgend ne variable doppeltbelegt oder falschverwendet, da irgendwas mit der bewegung vom gegner + spieler nicht stimmt.
Sie bewegen sich zwar, nur etwas komisch.

Wäre nett wenn sich nochmal einer opfern würde und sich das anschaun könnte.

Ich such jetzt echt schon ewig rum, finde aber den fehler nich.

Ich hab die Datei wieder upgeloadet:

https://www.blitzforum.de/upload/file.php?id=1651

mfg
Marius

Wäre nett wenn ihr mir nochmal helfen würdet
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Silver_Knee

BeitragMo, Jun 18, 2007 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst deinen eigenen spieler als myplayer.client definieren so kannst du mit For c=each client ... drawimage.... next alle clients anzeigen

mas93

BeitragDi, Jun 19, 2007 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
aber wo und warum soll ich den so definieren??

Für meinen spieler verwende ich doch garkein type
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Silver_Knee

BeitragDo, Jun 21, 2007 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab inzwischen herausgefunden woran dein ffehler ist:
Code: [AUSKLAPPEN]
For p.client= Each client
DrawImage gegnerpic,p\ppx,p\ppy
Next


DrawImage spieler,ppx-scrollx,ppy-scrolly
so entweder:
ppx-scrollx
oder
p\ppx

und die richtige antwort ist Code: [AUSKLAPPEN]
For p.client= Each client
DrawImage gegnerpic,p\ppx-scrollx,p\ppy-scrollx
Next


DrawImage spieler,ppx-scrollx,ppy-scrolly

Das war alles^^

mas93

BeitragDo, Jun 21, 2007 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm, kannst du mal dein code pasten??
Weil ich habs geändert stimmt aber immer noch nicht.
Wäre nett

mfg
marius
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Silver_Knee

BeitragFr, Jun 22, 2007 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
jetz awa mal ich hab mir dein zeug runtergeleaden und hab aus dem Code: [AUSKLAPPEN]
For p.client= Each client
DrawImage gegnerpic,p\ppx,p\ppy
Next

diesen Code: [AUSKLAPPEN]
For p.client= Each client
DrawImage gegnerpic,p\ppx-scrollx,p\ppy-scrolly
Next

beim NewClient.bb gemacht habs 2 mal gestartet und dann läuft das immer etwas zeitverzögert.... aber es läuft.... siehe dasda: https://www.blitzforum.de/upload/file.php?id=1672

mas93

BeitragSa, Jun 23, 2007 9:30
Antworten mit Zitat
Benutzer-Profile anzeigen
cool thx, hab vorher irgendwas falsch vertauscht jetzt gehts
Vielen dank!

Wenn das spiel was wird stehst du in den credits FTC und das ganze blitzforum^^

Also danke.

ICh meld mich wenn ich wieder ne frage hab^^
www.lpbase.de
Meine Linkin Park Fanseite[Noch im Aufbau]

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group