public void Send_CTS_FriendRoomJoin(uint _freindID, int _unitIdx, byte _refLv, int _mainWpnIdx, int _subWpnIdx, int _decoIdx1, int _decoIdx2, int _decoIdx3, byte subSkill) { //함께 하기 //uint : 방 들어갈 친구 UserID //int : 유닛 인덱스 //byte : 유닛 강화도 //int : 메인무기 //int : 보조무기 //int : 치장1 인덱스 //int : 치장2 인덱스 SendBuffer = new ByteData(512, 0); SendBuffer.InPutByte(_freindID); SendBuffer.InPutByte(_unitIdx); SendBuffer.InPutByte(_refLv); SendBuffer.InPutByte(_mainWpnIdx); SendBuffer.InPutByte(_subWpnIdx); SendBuffer.InPutByte(_decoIdx1); SendBuffer.InPutByte(_decoIdx2); SendBuffer.InPutByte(_decoIdx3); SendBuffer.InPutByte(subSkill); Net_Script.Send_Data(NETKIND.CTS_FRIEND_ROOM_JOIN, SendBuffer.GetTrimByteData()); }
//클라에서 서버로 대기방초대 대한 답변 정보보내기 public void Send_CTS_Answer_IntiveRoom(uint invitorUserID, bool isAccept, int unitIdx = 0, byte refLv = 0, int mainWpIdx = 0, int subWpIdx = 0, int decoIdx1 = 0, int decoIdx2 = 0, int decoIdx3 = 0, byte subSkill = 0) { //uint : 초대자 UsreID //bool : true : 초대 수락, false : 초대 거절 //int : 유닛 인덱스 //byte : 유닛 강화도 //int : 메인무기 //int : 보조무기 //int : 치장1 인덱스 //int : 치장2 인덱스 SendBuffer = new ByteData(512, 0); SendBuffer.InPutByte(invitorUserID); SendBuffer.InPutByte(isAccept); SendBuffer.InPutByte(unitIdx); SendBuffer.InPutByte(refLv); SendBuffer.InPutByte(mainWpIdx); SendBuffer.InPutByte(subWpIdx); SendBuffer.InPutByte(decoIdx1); SendBuffer.InPutByte(decoIdx2); SendBuffer.InPutByte(decoIdx3); SendBuffer.InPutByte(subSkill); Net_Script.Send_Data(NETKIND.CTS_INVITE_ROOM_ANSWER, SendBuffer.GetTrimByteData()); }
//================================================================================================================================================================================ void Send_Quick_Join() { //byte : 전투 종류 (BattleKind) //int : 유닛 인덱스 //byte : 유닛 강화도 //int : 메인무기 //int : 보조무기 //int : 치장1 인덱스 //int : 치장2 인덱스 //int : 치장3 인덱스 //byte : 서브 스킬 Send_Buffer = new ByteData(512, 0); Send_Buffer.InPutByte((byte)Link_Script.i.Play_Mode); Send_Buffer.InPutByte(Link_Script.i.Char_Index); Send_Buffer.InPutByte(Link_Script.i.Char_Level); Send_Buffer.InPutByte(Link_Script.i.Main_Gun_Index); Send_Buffer.InPutByte(Link_Script.i.Sub_Gun_Index); Send_Buffer.InPutByte(Link_Script.i.Costume_Kind_1); Send_Buffer.InPutByte(Link_Script.i.Costume_Kind_2); Send_Buffer.InPutByte(Link_Script.i.Costume_Kind_3); Send_Buffer.InPutByte(Link_Script.i.Get_ALL_Char_Data[(uint)Link_Script.i.Char_Index].SubSkill); Data_Send(NETKIND.CTS_QUICK_JOIN, Send_Buffer.GetTrimByteData()); }
// 클라에서 서버로 채팅서버 로그인 정보 보내기 public void Send_CTS_Login() { //uint:웹 유저 ID //string:닉네임 //ushort : 버전 //string : KILL 문구 //byte[2] : 국가코드 ///ushort : 클랜마크 ///byte : 언어코드 User _user = UserDataManager.instance.user; SendBuffer = new ByteData(512, 0); string word = string.Empty; byte[] ctCd = new byte[2]; //유저아이디 SendBuffer.InPutByte(_user.user_Users.UserID); //닉네임 SendBuffer.InPutByte(_user.user_Users.NkNm); //버전 SendBuffer.InPutByte((ushort)DefineKey.ReleaseVersion()); //킬문구 if (_user.User_Words.ContainsKey(USERWORD_TYPE.WRD_KILL)) { word = _user.User_Words[USERWORD_TYPE.WRD_KILL].Words; } else { word = "None"; } SendBuffer.InPutByte(word); //국가코드 Debug.Log("소켓서버 로그인 국가코드 : " + _user.user_Users.CtrCd); ctCd = Encoding.UTF8.GetBytes(_user.user_Users.CtrCd); SendBuffer.InPutByte(ctCd[0]); SendBuffer.InPutByte(ctCd[1]); //클랜마크 if (_user.clan_Clans.ClanID == 0) { SendBuffer.InPutByte((ushort)0); } else { SendBuffer.InPutByte(_user.clan_Clans.ClanMark); } //언어코드 byte langCode = (byte)OptionSetting.instance.usingLangueage; SendBuffer.InPutByte(langCode); Net_Script.Send_Data(NETKIND.CTS_LOGIN, SendBuffer.GetTrimByteData()); }
//클라에서 서버로 맵변경 정보 본내기 public void Send_CTS_map_Change(byte _mapIdx) { SendBuffer = new ByteData(512, 0); SendBuffer.InPutByte(_mapIdx); Net_Script.Send_Data(NETKIND.CTS_MAP_CHANGE, SendBuffer.GetTrimByteData()); }
//클라에서 서버로 공개방 설정 정보보내기 public void Send_CTS_RoomOpen(bool isClose) { //bool : (true : 비공개, false : 공개) SendBuffer = new ByteData(512, 0); SendBuffer.InPutByte(isClose); Net_Script.Send_Data(NETKIND.CTS_OPEN_ROOM, SendBuffer.GetTrimByteData()); }
//클라에서 서버로 이동할 팀 정보 보내기 public void Send_CTS_TeamMove(byte moveTeamIdx, byte slotIdx) { SendBuffer = new ByteData(512, 0); SendBuffer.InPutByte(moveTeamIdx); SendBuffer.InPutByte(slotIdx); Net_Script.Send_Data(NETKIND.CTS_TEAM_MOVE, SendBuffer.GetTrimByteData()); }
public void Send_CTS_SET_KILLWORD(string _killword) { SendBuffer = new ByteData(512, 0); SendBuffer.InPutByte(_killword); Net_Script.Send_Data(NETKIND.CTS_SET_KILL_WORDS, SendBuffer.GetTrimByteData()); UserEditor.Getsingleton.EditLog("소켓서버 킬문구 보냄완료"); }
//================================================================================================================================================================================ public void Send_Base_Atk(float Damage_Num) { // float : 데미지량 Send_Buffer = new ByteData(128, 0); Send_Buffer.InPutByte(Damage_Num); Data_Send(NETKIND.CTS_SET_ATK_MAINBASE, Send_Buffer.GetTrimByteData()); }
//프로토콜 맞춰서 보내기 public void Send_Data(NETKIND _Protocol, byte[] _Data, bool _Sum_Check = false) { if (Socket_Client == null || IsConnected == false) { return; } if (_Data == null) { _Data = new byte[0]; } try { Send_Data_Buffer = new ByteData(HeaderData.Length + Buffer_Length + _Data.Length, 0); for (int i = 0; i < HeaderData.Length; i++) { Send_Data_Buffer.InPutByte(HeaderData[i]); } Send_Data_Buffer.InPutByte((short)(Buffer_Length + _Data.Length - sizeof(short)));//길이 ("길이" 데이터 제외한 크기) Send_Data_Buffer.InPutByte((byte)_Protocol); Array.Copy(_Data, 0, Send_Data_Buffer.data, HeaderData.Length + Buffer_Length, _Data.Length); Send_Data_Buffer.DataIndex += _Data.Length; if (_Sum_Check == false)//바로 패킷 보내기 { Send_Packet(Send_Data_Buffer.GetTrimByteData()); } else//패킷 모아서 보내기 { lock (Total_Send_Lock) { Array.Copy(Send_Data_Buffer.data, 0, Total_Send_Packet, Total_Send_Index, Send_Data_Buffer.DataIndex); Total_Send_Index += Send_Data_Buffer.DataIndex; } //일정양 이상 쌓였으면 꽉차기전에 미리 보내버린다. if (Total_Send_Index + 128 >= Total_Send_Packet_Length) { Now_Send_Packet(); } } } catch (Exception ex) { Error_DisConnect(ex); } }
//클라에서 서버로 채팅매세지 정보 보내기 public void Send_CTS_ChatMessage(byte type, string msg) { //byte : 종류 (1:방 채팅) //string : 메세지 내용 SendBuffer = new ByteData(512, 0); SendBuffer.InPutByte(type); SendBuffer.InPutByte(msg); Net_Script.Send_Data(NETKIND.CTS_CHAT_MESSAGE, SendBuffer.GetTrimByteData()); }
//클라에서 서버로 대기방초대 정보보내기 public void Send_CTS_InviteRoom(uint inviteUserID, string inviteUserNkNm) { //초대 보내기 //uint : 초대자 UserID //string : 초대자 닉네임 SendBuffer = new ByteData(512, 0); SendBuffer.InPutByte(inviteUserID); SendBuffer.InPutByte(inviteUserNkNm); Net_Script.Send_Data(NETKIND.CTS_INVITE_ROOM, SendBuffer.GetTrimByteData()); }
IEnumerator Chk_RoomMake() { //로비 로테이트 비활성 User.isSelectedCharacter = true; //로딩바 Loadmanager.instance.LoadingUI(true); if (!IsConnect()) { //네트워크 소켓 재연결시도 if (ConnectLogin_State != MMSERVER_STATE.RECONNECT_START) { UserEditor.Getsingleton.EditLog("방만들기 : 네트웍끊김, 네트웍재연결시도"); ConnectLogin_State = MMSERVER_STATE.RECONNECT_START; } } while (true) { if (ConnectLogin_State == MMSERVER_STATE.CONNECT_FAIL) { break; } else if (ConnectLogin_State == MMSERVER_STATE.LOGIN_COMPLETE) { if (!IsConnect()) { UserEditor.Getsingleton.EditLog("방만들기 : LOGIN_COMPLETE 이지만 네트웍끊김, 네트웍재연결시도"); StartCoroutine(Chk_RoomMake()); break; } UserEditor.Getsingleton.EditLog("방만들기 : 네트웍및 로그인이상무 방만들기 시도"); SetSendBuffer_roomMake(); Net_Script.Send_Data(NETKIND.CTS_ROOM_MAKE, SendBuffer.GetTrimByteData()); //로비 로테이트 비활성 User.isSelectedCharacter = false; //로딩바 Loadmanager.instance.LoadingUI(false); break; } yield return(null); } }
//================================================================================================================================================================================ //리스폰시 캐릭터 셋팅 바뀐값 서버에 넘겨주기 public void Send_Respawn_Char_Init(ByteData _unitData) { Data_Send(NETKIND.CTS_UNIT_CHANGE, _unitData.GetTrimByteData()); }
//================================================================================================================================================================================ //즉시 리스폰 데이터 보내기 public void Send_Now_Respawn_Data(ByteData _unitData) { Data_Send(NETKIND.CTS_INSTANT_REVIVAL, _unitData.GetTrimByteData()); }
//================================================================================================================================================================================ //봇 죽인 데이터 보내기 public void Send_Bot_Kill_Data(ByteData _unitData) { Data_Send(NETKIND.CTS_ALONE_PLAY_KILL, _unitData.GetTrimByteData()); }
//================================================================================================================================================================================ //P to P : 데이터 보내기 public void Send_PTP_Data(ByteData _unitData) { Data_Send(NETKIND.CTS_GAMEDATA_RELAY, _unitData.GetTrimByteData()); }
//================================================================================================================================================================================ //어택성공 보내기 public void Send_AtkDmg_Data(ByteData _unitData) { Data_Send(NETKIND.CTS_SET_USER_ATKDMG, _unitData.GetTrimByteData()); }