//保存幻兽技能数据 public static void SaveRoleData_Eudemon_MagicInfo(GameBase.Network.Internal.ROLEDATE_EUDEMON info) { MySqlCommand command; String sql; for (int i = 0; i < info.list_item.Count; i++) { RoleData_Eudemon item = info.list_item[i]; for (int j = 0; j < item.mListMagicInfo.Count; j++) { GameBase.Network.Internal.MagicInfo itemex = item.mListMagicInfo[j]; if (itemex.id == 0) { sql = String.Format(MysqlString.ADD_EUDEMON_MAGIC, info.list_item[i].id, itemex.magicid, itemex.level, item.exp); } else if (itemex.id == -1) //删除技能 { sql = String.Format(MysqlString.DELETE_EUDEMON_MAGIC, itemex.magicid); } else { sql = String.Format(MysqlString.UPDATE_EUDEMON_MAGIC, itemex.magicid, itemex.level, itemex.exp, itemex.ownerid, itemex.id); } command = new MySqlCommand(sql, MysqlConn.GetConn()); MysqlConn.Conn_Open(); command.ExecuteNonQuery(); MysqlConn.Conn_Close(); command.Dispose(); } } }
//载入幻兽技能数据 public static void LoadRoleData_Eudemon_MagicInfo(GameBase.Network.Internal.ROLEDATE_EUDEMON info) { MySqlCommand command; for (int i = 0; i < info.list_item.Count; i++) { RoleData_Eudemon item = info.list_item[i]; String _key = String.Format(MysqlString.LOADROLEDATA_EUDEMON_MAGIC, item.id); command = new MySqlCommand(_key, MysqlConn.GetConn()); MysqlConn.Conn_Open(); MySqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { if (!reader.HasRows) { break; } GameBase.Network.Internal.MagicInfo itemex = new GameBase.Network.Internal.MagicInfo(); itemex.id = reader.GetInt32("id"); itemex.ownerid = reader.GetInt32("ownerid"); itemex.magicid = reader.GetUInt32("magicid"); itemex.exp = reader.GetUInt32("level"); item.mListMagicInfo.Add(itemex); } MysqlConn.Conn_Close(); command.Dispose(); } }
//保存幻兽数据 public static void SaveRoleData_Eudemon(GameBase.Network.Internal.ROLEDATE_EUDEMON info) { String sql = ""; MySqlCommand command; for (int i = 0; i < info.list_item.Count; i++) { RoleData_Eudemon item = info.list_item[i]; item.name = Coding.GB2312ToLatin1(item.name); if (item.id == 0) //不存在就插入 { sql = String.Format(MysqlString.SAVEROLEDATA_EUDEMON, item.itemid, info.playerid, item.name, item.phyatk_grow_rate, item.phyatk_grow_rate_max, item.magicatk_grow_rate, item.magicatk_grow_rate_max, item.life_grow_rate, item.defense_grow_rate, item.magicdef_grow_rate, item.init_life, item.init_atk_min, item.init_atk_max, item.init_magicatk_min, item.init_magicatk_max, item.init_defense, item.init_magicdef, item.luck, item.intimacy, item.level, item.card, item.exp, item.quality, item.wuxing, item.recall_count); } else { sql = String.Format(MysqlString.UPDATEROLEDATA_EUDEMON, item.itemid, info.playerid, item.name, item.phyatk_grow_rate, item.phyatk_grow_rate_max, item.magicatk_grow_rate, item.magicatk_grow_rate_max, item.life_grow_rate, item.defense_grow_rate, item.magicdef_grow_rate, item.init_life, item.init_atk_min, item.init_atk_max, item.init_magicatk_min, item.init_magicatk_max, item.init_defense, item.init_magicdef, item.luck, item.intimacy, item.level, item.card, item.exp, item.quality, item.wuxing, item.recall_count, item.id); } command = new MySqlCommand(sql, MysqlConn.GetConn()); MysqlConn.Conn_Open(); command.ExecuteNonQuery(); MysqlConn.Conn_Close(); command.Dispose(); //如果是插入- 取出主键- 要用于存储幻兽技能 if (item.id == 0) { String _key = "select max(id) from cq_eudemon"; command = new MySqlCommand(_key, MysqlConn.GetConn()); MysqlConn.Conn_Open(); MySqlDataReader reader = command.ExecuteReader(); uint ret = 0; reader.Read(); if (reader.HasRows) { ret = Convert.ToUInt32(reader[0].ToString()); } item.id = ret; MysqlConn.Conn_Close(); command.Dispose(); } } SaveRoleData_Eudemon_MagicInfo(info); }
//交易 public void Trad(PlayerObject obj) { //互换魔石 int nGold = obj.GetTradSystem().GetTradGold(); if (nGold > 0) { play.ChangeAttribute(GameStruct.UserAttribute.GOLD, nGold); } //魔石 int nGameGold = obj.GetTradSystem().GetTradGameGold(); if (nGameGold > 0) { play.ChangeAttribute(GameStruct.UserAttribute.GAMEGOLD, nGameGold); } obj.GetTradSystem().SetTradGameGold(0); obj.GetTradSystem().SetTradGold(0); //道具 List <GameStruct.RoleItemInfo> list = obj.GetTradSystem().GetTradItem(); for (int i = 0; i < list.Count; i++) { if (list[i].postion == NetMsg.MsgItemInfo.ITEMPOSITION_EUDEMON_PACK) { RoleData_Eudemon eudemon = obj.GetEudemonSystem().FindEudemon(list[i].typeid); if (eudemon != null) { play.GetEudemonSystem().AddTempEudemon(eudemon); } } play.GetItemSystem().AwardItem(list[i]); obj.GetItemSystem().DeleteItemByID(list[i].id); } obj.GetTradSystem().ClearTradItem(); //成功 play.LeftNotice("交易成功"); //关闭对话框 SetSureTradTag(false); SetTradTarget(0); mIsTrad = false; byte[] data = { 16, 0, 32, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0 }; play.GetGamePackKeyEx().EncodePacket(ref data, data.Length); play.SendData(data); }
//添加掉落道具信息 public void AddDropItemObj(uint itemid, short x, short y, uint ownerid = 0, int time = 120000, GameStruct.RoleItemInfo info = null, RoleData_Eudemon eudemon = null) { DropItemObject obj = new DropItemObject(itemid, x, y, ownerid, time); obj.SetRoleItemInfo(info); obj.SetRoleEudemonInfo(eudemon); AddObject(obj); obj.RefreshVisibleObject(); //广播给玩家 obj.BroadcastInfo(); }
public void SetRoleEudemonInfo(RoleData_Eudemon eudemon) { mEudemonInfo = eudemon; }
//获取远程摊位 //id 为从指定序号摊位 -1为自动顺序 public void GetRemotePtich(PlayerObject play, int id = -1) { int ptich_id = -1; if (id != -1 && id >= 0 && id < mListPtichInfo.Count) { if (mListPtichInfo[id].play == null) { play.MsgBox("该摊位未开放"); return; } ptich_id = id; } else { ptich_id = GetRemotePtichId(play.GetCurrentRemotePtichId()); } if (ptich_id == -1) { return; //无摊位 返回 } play.SetCurrentRemotePtichId(ptich_id); //远程摊位信息 String sName = mListPtichInfo[ptich_id].play.GetName(); int nLen = 13 + Coding.GetDefauleCoding().GetBytes(sName).Length; PacketOut outpack = new PacketOut(); outpack.WriteInt16((short)nLen); outpack.WriteInt16(1015); // {19,0,247,3,14,0,0,0,125,0,1,6,203,167,208,161,187,239,0} outpack.WriteInt32(ptich_id + 1); outpack.WriteInt16(125); outpack.WriteByte(1); outpack.WriteString(sName); outpack.WriteByte(0); play.SendData(outpack.Flush(), true); for (int i = 0; i < mListPtichInfo[ptich_id].mSellItemList.Count ; i++) { RoleItemInfo item_info = null; RoleData_Eudemon eudemon = null; if (mListPtichInfo[ptich_id].mSellItemList[i].item_id >= IDManager.eudemon_start_id) { eudemon = mListPtichInfo[ptich_id].play.GetEudemonSystem().FindEudemon( mListPtichInfo[ptich_id].mSellItemList[i].item_id); if (eudemon == null) { continue; } item_info = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem(eudemon.itemid); } else { item_info = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem( mListPtichInfo[ptich_id].mSellItemList[i].item_id); } if (item_info != null) { NetMsg.MsgPtichItemInfo msg = new NetMsg.MsgPtichItemInfo(item_info, (uint)(ptich_id + 1), mListPtichInfo[ptich_id].mSellItemList[i].price, mListPtichInfo[ptich_id].mSellItemList[i].sell_type, true); play.SendData(msg.GetBuffer(), true); //发送幻兽信息 if (item_info.typeid >= IDManager.eudemon_start_id) { mListPtichInfo[ptich_id].play.GetEudemonSystem().SendLookPtichEudemonInfo(play, eudemon); } } } }
public void BuyItem(PlayerObject play, uint ptich_obj_id, uint item_id) { if (play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_PTICH) != null) { play.MsgBox("摆摊中不允许购买!"); return; } int ptich_id = -1; for (int i = 0; i < mListPtichInfo.Count; i++) { if (mListPtichInfo[i].PtichObj == null) { continue; } if (mListPtichInfo[i].PtichObj.GetTypeId() == ptich_obj_id) { ptich_id = i; break; } } if (ptich_id == -1) { return; } //检测是否有道具 int price = 0; byte sell_type = 0; RoleItemInfo item = null; RoleData_Eudemon eudemon = null; bool bFind = false; for (int i = 0; i < mListPtichInfo[ptich_id].mSellItemList.Count; i++) { if (mListPtichInfo[ptich_id].mSellItemList[i].item_id == item_id) { bFind = true; if (item_id >= IDManager.eudemon_start_id) { eudemon = mListPtichInfo[ptich_id].play.GetEudemonSystem().FindEudemon(item_id); if (eudemon == null) { return; } item = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem(eudemon.itemid); } else { item = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem(item_id); } if (item == null) { play.MsgBox("购买失败!"); return; } price = mListPtichInfo[ptich_id].mSellItemList[i].price; sell_type = mListPtichInfo[ptich_id].mSellItemList[i].sell_type; if (sell_type == NetMsg.MsgOperateItem.PTICH_SELL_ITEM_GAMEGOLD) { if (price > play.GetMoneyCount(MONEYTYPE.GOLD)) { play.MsgBox("购买失败,魔石不足!"); return; } play.ChangeMoney(MONEYTYPE.GAMEGOLD, -price); mListPtichInfo[ptich_id].play.ChangeMoney(MONEYTYPE.GAMEGOLD, price); } else if (sell_type == NetMsg.MsgOperateItem.PTICH_SELL_ITEM_GOLD) { if (price > play.GetMoneyCount(MONEYTYPE.GOLD)) { play.MsgBox("购买失败,金币不足!"); return; } play.ChangeMoney(MONEYTYPE.GOLD, -price); mListPtichInfo[ptich_id].play.ChangeMoney(MONEYTYPE.GOLD, price); } else { return; } mListPtichInfo[ptich_id].mSellItemList.RemoveAt(i); break; } } if (!bFind) { play.MsgBox("购买失败,该道具已下架!"); return; } if (item_id >= IDManager.eudemon_start_id) { item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_EUDEMON_PACK; play.GetEudemonSystem().AddTempEudemon(eudemon);//加到临时表 } else { //添加道具 item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_BACKPACK; } play.GetItemSystem().AwardItem(item); //删除卖方道具 //刷新摊位道具栏 卖方 GetBackItem(mListPtichInfo[ptich_id].play, item_id); mListPtichInfo[ptich_id].play.GetItemSystem().DeleteItemByID(item_id); //买方 //{28,0,241,3,140,87,212,7,70,160,1,0,23,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0} PacketOut outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1009); outpack.WriteUInt32(item_id); outpack.WriteUInt32(ptich_obj_id); outpack.WriteInt32(23); //购买完的标识 outpack.WriteInt16(0); outpack.WriteInt32(1); outpack.WriteInt32(0); outpack.WriteInt16(0); play.SendData(outpack.Flush(), true); // this.LookPtich(play, ptich_obj_id); // this.LookPtich(mListPtichInfo[ptich_id].play, ptich_obj_id); }
//查看摊位 //ptich_obj_id 摊位对象id //page 页码 public void LookPtich(PlayerObject play, uint ptich_obj_id) { int ptich_id = -1; for (int i = 0; i < mListPtichInfo.Count; i++) { if (mListPtichInfo[i].PtichObj == null) { continue; } if (mListPtichInfo[i].PtichObj.GetTypeId() == ptich_obj_id) { ptich_id = i; break; } } if (ptich_id == -1) { return; } // 摊位信息 byte[] senddata = { 42, 0, 105, 4, 244, 1, 0, 0, 64, 66, 15, 0, 36, 52, 156, 8, 3, 0, 0, 0, 30, 214, 44, 135, 2, 0, 0, 0, 164, 3, 178, 5, 1, 0 }; PacketOut outpack = new PacketOut(); outpack.WriteBuff(senddata); outpack.WriteInt16((short)(ptich_id + 1)); byte[] data2 = { 1, 4, 202, 165, 213, 189 }; outpack.WriteBuff(data2); play.SendData(outpack.Flush(), true); //出售的道具信息 for (int i = 0; i < mListPtichInfo[ptich_id].mSellItemList.Count; i++) { RoleItemInfo item_info = null; RoleData_Eudemon eudemon = null; if (mListPtichInfo[ptich_id].mSellItemList[i].item_id >= IDManager.eudemon_start_id) { eudemon = mListPtichInfo[ptich_id].play.GetEudemonSystem().FindEudemon( mListPtichInfo[ptich_id].mSellItemList[i].item_id); if (eudemon == null) { continue; } item_info = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem(eudemon.itemid); } else { item_info = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem( mListPtichInfo[ptich_id].mSellItemList[i].item_id); } if (item_info != null) { NetMsg.MsgPtichItemInfo msg = new NetMsg.MsgPtichItemInfo(item_info, ptich_obj_id, mListPtichInfo[ptich_id].mSellItemList[i].price, mListPtichInfo[ptich_id].mSellItemList[i].sell_type); play.SendData(msg.GetBuffer(), true); //发送幻兽信息 if (item_info.typeid >= IDManager.eudemon_start_id) { mListPtichInfo[ptich_id].play.GetEudemonSystem().SendLookPtichEudemonInfo(play, eudemon); // play.GetEudemonSystem().SendEudemonInfo(eudemon, false, true); } } } //道具id //摊位对象id //魔石价格 //道具基础id //最大损耗 172, 38, //当前损耗 172, 38, //摊位栏 3 //是否鉴定 0.已鉴定 1.未鉴定 //未知 50 //第一个宝石 30 //第二个宝石 30 //未知 0,0 //强化等级 12 //32.未知 //33.未知 //34.未知 //35.未知 //36/37.38.39 未知 //40.41. 战魂等级 //42-51 未知 //52 地攻击 //53 水攻击 //54 火攻击 //55 风攻击 //56 特效 //64 第三个宝石 // byte[] data = { 101, 0, 84, 4, 13, 11, 150, 7, 67,162,1,0, 172, 13, 0, 0, 132, 70, 2, 0, 172, 38, 172, 38, 3, 0, 50, 30, 30, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 209, 215, 253, 136, 133, 101, 159, 111, 235, 112, 0, 0, 0, 0, 0 }; // play.SendData(GameServer.PtichData, true); //107075 // 收到网络协议:长度:98协议号:1108 //byte[] data1 = { 98, 0, 84, 4, 110, 134, 61, 138, 67, 162, 1, 0, 14, 0, 0, 0, 118, 91, 16, 0, 0, 0, 0, 0, 3, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 9, 198, 230, 210, 236, 202, 222, 79, 208, 205, 0, 0, 0 }; //play.SendData(data1,true); //收到网络协议:长度:24协议号:2037 //byte[] data3 = {24,0,245,7,3,0,0,0,110,134,61,138,1,0,0,0,24,0,0,0,138,2,0,0}; // play.SendData(data3,true); ////收到网络协议:长度:496协议号:2037 // byte[] data4 = { 240, 1, 245, 7, 3, 0, 0, 0, 110, 134, 61, 138, 60, 0, 0, 0, 6, 0, 0, 0, 159, 8, 0, 0, 7, 0, 0, 0, 159, 8, 0, 0, 10, 0, 0, 0, 81, 0, 0, 0, 8, 0, 0, 0, 150, 0, 0, 0, 9, 0, 0, 0, 83, 94, 121, 19, 55, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 2, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 2, 0, 0, 0, 21, 0, 0, 0, 5, 0, 0, 0, 23, 0, 0, 0, 1, 0, 0, 0, 25, 0, 0, 0, 244, 5, 0, 0, 26, 0, 0, 0, 33, 5, 0, 0, 27, 0, 0, 0, 165, 3, 0, 0, 28, 0, 0, 0, 19, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 11, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 24, 0, 0, 0, 138, 2, 0, 0, 13, 0, 0, 0, 50, 0, 0, 0, 1, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 204, 5, 0, 0, 3, 0, 0, 0, 231, 2, 0, 0, 2, 0, 0, 0, 11, 4, 0, 0, 4, 0, 0, 0, 47, 2, 0, 0, 5, 0, 0, 0, 190, 2, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 176, 10, 0, 0, 37, 0, 0, 0, 235, 49, 0, 0, 38, 0, 0, 0, 79, 71, 0, 0, 39, 0, 0, 0, 168, 35, 0, 0, 40, 0, 0, 0, 235, 49, 0, 0, 41, 0, 0, 0, 225, 26, 0, 0, 42, 0, 0, 0, 179, 32, 0, 0, 83, 0, 0, 0, 50, 0, 0, 0 }; // play.SendData(data4, true); }
//收摊 //bSendData 是否回发收摊数据- 玩家下线就不发 public void ShutPtich(PlayerObject play, bool bSendData = true) { if (play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_PTICH) == null) { return; } uint ptich_obj_id = GetPtichObjectTypeID(play.GetCurrentPtichID()); if (ptich_obj_id == 0) { return; } for (int i = 0; i < mListPtichInfo[play.GetCurrentPtichID()].mSellItemList.Count; i++) { GameStruct.RoleItemInfo item = null; if (mListPtichInfo[play.GetCurrentPtichID()].mSellItemList[i].item_id >= IDManager.eudemon_start_id) { RoleData_Eudemon eudemon = play.GetEudemonSystem().FindEudemon( mListPtichInfo[play.GetCurrentPtichID()].mSellItemList[i].item_id); if (eudemon == null) { continue; } item = play.GetItemSystem().FindItem(eudemon.itemid); } else { item = play.GetItemSystem().FindItem( mListPtichInfo[play.GetCurrentPtichID()].mSellItemList[i].item_id); } if (item != null) { //放回到包裹 //放回到包裹或幻兽背包 if (item.typeid >= IDManager.eudemon_start_id) { item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_EUDEMON_PACK; } else { item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_BACKPACK; } if (bSendData) { PacketOut outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1009); outpack.WriteUInt32(item.id); outpack.WriteUInt32(ptich_obj_id); outpack.WriteInt32((byte)NetMsg.MsgOperateItem.PTICH_GETBACK_SELLITEM); outpack.WriteInt32(0); outpack.WriteInt32(0); outpack.WriteInt32(0); play.SendData(outpack.Flush(), true); } } } mListPtichInfo[play.GetCurrentPtichID()].play = null; //移除地图对象 play.GetGameMap().RemoveObj(mListPtichInfo[play.GetCurrentPtichID()].PtichObj); mListPtichInfo[play.GetCurrentPtichID()].PtichObj = null; mListPtichInfo[play.GetCurrentPtichID()].mSellItemList.Clear(); if (bSendData) { PacketOut outpack = new PacketOut(); outpack.WriteInt16(16); outpack.WriteInt16(2031); outpack.WriteUInt32(ptich_obj_id); outpack.WriteUInt32(play.GetTypeId()); outpack.WriteInt32(2); play.SendData(outpack.Flush(), true); } //移除摆摊状态 play.GetTimerSystem().DeleteStatus(GameStruct.RoleStatus.STATUS_PTICH); }
//摊位取回道具 public void GetBackItem(PlayerObject play, uint item_id) { if (play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_PTICH) == null) { return; } uint ptich_obj_id = GetPtichObjectTypeID(play.GetCurrentPtichID()); GameStruct.RoleItemInfo item = null; if (ptich_obj_id == 0) { return; } if (item_id >= IDManager.eudemon_start_id) { RoleData_Eudemon eudemon = play.GetEudemonSystem().FindEudemon(item_id); if (eudemon == null) { return; } item = play.GetItemSystem().FindItem(eudemon.itemid); if (item == null) { return; } } else { item = play.GetItemSystem().FindItem(item_id); if (item == null) { return; } } int nPtichId = play.GetCurrentPtichID(); for (int i = 0; i < mListPtichInfo[nPtichId].mSellItemList.Count; i++) { if (mListPtichInfo[nPtichId].mSellItemList[i].item_id == item_id) { mListPtichInfo[nPtichId].mSellItemList.RemoveAt(i); break; } } //放回到包裹或幻兽背包 if (item_id >= IDManager.eudemon_start_id) { item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_EUDEMON_PACK; } else { item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_BACKPACK; } PacketOut outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1009); outpack.WriteUInt32(item_id); outpack.WriteUInt32(ptich_obj_id); outpack.WriteInt32((byte)NetMsg.MsgOperateItem.PTICH_GETBACK_SELLITEM); outpack.WriteInt32(0); outpack.WriteInt32(0); outpack.WriteInt32(0); play.SendData(outpack.Flush(), true); }
//摊位出售道具 public void SellItem(PlayerObject play, uint item_id, byte type, int price) { if (play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_PTICH) == null) { return; } uint ptich_obj_id = GetPtichObjectTypeID(play.GetCurrentPtichID()); GameStruct.RoleItemInfo item = null; if (ptich_obj_id == 0) { return; } if (item_id >= IDManager.eudemon_start_id) { RoleData_Eudemon eudemon = play.GetEudemonSystem().FindEudemon(item_id); if (eudemon == null) { return; } item = play.GetItemSystem().FindItem(eudemon.itemid); if (item == null) { return; } } else { item = play.GetItemSystem().FindItem(item_id); if (item == null) { return; } } if (ptich_obj_id == 0) { return; } //判断是否已经在出售摊位列表中- 反作弊 int nPtichId = play.GetCurrentPtichID(); for (int i = 0; i < mListPtichInfo[nPtichId].mSellItemList.Count; i++) { if (mListPtichInfo[nPtichId].mSellItemList[i].item_id == item_id) { return; } } //摆摊出售道具已满 if (mListPtichInfo[nPtichId].mSellItemList.Count >= GameBase.Config.Define.PTICH_SELL_MAX_COUNT) { return; } PacketOut outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1009); outpack.WriteUInt32(item_id); outpack.WriteInt32(price); outpack.WriteInt32(type); outpack.WriteInt32(0); outpack.WriteInt32(0); outpack.WriteInt32(0); play.SendData(outpack.Flush(), true); //移到摊位状态 item.postion = NetMsg.MsgItemInfo.ITEMPOSTION_PTICH_PACK; PtichSellItemInfo info = new PtichSellItemInfo(); info.item_id = item_id; info.price = price; info.sell_type = type; mListPtichInfo[nPtichId].mSellItemList.Add(info); // {28,0,241,3,8,127,205,7,111,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} }
//添加交易道具 public void AddTradItem(uint itemid) { PlayerObject obj = UserEngine.Instance().FindPlayerObjectToTypeID(GetTradTarget()); RoleData_Eudemon eudemon = null; if (obj == null) { return; } GameStruct.RoleItemInfo info = null; if (itemid >= IDManager.eudemon_start_id) { eudemon = play.GetEudemonSystem().FindEudemon(itemid); if (eudemon == null) { return; } info = play.GetItemSystem().FindItem(eudemon.itemid); } else { info = play.GetItemSystem().FindItem(itemid); } if (info == null) { return; } //最多二十个道具 if (mListItem.Count >= 20) { return; } //对面包裹满了- if (info.postion == NetMsg.MsgItemInfo.ITEMPOSITION_BACKPACK) { if (obj.GetItemSystem().IsItemFull()) { play.LeftNotice("对方物品栏已满,无法放置更多道具"); return; } }//幻兽栏已满 else if (info.postion == NetMsg.MsgItemInfo.ITEMPOSITION_EUDEMON_PACK) { if (obj.GetEudemonSystem().IsEudemonFull()) { play.LeftNotice("对方幻兽栏已满,无法放置更多道具"); return; } } mListItem.Add(info); //幻兽数据 //发给对方道具数据 obj.GetItemSystem().SendItemInfo(info, NetMsg.MsgItemInfo.TAG_TRADITEM); if (info.postion == NetMsg.MsgItemInfo.ITEMPOSITION_EUDEMON_PACK) { eudemon = play.GetEudemonSystem().FindEudemon(itemid); if (eudemon != null) { mListEudemon.Add(eudemon); play.GetEudemonSystem().SendLookTradEudemonInfo(obj, eudemon); } } }