Chatsystem für bis zu 4 Leuten gleichzeitig.

Posted By: annonymie

Chatsystem für bis zu 4 Leuten gleichzeitig. - 07/15/06 18:10

Hi, ich möchte meine ersten Versuche mit dem Multiplayer-Kram machen und wollte dazu ein einfaches Chatsystem für maximal 4 Leute programmieren. Leider hab ich keinen Ansatz dazu gefunden. Daher bitte ich hier mal um Hilfe, diese könnte z.B. aus einem Tutorial oder einem Beispielskript bestehen
Posted By: mk_1

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 07/15/06 19:27

Schick mal deine icq oder msn nr., dann sende ich dir mein altes Projekt.
Posted By: JoGa

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 08/08/06 17:12

öhm, könnte man (wenn der Urheber des Quelltextes einverstanden ist) die Sache auch "öffentlich machen"?
Weil ich habe das selbe Problem.
Brauche ein Chatsystem für 2-4 Leute, habe aber keinen Ansatz.

Wäre cool!
Posted By: broozar

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 08/10/06 22:11

hab noch nie multiplayercode gesehen, würd mich auch mal interessieren!
Posted By: Tempelbauer

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 08/31/06 08:45

jo, das würd ich auch interessieren
Posted By: Michael_Schwarz

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 08/31/06 12:26

Quote:

hab noch nie multiplayercode gesehen, würd mich auch mal interessieren!




Code:
  

var xyz=0;

function blub(blubberz)
{
xyz=blubberz;
send_var(xyz);
}




Posted By: ello

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 08/31/06 14:29

und danach ist automatisch die variable xyz überall gleich, oder wie muss man sich das denken?
Posted By: JoGa

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 08/31/06 14:39

Oh, ja *lol* wie wahnsinnig witzig -.- ( ist nicht wirklich böse gemeint!)


Multiplayercode ist im Großen und Ganzen gleich wie Einzelspiel-code.
Nur ein paar Unteschiede gibt es (server<->client - Zeugs)
Was mich aber interessiert ist, wie man das Chatsystem hinbekommt.
Im Grund mehrere Strings hat(?) und wie man die dann sortiert und hochscrollen lässt und wieder löscht und so. Kein Plan. Eine ganz normale Anzeige wie in Unreal Tournament o.ä. Die Einzelnen Messages werden untereinander engezeigt, wobei die zurückliegenden auch noch angezeigt werden(!), elso eine LISTE entsteht.
Das ist meine Frage. Ich weis, dass das nur bedingt was mit MP zu tun hat.
Posted By: Michael_Schwarz

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 08/31/06 14:42

ok ihr tut mir langsam leid, ich schreibe euch mal nen simplen multiplayer chat code, mit vielen vielen kommentaren
Posted By: Michael_Schwarz

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 08/31/06 15:54

ok, hier ist er, Hochdetailliert kommentier, fast jede zeile. Er sollte verständlich sein, eine sache noch: Der server selbst kann NICHT chatten, d.h. ihr könnt ihn auch als dedicated laufen lassen(geht ab der Commercial).
Ihr habt aber einen ansatz; und wie ihr den server chatten lassen könnt, werdet ihr selber herausfinden

Bei fragen, nicht scheuen

Code:
font blub ="arial",0,12;

string received_str="#100";
string sent_str="#100";
string input_str="#100";

string chat_line1="#100";
string chat_line2="#100";
string chat_line3="#100";
string chat_line4="#100";
string chat_line5="#100";

text chat_fenster // Das íst das "chatfenster"
{
strings=5;
string=chat_line1,chat_line2,chat_line3,chat_line4,chat_line5;
pos_x=10;
pos_y=10;
font=blub;
}

text chat_input // Das textobjekt damit wir text eingeben können
{
string=input_str;
pos_x=10;
pos_y=100;
font=blub;
}

function chat_initialisieren // diese function in eurer MAIN function aufrufen!
{
chat_fenster.visible=on;
chat_input.visible=on;
}

function NachrichtAnServerSenden // Da man als client strings NUR an den server schicken kann müssen wir erst an den server schicken
{
// String Vorbereiten
str_cpy(sent_str,player_name); // Zuerst hängen wir den playernamen an den zu sendenen string dran
str_cat(sent_str,": "); // und ein :
str_cat(sent_str,input_str); // und schlussendlich die eigentliche nachricht
// Senden
send_string(sent_str); // Nun senden wir den String mit unserer Mitteilung an den server

wait(1); // Kurz warten

// Leeren
str_cpy(sent_str,""); // Und machen den Sende string sicherheitshalber leer
str_cpy(input_str,""); // genauso den input string, aber das wegen dem komfort
}

