I have made this simple code for a multi player chat.
It handles sending strings between client and server and displaying them in a panel.

Also check out AUM74, there is a workshop on the basics for this.

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

STRING* messages_str = "#50";
STRING* connected_str = "#50";
STRING* temp_str = "#10";
STRING* chat_entry = "#100";
STRING* chat_send = "#100";

STRING* Chat0 = "#100";
STRING* Chat1 = "#100";
STRING* Chat2 = "#100";
STRING* Chat3 = "#100";
STRING* Chat4 = "#100";
STRING* Chat5 = "#100";
STRING* Chat6 = "#100";
STRING* Chat7 = "#100";
STRING* Chat8 = "#100";
STRING* Chat9 = "#100";

var People_connected = 0;

FONT* Arial_font = "Arial#12";

TEXT* messages_txt =
{
pos_x = 300;
pos_y = 1;
layer = 10;
font(Arial_font);
string (messages_str);
flags = visible;
}

TEXT* chatentry_txt =
{
pos_x = 0;
pos_y = 0;
layer = 20;
font(Arial_font);
string(chat_entry);
flags = visible;
}

TEXT * chatwindow_txt =
{
pos_x = 0;
pos_y = 0;
layer = 20;
font(Arial_font);
string(Chat0,Chat1,Chat2,Chat3,Chat4,Chat5,chat6,chat7,chat8,chat9);
flags = visible;
}

TEXT* connected_txt =
{
pos_x = 500;
pos_y = 0;
layer = 10;
font(Arial_font);
string(connected_str);
flags = visible;
}

BMAP* Chatmap = "Chat.jpg";

PANEL* Chat_panel =
{
bmap = Chatmap;
pos_x = 0;
pos_y = 0;
layer = 15;
flags = visible,overlay,translucent;
}

function display_info();
function server_event();
function client_event();

function init_chat()
{
if (connection == 2 | connection == 3)
{
Chat_panel.pos_y = 0;
chatwindow_txt.pos_y = 0;
chatentry_txt.pos_y = 135;
}
}

void input_chat()
{
if (connection == 2 | connection == 3)
{
if (inkey_active) return;
str_cpy(chat_entry,"#100");
inkey(chat_entry);
if (result == 13)
{
str_cpy(chat_send,player_name);
str_cat(chat_send,": ");
str_cat(chat_send,chat_entry);
send_string(chat_send);
if (connection == 3)
{
str_cpy(Chat0,Chat1);
str_cpy(Chat1,Chat2);
str_cpy(Chat2,Chat3);
str_cpy(Chat3,Chat4);
str_cpy(Chat4,Chat5);
str_cpy(Chat5,Chat6);
str_cpy(Chat6,Chat7);
str_cpy(Chat7,Chat8);
str_cpy(Chat8,Chat9);
str_cpy(Chat9,chat_send);
}
wait(1);
str_cpy(chat_entry,"#100");
\ }
}
}

function main()
{

fps_max = 60; // limit the number of data packets that are sent each second to 60
vec_set(screen_color, vector(100, 10, 0));
init_chat();
on_t = input_chat;
on_server = server_event;
on_client = client_event;
if (!connection)
{
str_cpy(messages_str, "Can't find any server. Please try again later.");
wait (-4);
sys_exit(NULL);
}
if (connection == 2)
{
str_cpy(messages_str, "Running as a client.");
}
else
{
str_cpy(messages_str, "Running as a server.");
str_cat(messages_str, "\nServer IP address: ");
str_cat(messages_str, server_ip);
str_cat(messages_str, "\nServer name: ");
str_cat(messages_str, server_name);
if (connection == 3)
{
People_connected = 1;
}
}
// the code below will run on the client, as well as on the server
str_cat(messages_str, "\nLevel name: ");
str_cat(messages_str, level_name);
str_cat(messages_str, "\nApplication name: ");
str_cat(messages_str, app_name);
str_cat(messages_str, "\nPlayer name: ");
str_cat(messages_str, player_name);
str_cat(messages_str, "\nSession name: ");
str_cat(messages_str, session_name);
str_cpy(connected_str, "Connected: ");
str_for_num(temp_str, People_connected);
str_cat(connected_str, temp_str);
str_cat(connected_str, "\nPing : ");
str_for_num(temp_str, dplay_latency);
str_cat (connected_str, temp_str);
}

function server_event()
{
if (event_type == EVENT_JOIN)
{
wait(-3);
People_connected += 1;
send_var(People_connected);
}
if (event_type == EVENT_STRING)
{
str_cpy(Chat0,Chat1);
str_cpy(Chat1,Chat2);
str_cpy(Chat2,Chat3);
str_cpy(Chat3,Chat4);
str_cpy(Chat4,Chat5);
str_cpy(Chat5,Chat6);
str_cpy(Chat6,Chat7);
str_cpy(Chat7,Chat8);
str_cpy(Chat8,Chat9);
str_cpy(Chat9,chat_send);
send_string(chat_send);
}
}

function client_event()
{
if (event_type == EVENT_JOIN)
{
wait(-3);
People_connected += 1;
send_var(People_connected);
}
if (event_type == EVENT_STRING)
{
str_cpy(Chat0,Chat1);
str_cpy(Chat1,Chat2);
str_cpy(Chat2,Chat3);
str_cpy(Chat3,Chat4);
str_cpy(Chat4,Chat5);
str_cpy(Chat5,Chat6);
str_cpy(Chat6,Chat7);
str_cpy(Chat7,Chat8);
str_cpy(Chat8,Chat9);
str_cpy(Chat9,chat_send);
}
}