Nochmal Chat

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

Felix

Betreff: Nochmal Chat

BeitragMo, Dez 12, 2005 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
hier hab ich nochmal zwei probleme
Problem 1: wenn ich den Schalter "Sendenschalter" anklicke passiert nur beim ersten mal etwas
Problem 2: wenn ich das label erstelle, wo der text dann stehen soll, stehen dort nur Zahlen
könnt ihr mir helfen?

Hier ist der Quellcode:

BlitzBasic: [AUSKLAPPEN]

Fenster = CreateWindow (\"Chat\", 0,0,800,670)
menu10 = CreateMenu (\"Datei\", 10, WindowMenu(Fenster))
menu20 = CreateMenu (\"Bearbeiten\", 20, WindowMenu(Fenster))

;
menu11 = CreateMenu (\"Spiel erstellen\", 11, menu10)
menu12 = CreateMenu (\"Anmelden\", 12, menu10)
menu13 = CreateMenu (\"Abmelden\", 13, menu10)
menu14 = CreateMenu (\"Ende\", 14, menu10)
;
menu21 = CreateMenu (\"Benutzer wechseln\", 21, menu20)
menu22 = CreateMenu (\"Registrieren\", 22, menu20)


UpdateWindowMenu Fenster

Repeat
Ereigniss = WaitEvent()
Wahl = EventData()
Select Ereigniss
Case $401
If EventSource() = Erstellschalter Then ;Spiel erstellung
Host = HostNetGame(\"Felix\")
SpielerNR = CreateNetPlayer(Namenabfrage$)
If Host = 0 Then Notify \"Starten des Chats fehlgeschlagen!\"
If Host = 1 Then Notify \"Chat als Client beigetreten!\"
If Host = 2 Then Notify \"Chat als Host wurde gestartet\"
FreeGadget Erstellung
Gosub Channel
EndIf

If EventSource() = Anmeldeschalter Then ;Anmeldung
If Host = 2 Then Client = JoinNetGame(Anmeldename$,IPabfrage$) ;212.93.20.18
SpielerNR2 = CreateNetPlayer(Namenabfrage2$)
If Client = 0 Then Notify \"Starten des Chats fehlgeschlagen!\"
If Client = 1 Then Notify \"Chat als Client beigetreten!\"
If Client = 2 Then Notify \"Chat als Host wurde gestartet\"
FreeGadget Anmeldung
Gosub Channel
EndIf

If EventSource() = Bestaetigungsschalter ;Registration
Notify \"Erfolgreich gespeichert!\"
FreeGadget Registration
EndIf

Case $803 ;Ende
End
Case $1001 ;Menu benutzen
Select Wahl
Case 11 ;Spiel erstellen
Erstellung = CreateWindow(\"Erstellung eines Spiels\", 300,200, 400,300)
Name$ = CreateLabel(\"Ihr Name:\", 5,0, 180,20, Erstellung)
Passwort$ = CreateLabel(\"Ihr Passwort:\", 5,45, 180,20, Erstellung)
Namenabfrage$ = CreateTextField (5,20, 180,20, Erstellung)
Passwortabfrage$ = CreateTextField (5,65, 180,20, Erstellung, 1)
Erstellschalter = CreateButton (\"Erstellen\", 60,140, 100,20, Erstellung, 1)

Case 12 ; Anmelden
Anmeldung = CreateWindow(\"Anmedung zu einem Spiel\", 300,200, 400,300)
Anmeldename$ = CreateLabel(\"Ihr Name:\", 5,0, 180,20, Anmeldung)
Passwort2$ = CreateLabel(\"Ihr Passwort:\", 5,45, 180,20, Anmeldung)
IP$ = CreateLabel(\"Die IP-Adresse:\", 5,90, 180,20, Anmeldung)
Namenabfrage2$ = CreateTextField (5,20, 180,20, Anmeldung)
Passwortabfrage2$ = CreateTextField (5,65, 180,20, Anmeldung, 1)
IPabfrage$ = CreateTextField (5,110, 180,20, Anmeldung)
Anmeldeschalter = CreateButton (\"Anmelden\", 60,140, 100,20, Anmeldung, 1)

Case 13 ;Abmelden
DeleteNetPlayer SpielerNR
Notify \"Spieler wurde erfolgreich abgemeldet!\"
;ClsColor(255,255,255)
;Cls

Case 14 ;Ende
End

Case 22 ;Registration
Registration = CreateWindow(\"Registration bei einem Spiel\", 300,200, 400,300)
Vorname$ = CreateLabel(\"Ihr Vorname*\", 5,0, 180,20, Registration)
Nachname$ = CreateLabel(\"Ihr Nachname*\", 5,45, 180,20, Registration)
Wohnort$ = CreateLabel(\"Ihr Wohnort*\", 5,90, 180,20, Registration)
Postleitzahl$ = CreateLabel(\"Postleitzahl*\", 150,90, 180,20, Registration)
Strasse$ = CreateLabel(\"Straße*\", 5,135, 180,20, Registration)
Hausnummer$ = CreateLabel(\"Hausnummer*\", 150,135, 180,20, Registration)
Pflicht$ = CreateLabel(\"* - muss angegeben werden - bitte gibt keine Falschen Angaben an\", 5, 175, 180,20, Registration)
Vornameabfrage$ = CreateTextField (5,20, 130,20, Registration)
Nachnameabfrage$ = CreateTextField (5,65, 130,20, Registration)
Wohnortabfrage$ = CreateTextField (5,110, 130,20, Registration)
Postleitzahlabfrage$ = CreateTextField (150,110, 130,20, Registration)
Strasseabfrage$ = CreateTextField (5,155, 130,20, Registration)
Hausnummerabfrage$ = CreateTextField (150,155, 130,20, Registration)
Bestaetigungsschalter = CreateButton (\"Speichern\", 100,190, 100,20, Registration, 1)
End Select
End Select
Forever


;Unterprogramme

.Channel
Nachricht$ = CreateTextField (0,570, 500,20, Fenster)
NachrichtAN$ = SpielerNR + \": \" + Nachricht$
Sendenschalter = CreateButton (\"Senden\", 510, 570, 100, 20, Fenster, 1)
If WaitEvent() = $401 And EventSource() = Sendenschalter Then
Notify \"juhuuu\"
SendNetMsg 1, NachrichtAN$, SpielerNR Or SpielerNR2, 0
label = CreateLabel (NachrichtAN$,5,5, 195,50, Fenster)
EndIf

Cardonic

BeitragMo, Dez 12, 2005 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

zu Problem 1: du springst die Sprungmarke "Channel" an und um zurückzukehren must du den Befehl "return" anwenden (dann springt blitzbasic zur stelle zurück, wo der gosup-befehl aufgerufen wurde)

zu Problem 2: die variabel Nachricht$ enthält nur quasi die Kennnummer des TextField-Objekt. Um den text zu ermitteln braucht man den befehlt "textfieldtext". in deinem fall: textfieldtext(Nachricht).

... und ich glaube, dass du in der drittletzten Zeile eine Syntax-Fehler eingebaut hast:
BlitzBasic: [AUSKLAPPEN]
 SendNetMsg 1, NachrichtAN$, SpielerNR Or SpielerNR2, 0 

vielleicht funktioniert es ja, aber ich bin der Meinung, dass hier der Befehl "or" fehl am Plazt ist. Wink

ich hoffe du kanst was damit anfangen

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.
 

Felix

BeitragDi, Dez 13, 2005 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
ok vielen dank
alleine wär ich da nie drauf gekomen
thx
 

Felix

BeitragDi, Dez 13, 2005 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab den unteren teil jetzt so geändert aber er Funktoiniert immer noch nicht
BlitzBasic: [AUSKLAPPEN]


der zeigt nur das Notify Fenster an, wenn ich dierekt wenn ich das spiel erstellt habe auf "Senden" klicke

Cardonic

BeitragDi, Dez 13, 2005 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo

den fehler habe ich noch gar nicht entdeckt. aber jetzt da du es sagst sehe ich dass da einer ist.
(eigentlich ist es gar kein fehler; aber der script macht nicht das was du willst Wink )

bei der if abfrage
BlitzBasic: [AUSKLAPPEN]
If WaitEvent() = $401 And EventSource() = Sendenschalter Then

wartet blitzbasic auf ein Event; und wenn dan ein event kommt und nicht alle Bedingungen erfüllt sind, dann geht es einfach weiter.

die einfachste Lösung für dieses Problem wäre:
BlitzBasic: [AUSKLAPPEN]
Repeat
If WaitEvent() = $401 And EventSource() = Sendenschelter Then
Notify \"Juhuu !\",1
SendNetMsg 1,NachrichtAn$,SpielerNr2,0
label = CreateLabel(NachrichtAn$,5,5,195,50,Fenster)
Exit ; Um die Repeat-Schleife zu verlassen
EndIf
Forever


wenn du es so schreibst, dann wirt es solange abgefragt bis alle Bedingungen stimmen.

mfg
Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.
 

Felix

BeitragMi, Dez 14, 2005 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
leider funktioniert das auch nur beim ersten mal
diese verbesserung hat leider nix gebracht
vll findet ja einer ne andere möglichkeit
thx trozdem

Cardonic

BeitragMi, Dez 14, 2005 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry, ich habe mich zu fest auf das unterprogramm "chanel" konzentriert und den eigentlichen sinn dieser codezeilen ist mir gar nicht mehr bewusst gewesen. Embarassed

du musst die repeat-schleife erst mit "exit" verlassen, wenn du nicht mehr willst, dass man nachrichten versenden kann.

ich hoffe ich habe diesmal das problem nicht verfehlt Confused
ansonsten kannst du ja einfach ein paar varianten ausprobieren; dann kommmt man auch irgendwann auf eine brauchbare lösung Laughing

mfg Cardonic
If you should go skating on the thin ice of modern life, dragging behind you the silent reproach of a million tear-stained eyes, don't be surprised when a crack in the ice appears under your feet.
 

Felix

BeitragMi, Dez 14, 2005 23:18
Antworten mit Zitat
Benutzer-Profile anzeigen
so ich habe jetzt lange genug daran herumgetüftelt und endlich eine lösung gefunden wobei ich wieder ne Frage hab

hier ist erstmal der Code:

BlitzBasic: [AUSKLAPPEN]

Name$ = Namenabfrage$
Nachricht$ = CreateTextField (0,570, 550,20, Fenster)
NachrichtAN$ = \"Felix\" + \": \" + TextFieldText(Nachricht$)
Area = CreateTextArea(0,0, 790,565, Fenster, 0)
If EventData() = 13 Then
Test = 1
SendNetMsg 1, NachrichtAN$, SpielerNr2, 0
Notify \"Juhuu !\", 1
EndIf
If Test = 1 Then AddTextAreaText Area, \"jo\" + Chr$(13) + Chr$(10)


so
wenn man Enter drückt soll der text in der textarea stehen
tut er auch!
aber der teil "If Test = 1 Then AddTextAreaText Area, "jo" + Chr$(13) + Chr$(10)" ist interesannt
Chr$(13) + Chr$(10) soll eigentlich einen zeilenumbruch herführen
aber wenn ich nochmal enter drücke, wird der text noxhmal auf die gleiche stelle geschrieben

ich weiß nicht wo das problem liegt
Confused

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group