Quote:

Quote:


1 gibt es eigentlich schon ein chat-script für 3dgs-multiplayers?





Klar gibt es die, allerdings weiß ich nicht ob jemand die frei rausgibt.




ich hab vor längerem mal ein chatscript veröffentlicht. Vollkommen dokumentiert.
Die suchfunktion ist dein freund

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



Last edited by Michael_Schwarz; 02/16/08 17:51.

"Sometimes JCL reminds me of Notch, but more competent" ~ Kiyaku