static void S_创建竞技房间(List <C_玩家> z列表1, List <C_玩家> z列表2) { Console.WriteLine("__________S_创建竞技房间___________________"); int z人员数量 = 2; z列表1 = z列表1.S_随机排序(); z列表2 = z列表2.S_随机排序(); List <C_玩家> z新列表 = new List <C_玩家>(); for (int i = 0; i < z人员数量; i++) { z新列表.Add(z列表1[i]); z新列表.Add(z列表2[i]); } z列表1.Clear(); z列表2.Clear(); C_游戏房间 mm = new C_游戏房间(z新列表); string ss = mm.o_房间号.ToString("0000000000") + "@"; for (int i = 0; i < z新列表.Count; i++) { ss += z新列表[i].o_ID + "&"; } ss = ss.Remove(ss.Length - 1); for (int i = 0; i < z新列表.Count; i++) { try { z新列表[i].o_Tcp通信.o_通信器.S_发送消息(505, ss + "@" + i);//房间号 @玩家ID&玩家ID... @z自身位置 } catch { //发送出错----------- } } }
static void S_30秒事件() { C_玩家.S_30秒_清楚临时玩家(); C_游戏房间.S_30秒_匹配刷新(); }
//public override C_TcpClient.C_逻辑端 S_接口_初始化(C_TcpClient nn) { // if (o_通信器 != null) { // C_Tcp客户端 mm = new C_Tcp客户端(); // return mm.S_接口_初始化(nn); // } else { // o_通信器 = nn; // return this; // } //} public override void S_接口_消息处理(ushort z消息类型, string zMsg, byte[] zData) { if (z消息类型 > 50 && o_雇主 == null) { Console.WriteLine(z消息类型 + "___Tcp非法登录________________" + zMsg); return; } string ss; switch (z消息类型) { case 1: //z玩家ID &玩家地址--- #region MyRegion----初次登陆-----------收到的域名Server消息----------------- string[] sss = zMsg.Split('&'); long zID = long.Parse(sss[0]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == true) { o_通信器.S_发送消息(1, sss[1]); //玩家地址------- Console.WriteLine("玩家探测登陆________存在_____" + C_玩家.o_玩家总列表.Count); } else { Console.WriteLine("玩家探测登陆______用户不存在_______" + C_玩家.o_玩家总列表.Count); } #endregion break; case 3: //z玩家ID &姓名 &密码 &玩家地址--------- #region MyRegion-------玩家注册--------收到的域名Server消息------------------- sss = zMsg.Split('&'); zID = long.Parse(sss[0]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == false) { C_玩家 nn = C_Server.ooo.o_数据库.S_用户注册(zID, sss[1], sss[2]); o_通信器.S_发送消息(3, "1&" + sss[3]); //1 &玩家地址------- } else { o_通信器.S_发送消息(3, "-1&" + sss[3]); //-1 &玩家地址------- } Console.WriteLine("玩家注册_____________"); #endregion break; case 10: #region MyRegion------收到的域名Server消息-----心跳回应------------- //Console.WriteLine("收到心跳包: " + zMsg); o_通信器.S_发送消息(10, "0"); o_在线时间 = C_Toot.S_Get时间搓int(); #endregion break; case 50: //z玩家ID &z密码--------------- #region MyRegion---------------玩家精确登陆---------- Console.WriteLine("玩家精确登陆----------- " + zMsg); sss = zMsg.Split('&'); zID = long.Parse(sss[0]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == true) { o_雇主 = C_玩家.o_玩家总列表[zID]; if (o_雇主.o_库名.Length > 4) //是否是正规玩家------ { ss = C_Server.ooo.o_数据库.S_用户登陆(zID, sss[1]); o_通信器.S_发送消息(50, ss); //&用户名/-5==密码错误/-10==用户不存在 } else { o_通信器.S_发送消息(50, "-10"); //&用户名/-5==密码错误/-10==用户不存在 } o_雇主.o_Tcp通信 = this; Console.WriteLine("玩家________存在_____"); } else { o_通信器.S_发送消息(50, "-10"); //&用户名/-5==密码错误/-10==用户不存在 if (C_玩家.o_临时玩家列表.Contains(zID) == false) { C_玩家 nn = new C_玩家("1", zID, true); o_雇主 = nn; nn.o_Tcp通信 = this; Console.WriteLine("玩家______不存在_____创建临时玩家_______________________"); } else //重复登录-------------------- { o_雇主 = C_玩家.o_玩家总列表[zID]; o_雇主.o_Tcp通信 = this; Console.WriteLine("玩家______不存在_____临时玩家存在__________________"); } } o_在线时间 = C_Toot.S_Get时间搓int(); #endregion break; case 500: //----单人匹配----------------------- o_通信器.S_发送消息(500, "0"); //进入匹配界面----------- if (C_游戏房间.o_单人匹配列表.Contains(o_雇主) == false) { C_游戏房间.o_单人匹配列表.Add(o_雇主); } break; case 501: //zID &zID ........ #region MyRegion------组队请求5v5匹配-------- //zID &zID ........ sss = zMsg.Split('&'); List <C_玩家> z列表 = new List <C_玩家>(); for (int i = 0; i < sss.Length; i++) { try { zID = int.Parse(sss[i]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == true) { C_玩家 nn = C_玩家.o_玩家总列表[zID]; nn.o_Tcp通信.o_通信器.S_发送消息(500, "0"); //进入匹配界面----- z列表.Add(nn); } else { } } catch (Exception ex) { Console.WriteLine("组队匹配__玩家ID不正确________" + ex.Message); return; } } C_游戏房间.o_团队匹配列表.Add(z列表); #endregion break; case 503: //取消匹配等待------------------- #region MyRegion--------取消匹配等待------------------- if (C_游戏房间.o_单人匹配列表.Contains(o_雇主)) { C_游戏房间.o_单人匹配列表.Remove(o_雇主); o_通信器.S_发送消息(503, "00"); } else { for (int i = 0; i < C_游戏房间.o_团队匹配列表.Count; i++) { if (C_游戏房间.o_团队匹配列表[i].Contains(o_雇主)) { List <C_玩家> z列表0 = C_游戏房间.o_团队匹配列表[i]; for (int x = 0; x < z列表0.Count; x++) { z列表0[x].o_Tcp通信.o_通信器.S_发送消息(503, "00"); } C_游戏房间.o_团队匹配列表.Remove(z列表0); break; } } } #endregion break; case 510: //z请求玩家加入队伍---------//z房主ID,z房主头像,z房主姓名,z请求ID #region MyRegion---z请求玩家加入队伍--------- //z房主ID,z房主头像,z房主姓名,z请求ID sss = zMsg.Split('&'); zID = long.Parse(sss[3]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == true) { C_玩家.o_玩家总列表[zID].o_Tcp通信.o_通信器.S_发送消息(510, zMsg); } #endregion break; case 512: //z玩家同意加入队伍--------//z房主ID,zID,z头像,z姓名 #region MyRegion-------z玩家同意加入队伍-------- //z房主ID,zID,z头像,z姓名 sss = zMsg.Split('&'); zID = long.Parse(sss[0]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == true) { C_玩家.o_玩家总列表[zID].o_Tcp通信.o_通信器.S_发送消息(512, zMsg); } #endregion break; case 514: //z收到队伍消息--------//z位置,z消息 @ zID,z头像,z姓名@zID,z头像,z姓名@ ..... #region MyRegion---z收到队伍消息----- //z位置,z消息 @ zID,z头像,z姓名@zID,z头像,z姓名@ ..... sss = zMsg.Split('@'); for (int i = 1; i < sss.Length; i++) //消息群发-------------- { string[] sss2 = sss[i].Split('&'); zID = int.Parse(sss2[0]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == true) { C_玩家.o_玩家总列表[zID].o_Tcp通信.o_通信器.S_发送消息(514, zMsg); } } #endregion break; case 516: //退出队伍-------------//z位置,z原因索引 @ zID,z头像,z姓名@zID,z头像,z姓名@ ..... #region MyRegion----退出队伍---- //z位置,z原因索引 @ zID,z头像,z姓名@zID,z头像,z姓名@ ..... sss = zMsg.Split('@'); for (int i = 1; i < sss.Length; i++) //消息群发-------------- { string[] sss2 = sss[i].Split('&'); zID = int.Parse(sss2[0]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == true) { C_玩家.o_玩家总列表[zID].o_Tcp通信.o_通信器.S_发送消息(516, zMsg); } } #endregion break; case 518: //队伍被解散------------- #region MyRegion---队伍被解散------------- sss = zMsg.Split('&'); for (int i = 0; i < sss.Length; i++) //消息群发-------------- { zID = int.Parse(sss[i]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == true) { C_玩家.o_玩家总列表[zID].o_Tcp通信.o_通信器.S_发送消息(518, zMsg); } } #endregion break; case 526: //解散房间----------------- #region MyRegion-------解散房间---房间号---- int z房间号 = int.Parse(zMsg); if (C_游戏房间.o_房间集合.ContainsKey(z房间号) == true) { Console.WriteLine("解散房间__" + zMsg); C_游戏房间 mm = C_游戏房间.o_房间集合[z房间号]; for (int i = 0; i < mm.o_玩家列表.Count; i++) { if (mm.o_玩家列表[i].o_Tcp通信.o_通信器 != null) { o_通信器.S_发送消息(526, zMsg); mm.o_玩家列表[i].o_游戏房间 = null; } } C_游戏房间.o_房间集合.Remove(z房间号); } else { Console.WriteLine("房间__" + zMsg + "_____不存在,无法解散"); } #endregion break; case 610: S_游戏房间_群发(z消息类型, zMsg, zData); break; case 630: S_游戏房间_群发(z消息类型, zMsg, zData); break; case 631: S_游戏房间_群发(z消息类型, zMsg, zData); break; case 633: S_游戏房间_群发(z消息类型, zMsg, zData); break; case 660: S_游戏房间_群发(z消息类型, zMsg, zData); break; case 810: //添加好友------------------ #region MyRegion------添加好友---------- sss = zMsg.Split('&'); zID = int.Parse(sss[0]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == true) { C_玩家.o_玩家总列表[zID].o_Tcp通信.o_通信器.S_发送消息(811, zMsg); o_通信器.S_发送消息(810, sss[0] + "&1"); } else { o_通信器.S_发送消息(810, sss[0] + "&0"); } #endregion break; case 813: //z收到好友消息--------z发送者ID,z接收者ID,z表情编号,z消息内容------ #region MyRegion----z收到好友消息--------z发送者ID,z接收者ID,z表情编号,z消息内容------ sss = zMsg.Split('&'); zID = int.Parse(sss[1]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == true) { C_玩家.o_玩家总列表[zID].o_Tcp通信.o_通信器.S_发送消息(813, zMsg); } else { o_通信器.S_发送消息(815, sss[0] + "&0"); //好友不在线--- } #endregion break; case 815: //z好友是否在线------z好友ID,z是否在心@ ...------------ #region MyRegion--z好友是否在线------z好友ID,z是否在心@ ...------------ sss = zMsg.Split('&'); ss = ""; for (int i = 0; i < sss.Length; i++) { zID = int.Parse(sss[i]); if (C_玩家.o_玩家总列表.ContainsKey(zID) == true) { ss += sss[i] + "&1@"; //在线-- } else { ss += sss[i] + "&0@"; //不在线-- } } if (ss.Length > 3) { ss = ss.Remove(ss.Length - 1, 1); } o_通信器.S_发送消息(815, ss); #endregion break; } }