Gamestudio Links
Zorro Links
Newest Posts
Zorro 2.70
by jcl. 09/29/25 09:24
optimize global parameters SOLVED
by dBc. 09/27/25 17:07
ZorroGPT
by TipmyPip. 09/27/25 10:05
assetHistory one candle shift
by jcl. 09/21/25 11:36
Plugins update
by Grant. 09/17/25 16:28
AUM Magazine
Latest Screens
Rocker`s Revenge
Stug 3 Stormartillery
Iljuschin 2
Galactic Strike X
Who's Online Now
0 registered members (), 18,767 guests, and 5 spiders.
Key: Admin, Global Mod, Mod
Newest Members
krishna, DrissB, James168, Ed_Love, xtns
19168 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Lite-C chat #141138
07/15/07 02:18
07/15/07 02:18
Joined: Apr 2006
Posts: 1,551
Netherlands
D3D Offline OP
Serious User
D3D  Offline OP
Serious User

Joined: Apr 2006
Posts: 1,551
Netherlands
Shadow969 converted this script and because it was once shared by Michael Swharz I thought it would be fair to contribute it instead of keeping it for myself. There are much things that could be added, but it's a nice start

Usage
Tried to Test Run the script, but somehow that didn't worked. The script must be compiled to executable and run with the commands below. Hit enter to type message.

Observer: -sv -cl -pl Observer
Client: -cl -pl YourName

Server: -sv
Client: -cl -pl YourName

Code:
// Original script by Michael Schwarz - www.xware-cg.com
// Converted to Lite-C by Shadow969
// Freeware

#include <acknex.h>
#include <default.c>

FONT* blub ="arial#12";

STRING* MyAppTitle = "Lite-C Chat";

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 ist das "chatfenster"
{
strings=5;
string=chat_line1,chat_line2,chat_line3,chat_line4,chat_line5;
pos_x=10;
pos_y=100;
font=blub;
}

TEXT* chat_input = // Das textobjekt damit wir text eingeben konnen
{
string=input_str;
pos_x=10;
pos_y=250;
font=blub;
}

void NachrichtAnServerSenden() // Da man als client strings NUR an den server schicken kann mussen wir erst an den server schicken
{
// String Vorbereiten
str_cpy(sent_str, player_name); // Zuerst hangen 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_to(NULL, sent_str); // Nun senden wir den String mit unserer Mitteilung an den server
wait(1); // Kurz warten

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

void TextEingeben()
{
if(inkey_active)
{
return;
}

str_cpy(input_str,"#100");
inkey(input_str);

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

void 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,"#100"); // 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 ware, muss der client-server auch was zu tun bekommen
#endif
}

void NachrichtEmpfangen_Server() // Die gleiche function wie oben, nur fur den server, damit alle clients die nachricht bekommen
{
/*
if((event_type == EVENT_JOIN) || (event_type == EVENT_LEAVE))
{return;}
*/

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 loschen wir NOCH NICHT
// An Clients senden

send_string_to(NULL,received_str); // Da dieser befehl als server ausgefuhrt wird, wird der string an ALLE clients gesendet
wait(1); // Kurz warten

str_cpy(received_str,"#100"); // JETZT loschen wir die strings
str_cpy(sent_str,"#100");
}
}

void chat_initialisieren() // diese function in eurer MAIN function aufrufen!
{
set(chat_fenster,VISIBLE);
set(chat_input,VISIBLE);

on_enter = TextEingeben; // Wir legen die chat funktion auf die enter-taste
on_client = NachrichtEmpfangen; // wenn daten vom server zum client reinkommen > checken ob es chat ist
on_server = NachrichtEmpfangen_Server; // wenn daten von clients zum server kommen > checken ob chat ist
}

void main()
{
fps_max = 60;
video_mode = 7;
video_window(vector(375,350,0),NULL,112,MyAppTitle);
screen_color.blue = 125;
wait(2);
chat_initialisieren();
}



Re: Lite-C chat [Re: D3D] #141139
07/17/07 11:23
07/17/07 11:23
Joined: Oct 2002
Posts: 8,939
planet.earth
ello Offline
Senior Expert
ello  Offline
Senior Expert

Joined: Oct 2002
Posts: 8,939
planet.earth
maybe a dumb question, but does this work only with a lan or over the web, too?

Re: Lite-C chat [Re: ello] #141140
07/17/07 11:35
07/17/07 11:35
Joined: Apr 2006
Posts: 1,551
Netherlands
D3D Offline OP
Serious User
D3D  Offline OP
Serious User

Joined: Apr 2006
Posts: 1,551
Netherlands
Should work for both LAN and over WEB. The client connecting from over the internet must enter the ip for the server in order to establish a connection.
This can also be hardcoded within the script. Port 2300 must be forwarded in case the server is behind router/firewall.

Server
-sv -port 2300

Client
-cl -pl YourName -ip 213.10.104.17


smile
Re: Lite-C chat [Re: D3D] #141141
07/17/07 20:42
07/17/07 20:42
Joined: Oct 2002
Posts: 8,939
planet.earth
ello Offline
Senior Expert
ello  Offline
Senior Expert

Joined: Oct 2002
Posts: 8,939
planet.earth
thanks for the info, and thanks for the cool script!

Re: Lite-C chat [Re: ello] #141142
07/18/07 01:00
07/18/07 01:00
Joined: Oct 2004
Posts: 4,134
Netherlands
Joozey Offline
Expert
Joozey  Offline
Expert

Joined: Oct 2004
Posts: 4,134
Netherlands
Handy script to learn lite-c thanx!


Click and join the 3dgs irc community!
Room: #3dgs
Re: Lite-C chat [Re: Joozey] #141143
11/25/07 00:44
11/25/07 00:44
Joined: Nov 2007
Posts: 1
S
Shahid Offline
Guest
Shahid  Offline
Guest
S

Joined: Nov 2007
Posts: 1
Hi,
I want to extend this example to make it for multiplayer environment. I am trying to make a visual chat editor like msn or yahoo. But i am not able to make text editor in a efficient way.
function TextEingeben()
{
//str_cursor(input_str);
if(inkey_active)
{
return;
}
str_cpy(input_str,"#100");
inkey(input_str);
while(result==13)
{
//temp = str_cursor(input_str);
//chat_input.pos_y += 5;
str_cat(input_str,"\n");
wait(1);
inkey(input_str);
}
/*if(result==13)
{
if(str_cmpi(input_str,""))
{
return;
}
NachrichtAnServerSenden();
}*/
}
as you can see i can go to next line after pressing enter. But i want to go to next line after a specific width of window in a panel.
I would appreciate any help


Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1