function TextEingeben
{
if(inkey_active){return;} // Wenn schon aktiv, dann return!

inkey(input_str); // text eingeben

if(result==13) // Wenn die eingabe mit enter beendet wurde
{
NachrichtAnServerSenden(); // nachricht senden
}
}

on_enter = TextEingeben; // Wir legen die chat funktion auf die enter-taste

function NachrichtEmpfangen // die function wenn daten vom server an den client reinkommen
{
wait(1); // warten damit die nachricht empfangen werden kann sonst ist received_str = LEER
ifndef server; // damit der server die nachricht nicht doppelt bekommt
if(str_len(received_str)>0) // wenn wir eine chat nachricht bekommen haben
{
// Chat Ordnen
str_cpy(chat_line1,chat_line2); // 2 > 1
str_cpy(chat_line2,chat_line3); // 3 > 2
str_cpy(chat_line3,chat_line4); // 4 > 3
str_cpy(chat_line4,chat_line5); // 5 > 4
str_cpy(chat_line5,received_str); // Neue nachricht > 5

wait(1); // Kurz warten

str_cpy(received_str,""); // den string leeren, damit die nachricht nicht wiederholt wird
// wenn ein anderer string event auftritt
}
endif; // Nicht vergessen die ifndef/ifdef zu schliessen
ifdef server;
wait(1); // Da es sonst eine "empty" function wäre, muss der client-server auch was zu tun bekommen
endif;
}

on_client = NachrichtEmpfangen; // wenn daten vom server zum client reinkommen > checken ob es chat ist

function NachrichtEmpfangen_Server // Die gleiche function wie oben, nur für den server, damit alle clients die nachricht bekommen
{
wait(1); // warten damit die nachricht empfangen werden kann sonst ist sent_str = LEER
if(str_len(sent_str)>0) // wenn wir eine chat nachricht bekommen haben -> da der client mit sent_str schickt, benutzen wir das als server
{
// Kopieren:
str_cpy(received_str,sent_str);

// Erstmal selber die nachricht einordnen:
// Chat Ordnen
str_cpy(chat_line1,chat_line2); // 2 > 1
str_cpy(chat_line2,chat_line3); // 3 > 2
str_cpy(chat_line3,chat_line4); // 4 > 3
str_cpy(chat_line4,chat_line5); // 5 > 4
str_cpy(chat_line5,received_str); // Neue nachricht > 5

// Diesmal löschen wir NOCH NICHT
// An Clients senden
send_string(received_str); // Da dieser befehl als server ausgeführt wird, wird der string an ALLE clients gesendet

wait(1); // Kurz warten

str_cpy(received_str,""); // JETZT löschen wir die strings
str_cpy(sent_str,"");
}
}

on_server = NachrichtEmpfangen_Server; // wenn daten von clients zum server kommen > checken ob chat ist


Posted By: Michael_Schwarz

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/01/06 09:24

toll, ich schreibe hier nen kompletten chat code und keiner sagt auch nur ein danke xD
Posted By: ello

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/01/06 09:34

Quote:

toll, ich schreibe hier nen kompletten chat code und keiner sagt auch nur ein danke xD




du bist viel zu schnell verbittert:) ich wollt grad danke sagen, aber jetzt ??

DANKE, jetzt mussich nur noch meinen zweitrechner aufbauen und dann kanns hoffentlich losgehen. oder brauch ich sogar 3 rechner weils nur die clients sind?
Posted By: Michael_Schwarz

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/01/06 10:03

du kannst auch mehrere clients auf dem gleichen PC haben
Posted By: ello

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/01/06 10:17

indem ich die exe mehrmals starte?
Posted By: Michael_Schwarz

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/01/06 10:23

oder auf run drückst, ja
Posted By: JoGa

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/02/06 21:56

Ah, perfekt!
Ich werd's mal ausprobieren, danke!
Genau, das mit dem ineinanderkopieren der strings für das scrollen der messages hat mir Kopfzerbrechen bereitet.
Supi, danke für die Lösung.
Eine Frage noch:
mit "dedicated" meinst du doch das in der Kommandozeile blablabla -sv - cl
beim Server, damit man insg. 4 Spieler hat (3xclients, 1xserver+client)
oder?
Posted By: broozar

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/02/06 22:53

