}//获取和载入卡片 #region 卡友的各种计算 private void Get_CardFriends() { while (true) { string Card_Fsid = Mydata.Card_Fsid(Chose_Exchange_Theme.ToString()); //获取卡友[开始]------------------------------- Regex regStr = new Regex(@"(?<!0\d*)[1-9]\d{4,10}", RegexOptions.IgnoreCase); //100个卡友的正则 MatchCollection mat = regStr.Matches(Card_Fsid); for (int i = 0; i < mat.Count; i++) { tssState.Text = "累计搜索 [" + iCount++.ToString() + "]"; //计数 tssState.BackColor = Color.FromKnownColor(KnownColor.Control); string IinfoTemp = Mydata.Card_User("opuin=" + mat[i] + "&uin =" + Mydata.Iuin); //获取对方的信息保存在IinfoTemp XmlDocument doc = new XmlDocument(); doc.LoadXml(IinfoTemp); XmlNode x1 = doc.SelectSingleNode("QQHOME"); XmlNodeList x2 = x1.ChildNodes; foreach (XmlNode x3 in x2) { if (x3.LocalName == "changebox" && Get_Exch(x3.Attributes[3].Value)) { //Debug.WriteLine(x3.Attributes[3].Value); XmlElement xChangebox = (XmlElement)x3; XmlNodeList xnls = xChangebox.ChildNodes; foreach (XmlElement xcx in xnls) { int status = Convert.ToInt32(xcx.GetAttribute("status")); //不等于0,该卡不存在 if (status == 0) { int id = Convert.ToInt32(xcx.GetAttribute("id")); //ID foreach (Mydata.MyItem item in lbCards.SelectedItems) //判断对方的卡是否有我需要的 { if (item.Id == id) //↓↓↓找到了需要的↓↓↓ { //Debug.WriteLine(mat[i].ToString()); Mydata.Uuin = mat[i].ToString(); U_boxInfo(); tssState.Text = "已找到 【" + _cardDic[id].Name + "】"; tssState.BackColor = Color.Green; this.Size = new Size(700, 408); cbTop.Left = 626; btnStartSearch.Text = "开始搜索"; Console.Beep(); Mydata.isChanging = true; threadStop(); } } } } } } } //Uuins.Add(mat[i].ToString()); } //MessageBox.Show(uuidStr); //--------------------------------------- }//查询是否找到自己要的卡
}//获取我的卡片信息 private void U_boxInfo() { lvUbox.Items.Clear(); //清空对方卡箱(安全起见) lvUbox.BeginUpdate(); gBoxU.Text = Mydata.Uuin + ".换卡箱 [点我刷新]"; //可刷新对方卡箱 string IinfoTemp = Mydata.Card_User("opuin=" + Mydata.Uuin + "&uin =" + Mydata.Iuin); //获取对方的信息保存在IinfoTemp XmlDocument doc = new XmlDocument(); doc.LoadXml(IinfoTemp); XmlNode xn = doc.SelectSingleNode("QQHOME"); XmlNodeList xnl = xn.ChildNodes; Mydata.MyItem mi; foreach (XmlNode xnx in xnl) { if (xnx.LocalName == "changebox") { XmlElement xe = (XmlElement)xnx; XmlNodeList xnls = xe.ChildNodes; foreach (XmlElement xcx in xnls) { int status = Convert.ToInt32(xcx.GetAttribute("status")); //不等于0,该卡不存在 if (status == 0) { int id = Convert.ToInt32(xcx.GetAttribute("id")); //ID string slot = xcx.GetAttribute("slot"); //卡位 int unlock = Convert.ToInt32(xcx.GetAttribute("unlock")); //卡锁 int type = Convert.ToInt32(xcx.GetAttribute("type")); int st = Convert.ToInt32(xcx.GetAttribute("st")); mi.Id = id; mi.Name = _cardDic[id].Name; mi.Sit = slot; ListViewItem lvi = new ListViewItem { Text = _cardDic[id].Name // + cardLock; }; lvi.SubItems.Add(_cardDic[id].Price.ToString()); lvi.SubItems.Add(_themeDic[_cardDic[id].ThemeID].Name); lvi.ForeColor = unlock == 0 ? Color.Black : Color.Red; this.lvUbox.Items.Add(lvi).Tag = mi; } } } } lvUbox.EndUpdate(); tssEXchange.Text = null; }//获取卡友卡片信息
private void Card_Exchange() { string cardid = null, cardsit = null, isCof = null; //卡片ID,卡片位置,是否保险箱 string iChoseCards = null, uChoseCards = null; //我的卡片信息,卡友卡片信息 int temp = 0; //数量计数 foreach (ListViewItem item in lvIbox.CheckedItems) { cardid = ((Mydata.MyItem)item.Tag).Id.ToString(); //取出卡片ID cardsit = ((Mydata.MyItem)item.Tag).Sit.ToString(); //取出卡片位置 isCof = item.Group.Header.IndexOf("卡箱") > 0 ? "0" : "1"; //是否保险箱 temp++; //数量累计 string tempChoseCards = cardid + "_" + cardsit + "_" + isCof; if (temp > 1) { iChoseCards = iChoseCards + "|" + tempChoseCards; } else { iChoseCards = tempChoseCards; } //少于等于1则直接输出,大于则在中间加上| } temp = 0;//重置计数 foreach (ListViewItem item in lvUbox.CheckedItems) { cardid = ((Mydata.MyItem)item.Tag).Id.ToString(); cardsit = ((Mydata.MyItem)item.Tag).Sit.ToString(); string tempChoseCards = cardid + "_" + cardsit + "_0"; temp++; if (temp > 1) { uChoseCards = uChoseCards + "|" + tempChoseCards; } else { uChoseCards = tempChoseCards; } } string postData; //创建提交变量 postData = string.Format("uin={0}&frnd={1}&cmd=1&isFriend=1&src={2}&dst={3}", Mydata.Iuin, Mydata.Uuin, iChoseCards, uChoseCards); //frnd=对方QQ&cmd=1&isFriend=1&src=对方卡片信息&uin=我的QQ&dst=我的卡片信息 string EXchangeTemp = Mydata.Card_Excg(postData); //提交并取得返回值 if (EXchangeTemp.IndexOf("code=\"0\"") != -1) { //成功修改背景字体 tssState.Text = "交换成功 ~~~"; tssState.ForeColor = Color.Black; tssState.BackColor = Color.GreenYellow; I_boxInfo(); //刷新我的卡箱 U_boxInfo(); //刷新卡友卡箱 tssEXchange.Visible = false; tsslOkExchange.Visible = false; Console.Beep(800, 200);//成功提醒 } else { string switchStr = Myhelp.getMid(EXchangeTemp, "code=\"", "\" mess"); //取出失败ID,进行switch匹配 switch (switchStr) { case "0": break; case "-33061": tssState.Text = "交换失败,此卡已被换走!"; break; case "-33058": tssState.Text = "交换失败,有卡片被锁!"; break; default: tssState.Text = "交换失败,未知错误!"; break; } tssState.ForeColor = Color.Black; tssState.BackColor = Color.Red; //I_boxInfo();//刷新我的卡箱 U_boxInfo();//刷新卡友卡箱 tssEXchange.Visible = false; tsslOkExchange.Visible = false; Console.Beep(400, 200);//失败提醒 } }
}//闪卡 #endregion #region 卡箱刷新 private void I_boxInfo() { lvIbox.Items.Clear(); lvIbox.BeginUpdate(); //Debug.Write(groupBox1.Location); string IinfoTemp = Mydata.Card_User("uin=" + Mydata.Iuin); //提交内容将返回的临时文本保存在postdata //Debug.Write(IinfoTemp); XmlDocument doc = new XmlDocument(); doc.LoadXml(IinfoTemp); XmlNode xn = doc.SelectSingleNode("QQHOME"); XmlNodeList xnl = xn.ChildNodes; ListViewGroup Exbox_lvg = new ListViewGroup { Header = "换卡箱", //设置组的标题。 HeaderAlignment = HorizontalAlignment.Left }; //创建换卡箱分组 lvIbox.Groups.Add(Exbox_lvg); ListViewGroup Ofbox_lvg = new ListViewGroup { Header = "保险箱", HeaderAlignment = HorizontalAlignment.Left //组标题居中对齐 }; //创建保险箱分组 lvIbox.Groups.Add(Ofbox_lvg); this.lvIbox.ShowGroups = true; foreach (XmlNode xnx in xnl) { #region 换卡箱 if (xnx.LocalName == "changebox") { XmlElement xe = (XmlElement)xnx; XmlNodeList xnls = xe.ChildNodes; Mydata.MyItem mi; foreach (XmlElement xcx in xnls) { int status = Convert.ToInt32(xcx.GetAttribute("status"));//不等于0,该卡不存在 if (status == 0) { string slot = xcx.GetAttribute("slot"); //卡位 int unlock = Convert.ToInt32(xcx.GetAttribute("unlock")); //卡锁 int id = Convert.ToInt32(xcx.GetAttribute("id")); //ID int type = Convert.ToInt32(xcx.GetAttribute("type")); int st = Convert.ToInt32(xcx.GetAttribute("st")); //string cardLock = unlock > 0 ? "[锁]" : null; mi.Id = id; mi.Name = _cardDic[id].Name; mi.Sit = slot; ListViewItem lvi = new ListViewItem { Text = _cardDic[id].Name }; lvi.SubItems.Add(_cardDic[id].Price.ToString()); lvi.SubItems.Add(_themeDic[_cardDic[id].ThemeID].Name); lvi.ForeColor = unlock == 0 ? Color.Black : Color.Red; Exbox_lvg.Items.Add(lvi); this.lvIbox.Items.Add(lvi).Tag = mi; } } int myMaxexcur = Convert.ToInt32(xe.GetAttribute("cur")); //换卡箱最大箱位 Exbox_lvg.Header = "换卡箱 " + Exbox_lvg.Items.Count + "/" + myMaxexcur.ToString(); //设置组的标题。 } #endregion #region 保险箱 if (xnx.LocalName == "storebox") { XmlElement xe = (XmlElement)xnx; XmlNodeList xnls = xe.ChildNodes; Mydata.MyItem mi; foreach (XmlElement xcx in xnls) { if (xcx.LocalName == "card") { string slot = xcx.GetAttribute("slot"); int id = Convert.ToInt32(xcx.GetAttribute("id")); int type = Convert.ToInt32(xcx.GetAttribute("type")); int st = Convert.ToInt32(xcx.GetAttribute("st")); mi.Name = _cardDic[id].Name + ":" + _cardDic[id].Price; mi.Id = id; mi.Sit = slot; ListViewItem lvi = new ListViewItem { Text = _cardDic[id].Name }; lvi.SubItems.Add(_cardDic[id].Price.ToString()); lvi.SubItems.Add(_themeDic[_cardDic[id].ThemeID].Name); Ofbox_lvg.Items.Add(lvi); this.lvIbox.Items.Add(lvi).Tag = (object)mi; } } int myMaxofcur = Convert.ToInt32(xe.GetAttribute("cur")); //保险箱最大箱位 Ofbox_lvg.Header = "保险箱 " + Ofbox_lvg.Items.Count + "/" + myMaxofcur.ToString(); //设置组的标题。 } #endregion } lvIbox.EndUpdate(); tssEXchange.Text = null; }//获取我的卡片信息