728x90
GAME MAKER 강좌
KAYAN
◈ 접속자 표시
이번에는 접속자를 표시해봅시다.
(▲ 접속자)
먼저, 서버에서 우측 상단 화면에 채팅 참여자의 이름을 표시하도록 합니다.
★ obj_server 오브젝트 - Draw 이벤트 ★ draw_set_font( font0 ); draw_set_halign( fa_left ); draw_set_valign( fa_top ); var t, c; t = "채팅 예제 ( 서버 )"+$" IP:{ global.local_server_IP}"; ; c = c_black; draw_text_color( 80, 16, t, c, c, c, c, 1 ); //---------- 접속자 정보 var _x, _y, _list, i, p; _x = 580; _y = 16; //접속자 수 c = c_black; draw_text_color( _x, _y, "접속자 ( "+string( ds_list_size( global.socketlist )+1 )+" )", c, c, c, c, 1 ); //서버 유저 이름 _y = 48; c = c_blue; draw_text_color( _x, _y, "[서버]["+string( global.playername )+"]( 나 )", c, c, c, c, 1 ); //클라이언트 이름 _y+ = 20; if ds_map_exists( global.player_map, "player_order" ){ _list = ds_map_find_value( global.player_map, "player_order" ); //클라이언트 소켓 목록 for( i = 0; i < ds_list_size( _list ); i+ = 1; ){ p = ds_list_find_value( _list, i ); //플레이어 닉네임 if ds_map_exists( global.player_map, "player_"+string( p ) ){ t = ds_map_find_value( global.player_map, "player_"+string( p ) ); c = c_black; draw_text_color( _x, _y, t, c, c, c, c, 1 ); _y+ = 20; } } } //---------- 접속자 정보 |
서버에서는 서버 유저 정보(global.playername)가 자신(나)이 됩니다.
그리고 나머지는 서버에 접속한 클라이언트의 이름이 됩니다.
이제 클라이언트에서 우측 상단 화면에 채팅 참여자의 이름을 표시하도록 합니다.
★ obj_client 오브젝트 - Draw 이벤트 ★ draw_set_font( font0 ); draw_set_halign( fa_left ); draw_set_valign( fa_top ); var t, c; t = "채팅 예제 ( 클라이언트 )"; c = c_black; draw_text_color( 80, 16, t, c, c, c, c, 1 ); //---------- 접속자 정보 var _x, _y, _list, i, p, n; _x = 580; _y = 16; //접속자 수 user_count = 0; if ds_map_exists( global.player_map, "player_order" ){ _list = ds_map_find_value( global.player_map, "player_order" ); user_count = ds_list_size( _list ); } c = c_black; draw_text_color( _x, _y, "접속자 ( "+string( user_count+1 )+" )", c, c, c, c, 1 ); _y = 48; if ds_map_exists( global.player_map, "player_order" ){ //서버 유저 이름 c = c_black; draw_text_color( _x, _y, "[서버]["+string( global.server_name )+"]", c, c, c, c, 1 ); //클라이언트 이름 _y+ = 20; _list = ds_map_find_value( global.player_map, "player_order" ); //클라이언트 소켓 목록 for( i = 0; i < ds_list_size( _list ); i+ = 1; ){ p = ds_list_find_value( _list, i ); //플레이어 닉네임 if ds_map_exists( global.player_map, "player_"+string( p ) ){ t = ds_map_find_value( global.player_map, "player_"+string( p ) ); c = c_black; if ( p == global.user_id ){ t+ = "( 나 )"; c = c_blue; }//현재 클라이언트인 경우 draw_text_color( _x, _y, t, c, c, c, c, 1 ); _y+ = 20; } } } //---------- 접속자 정보 |
서버는 클라이언트로 저장되어 있지 않기 때문에, 서버에 처음 접속했을 때 받아온 서버 유저(global.server_name)를 표시합니다.
잘 표시되는 지 확인해봅시다.
300x250
'GameMaker강좌[GMS2] > 네트워크강좌' 카테고리의 다른 글
[게임메이커 강좌-네트워크][GMS2] 멀티 플레이어 게임 만들기-1-메인화면 (1) | 2024.12.25 |
---|---|
[게임메이커 강좌-네트워킹][GMS2] 채팅 프로그램 만들기-6-네트워크 연결 지연에 따른 설정(Ping) (0) | 2024.12.24 |
[게임메이커 강좌-네트워킹][GMS2] 채팅 프로그램 만들기-4-채팅 메시지 보내기 (0) | 2024.12.24 |
[게임메이커 강좌-네트워킹][GMS2] 채팅 프로그램 만들기-3-메시지 송수신 (0) | 2024.12.23 |
[게임메이커 강좌-네트워킹][GMS2] 채팅 프로그램 만들기-2-서버/클라이언트 (0) | 2024.12.23 |
댓글