Code für einen UDP-Chat
Übersicht

![]() |
SmokieBetreff: Code für einen UDP-Chat |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich hatte mal vor langem einen Chat mit BB geproggt, da es mir nix nützt habe ich mit gedacht ich stelle den Code hier rein. Sollte funktionieren ist zum Teil etwas unübersichtlig aber geht ![]() Code: [AUSKLAPPEN] ;Wiedermal ein Chat Graphics 640,480,16,2 SetBuffer BackBuffer() AppTitle "Mapa-Chat-Attack" ;Variablen etc. Type player Field name$ Field ip$ Field id Field port Field timeout End Type Type zeile Field zeilentxt$ Field zeilenpos End Type stdfont=LoadFont("Arial",14,0,0,0) Global Stream Global TxT$ Global zeilex=385 Global i=0 Global okay=1 Global deinname$="Noname" Global deineid Global counter ;Zählt die geschriebenen Chatmsg Global maxzeilen=27 ;Die Anzahl der Maximal an zu zeigenden Zeilen Global zeit$,time Global Timeout=10000 ;Millisecs bis der client aufhört zu versuchen dem Server beizutreten Global Playerzahl=1 Global server=0 Global internetip$ Global ip,clientid,serverip$ Global ipneu Global absenderport Global woeter=47 Dim eingabezeichen$(5) Dim chatzeilen$(28) Dim wort$(woeter) wort$(0)="gg" wort$(1)="Good Game" wort$(2)="lol" wort$(3)="Laughing out Loud" wort$(4)="cu" wort$(5)="See you" wort$(6)="brb" wort$(7)="Be right back" wort$(8)="n1" wort$(9)="Nice one" wort$(10)="arschloch" wort$(11)="*Zensiert*" wort$(12)="wixer" wort$(13)="*Zensiert*" wort$(14)="depp" wort$(15)="*Zensiert*" wort$(16)="arsch" wort$(17)="*Zensiert*" wort$(18)="hurensohn" wort$(19)="*Zensiert*" wort$(20)="blödman" wort$(21)="*Zensiert*" wort$(22)="/a" wort$(23)="^^" wort$(24)="depp" wort$(25)="*Zensiert*" wort$(26)="hure" wort$(27)="*Zensiert*" wort$(28)="wixer" wort$(29)="*Zensiert*" wort$(30)="scheiße" wort$(31)="*Zensiert*" wort$(32)="fuck" wort$(33)="*Zensiert*" wort$(34)="hurenbock" wort$(35)="*Zensiert*" wort$(36)="mofo" wort$(37)="*Zensiert*" wort$(38)="mofo" wort$(39)="*Zensiert*" wort$(40)="rofl" wort$(41)="rowling on the floor laughing" wort$(42)="fickne" wort$(43)="*zensur*" wort$(44)="ficken" wort$(45)="*zensur*" wort$(46)="scheisse" wort$(47)="*zensur*" .start ;Hier wird der Modus (Host oder Client) abgefragt. SetFont stdfont Color 0,140,255 ;MPPP-Standart Color Print "Mapa-Chat-Attack" Print "Ein Projekt von www.mapa-plasma.de.tp" Print " " Color 200,175,60 ;Fragen Color Print " " Print " " Print "Was wollen Sie machen?" Print "(H)osten" Print "(J)oinen" Print "(V)erlassen" Repeat If KeyHit(35) Then Gosub hosten Exit If KeyHit(36) Then Gosub joinen Exit If KeyHit(47) Or KeyHit(1) Then End Forever ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Hosten .hosten Server=1 deineid=1 Stream=CreateUDPStream(2000) If Not Stream <> 0 Then ;Wenn der Stream nicht erstellt werden konnte... Color 255,0,0 ;Fehlermeldungs-Frabe Print "_____________________________________________________________________" Print "" Print "UDP-Stream konnte nicht erstellt werden stellen Sie sicher, dass" Print "Sie den Port 2000 im Router und in der Firewall freigeschaltet haben." Print "Taste drücken um es noch einmal zu versuchen." Print "_____________________________________________________________________" Print "" WaitKey() Goto start EndIf Color 0,255,0 ;Alles im [Grünen] Bereich ;Wenn der Stream erstellt werden konnte.. Print "_____________________________________________________________________" Print "" Print "Der UDP-Stream wurde erstellt und auf Mapa-Plasma angemeldet!" erstellmin$=Mid$(CurrentTime(),4,2) tcp=OpenTCPStream("http://mapaplasman.ma.funpic.de",80) If Not tcp Print "Fehlgeschlagen": WaitKey: End WriteLine tcp,"GET http://mapaplasman.ma.funpic.de/Chat_datein/ip.php" WriteLine tcp,Chr$(10) While Not Eof(tcp) internetip$=ReadLine$( tcp ) Print "Ihrer IP-Adresse ist: " + internetip$ Print "Drücken Sie eine Taste um fortzufahren." Wend CloseTCPStream tcp Print "_____________________________________________________________________" ;Bei der HP anmelden tcp=OpenTCPStream("http://mapaplasman.ma.funpic.de",80) If Not tcp Print "Fehlgeschlagen": WaitKey: End WriteLine tcp,"GET http://mapaplasman.ma.funpic.de/Chat_datein/script.php?name=" + deinname$ + "&min=" + erstellmin$ + "&ip=" + internetip$ + "&pw=*****&user=mapaplasman" WriteLine tcp,Chr$(10) If Eof(tcp) Print "Fehlgeschlagen.": WaitKey: End While Not Eof(tcp) Print ReadLine$( tcp ) Wend CloseTCPStream tcp Color 200,175,60 FlushKeys() Print " " eingabename$=Input$("Geben Sie einen gewünschten Nicknamen an: ") If eingabename$="" Then Name$="NoName" deinname$=eingabename$ If create_player(0,eingabename$,ipint(internetip),1,2000) = 1 Then Color 0,255,0 ;Alles im [Grünen] Bereich Print "_____________________________________________________________________" Print " " Print "Der Spieler wurde registriert!" Print "Drücken Sie eine Taste um zu chatten" Print "_____________________________________________________________________" WaitKey() Goto Schleife Else Color 255,0,0 ;Fehler Print "_____________________________________________________________________" Print " " Print "Der Spieler konnte nicht erstellt werden!" Print "Drücken Sie eine Taste um es noch einmal zu versuchen." Print "_____________________________________________________________________" CloseUDPStream Stream WaitKey() Print " " Print " " Goto start EndIf ;---------------------------------------------------- .joinen server=0 FlushKeys() Color 0,255,0 Print " " Print "_____________________________________________________________________" Print " " Color 200,175,60 serverip$=Input("Geben Sie die IP-Adresse des Servers an(Nichts eingeben um Lokal zu testen): ") If serverip$="" Then serverip$="127.0.0.1" deinname$=Input("Geben Sie einen Nicknamen an: ") Print "Anmelden..." Stream=CreateUDPStream(2001) If Not Stream <> 0 Then ;Wenn der Stream nicht erstellt werden konnte... Color 255,0,0 ;Fehlermeldungs-Frabe Print "_____________________________________________________________________" Print "" Print "UDP-Stream konnte nicht erstellt werden stellen Sie sicher, dass" Print "Sie den Port 2000 im Router und in der Firewall freigeschaltet haben." Print "Taste drücken um es noch einmal zu versuchen." Print "_____________________________________________________________________" Print "" WaitKey() Goto start EndIf Print "Joining..." Print "Timeout nach 10 Sekunden" WriteByte Stream,0 WriteLine Stream,deinname$ SendUDPMsg Stream,ipint(serverip$),2000 ;Auf Antwort warten timer=MilliSecs() Repeat If MilliSecs()-timer > timeout Then ;Timeout?! Color 255,0,0 Print "_____________________________________________________________________" ; Print "Die Anmedlung ist fehlgeschlagen! Timeout!" Print "Drücken Sie eine Taste um es nocheinmal zu versuchen." Print "_____________________________________________________________________" CloseUDPStream Stream ; WaitKey() ; Goto start ; EndIf If RecvUDPMsg(Stream) Then ;Wenn man eine Antwort bekommen hat If ReadByte(Stream)=1 Then ;Wenn die Daten des Clienten kommen bekommeneid=ReadByte(Stream) ip=ReadLine(stream) create_player(0,deinname$,ip,bekommeneid,2001) deineid=bekommeneid EndIf Color 0,255,0 ;Alles im [Grünen] Bereich Print "_____________________________________________________________________" Print " " Print "Der Spieler wurde registriert!" Print "Um den Chat zu starten drücken Sie eine Taste." Print "_____________________________________________________________________" WaitKey() Goto Schleife EndIf Forever time=MilliSecs() ;Hier ist die Runtime .schleife Repeat Cls zeit$=LSet(CurrentTime(),5) ClsColor 0,140,255 eingabe() zeigeuser() If server=1 Then get_msg_server() ElseIf server=0 Then get_msg_client() EndIf For z.zeile= Each zeile Text 5,z\zeilenpos,z\zeilentxt$ Next Flip Until KeyHit(1) CloseUDPStream Stream End ;;;;;;;;;;;;;;;;;;;;;;;;;;;;FUNCTIONS Function ipfunktion$(inte=0) ;-> Eigene IP angeben als String oder Integer Local ips, ip, ipstr$ ; ips=CountHostIPs("") ; If Not ips Then Return 0 ; ip=HostIP(ips) ; If inte=1 Then Return ip ;Integer-IP ausgeben ipstr$=DottedIP(ip) ;String-IP ausgeben Return ipstr$ ; End Function ; Function create_player(host=0,name$="",ip$=0,id=1,port=2000) FlushKeys() ;Neuen Typ anlegen pl.player= New player pl\name$=name$ pl\port=port pl\timeout=10 If host=1 Then pl\ip$=Internetip$ Else pl\ip$=ip$ EndIf If host=1 Then ;Falls der Host einen neuen Player creaiert deinname$=name$ pl\id=1 Else pl\id=id EndIf Return 1 End Function Function zeigeuser() playeranzahl=0 Color 0,255,0 Rect 520,0,120,480 Color 255,0,0 For pl.player= Each player If pl\name$ <> "" Then playeranzahl=playeranzahl + 1 EndIf Text 580,playeranzahl * 13,pl\name$,1 Next End Function Function eingabe() ;Das Eingabefeld zeichnen Color 255,255,255 Rect 0,380,640,100 If okay=1 Then taste=GetKey() If taste > 31 Or taste=94 Then Txt$=Txt$ + Chr(taste) Color 255,0,0 Text 5,zeilex,TxT$ +"|" If KeyHit(14) And Len(TxT$)>0 Then txt$=LSet(Txt$, Len(TxT$)-1) ;Backspace <-Löschen EndIf If Len(Txt$) > 79 Then ;Zeilenumbruch erzwingen eingabezeichen$(i)=txt$ i=i + 1 zeilex=zeilex + 13 Txt$="" EndIf For x= 0 To 5 If Len(eingabezeichen$(x)) > 0 Then Text 5,385 + (x * 13) ,eingabezeichen$(x) EndIf Next If i = 6 And Len(txt$) > 71-(Len(deinname$)) Then okay=0 i=6 EndIf If KeyHit(28) Then i=0 ;Hier wird die Naricht gesendet For x= 0 To 5 If Len(eingabezeichen$(x)) > 0 Then For pl.player = Each player If pl\id <> deineid Then WriteByte Stream,1 WriteLine Stream,eingabezeichen$(x) WriteLine Stream,deinname$ SendUDPMsg Stream,pl\ip$,pl\port EndIf Next chatmsg(">" + deinname$ + " (" + zeit$ + ") : " + eingabezeichen$(x)) ElseIf Len(txt$) > 0 And x = 5 Then For pl.player = Each player If pl\id <> deineid Then WriteByte Stream,1 WriteLine Stream,txt$ WriteLine Stream,deinname$ SendUDPMsg Stream,pl\ip$,pl\port EndIf Next chatmsg(">" + deinname$ + " (" + zeit$ + ") : " + txt$) EndIf Next For x = 0 To 5 eingabezeichen$(x)="" Next Txt$="" i=0 EndIf End Function ;UDP-Messages auswerten und verarbeiten Function get_msg_server() ;Hat jemand ausgetimet If MilliSecs() - 1000 >= time Then time=MilliSecs() For pl.player = Each player pl\timeout=pl\timeout - 1 If pl\timeout = 0 And pl\id <> deineid Then loeschid=pl\id ;STIMMT NET--------------------------------------------------------- For pl.player = Each player WriteByte Stream,6 WriteByte Stream,loeschid SendUDPMsg Stream,pl\ip$,pl\port Next Exit EndIf Next EndIf While RecvUDPMsg(Stream) If ReadAvail(Stream) Then msgid=ReadByte(Stream) Select msgid Case 0 ;Anmeldung playerzahl=playerzahl+1 clientid=playerzahl name$=ReadLine(Stream) ip=UDPMsgIP(Stream) iples$=DottedIP(ip) absenderport=UDPMsgPort(Stream) create_player(0,name$,ip,clientid,absenderport) WriteByte Stream,1 WriteByte Stream,clientid WriteLine Stream,ip SendUDPMsg Stream,ip,2001 chatmsg("*** "+ name$ + " ist dem Chat um " + zeit$ + " beigetreten ***") ;Die Daten des neuen Clienten an alle anderen senden For pl.player= Each player If pl\id <> deineid And pl\id <> clientid Then ;Die Daten nicht an sich oder den anderen neuen Clienten senden WriteByte Stream,2 WriteByte Stream,clientid WriteLine stream,name$ WriteLine stream,ip WriteInt stream,absenderport SendUDPMsg Stream,pl\ip$,pl\port EndIf Next For pl.player= Each player ;Die Daten der anderen Clienten an den neuen Clienten schicken If pl\id <> clientid Then WriteByte Stream,4 WriteByte Stream,pl\id WriteLine Stream,pl\name$ WriteLine Stream,pl\ip$ WriteInt Stream,pl\port SendUDPMsg Stream,ip,absenderport EndIf Next Case 1 ;Naricht naricht$=ReadLine(Stream) absender$=ReadLine(Stream) chatmsg(">" + absender$ + " (" + zeit$ + ") : " + naricht$) Case 5 ;Timeout verhindern timeid=ReadByte(Stream) For pl.player = Each player If pl\id=timeid Then pl\timeout=10 EndIf Next Case 6 ;Ein Spieler hat ausgetimed loeschid=ReadByte(stream) For pl.player = Each player If pl\id = loeschid Then chatmsg("*** "+ pl\name$ + " hat den Chat um " + zeit$ + " Uhr verlassen ***") Delete pl.player EndIf Next End Select EndIf Wend End Function Function get_msg_client() If MilliSecs() - 5000 >= time Then ;Damit man nicht gekickt wird ^^ time=MilliSecs() WriteByte Stream,5 WriteByte Stream,deineid SendUDPMsg Stream,ipint(serverip$),2000 EndIf While RecvUDPMsg(Stream) If ReadAvail(Stream) Then msgid=ReadByte(Stream) Select msgid Case 1 ;Naricht naricht$=ReadLine(Stream) absender$=ReadLine(Stream) chatmsg(">" + absender$ + " (" + zeit$ + ") : " + naricht$) Case 2 ;Ein neuer Client ist dem Spiel beigetreten id=ReadByte(stream) name$=ReadLine(Stream) ip=ReadLine(Stream) absenderport=ReadInt(stream) create_player(0,name$,ip,id,absenderport) chatmsg("*** "+ name$ + " ist dem Chat um " + zeit$ + " beigetreten ***") Case 4 ;Die Daten der anderen User empfangen id=ReadByte(stream) name$=ReadLine(Stream) ipneu=ReadLine(Stream) absenderport=ReadInt(Stream) create_player(0,name$,ipneu,id,absenderport) Case 6 ;Ein Spieler hat ausgetimed loeschid=ReadByte(stream) For pl.player = Each player If pl\id = loeschid Then chatmsg("*** "+ pl\name$ + " hat den Chat um " + zeit$ + " Uhr verlassen ***") Delete pl.player EndIf Next End Select EndIf Wend End Function ;Narichten ausgeben Function chatmsg(msg$) counter=counter+1 For co=0 To woeter - 1 Step 2 If Instr(Lower$(msg$),wort$(co)) Then msg$=Replace(Lower$(msg$),wort$(co),wort$(co+1)) Next If counter=maxzeilen Then For z.zeile=Each zeile If z\zeilenpos / 13 <> (maxzeilen -1) Then o.zeile= After z Text 100,100, o\zeilentxt$ z\zeilentxt$=o\zeilentxt$ ElseIf z\zeilenpos / 13 = (maxzeilen -1) Then z\zeilentxt$=msg$ EndIf Next counter=counter - 1 Else z.zeile=New zeile z\zeilentxt$=msg$ z\zeilenpos=counter * 13 EndIf End Function Function ipint(inputIP$) ;-> wandelt ip$ in interger um Local break1,break2,break3,add1,add2,add3,add4,ipreturn ; break1 = Instr(inputIP$,".") ; break2 = Instr(inputIP$,".",break1+1) ; break3 = Instr(inputIP$,".",break2+1) ; add1 = Mid(inputIP$,1,break1-1) ; add2 = Mid(inputIP$,break1+1,break2-1) ; add3 = Mid(inputIP$,break2+1,break3-1) ; add4 = Mid(inputIP$,break3+1) ; ipreturn=(add1 Shl 24) + (add2 Shl 16) + (add3 Shl 8) + add4 ; Return ipreturn ; End Function ; Man kann den Chat auch umändern zu einem Professionellen Ego-Shooter aber das überlasse ich euch. Und bitte einen eigenen Script verwenden nicht diesen hier: Code: [AUSKLAPPEN] WriteLine tcp,"GET http://mapaplasman.ma.funpic.de/Chat_datein/ip.php" zum testen dürft ihr das aber lassen oder mich fragen Grüße Smokie Edit: Wir net bei der Hp angemeldet weil ich das pw nihct im Code habe aber sonst sollte es gehen |
||
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer. Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet |
- Zuletzt bearbeitet von Smokie am So, Feb 09, 2014 14:23, insgesamt einmal bearbeitet
![]() |
BlitzChecker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was muss denn in dem eigenen PHP-Skript stehen?
Geht das so? Code: [AUSKLAPPEN] <?php
$ip = GETENV("REMOTE_ADDR"); die($ip); ?> |
||
www.xairro.com |
![]() |
Smokie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh ja, das habe ich vergessen:
Code: [AUSKLAPPEN] <?php echo $_SERVER['REMOTE_ADD']; ?> Grüße Smokie |
||
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer. Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet |
- Zuletzt bearbeitet von Smokie am Mo, Nov 28, 2005 17:34, insgesamt einmal bearbeitet
![]() |
BlitzChecker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke!
Mein Code war ja fast richtig... ![]() |
||
www.xairro.com |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group