DANKE!! wird gebookmarked und bei gelegenheit ausprobiert. thx!
Posted By: Michael_Schwarz

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/03/06 00:35

Quote:

Ah, perfekt!
Ich werd's mal ausprobieren, danke!
Genau, das mit dem ineinanderkopieren der strings für das scrollen der messages hat mir Kopfzerbrechen bereitet.
Supi, danke für die Lösung.
Eine Frage noch:
mit "dedicated" meinst du doch das in der Kommandozeile blablabla -sv - cl
beim Server, damit man insg. 4 Spieler hat (3xclients, 1xserver+client)
oder?




mit dedicated mein ich

blabla.exe -sv



geht zumindest bei meiner com tadellos
Posted By: ThelT0r

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/13/06 07:07

also ich hab auch n code ^^ wer ihn mal will soll mich anschreiben, naürlich ist er total free zur benutzung
icq : 267 216 100
Posted By: broozar

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/13/06 07:41

stell ihn doch rein, dann haben alle was davon...
Posted By: D3D

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/19/06 20:15

@ Michael_Schwarz:

When the user doesn't type anything I don't want it to send and tried this. It worked, but the first time player can hit enter and pass. The second time it's prevented. Do you know how to always prevent sending in case nothing was typed?

Code:
if(str_len(input_str)>=1 && (result==13)) // Wenn die eingabe mit enter beendet wurde
{
NachrichtAnServerSenden(); // Bericht verzenden
}
}



Dusty
Posted By: Michael_Schwarz

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/19/06 21:18

Quote:

@ Michael_Schwarz:

When the user doesn't type anything I don't want it to send and tried this. It worked, but the first time player can hit enter and pass. The second time it's prevented. Do you know how to always prevent sending in case nothing was typed?

Code:
if(str_len(input_str)>=1 && (result==13)) // Wenn die eingabe mit enter beendet wurde
{
NachrichtAnServerSenden(); // Bericht verzenden
}
}



Dusty




try this:

Code:
  if(result==13)
{
if(str_cmpi(input_str,""))
{
return;
}
NachrichtAnServerSenden();
}


Posted By: D3D

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/19/06 21:32

Thank you I changed the code to:

Code:
function TextEingeben
{
if(inkey_active)
{
return;
}

inkey(input_str);

if(result==13)
{
if(str_cmpi(input_str,""))
{
return;
}
NachrichtAnServerSenden();
}
}



Only it pass and send empty string the first time the application is loaded when ENTER is hit twice. After that it does prevent sending empty string though. Should I compare the string beforehand?
Posted By: Michael_Schwarz

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/19/06 21:35

Quote:

Thank you I changed the code to:

Code:
function TextEingeben
{
if(inkey_active)
{
return;
}

inkey(input_str);

if(result==13)
{
if(str_cmpi(input_str,""))
{
return;
}
NachrichtAnServerSenden();
}
}



Only it pass on the first time the application is loaded and ENTER is hit twice. After that it does prevent sending empty string. Should I try to do string compare beforehand?




try this:

Code:
function TextEingeben
{
if(inkey_active)
{
return;
}
str_cpy(input_str,"");
inkey(input_str);

if(result==13)
{
if(str_cmpi(input_str,""))
{
return;
}
NachrichtAnServerSenden();
}
}


Posted By: D3D

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/19/06 21:39

Yes that worked thank you very much

All the best,

Dusty
Posted By: Michael_Schwarz

Re: Chatsystem für bis zu 4 Leuten gleichzeitig. - 09/19/06 21:41

i am glad i could help you
Posted By: Berlinermauer

Eine Ganz blöde Frage ;-) - 12/03/06 17:27

woher weis das Skript bzw. der Server wie der Player heißt muss ich den Spieler vorher Fragen oder wie läuft das???
Posted By: Germanunkol

Re: Eine Ganz blöde Frage ;-) - 12/03/06 18:04

Ich hab grad zufälligerweise n chat program in "contirbutions" gestellt...das kannst du angucken. Der string "player_name" beinhaltet den spieler name.
Am anfang, wenn du das spiel startest, kannst du mit -pl in der command line angeben wie der spieler heist...
bsp:
-sv -cl -pl Player1
Micha
Posted By: Berlinermauer

Re: Eine Ganz blöde Frage ;-) - 12/03/06 18:55

thx Ich versuche es!!!
© 2023 lite-C Forums