Information about object: obj_client Sprite: Solid: false Visible: true Depth: -9999998 Persistent: false Parent: obj_tech_parent Mask: Create Event: execute code: IP = get_string("Type here Server's IP:", "") if IP = ""{ IP = "127.0.0.1" } PORT = get_string("Type here Port:","") client = network_create_socket (network_socket_tcp) network_connect( client, IP, real(PORT)) buff = buffer_create( 256, buffer_grow, 1) clients_name = ds_list_create() clients_x = ds_list_create() clients_y = ds_list_create() clients_imageangle = ds_list_create(); clients_spriteindex = ds_list_create(); clients_imageindex = ds_list_create(); server_phy_x = ds_list_create(); server_phy_y = ds_list_create(); server_phy_rot = ds_list_create(); randomize() setup = 1 login = 0 name_creation_phrase="Insert your character name :"// this will change case the name is being used alarm[0]=30 //i've put 10 just to give some time for the clients to connect to the server before sending packets xx = 0 yy = 0 for(i=0;i<32;i+=1){ inst[i] = 0 } Destroy Event: execute code: login = 0 Alarm Event for alarm 0: execute code: client_name=get_string(name_creation_phrase, "player"+string(round(random(999)))) //as you can see the randomize() will be usefull here, its really hard that 2 players will get the same default name buffer_seek(buff, buffer_seek_start, 0) buffer_write(buff , buffer_string, "check_name") buffer_write(buff , buffer_string, client_name) buffer_size = buffer_tell(buff) network_send_packet( client, buff, buffer_size ) Alarm Event for alarm 1: execute code: buffer_seek(buff, buffer_seek_start, 0) buffer_write(buff , buffer_string, "client_setup") buffer_write(buff , buffer_string, client_name) buffer_write(buff , buffer_s16, x) buffer_write(buff , buffer_s16, y) buffer_size = buffer_tell(buff) network_send_packet( client, buff, buffer_size ) login=1 Step Event: execute code: if login=1 { buffer_seek(buff, buffer_seek_start, 0) buffer_write(buff , buffer_string, "client_status") buffer_write(buff , buffer_s16, obj_player.x) buffer_write(buff , buffer_s16, obj_player.y) buffer_write(buff, buffer_s16, obj_player.image_angle) buffer_write(buff, buffer_s16, obj_player.image_index) buffer_write(buff, buffer_s16, obj_player.sprite_index) buffer_size = buffer_tell(buff) network_send_packet( client, buff, buffer_size ) } /* if login=1{ for(i=0;i Async Event: Networking: execute code: if ds_map_exists(async_load, "buffer") { net_buff = ds_map_find_value(async_load, "buffer") buff_info = buffer_read(net_buff, buffer_string ) if buff_info="all_clients" { count=buffer_read(net_buff , buffer_s16 ) ds_list_clear(clients_name) ds_list_clear(clients_x) ds_list_clear(clients_y) ds_list_clear(clients_imageangle) ds_list_clear(clients_imageindex) ds_list_clear(clients_spriteindex) for(i=0;i Draw Event: execute code: count = ds_list_size(clients_name) if count>0 { for(i=0;i Draw GUI Event: execute code: draw_set_halign(fa_left) draw_set_valign(fa_top) draw_set_font(fnt_textbox) draw_set_color(c_white); draw_text_transformed(10,10,"DayBreak Client v0.1",0.50,0.50,0) draw_text_transformed(10,40,"Player: " + string(count),0.50,0.50,0)