//클라에서 서버로 대기방초대 대한 답변 정보보내기 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()); }
//클라에서 서버로 이동할 팀 정보 보내기 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_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()); }
//================================================================================================================================================================================ 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_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()); }
//폭발 데이터 보내기 void Grenade_Explosion_Send_Data() { ByteData Send_Buffer = new ByteData(128, 0); Send_Buffer.InPutByte((byte)RELAY_PROTOCOL.GRENADE_EXPLOSION); Send_Buffer.InPutByte(OJ_Name); Send_Buffer.InPutByte((byte)EXPLOSION_STATE.BOOM_INIT); Send_Buffer.InPutByte(Explosion_Pos); Net_Script.Send_PTP_Data(Send_Buffer); }
//클라에서 서버로 대기방초대 정보보내기 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()); }
void SetSendBuffer_roomMake() { //비공개 방 만들기 //int : 유닛 인덱스 //byte : 유닛 강화도 //int : 메인무기 //int : 보조무기 //int : 치장1 인덱스 //int : 치장2 인덱스 User _user = UserDataManager.instance.user; User_Units unit = _user.User_Units[_user.User_useUnit.UnitIdxs[0]]; SendBuffer = new ByteData(512, 0); SendBuffer.InPutByte((int)unit.Unitidx); SendBuffer.InPutByte(unit.RefLv); SendBuffer.InPutByte((int)unit.MainWpnIdx); SendBuffer.InPutByte((int)unit.SubWpnIdx); SendBuffer.InPutByte((int)unit.DecoIdx1); SendBuffer.InPutByte((int)unit.DecoIdx2); SendBuffer.InPutByte((int)unit.DecoIdx3); SendBuffer.InPutByte(unit.SubSkill); }
//어택 데미지 데이터 받기 public void Bot_Damage_Operation(float MY_Total_Damage, Vector3 _ATK_Start_Vec, Vector3 _ATK_Target_Vec, byte _Gun_Type, bool _HeadShot_Check, bool Critical_Check) { //------------------------------------------------------------------------------------------------------------------------------------------------------------------------ MY_HP -= MY_Total_Damage; if (MY_HP <= 0.0f) { MY_HP = 0.0f; } if (MY_HP <= 0.0f && Die_State == DIE_STATE.IDEL) { Die_State = DIE_STATE.ANI_START; Die_Atk_Start_Vec = _ATK_Start_Vec; Die_Atk_Target_Vec = _ATK_Target_Vec; Die_Atk_GunType = _Gun_Type; Game_Script.Bot_Kill_Count++; Game_Script.Bot_Kill_Operation(User_ID, _HeadShot_Check); //-------------------------------------------------------------------------------------- ByteData Send_Buffer = new ByteData(128, 0); //현재 플레이어가 사용하고 있는 유닛의 인덱스 Send_Buffer.InPutByte(Game_Script.Char_Script[Link_Script.i.User_ID].Char_Index); //봇 죽인 데이터 보내기 Net_Script.Send_Bot_Kill_Data(Send_Buffer); //-------------------------------------------------------------------------------------- } //수류탄, 유탄, 자살이 아닐때 캐릭터 맞았을때 터지는 임펙트 안그려준다. if ((GUN_TYPE)_Gun_Type != GUN_TYPE.GRENADE && (GUN_TYPE)_Gun_Type != GUN_TYPE.BOOMER_SKILL && (GUN_TYPE)_Gun_Type != GUN_TYPE.LAUNCHER && (GUN_TYPE)_Gun_Type != GUN_TYPE.SUICIDE) { Char_Hit_Effect_Check = true; Char_Hit_Effect_GunType = (GUN_TYPE)_Gun_Type; Char_Hit_Effect_Vec = _ATK_Target_Vec; } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------ //데미지 숫자 만들어주기 Transform GamePlay_Damage_Transform = Instantiate(Resources.Load("Battle_Prefab/2_UI_Folder/GamePlay_Damage") as GameObject).GetComponent <Transform>(); GamePlay_Damage_Transform.SetParent(GameObject.Find("Canvas").transform); GamePlay_Damage_Transform.localScale = new Vector3(1, 1, 1); GamePlay_Damage_Transform.localPosition = new Vector3(0, 0, 0); GamePlay_Damage_Transform.SetAsLastSibling();//가장 나중에 그려진 레이어로 맞추기 //텍스트 스크립트 초기화 GamePlay_Damage_Transform.GetComponent <Damage_Num_Script>().Make_Init(User_ID, Critical_Check, MY_Total_Damage, Damage_Num_Effect_Dir); if (++Damage_Num_Effect_Dir >= 2) { Damage_Num_Effect_Dir = 0; } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------ }
public void Send_ObtainGameItem_Data() { if (Game_Script.GameOver_Check) { return; } ByteData Send_Buffer = new ByteData(128, 0); Send_Buffer.InPutByte((byte)RELAY_PROTOCOL.OBTAINITEM_MOVE); Send_Buffer.InPutByte((byte)CreatedIndex); Send_Buffer.InPutByte(Tr.position); Send_Buffer.InPutByte(Tr.rotation.eulerAngles); Net_Script.Send_PTP_Data(Send_Buffer); }
//클라에서 서버로 공개방 설정 정보보내기 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_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_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()); }
//리스폰시 캐릭터 셋팅 바뀐값 서버에 넘겨주기 void Char_Setting_Send() { //int : 유닛 아이디 //byte : 유닛 강화도 //int : 메인무기 //int : 보조무기 //int : 치장1 인덱스 //int : 치장2 인덱스 //int : 치장3 인덱스 //byte : 서브 스킬 ByteData Send_Buffer = new ByteData(128, 0); Send_Buffer.InPutByte(Toggle_Char_Index); Send_Buffer.InPutByte(Toggle_Char_Level); Send_Buffer.InPutByte(Toggle_Main_Gun_Index); Send_Buffer.InPutByte(Toggle_Sub_Gun_Index); Send_Buffer.InPutByte(Link_Script.i.Get_ALL_Char_Data[(uint)Toggle_Char_Index].DecoIdx1); Send_Buffer.InPutByte(Link_Script.i.Get_ALL_Char_Data[(uint)Toggle_Char_Index].DecoIdx2); Send_Buffer.InPutByte(Link_Script.i.Get_ALL_Char_Data[(uint)Toggle_Char_Index].DecoIdx3); Send_Buffer.InPutByte(Link_Script.i.Get_ALL_Char_Data[(uint)Toggle_Char_Index].SubSkill); Net_Script.Send_Respawn_Char_Init(Send_Buffer); }
//수류탄 움직임 네트웍으로 전송하기 public void Grenade_Send_Data() { if (Game_Script.GameOver_Check) { return; } if (Explosion_State != EXPLOSION_STATE.IDEL) { return; } ByteData Send_Buffer = new ByteData(128, 0); Send_Buffer.InPutByte((byte)RELAY_PROTOCOL.GRENADE_MOVE); Send_Buffer.InPutByte(OJ_Name); Send_Buffer.InPutByte(User_ID); Send_Buffer.InPutByte((byte)Gun_Type); Send_Buffer.InPutByte(transform.position); Send_Buffer.InPutByte(transform.rotation.eulerAngles); Net_Script.Send_PTP_Data(Send_Buffer); }