private void HandlePlayerAddTemplate(GSPacketIn pkg) { GamePlayer player = WorldMgr.GetPlayerById(pkg.ClientID); if (player != null) { ItemTemplateInfo template = ItemMgr.FindItemTemplate(pkg.ReadInt()); eBageType type = (eBageType)pkg.ReadByte(); if (template != null) { int Count = pkg.ReadInt(); ItemInfo item = ItemInfo.CreateFromTemplate(template, Count, 118); item.Count = Count; item.ValidDate = pkg.ReadInt(); item.IsBinds = pkg.ReadBoolean(); item.IsUsed = pkg.ReadBoolean(); item.IsTips = pkg.ReadBoolean(); item.IsLogs = pkg.ReadBoolean(); int check = pkg.ReadInt(); if (check == template.TemplateID + Count) { if (!player.AddTemplate(item, type, item.Count, item.IsTips)) { } } else { FightServerConnector.log.ErrorFormat("add template item error: userid {0} template id {1} count {2}", pkg.ClientID, template.TemplateID, Count); } } } }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType bagType = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); //int toplace = packet.ReadInt(); int count = packet.ReadInt(); //} client.Player.BeginChanges(); PlayerInventory bag = client.Player.GetInventory(bagType); if (bag != null && bag.GetItemAt(place) != null) { bag.RemoveItemAt(place); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.Success")); } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.NoSuccess")); return(1); } // client.Player.BeginChanges(); client.Player.AddGiftToken(25); client.Player.AddGold(25); client.Player.CommitChanges(); //LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Continue, client.Player.PlayerCharacter.ID, 25, client.Player.PlayerCharacter.Money, 25, 0, 0, "牌子编号",)); //client.Player.SaveIntoDatabase();//保存到数据库 return(0); }
public void SendPlayerAddTemplate(int playerId, ItemInfo cloneItem, eBageType bagType, int count) { if (cloneItem != null) { GSPacketIn pkg = new GSPacketIn((byte)eFightPackageType.PLAYER_ADD_TEMPLATE1, playerId); pkg.WriteInt(cloneItem.TemplateID); pkg.WriteByte((byte)bagType); pkg.WriteInt(count); pkg.WriteInt(cloneItem.ValidDate); pkg.WriteBoolean(cloneItem.IsBinds); pkg.WriteBoolean(cloneItem.IsUsed); SendTCP(pkg); } }
public void SendPlayerAddTemplate(int playerId, ItemInfo cloneItem, eBageType bagType, int count) { if (cloneItem != null) { GSPacketIn gSPacketIn = new GSPacketIn(48, playerId); gSPacketIn.WriteInt(cloneItem.TemplateID); gSPacketIn.WriteByte((byte)bagType); gSPacketIn.WriteInt(count); gSPacketIn.WriteInt(cloneItem.ValidDate); gSPacketIn.WriteBoolean(cloneItem.IsBinds); gSPacketIn.WriteBoolean(cloneItem.IsUsed); this.SendTCP(gSPacketIn); } }
public int HandlePacket(GameClient client, GSPacketIn packet) { int result; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); result = 0; } else { int consortiaID = packet.ReadInt(); ConsortiaInfo consortia = ConsortiaMgr.FindConsortiaInfo(consortiaID); if (consortia.ChairmanName != client.Player.PlayerCharacter.NickName) { result = 0; } else { eBageType bagType = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); string newConsotiaName = packet.ReadString(); string message = ""; ItemInfo info = client.Player.GetItemAt(bagType, place); if (info != null) { if (info.TemplateID == 11993) { string userName = client.Player.PlayerCharacter.UserName; string nickName = client.Player.PlayerCharacter.NickName; using (PlayerBussiness db = new PlayerBussiness()) { if (db.RenameConsortiaNameByCard(userName, nickName, newConsotiaName, ref message)) { client.Player.RemoveItem(info, eItemRemoveType.Use); packet.WriteString(LanguageMgr.GetTranslation("Tank.Request.RenameConsortiaName.Success", new object[0])); client.Out.SendTCP(packet); } else { client.Out.SendMessage(eMessageType.Normal, message); } } } } result = 0; } } return(result); }
private void HandlePlayerAddTemplate1(GSPacketIn pkg) { GamePlayer player = WorldMgr.GetPlayerById(pkg.ClientID); if (player != null) { ItemTemplateInfo template = ItemMgr.FindItemTemplate(pkg.ReadInt()); eBageType type = (eBageType)pkg.ReadByte(); if (template != null) { int Count = pkg.ReadInt(); ItemInfo item = ItemInfo.CreateFromTemplate(template, Count, (int)ItemAddType.FightGet); item.Count = Count; item.ValidDate = pkg.ReadInt(); item.IsBinds = pkg.ReadBoolean(); item.IsUsed = pkg.ReadBoolean(); player.AddTemplate(item, type, item.Count); } } }
private void HandlePlayerAddTemplate1(GSPacketIn pkg) { GamePlayer playerById = WorldMgr.GetPlayerById(pkg.ClientID); if (playerById != null) { ItemTemplateInfo itemTemplateInfo = ItemMgr.FindItemTemplate(pkg.ReadInt()); eBageType bagType = (eBageType)pkg.ReadByte(); if (itemTemplateInfo != null) { int count = pkg.ReadInt(); ItemInfo itemInfo = ItemInfo.CreateFromTemplate(itemTemplateInfo, count, 118); itemInfo.Count = count; itemInfo.ValidDate = pkg.ReadInt(); itemInfo.IsBinds = pkg.ReadBoolean(); itemInfo.IsUsed = pkg.ReadBoolean(); playerById.AddTemplate(itemInfo, bagType, itemInfo.Count); } } }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType bageType = (eBageType)packet.ReadByte(); int num = packet.ReadInt(); int num2 = packet.ReadInt(); client.Player.BeginChanges(); PlayerInventory inventory = client.Player.GetInventory(bageType); if (inventory != null && inventory.GetItemAt(num) != null) { if (inventory.GetItemAt(num).Count <= num2) { num2 = inventory.GetItemAt(num).Count; } ItemTemplateInfo template = inventory.GetItemAt(num).Template; int num3 = num2 * template.ReclaimValue; if (template.ReclaimType == 2) { client.Player.AddGiftToken(num3); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.Success1", new object[] { num3 })); } if (template.ReclaimType == 1) { client.Player.AddGold(num3); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.Success2", new object[] { num3 })); } inventory.RemoveItemAt(num); client.Player.CommitChanges(); return(0); } client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.NoSuccess", new object[0])); return(1); }
public ItemInfo GetItemAt(eBageType bagType, int place) { PlayerInventory bag = GetInventory(bagType); if (bag != null) { return bag.GetItemAt(place); } return null; }
public string GetInventoryName(eBageType bageType) { switch (bageType) { case eBageType.MainBag: return LanguageMgr.GetTranslation("Game.Server.GameObjects.Equip"); case eBageType.PropBag: return LanguageMgr.GetTranslation("Game.Server.GameObjects.Prop"); default: return bageType.ToString(); } }
public int HandlePacket(GameClient client, GSPacketIn packet) { int result; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); result = 0; } else { eBageType bag = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); int count = packet.ReadInt(); PlayerInventory bag_current = client.Player.GetInventory(bag); ItemInfo goods = bag_current.GetItemAt(place); if (goods != null && goods.Count == count && goods.Template.CanDelete) { if (goods.Template.ReclaimType == 0) { int goodsValue = 0; client.Player.AddGold(goodsValue); client.Player.RemoveItem(goods, eItemRemoveType.Reclaim); client.Player.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("ExchangeMoneyToGoldHandler.success", new object[] { goodsValue })); } else { if (goods.Template.ReclaimType == 1) { int goodsValue = int.Parse(goods.Template.ReclaimValue) * count; if (goodsValue >= 0) { client.Player.AddGold(goodsValue); client.Player.RemoveItem(goods, eItemRemoveType.Reclaim); client.Player.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("ExchangeMoneyToGoldHandler.success", new object[] { goodsValue })); } else { client.Player.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserReclaimItemHandler.fail", new object[0])); } } else { if (goods.Template.ReclaimType == 2) { int goodsValue = int.Parse(goods.Template.ReclaimValue) * count; if (goodsValue >= 0) { client.Player.AddGiftToken(goodsValue); client.Player.RemoveItem(goods, eItemRemoveType.Reclaim); client.Player.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("ReclaimToGifttokenHandler.success", new object[] { goodsValue })); } else { client.Player.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserReclaimItemHandler.fail", new object[0])); } } else { if (goods.Template.ReclaimType == 3) { List <int> a = new List <int>(); if (goods.Template.ReclaimValue.IndexOf(',') != -1) { string[] b = goods.Template.ReclaimValue.Split(','); foreach (var c in b) { a.Add(int.Parse(c)); } } else { a.Add(int.Parse(goods.Template.ReclaimValue)); } foreach (var d in a) { client.Player.AddItem(ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(d), 1, 0)); } client.Player.RemoveItem(goods, eItemRemoveType.Reclaim); client.Player.SendMessage(eMessageType.ChatNormal, "回收成功!"); } } } } } result = 0; } return(result); }
public int HandlePacket(GameClient client, GSPacketIn packet)//sendGoodsContinue { if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); return(0); } new StringBuilder(); int num = packet.ReadInt(); string translateId = "UserItemContineueHandler.Success"; for (int i = 0; i < num; i++) { eBageType eBageType = (eBageType)packet.ReadByte(); int num2 = packet.ReadInt(); int iD = packet.ReadInt(); int num3 = (int)packet.ReadByte(); bool flag = packet.ReadBoolean(); int themvao = packet.ReadInt();//_loc_3.writeInt(param1[_loc_4][5]);//4.2 if ((eBageType == eBageType.MainBag && num2 >= 31) || eBageType == eBageType.PropBag || eBageType == eBageType.Consortia) { ItemInfo itemAt = client.Player.GetItemAt(eBageType, num2); int num4 = 0; int num5 = 0; int num6 = 0; int num7 = 0; int num8 = 0; int validDate = itemAt.ValidDate; DateTime arg_C8_0 = itemAt.BeginDate; int count = itemAt.Count; bool flag2 = itemAt.IsValidItem(); if (itemAt.ValidDate > 365) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Thời gian sử dụng đả đạt mức tối đa.", new object[0])); break; } ShopItemInfo shopItemInfoById = ShopMgr.GetShopItemInfoById(iD); if (shopItemInfoById.TemplateID != itemAt.TemplateID) { Console.WriteLine("HACK GIA HAN " + client.Player.Account); return(0); } ItemInfo.SetItemType(shopItemInfoById, num3, ref num4, ref num5, ref num6, ref num7, ref num8); if (num4 <= client.Player.PlayerCharacter.Gold && num5 <= client.Player.PlayerCharacter.Money && num6 <= client.Player.PlayerCharacter.Offer && num7 <= client.Player.PlayerCharacter.GiftToken) { client.Player.RemoveMoney(num5); client.Player.RemoveGold(num4); client.Player.RemoveOffer(num6); client.Player.RemoveGiftToken(num7); if (!flag2 && itemAt.ValidDate != 0) { itemAt.ValidDate = 0; } if (1 == num3) { itemAt.ValidDate += shopItemInfoById.AUnit; } if (2 == num3) { itemAt.ValidDate += shopItemInfoById.BUnit; } if (3 == num3) { itemAt.ValidDate += shopItemInfoById.CUnit; } if (!flag2 && itemAt.ValidDate != 0) { itemAt.BeginDate = DateTime.Now; itemAt.IsUsed = false; } LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Continue, client.Player.PlayerCharacter.ID, num5, client.Player.PlayerCharacter.Money, num4, 0, 0, 0, "牌子编号", itemAt.TemplateID.ToString(), num3.ToString()); } else { itemAt.ValidDate = validDate; itemAt.Count = count; translateId = "UserItemContineueHandler.NoMoney"; } if (eBageType == eBageType.MainBag) { if (flag) { int toSlot = client.Player.MainBag.FindItemEpuipSlot(itemAt.Template); client.Player.MainBag.MoveItem(num2, toSlot, itemAt.Count); } else { client.Player.MainBag.UpdateItem(itemAt); } } else { if (eBageType == eBageType.PropBag) { client.Player.PropBag.UpdateItem(itemAt); } else { client.Player.ConsortiaBag.UpdateItem(itemAt); } } } } client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(translateId, new object[0])); return(0); }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType bageType = (eBageType)packet.ReadByte(); int slot = packet.ReadInt(); eBageType toBageType = (eBageType)packet.ReadByte(); int toSlot = packet.ReadInt(); int count = packet.ReadInt(); PlayerInventory bag = client.Player.GetInventory(bageType); PlayerInventory inventory = client.Player.GetInventory(toBageType); if (toSlot < 0) { if ((inventory.BagType == (int)eBageType.Bank) || (inventory.BagType == (int)eBageType.PropBag)) { toSlot = inventory.FindFirstEmptySlot(0); } else { toSlot = inventory.FindFirstEmptySlot(31); } } //================================== if (count > 0) { if ((bag == null) || (bag.GetItemAt(slot) == null)) { return(0); } if ((bageType == toBageType) && (slot != -1)) { if (bag.GetItemAt(slot).Count >= count) { Console.WriteLine("-----Stage 1 !"); bag.MoveItem(slot, toSlot, count); } else { Console.WriteLine("--" + client.Player.Account + " Hack = CE"); bag.MoveItem(slot, toSlot, bag.GetItemAt(slot).Count); } return(1); } if ((slot == -1) && (toSlot != -1)) { Console.WriteLine("-----Stage 2 !"); bag.RemoveItemAt(toSlot); return(1); } if (((((slot != -1) && (toSlot == -1)) && ((bageType != eBageType.CaddyBag) && (toBageType != eBageType.Bank))) && (bageType != eBageType.Store)) && (toBageType != eBageType.Store)) { if (bageType == eBageType.MainBag) { Console.WriteLine("-----Stage 3 !"); bag.AddItem(client.Player.GetItemAt(bageType, slot), 31); } else { Console.WriteLine("-----Stage 4 !"); //bag.AddItem(client.Player.GetItemAt(bageType, slot), 0); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Full")); } return(1); } if ((((slot != -1) && (toBageType != bageType)) && (toBageType != eBageType.Store)) && (toBageType != eBageType.MainBag)) { ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID); if (info != null) { if (toBageType == eBageType.Store) { } Console.WriteLine("-----Stage 5 !"); bag.MoveToStore(bag, slot, toSlot, inventory, info.StoreLevel * 10); return(1); } } if ((toBageType == eBageType.Store) || (bageType == eBageType.Store)) { SqlDataProvider.Data.ItemInfo itemAt = client.Player.GetItemAt(bageType, slot); if ((itemAt != null) && (itemAt.Count > 1)) { itemAt.Count -= count; bag.UpdateItem(itemAt); SqlDataProvider.Data.ItemInfo item = itemAt.Clone(); item.Count = count; if (inventory.GetItemAt(toSlot) == null) { Console.WriteLine("-----Stage 6 !"); inventory.AddItemTo(item, toSlot); } else { SqlDataProvider.Data.ItemInfo itemByTemplateID = bag.GetItemByTemplateID(0, inventory.GetItemAt(toSlot).TemplateID); if (itemByTemplateID == null) { Console.WriteLine("-----Stage 7 !"); bag.MoveToStore(inventory, toSlot, bag.FindFirstEmptySlot(0), bag, 999); } else { Console.WriteLine("-----Stage 8 !"); itemByTemplateID.Count++; bag.UpdateItem(itemByTemplateID); inventory.RemoveItemAt(toSlot); } Console.WriteLine("-----Stage 9 !"); inventory.AddItemTo(item, toSlot); } } else { if ((((toBageType != eBageType.Store) && (toBageType != eBageType.MainBag)) && ((bag.GetItemAt(slot) != null) && (bag.GetItemAt(slot).Template.CategoryID == 7))) && (((toSlot > 0) && (toSlot < 31)) && (toSlot != 6))) { return(1); } try { Console.WriteLine("-----Stage 10 !"); bag.MoveToStore(bag, slot, toSlot, inventory, 50); } catch (Exception) { LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("ERROR USER CHANGEITEM placce: {0},toplace: {1},bagType: {2},ToBagType {3}", new object[] { slot, toSlot, bageType, toBageType }); LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("item :{0}, toitem {1}", bag.GetItemAt(slot), inventory.GetItemAt(toSlot)); } } return(1); } if ((toBageType == eBageType.MainBag) && (bageType == eBageType.Bank)) { Console.WriteLine("-----Stage 11!"); bag.MoveToStore(bag, slot, toSlot, inventory, 50); return(1); } } //================================== return(0); }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType eBageType = (eBageType)packet.ReadByte(); int num = packet.ReadInt(); eBageType eBageType2 = (eBageType)packet.ReadByte(); int num2 = packet.ReadInt(); int num3 = packet.ReadInt(); packet.ReadBoolean(); PlayerInventory inventory = client.Player.GetInventory(eBageType); PlayerInventory inventory2 = client.Player.GetInventory(eBageType2); ItemInfo itemAt = inventory.GetItemAt(num); if (eBageType2 == eBageType.TempBag) { GameServer.log.Error("User want to put item into temp bag!"); return(0); } if (inventory == null || itemAt == null) { return(0); } ItemInfo itemAt2 = inventory2.GetItemAt(num2); if (itemAt2 != null) { if (itemAt2.ItemID == itemAt.ItemID) { GameServer.log.Error(string.Concat(new string[] { "Hack Trung ItemID ", client.Player.PlayerCharacter.UserName, "-[", client.Player.PlayerCharacter.NickName, "]" })); client.Disconnect();//kick user hack return(0); } if (inventory == inventory2 && itemAt2.Place == itemAt.Place) { GameServer.log.Error(string.Concat(new string[] { "Hack Trung PLace ", client.Player.PlayerCharacter.UserName, "-[", client.Player.PlayerCharacter.NickName, "]" })); return(0); } } if (num3 < 0 || num3 > itemAt.Count) { num3 = itemAt.Count; } inventory.BeginChanges(); inventory2.BeginChanges(); try { if (eBageType2 == eBageType.Consortia) { ConsortiaInfo consortiaInfo = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID); if (consortiaInfo != null) { inventory2.Capalility = consortiaInfo.StoreLevel * 10; } } if (num2 == -1) { bool flag = false; if (eBageType == eBageType.CaddyBag && eBageType2 == eBageType.BeadBag) { num2 = inventory2.FindFirstEmptySlot(); if (inventory2.AddItemTo(itemAt, num2)) { inventory.TakeOutItem(itemAt); } else { flag = true; } } else { if (eBageType == eBageType2 && eBageType2 == eBageType.MainBag) { num2 = inventory2.FindFirstEmptySlot(); if (!inventory.MoveItem(num, num2, num3)) { flag = true; } } else { if (inventory2.StackItemToAnother(itemAt) || inventory2.AddItem(itemAt)) { inventory.TakeOutItem(itemAt); } else { flag = true; } } } if (flag) { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserChangeItemPlaceHandler.full", new object[0])); } } else { if (eBageType == eBageType2) { inventory.MoveItem(num, num2, num3); client.Player.OnNewGearEvent(itemAt.Template.CategoryID); } else { if (eBageType == eBageType.Store) { this.MoveFromStore(client, inventory, itemAt, num2, inventory2, num3); } else { if (eBageType == eBageType.Consortia) { UserChangeItemPlaceHandler.MoveFromBank(client, num, num2, inventory, inventory2, itemAt); } else { if (eBageType2 == eBageType.Store) { this.MoveToStore(client, inventory, itemAt, num2, inventory2, num3); } else { if (eBageType2 == eBageType.Consortia) { UserChangeItemPlaceHandler.MoveToBank(num, num2, inventory, inventory2, itemAt); } else { if (inventory2.AddItemTo(itemAt, num2)) { inventory.TakeOutItem(itemAt); } } } } } } } } finally { inventory.CommitChanges(); inventory2.CommitChanges(); } return(0); }
//修改: Xiaov //时间: 2009-11-7 //描述: 续费<已测试> public int HandlePacket(GameClient client, GSPacketIn packet) { //在游戏中不能续费 //if (client.Player.CurrentRoom != null && client.Player.CurrentRoom.IsPlaying) // return 0; //二次密码 if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked")); return(0); } StringBuilder payGoods = new StringBuilder(); //表示支付物品ID int count = packet.ReadInt(); for (int i = 0; i < count; i++) { eBageType bag = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); int Goods = packet.ReadInt(); int type = packet.ReadByte(); bool isDress = packet.ReadBoolean(); if ((bag == 0 && place >= 31) || bag == eBageType.PropBag || bag == eBageType.Bank) { ItemInfo item = client.Player.GetItemAt(bag, place); if (item != null && item.ValidDate != 0 && !item.IsValidItem() && (bag == 0 || (bag == eBageType.PropBag && item.TemplateID == 10200))) //if (item != null && item.ValidDate != 0 && (bag == 0 || bag == 11 || (bag == 1 && item.TemplateID == 10200))) { int gold = 0; //表示金币 int money = 0; //表示点券 int offer = 0; //表示功勋 int gifttoken = 0; //表示礼劵 int medal = 0; int oldDate = item.ValidDate; int oldCount = item.Count; bool isValid = item.IsValidItem(); //List<int> needitemsinfo = new List<int>(); //eMessageType eMsg = eMessageType.Normal; //string msg = "UserBuyItemHandler.Success"; ShopItemInfo shopitem = Bussiness.Managers.ShopMgr.GetShopItemInfoById(Goods); //获取商品信息 ItemInfo.SetItemType(shopitem, type, ref gold, ref money, ref offer, ref gifttoken, ref medal); //获取物品价格及兑换物TemplatID, Count /*///////////////////////////////////////////////////////////////////////////////////// * //玩家背包中是否有兑换物品所需要的物品 * int icount = client.Player.MainBag.GetItems().Count; //获取个数 * bool result = true; * //for (int j = 0; j < needitemsinfo.Count; j += 2) * //{ * // ItemInfo temp = client.Player.PropBag.GetItemByTemplateID(icount, needitemsinfo[j]); * // int iVaule = client.Player.PropBag.GetItemCount(needitemsinfo[j]); * // if (temp != null || iVaule != needitemsinfo[j + 1] || !temp.IsBinds) * // { * // result = false; * // } * //} * for (int j = 0; j < needitemsinfo.Count; j += 2) * { * if (client.Player.GetItemCount(needitemsinfo[j]) < needitemsinfo[j + 1]) * { * result = false; * } * } * * if (!result) * { * eMsg = eMessageType.ERROR; * msg = "UserBuyItemHandler.NoBuyItem"; * client.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg)); * return 1; * } * ////////////////////////////////////////////////////////////*/ if (gold <= client.Player.PlayerCharacter.Gold && money <= client.Player.PlayerCharacter.Money && offer <= client.Player.PlayerCharacter.Offer && gifttoken <= client.Player.PlayerCharacter.GiftToken && medal <= client.Player.PlayerCharacter.medal) { client.Player.RemoveMoney(money); client.Player.RemoveGold(gold); client.Player.RemoveOffer(offer); client.Player.RemoveGiftToken(gifttoken); client.Player.RemoveMedal(medal); /*////////////////////////////////////////////////////////////////////////////////////////////////////////////// * //从玩家背包中删除兑换所需要的物品 * //for (int j = 0; j < needitemsinfo.Count; j += 2) * //{ * // ItemInfo temp = client.Player.PropBag.GetItemByTemplateID(icount, needitemsinfo[j]); * // client.Player.PropBag.RemoveItem(temp); /////////?????? 日志 * // payGoods.Append(temp.TemplateID.ToString() + ";"); * //} * for (int j = 0; j < needitemsinfo.Count; j += 2) * { * client.Player.RemoveTemplate(needitemsinfo[j], needitemsinfo[j + 1]); * payGoods.Append(needitemsinfo[j].ToString() + ":"); * } * ////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ if (!isValid && item.ValidDate != 0) { if (1 == type) { item.ValidDate = shopitem.AUnit; item.BeginDate = DateTime.Now; item.IsUsed = false; } if (2 == type) { item.ValidDate = shopitem.BUnit; item.BeginDate = DateTime.Now; item.IsUsed = false; } if (3 == type) { item.ValidDate = shopitem.CUnit; item.BeginDate = DateTime.Now; item.IsUsed = false; } } if (bag == 0) { if (isDress) { int solt = client.Player.MainBag.FindItemEpuipSlot(item.Template); client.Player.MainBag.MoveItem(place, solt, item.Count); } else { client.Player.MainBag.UpdateItem(item); } } else if (bag == eBageType.PropBag) { client.Player.PropBag.UpdateItem(item); } else { client.Player.StoreBag.UpdateItem(item); } LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Continue, client.Player.PlayerCharacter.ID, money, client.Player.PlayerCharacter.Money, gold, 0, 0, 0, "牌子编号", item.TemplateID.ToString(), type.ToString()); } else { item.ValidDate = oldDate; item.Count = oldCount; client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserItemContineueHandler.NoMoney")); } } } } client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserItemContineueHandler.Success")); return(0); }
public bool AddTemplate(ItemInfo cloneItem, eBageType bagType, int count) { this.m_client.SendPlayerAddTemplate(this.m_character.ID, cloneItem, bagType, count); return(true); }
/// <summary> /// 熔炼步骤 /// 第一步:检查四个熔炼类型与熔炼物品&是否有二级密码 /// 第二步:检验数据是否合乎熔炼规则 /// 第三步:生成预览或生成物品 /// </summary> /// <param name="client"></param> /// <param name="packet"></param> /// <returns></returns> /// public int HandlePacket(GameClient client, GSPacketIn packet) { StringBuilder str = new StringBuilder(); //第一步:传入操作类型、与四个石头 int opertionType = packet.ReadByte(); int count = packet.ReadInt(); int MinValid = int.MaxValue; //默认最短有效时间 List <ItemInfo> items = new List <ItemInfo>(); List <ItemInfo> appendItems = new List <ItemInfo>(); List <eBageType> bagTypes = new List <eBageType>(); if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked")); return(1); } for (int i = 0; i < count; i++) { eBageType bagType = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); ItemInfo info = client.Player.GetItemAt(bagType, place); if (info != null) { //str.Append(info.ItemID + ":" + info.TemplateID + ","); //items.Add(info); //bagTypes.Add(bagType); if (!items.Contains(info)) { str.Append(info.ItemID + ":" + info.TemplateID + ","); items.Add(info); bagTypes.Add(bagType); if (info.ValidDate < MinValid && info.ValidDate != 0) { MinValid = info.ValidDate; } } else { client.Out.SendMessage(eMessageType.Normal, "Bad Input"); return(1); } } } if (MinValid == int.MaxValue) { MinValid = 0; items.Clear(); } //第二步:传入熔炼公式与背包类型 eBageType bagformul = (eBageType)packet.ReadByte(); int placeformul = packet.ReadInt(); var storeBag2 = client.Player.StoreBag2; ItemInfo formul = storeBag2.GetItemAt(0);; ItemInfo tempitem = null; string beginProperty = null; string AddItem = ""; for (int i = 1; i <= 4; i++) { items.Add(storeBag2.GetItemAt(i)); } using (ItemRecordBussiness db = new ItemRecordBussiness()) { foreach (ItemInfo item in items) { db.FusionItem(item, ref beginProperty); } } if (items.Count != 4 || formul == null) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemFusionHandler.ItemNotEnough")); return(0); } //第三步:附加物品个数+(背包类型与附加物品位置) int appendCount = packet.ReadInt(); List <eBageType> bagTypesAppend = new List <eBageType>(); for (int i = 0; i < appendCount; i++) { eBageType bagType = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); ItemInfo info = client.Player.GetItemAt(bagType, place); if (info != null) { if (!items.Contains(info) && !appendItems.Contains(info)) { str.Append(info.ItemID + ":" + info.TemplateID + ","); appendItems.Add(info); bagTypesAppend.Add(bagType); AddItem += info.ItemID + ":" + info.Template.Name + "," + info.IsBinds + "|"; } else { client.Out.SendMessage(eMessageType.Normal, "Bad Input"); return(1); } } } //结束:预览或熔炼 if (0 == opertionType) //预览模式 { bool isBind = false; Dictionary <int, double> previewItemList = FusionMgr.FusionPreview(items, appendItems, formul, ref isBind); if (previewItemList != null) { if (previewItemList.Count != 0) { client.Out.SendFusionPreview(client.Player, previewItemList, isBind, MinValid); } } } else //生成熔炼物品 { storeBag2.ClearBag(); int mustGold = (count + appendCount) * 400; if (client.Player.PlayerCharacter.Gold < mustGold) { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("ItemFusionHandler.NoMoney")); return(0); } bool isBind = false; bool result = false; ItemTemplateInfo rewardItem = FusionMgr.Fusion(items, appendItems, formul, ref isBind, ref result); if (rewardItem != null) { client.Player.RemoveGold(mustGold); for (int i = 0; i < items.Count; i++) { items[i].Count--; client.Player.UpdateItem(items[i]); } formul.Count--; client.Player.UpdateItem(formul); for (int i = 0; i < appendItems.Count; i++) { appendItems[i].Count--; client.Player.UpdateItem(appendItems[i]); } if (result) { str.Append(rewardItem.TemplateID + ","); ItemInfo item = ItemInfo.CreateFromTemplate(rewardItem, 1, (int)ItemAddType.Fusion); if (item == null) { return(0); } tempitem = item; item.IsBinds = isBind; item.ValidDate = MinValid; client.Player.OnItemFusion(item.Template.FusionType); //熔炼成功 client.Out.SendFusionResult(client.Player, result); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemFusionHandler.Succeed1") + item.Template.Name); //系统广播 if (((item.TemplateID >= 8300) && (item.TemplateID <= 8999)) || ((item.TemplateID >= 9300) && (item.TemplateID <= 9999)) || ((item.TemplateID >= 14300) && (item.TemplateID <= 14999))) { string msg = LanguageMgr.GetTranslation("ItemFusionHandler.Notice", client.Player.PlayerCharacter.NickName, item.Template.Name); //client.Out.SendSystemNotice(msg); GSPacketIn pkg1 = new GSPacketIn((byte)ePackageType.SYS_NOTICE); pkg1.WriteInt(1); pkg1.WriteString(msg); GameServer.Instance.LoginServer.SendPacket(pkg1); GamePlayer[] players = Game.Server.Managers.WorldMgr.GetAllPlayers(); foreach (GamePlayer p in players) { p.Out.SendTCP(pkg1); } } if (!client.Player.AddTemplate(item, item.Template.BagType, item.Count)) { str.Append("NoPlace"); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(item.GetBagName()) + LanguageMgr.GetTranslation("ItemFusionHandler.NoPlace")); } } else { str.Append("false"); client.Out.SendFusionResult(client.Player, result); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemFusionHandler.Failed")); } LogMgr.LogItemAdd(client.Player.PlayerCharacter.ID, LogItemType.Fusion, beginProperty, tempitem, AddItem, Convert.ToInt32(result)); client.Player.SaveIntoDatabase();//保存到数据库 } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemFusionHandler.NoCondition")); } } return(0); }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType bagType = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); //int toBagTemp = packet.ReadByte(); //if (toBagTemp == 11) toBagTemp++; //eBageType tobagType = (eBageType)toBagTemp; eBageType tobagType = (eBageType)packet.ReadByte(); int toplace = packet.ReadInt(); int count = packet.ReadInt(); //pkg.writeByte(bagtype); //pkg.writeInt(place); //pkg.writeByte(tobagType); //pkg.writeInt(toplace); //pkg.writeInt(count); PlayerInventory bag = client.Player.GetInventory(bagType); PlayerInventory tobag = client.Player.GetInventory(tobagType); //chong hack chua xac dinh. do nem' vui khi di lung tung if (bag == null || bag.GetItemAt(place) == null) { return(0); } // chuyen do noi bo trong cung 1 tui' if ((bagType == tobagType) && place != -1) { //.GetItemInventory(temp); bag.MoveItem(place, toplace, count); return(1); } if (place == -1 && toplace != -1) { bag.RemoveItemAt(toplace); return(1); } if (place != -1 && toplace == -1 && bagType != eBageType.CaddyBag && tobagType != eBageType.Bank && bagType != eBageType.Store && tobagType != eBageType.Store) { if (bagType == 0) { bag.AddItem(client.Player.GetItemAt(bagType, place), 31); //toSolt = bag.FindFirstEmptySlot(31); } else { bag.AddItem(client.Player.GetItemAt(bagType, place), 0); } return(1); } if (place != -1 && tobagType != bagType && tobagType != eBageType.Store && tobagType != eBageType.MainBag) { ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID); if (info != null) { //if(tobagType==eBageType.Store) client.Player.StoreBag.MoveToStore(bag, place, bagType, info.StoreLevel * 10); bag.MoveToStore(bag, place, toplace, tobag, info.StoreLevel * 10); return(1); } } //danh cho store khi nang cap chuyen do ve main if (tobagType == eBageType.Store || bagType == eBageType.Store) { var item = client.Player.GetItemAt(bagType, place); if (item != null && item.Count > 1) { item.Count--; bag.UpdateItem(item); var tempItem = item.Clone(); tempItem.Count = 1; if (tobag.GetItemAt(toplace) == null) { tobag.AddItemTo(tempItem, toplace); } else { var tempItem2 = bag.GetItemByTemplateID(0, tobag.GetItemAt(toplace).TemplateID); if (tempItem2 == null) { bag.MoveToStore(tobag, toplace, bag.FindFirstEmptySlot(0), bag, 999); } else { tempItem2.Count++; bag.UpdateItem(tempItem2); tobag.RemoveItemAt(toplace); } tobag.AddItemTo(tempItem, toplace); } //tobag.CommitChanges(); } else { if (tobagType != eBageType.Store && tobagType != eBageType.MainBag && bag.GetItemAt(place) != null && bag.GetItemAt(place).Template.CategoryID == 7 && (toplace > 0 && toplace < 31 && toplace != 6)) { return(1); } try { bag.MoveToStore(bag, place, toplace, tobag, 50); } catch (Exception e) { LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("ERROR USER CHANGEITEM placce: {0},toplace: {1},bagType: {2},ToBagType {3}", place, toplace, bagType, tobagType); LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("item :{0}, toitem {1}", bag.GetItemAt(place), tobag.GetItemAt(toplace)); } } return(1); } //danh cho tu ngan hang chuyen do ve main if (tobagType == eBageType.MainBag && bagType == eBageType.Bank) { bag.MoveToStore(bag, place, toplace, tobag, 50); return(1); } return(0); }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType bageType = (eBageType)packet.ReadByte(); int slot = packet.ReadInt(); eBageType type2 = (eBageType)packet.ReadByte(); int toSlot = packet.ReadInt(); int count = packet.ReadInt(); PlayerInventory bag = client.Player.GetInventory(bageType); PlayerInventory inventory = client.Player.GetInventory(type2); if (toSlot < 0) { if ((inventory.BagType == 11) || (inventory.BagType == 1)) { toSlot = inventory.FindFirstEmptySlot(0); } else { toSlot = inventory.FindFirstEmptySlot(0x1f); } } if (count > 0) { if ((bag == null) || (bag.GetItemAt(slot) == null)) { return(0); } if ((bageType == type2) && (slot != -1)) { if (bag.GetItemAt(slot).Count >= count) { bag.MoveItem(slot, toSlot, count); } else { Console.WriteLine("--" + client.Player.Account + " Hack = CE"); bag.MoveItem(slot, toSlot, bag.GetItemAt(slot).Count); } return(1); } if ((slot == -1) && (toSlot != -1)) { bag.RemoveItemAt(toSlot); return(1); } if (((((slot != -1) && (toSlot == -1)) && ((bageType != eBageType.CaddyBag) && (type2 != eBageType.Bank))) && (bageType != eBageType.Store)) && (type2 != eBageType.Store)) { if (bageType == eBageType.MainBag) { bag.AddItem(client.Player.GetItemAt(bageType, slot), 0x1f); } else { bag.AddItem(client.Player.GetItemAt(bageType, slot), 0); } return(1); } if ((((slot != -1) && (type2 != bageType)) && (type2 != eBageType.Store)) && (type2 != eBageType.MainBag)) { ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID); if (info != null) { if (type2 == eBageType.Store) { } bag.MoveToStore(bag, slot, toSlot, inventory, info.StoreLevel * 10); return(1); } } if ((type2 == eBageType.Store) || (bageType == eBageType.Store)) { SqlDataProvider.Data.ItemInfo itemAt = client.Player.GetItemAt(bageType, slot); if ((itemAt != null) && (itemAt.Count > 1)) { itemAt.Count--; bag.UpdateItem(itemAt); SqlDataProvider.Data.ItemInfo item = itemAt.Clone(); item.Count = 1; if (inventory.GetItemAt(toSlot) == null) { inventory.AddItemTo(item, toSlot); } else { SqlDataProvider.Data.ItemInfo itemByTemplateID = bag.GetItemByTemplateID(0, inventory.GetItemAt(toSlot).TemplateID); if (itemByTemplateID == null) { bag.MoveToStore(inventory, toSlot, bag.FindFirstEmptySlot(0), bag, 0x3e7); } else { itemByTemplateID.Count++; bag.UpdateItem(itemByTemplateID); inventory.RemoveItemAt(toSlot); } inventory.AddItemTo(item, toSlot); } } else { if ((((type2 != eBageType.Store) && (type2 != eBageType.MainBag)) && ((bag.GetItemAt(slot) != null) && (bag.GetItemAt(slot).Template.CategoryID == 7))) && (((toSlot > 0) && (toSlot < 0x1f)) && (toSlot != 6))) { return(1); } try { bag.MoveToStore(bag, slot, toSlot, inventory, 50); } catch (Exception) { LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("ERROR USER CHANGEITEM placce: {0},toplace: {1},bagType: {2},ToBagType {3}", new object[] { slot, toSlot, bageType, type2 }); LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("item :{0}, toitem {1}", bag.GetItemAt(slot), inventory.GetItemAt(toSlot)); } } return(1); } if ((type2 == eBageType.MainBag) && (bageType == eBageType.Bank)) { bag.MoveToStore(bag, slot, toSlot, inventory, 50); return(1); } } return(0); }
public override int HandlePacket(GamePlayer player, GSPacketIn packet) { eBageType bagType = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); int payType = (int)packet.ReadByte(); int price = packet.ReadInt(); int mouthful = packet.ReadInt(); int validDate = packet.ReadInt(); string msg = "AuctionAddHandler.Fail"; payType = 1; int result; if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked) { player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); result = 0; } else { if (price < 0 || (mouthful != 0 && mouthful < price)) { result = 0; } else { if (payType != 0) { payType = 1; } int needGold = (validDate == 0) ? 100 : ((validDate == 1) ? 200 : 300); needGold = ((needGold < 1) ? 1 : needGold); ItemInfo goods = player.GetItemAt(bagType, place); if (price < 0) { msg = "AuctionAddHandler.Msg1"; } else { if (mouthful != 0 && mouthful < price) { msg = "AuctionAddHandler.Msg2"; } else { if (needGold > player.PlayerCharacter.Gold) { msg = "AuctionAddHandler.Msg3"; } else { if (goods == null) { msg = "AuctionAddHandler.Msg4"; } else { if (goods.IsBinds) { msg = "AuctionAddHandler.Msg5"; } else { if (goods.ItemID == 0) { using (PlayerBussiness db = new PlayerBussiness()) { db.AddGoods(goods); } } AuctionInfo info = new AuctionInfo(); info.AuctioneerID = player.PlayerCharacter.ID; info.AuctioneerName = player.PlayerCharacter.NickName; info.BeginDate = DateTime.Now; info.BuyerID = 0; info.BuyerName = ""; info.IsExist = true; info.ItemID = goods.ItemID; info.Mouthful = mouthful; info.PayType = payType; info.Price = price; info.Rise = price / 10; info.Rise = ((info.Rise < 1) ? 1 : info.Rise); info.Name = goods.Template.Name; info.Category = goods.Template.CategoryID; info.ValidDate = ((validDate == 0) ? 8 : ((validDate == 1) ? 24 : 48)); info.TemplateID = goods.TemplateID; info.Random = AuctionAddHandler.random.Next(45, 75); using (PlayerBussiness db = new PlayerBussiness()) { if (db.AddAuction(info)) { player.TakeOutItem(goods); player.SaveIntoDatabase(); player.RemoveGold(needGold); msg = "AuctionAddHandler.Msg6"; player.Out.SendAuctionRefresh(info, info.AuctionID, true, goods); } } } } } } } player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(msg, new object[0])); result = 0; } } return(result); }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (client.Player.PlayerCharacter.Gold < 100) { return(1); } string translateId = "UserSendMailHandler.Success"; eMessageType type = eMessageType.Normal; GSPacketIn gSPacketIn = new GSPacketIn(116, client.Player.PlayerCharacter.ID); ItemInfo itemInfo = null; string text = packet.ReadString().Trim(); string title = packet.ReadString(); string content = packet.ReadString(); bool flag = packet.ReadBoolean(); int num = packet.ReadInt(); int num2 = packet.ReadInt(); eBageType eBageType = (eBageType)packet.ReadByte(); int num3 = packet.ReadInt(); int num4 = packet.ReadInt(); if (text == client.Player.PlayerCharacter.NickName) { UserSendMailHandler.log.Error("Hack ingame: Username: "******" - NickName: " + client.Player.PlayerCharacter.NickName); return(0); } int num5 = 0; if ((num2 != 0 || num3 != -1) && client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); gSPacketIn.WriteBoolean(false); client.Out.SendTCP(gSPacketIn); return(1); } using (PlayerBussiness playerBussiness = new PlayerBussiness()) { GamePlayer clientByPlayerNickName = WorldMgr.GetClientByPlayerNickName(text); PlayerInfo playerInfo; if (clientByPlayerNickName == null) { playerInfo = playerBussiness.GetUserSingleByNickName(text); } else { playerInfo = clientByPlayerNickName.PlayerCharacter; } if (playerInfo != null && !string.IsNullOrEmpty(text)) { if (playerInfo.NickName != client.Player.PlayerCharacter.NickName) { client.Player.SaveIntoDatabase(); MailInfo mailInfo = new MailInfo(); mailInfo.SenderID = client.Player.PlayerCharacter.ID; mailInfo.Sender = client.Player.PlayerCharacter.NickName; mailInfo.ReceiverID = playerInfo.ID; mailInfo.Receiver = playerInfo.NickName; mailInfo.IsExist = true; mailInfo.Gold = 0; mailInfo.Money = 0; mailInfo.Title = title; mailInfo.Content = content; List <ItemInfo> list = new List <ItemInfo>(); List <eBageType> list2 = new List <eBageType>(); List <int> list3 = new List <int>(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(LanguageMgr.GetTranslation("UserSendMailHandler.AnnexRemark", new object[0])); int num6 = 0; if (num3 != -1) { itemInfo = client.Player.GetItemAt(eBageType, num3); if (itemInfo != null && !itemInfo.IsBinds) { if (itemInfo.Count < num4 || num4 < 0) { client.Out.SendMessage(type, LanguageMgr.GetTranslation("Số lượng không có thực, thao tác thất bại!", new object[0])); int result = 0; return(result); } num5 = itemInfo.Count - num4; mailInfo.Annex1Name = itemInfo.Template.Name; mailInfo.Annex1 = itemInfo.ItemID.ToString(); list.Add(itemInfo); list2.Add(eBageType); list3.Add(num4); num6++; stringBuilder.Append(num6); stringBuilder.Append("、"); stringBuilder.Append(mailInfo.Annex1Name); stringBuilder.Append("x"); stringBuilder.Append(itemInfo.Count); stringBuilder.Append(";"); } } if (flag) { if (num2 <= 0 || (string.IsNullOrEmpty(mailInfo.Annex1) && string.IsNullOrEmpty(mailInfo.Annex2) && string.IsNullOrEmpty(mailInfo.Annex3) && string.IsNullOrEmpty(mailInfo.Annex4))) { int result = 1; return(result); } mailInfo.ValidDate = ((num == 1) ? 1 : 6); mailInfo.Type = 101; if (num2 > 0) { mailInfo.Money = num2; num6++; stringBuilder.Append(num6); stringBuilder.Append("、"); stringBuilder.Append(LanguageMgr.GetTranslation("UserSendMailHandler.PayMoney", new object[0])); stringBuilder.Append(num2); stringBuilder.Append(";"); } } else { mailInfo.Type = 1; if (client.Player.PlayerCharacter.Money >= num2 && num2 > 0) { mailInfo.Money = num2; client.Player.RemoveMoney(num2); LogMgr.LogMoneyAdd(LogMoneyType.Mail, LogMoneyType.Mail_Send, client.Player.PlayerCharacter.ID, num2, client.Player.PlayerCharacter.Money, 0, 0, 0, 0, "", "", ""); num6++; stringBuilder.Append(num6); stringBuilder.Append("、"); stringBuilder.Append(LanguageMgr.GetTranslation("UserSendMailHandler.Money", new object[0])); stringBuilder.Append(num2); stringBuilder.Append(";"); } } if (stringBuilder.Length > 1) { mailInfo.AnnexRemark = stringBuilder.ToString(); } if (playerBussiness.SendMail(mailInfo)) { client.Player.RemoveGold(100); if (itemInfo != null) { itemInfo.UserID = 0; client.Player.RemoveItem(itemInfo); itemInfo.IsExist = true; itemInfo.Count = num4; if (num5 > 0) { client.Player.AddTemplate(itemInfo, eBageType, num5); } } } client.Player.SaveIntoDatabase(); gSPacketIn.WriteBoolean(true); if (playerInfo.State != 0) { client.Player.Out.SendMailResponse(playerInfo.ID, eMailRespose.Receiver); } client.Player.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Send); } else { translateId = "UserSendMailHandler.Failed1"; gSPacketIn.WriteBoolean(false); } } else { type = eMessageType.ERROR; translateId = "UserSendMailHandler.Failed2"; gSPacketIn.WriteBoolean(false); } } client.Out.SendMessage(type, LanguageMgr.GetTranslation(translateId, new object[0])); client.Out.SendTCP(gSPacketIn); return(0); }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType ItemBagType = (eBageType)packet.ReadInt(); int ItemPlace = packet.ReadInt(); eBageType PropBagType = (eBageType)packet.ReadInt(); ItemInfo Item = null; List <ShopItemInfo> ShopItem = new List <ShopItemInfo>(); ItemInfo Prop = null; int PropPlace = packet.ReadInt(); int Operation = packet.ReadInt(); if (PropPlace == -1) { int templateID = packet.ReadInt(); int type = packet.ReadInt(); int gold = 0; int money = 0; ItemTemplateInfo template = Bussiness.Managers.ItemMgr.FindItemTemplate(34101); Prop = ItemInfo.CreateFromTemplate(template, 1, (int)ItemAddType.Buy); ShopItem = Bussiness.Managers.ShopMgr.FindShopbyTemplatID(34101); for (int i = 0; i < ShopItem.Count; i++) { if (ShopItem[i].APrice1 == -1 && ShopItem[i].AValue1 != 0) { money = ShopItem[i].AValue1; Prop.ValidDate = ShopItem[i].AUnit; } } if (Prop != null) { // item = ItemInfo.SetItemType(item, type, ref gold, ref money, ref offer); if (gold <= client.Player.PlayerCharacter.Gold && money <= client.Player.PlayerCharacter.Money) { client.Player.RemoveMoney(money); client.Player.RemoveGold(gold); LogMgr.LogMoneyAdd(LogMoneyType.Item, LogMoneyType.Item_Move, client.Player.PlayerCharacter.ID, money, client.Player.PlayerCharacter.Money, gold, 0, 0, "牌子编号", Prop.TemplateID.ToString(), type.ToString()); } else { Prop = null; } } } else { Prop = client.Player.GetItemAt(PropBagType, PropPlace); } Item = client.Player.GetItemAt(ItemBagType, ItemPlace); StringBuilder str = new StringBuilder(); if (Prop == null || Item == null) { return(1); } bool result = false; ItemTemplateInfo TemplateItem = Managers.RefineryMgr.RefineryTrend(Operation, Item, ref result); if (result && TemplateItem != null) { ItemInfo item = ItemInfo.CreateFromTemplate(TemplateItem, 1, (int)ItemAddType.RefineryTrend); AbstractInventory bg = client.Player.GetItemInventory(TemplateItem); // Managers.RefineryMgr.InheritProperty(Item, ref item); if (bg.AddItem(item, bg.BeginSlot)) { client.Player.UpdateItem(item); client.Player.RemoveItem(Item); Prop.Count--; client.Player.UpdateItem(Prop); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemTrendHandle.Success")); } else { str.Append("NoPlace"); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(item.GetBagName()) + LanguageMgr.GetTranslation("ItemFusionHandler.NoPlace")); } return(1); } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemTrendHandle.Fail")); return(1); } }
public override int HandlePacket(GamePlayer player, GSPacketIn packet) { eBageType bagType = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); eBageType tobagType = (eBageType)packet.ReadByte(); int result; if (tobagType == eBageType.TempBag) { GameServer.log.Error("User want to put item into temp bag!"); result = 0; } else { int toplace = packet.ReadInt(); int count = packet.ReadInt(); PlayerInventory bag = player.GetInventory(bagType); PlayerInventory tobag = player.GetInventory(tobagType); if (tobagType == eBageType.TempBag) { result = 0; } else { bag.BeginChanges(); tobag.BeginChanges(); try { if (place != -1) { ItemInfo item = bag.GetItemAt(place); if (tobagType == eBageType.Bank) { ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(player.PlayerCharacter.ConsortiaID); if (info != null) { tobag.Capalility = info.StoreLevel * 10; } } if (toplace == -1) { if (tobag.StackItemToAnother(item) || tobag.AddItem(item)) { bag.TakeOutItem(item); } else { player.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserChangeItemPlaceHandler.full", new object[0])); } } else { if (bagType == tobagType) { bag.MoveItem(place, toplace, count); } else { if (bagType == eBageType.HideBag) { this.MoveFromHide(player, bag, item, toplace, tobag, count); } else { if (tobagType == eBageType.HideBag) { this.MoveToHide(player, bag, item, toplace, tobag, count); } else { if (bagType == eBageType.Bank) { UserChangeItemPlaceHandler.MoveFromBank(player, place, toplace, bag, tobag, item); } else { if (tobagType == eBageType.Bank) { UserChangeItemPlaceHandler.MoveToBank(place, toplace, bag, tobag, item); } else { if (tobag.AddItemTo(item, toplace)) { bag.TakeOutItem(item); } } } } } } } } else { if (toplace != -1) { bag.RemoveItemAt(toplace, eItemRemoveType.Delete); } } } finally { bag.CommitChanges(); tobag.CommitChanges(); } result = 0; } } return(result); }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType bagType = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); int payType = packet.ReadByte(); int price = packet.ReadInt(); int mouthful = packet.ReadInt(); int validDate = packet.ReadInt(); string msg = "AuctionAddHandler.Fail"; payType = 1; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked")); return(0); } if (price < 0 || (mouthful != 0 && mouthful < price)) { return(0); } int multiple = 1; if (payType != 0) { //multiple = 10; multiple = 1; payType = 1; } int needGold = (int)(multiple * price * 0.03 * (validDate == 0 ? 1 : validDate == 1 ? 3 : 6)); needGold = needGold < 1 ? 1 : needGold; ItemInfo goods = client.Player.GetItemAt(bagType, place); if (price < 0) { msg = "AuctionAddHandler.Msg1"; } else if (mouthful != 0 && mouthful < price) { msg = "AuctionAddHandler.Msg2"; } else if (needGold > client.Player.PlayerCharacter.Gold) { msg = "AuctionAddHandler.Msg3"; } else if (goods == null) { msg = "AuctionAddHandler.Msg4"; } else if (goods.IsBinds) { msg = "AuctionAddHandler.Msg5"; } else { client.Player.SaveIntoDatabase(); AuctionInfo info = new AuctionInfo(); info.AuctioneerID = client.Player.PlayerCharacter.ID; //获取物品ID info.AuctioneerName = client.Player.PlayerCharacter.NickName; //获取物品妮称 info.BeginDate = DateTime.Now; info.BuyerID = 0; info.BuyerName = ""; info.IsExist = true; info.ItemID = goods.ItemID; info.Mouthful = mouthful; info.PayType = payType; info.Price = price; info.Rise = price / 10; info.Rise = info.Rise < 1 ? 1 : info.Rise; info.Name = goods.Template.Name; info.Category = goods.Template.CategoryID; info.ValidDate = validDate == 0 ? 8 : validDate == 1 ? 24 : 48; info.TemplateID = goods.TemplateID; info.Random = Bussiness.ThreadSafeRandom.NextStatic(GameProperties.BeginAuction, GameProperties.EndAuction); using (PlayerBussiness db = new PlayerBussiness()) //写数据库 { if (db.AddAuction(info)) { //client.Player.RemoveAllItem(goods, true, Game.Server.Statics.ItemRemoveType.Auction, bagType); //client.Player.up //client.Player.SaveIntoDatabase(); //client.Player.SetGold(-needGold, Game.Server.Statics.GoldRemoveType.Auction); //msg = "AuctionAddHandler.Msg6"; //client.Out.SendAuctionRefresh(info, info.AuctionID, true, goods); client.Player.RemoveItem(goods); goods.IsExist = true; client.Player.SaveIntoDatabase(); client.Player.RemoveGold(needGold); msg = "AuctionAddHandler.Msg6"; client.Out.SendAuctionRefresh(info, info.AuctionID, true, goods); } } } //client.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Receiver); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(msg)); return(0); }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType bagType = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); int num = (int)packet.ReadByte(); int num2 = packet.ReadInt(); int num3 = packet.ReadInt(); int num4 = packet.ReadInt(); int num5 = packet.ReadInt(); string translateId = "AuctionAddHandler.Fail"; num = 1; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); return(0); } if (num2 < 0 || (num3 != 0 && num3 < num2)) { return(0); } int num6 = 1; if (num != 0) { num6 = 1; num = 1; } int num7 = (int)((double)(num6 * num2) * 0.03 * (double)((num4 == 0) ? 1 : ((num4 == 1) ? 3 : 6))); num7 = ((num7 < 1) ? 1 : num7); ItemInfo itemAt = client.Player.GetItemAt(bagType, place); if (itemAt == null) { client.Player.SendMessage("Vật phẩm lạ không tìm thấy!!! Hack chăng???!!!"); return(0); } int num8 = itemAt.Count - num5; if (itemAt.Count < num5 || num5 < 0) { num5 = itemAt.Count; } if (num2 < 0) { translateId = "AuctionAddHandler.Msg1"; } else { if (num3 != 0 && num3 < num2) { translateId = "AuctionAddHandler.Msg2"; } else { if (num7 > client.Player.PlayerCharacter.Gold) { translateId = "AuctionAddHandler.Msg3"; } else { if (itemAt == null) { translateId = "AuctionAddHandler.Msg4"; } else { if (itemAt.IsBinds) { translateId = "AuctionAddHandler.Msg5"; } else { client.Player.SaveIntoDatabase(); AuctionInfo auctionInfo = new AuctionInfo(); auctionInfo.AuctioneerID = client.Player.PlayerCharacter.ID; auctionInfo.AuctioneerName = client.Player.PlayerCharacter.NickName; auctionInfo.BeginDate = DateTime.Now; auctionInfo.BuyerID = 0; auctionInfo.BuyerName = ""; auctionInfo.IsExist = true; auctionInfo.ItemID = itemAt.ItemID; auctionInfo.Mouthful = num3; auctionInfo.PayType = num; auctionInfo.Price = num2; auctionInfo.Rise = num2 / 10; auctionInfo.Rise = ((auctionInfo.Rise < 1) ? 1 : auctionInfo.Rise); auctionInfo.Name = itemAt.Template.Name; auctionInfo.Category = itemAt.Template.CategoryID; auctionInfo.ValidDate = ((num4 == 0) ? 8 : ((num4 == 1) ? 24 : 48)); auctionInfo.TemplateID = itemAt.TemplateID; auctionInfo.goodsCount = num5; auctionInfo.Random = ThreadSafeRandom.NextStatic(GameProperties.BeginAuction, GameProperties.EndAuction); using (PlayerBussiness playerBussiness = new PlayerBussiness()) { if (playerBussiness.AddAuction(auctionInfo)) { itemAt.Count = num5; client.Player.TakeOutItem(itemAt); if (num8 > 0) { client.Player.AddTemplate(itemAt, bagType, num8); } client.Player.SaveIntoDatabase(); client.Player.RemoveGold(num7); translateId = "AuctionAddHandler.Msg6"; client.Out.SendAuctionRefresh(auctionInfo, auctionInfo.AuctionID, true, itemAt); } } } } } } } client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(translateId, new object[0])); return(0); }
public int HandlePacket(GameClient client, GSPacketIn packet) { GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); bool IsBinds = false; int OpertionType = packet.ReadInt(); int Count = packet.ReadInt(); List <ItemInfo> Items = new List <ItemInfo>(); List <ItemInfo> AppendItems = new List <ItemInfo>(); List <eBageType> BagTypes = new List <eBageType>(); StringBuilder str = new StringBuilder(); int defaultprobability = 25; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.locked")); return(1); } for (int i = 0; i < Count; i++) { eBageType bagType = (eBageType)packet.ReadInt(); int place = packet.ReadInt(); ItemInfo info = client.Player.GetItemAt(bagType, place); if (info != null) { if (!Items.Contains(info)) { if (info.IsBinds == true) { IsBinds = true; } str.Append(info.ItemID + ":" + info.TemplateID + ","); Items.Add(info); BagTypes.Add(bagType); } else { client.Out.SendMessage(eMessageType.Normal, "Bad Input"); return(1); } } } // ItemInfo MainMaterial = client.Player.GetItemAt(packet.ReadInt(), packet.ReadInt()); eBageType BagType = (eBageType)packet.ReadInt(); int Place = packet.ReadInt(); ItemInfo Item = client.Player.GetItemAt(BagType, Place); if (Item != null) { str.Append(Item.ItemID + ":" + Item.TemplateID + ","); } eBageType LuckBagType = (eBageType)packet.ReadInt(); int LuckPlace = packet.ReadInt(); ItemInfo LuckItem = client.Player.GetItemAt(LuckBagType, LuckPlace);; bool Luck = LuckItem == null ? false : true; //if (IsBinds != Item.IsBinds && IsBinds == true) //{ // client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.IsBinds")); // // return 1; //} if (Count != 4 || Item == null) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.ItemNotEnough")); return(1); } bool result = false; bool IsFormula = false; if (OpertionType == 0) //预览模式 { ItemTemplateInfo Template = Managers.RefineryMgr.Refinery(client.Player, Items, Item, Luck, OpertionType, ref result, ref defaultprobability, ref IsFormula); if (Template != null) { client.Out.SendRefineryPreview(client.Player, Template.TemplateID, IsBinds, Item); } return(0); } else //玩家炼化 { int MustGold = 10000; if (client.Player.PlayerCharacter.Gold > MustGold) { client.Player.RemoveGold(MustGold); ItemTemplateInfo RewardItem = Managers.RefineryMgr.Refinery(client.Player, Items, Item, Luck, OpertionType, ref result, ref defaultprobability, ref IsFormula); if (RewardItem != null && IsFormula && result) { str.Append("Success"); result = true; if (result) { ItemInfo item = ItemInfo.CreateFromTemplate(RewardItem, 1, (int)ItemAddType.Refinery); if (item != null) { client.Player.OnItemMelt(Item.Template.CategoryID); // Managers.RefineryMgr.InheritProperty(Item, ref item); item.IsBinds = IsBinds; AbstractInventory bg = client.Player.GetItemInventory(RewardItem); if (!bg.AddItem(item, bg.BeginSlot)) { str.Append("NoPlace"); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(item.GetBagName()) + LanguageMgr.GetTranslation("ItemFusionHandler.NoPlace")); } pkg.WriteByte(0); Item.Count--; client.Player.UpdateItem(Item); } } else { str.Append("false"); } } else { pkg.WriteByte(1); } if (Luck) { LuckItem.Count--; client.Player.UpdateItem(LuckItem); } for (int i = 0; i < Items.Count; i++) { client.Player.UpdateItem(Items[i]); if (Items[i].Count <= 0) { client.Player.RemoveItem(Items[i]); } } client.Player.RemoveItem(Items[Items.Count - 1]); client.Player.Out.SendTCP(pkg); } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.NoGold")); } return(1); } }
public override int HandlePacket(GamePlayer player, GSPacketIn packet) { int result; if (player.PlayerCharacter.Gold < 100) { result = 1; } else { string msg = "UserSendMailHandler.Success"; eMessageType eMsg = eMessageType.Normal; GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); string nickName = packet.ReadString().Trim(); string title = packet.ReadString(); string content = packet.ReadString(); bool isPay = packet.ReadBoolean(); int validDate = packet.ReadInt(); int money = packet.ReadInt(); eBageType bag = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); eBageType bag2 = (eBageType)packet.ReadByte(); int place2 = packet.ReadInt(); eBageType bag3 = (eBageType)packet.ReadByte(); int place3 = packet.ReadInt(); eBageType bag4 = (eBageType)packet.ReadByte(); int place4 = packet.ReadInt(); if ((money != 0 || place != -1 || place2 != -1 || place3 != -1 || place4 != -1) && player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked) { player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); pkg.WriteBoolean(false); player.Out.SendTCP(pkg); result = 1; } else { using (PlayerBussiness db = new PlayerBussiness()) { GamePlayer otherp = WorldMgr.GetClientByPlayerNickName(nickName); PlayerInfo user; if (otherp == null) { user = db.GetUserSingleByNickName(nickName); } else { user = otherp.PlayerCharacter; } if (!string.IsNullOrEmpty(title)) { if (user != null && !string.IsNullOrEmpty(nickName)) { if (user.NickName != player.PlayerCharacter.NickName) { player.SaveIntoDatabase(); MailInfo message = new MailInfo(); message.SenderID = player.PlayerCharacter.ID; message.Sender = player.PlayerCharacter.NickName; message.ReceiverID = user.ID; message.Receiver = user.NickName; message.IsExist = true; message.Gold = 0; message.Money = 0; message.Title = title; message.Content = content; List <ItemInfo> items = new List <ItemInfo>(); List <eBageType> bagType = new List <eBageType>(); StringBuilder annexRemark = new StringBuilder(); annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.AnnexRemark", new object[0])); int index = 0; if (place != -1) { ItemInfo goods = player.GetItemAt(bag, place); if (goods != null && !goods.IsBinds) { message.Annex1Name = goods.Template.Name; message.Annex1 = goods.ItemID.ToString(); items.Add(goods); bagType.Add(bag); index++; annexRemark.Append(index); annexRemark.Append("、"); annexRemark.Append(message.Annex1Name); annexRemark.Append("x"); annexRemark.Append(goods.Count); annexRemark.Append(";"); } } if (place2 != -1) { ItemInfo goods = player.GetItemAt(bag2, place2); if (goods != null && !goods.IsBinds && !items.Contains(goods)) { message.Annex2Name = goods.Template.Name; message.Annex2 = goods.ItemID.ToString(); items.Add(goods); bagType.Add(bag2); index++; annexRemark.Append(index); annexRemark.Append("、"); annexRemark.Append(message.Annex2Name); annexRemark.Append("x"); annexRemark.Append(goods.Count); annexRemark.Append(";"); } } if (place3 != -1) { ItemInfo goods = player.GetItemAt(bag3, place3); if (goods != null && !goods.IsBinds && !items.Contains(goods)) { message.Annex3Name = goods.Template.Name; message.Annex3 = goods.ItemID.ToString(); items.Add(goods); bagType.Add(bag3); index++; annexRemark.Append(index); annexRemark.Append("、"); annexRemark.Append(message.Annex3Name); annexRemark.Append("x"); annexRemark.Append(goods.Count); annexRemark.Append(";"); } } if (place4 != -1) { ItemInfo goods = player.GetItemAt(bag4, place4); if (goods != null && !goods.IsBinds && !items.Contains(goods)) { message.Annex4Name = goods.Template.Name; message.Annex4 = goods.ItemID.ToString(); items.Add(goods); bagType.Add(bag4); index++; annexRemark.Append(index); annexRemark.Append("、"); annexRemark.Append(message.Annex4Name); annexRemark.Append("x"); annexRemark.Append(goods.Count); annexRemark.Append(";"); } } if (isPay) { if (money <= 0 || (string.IsNullOrEmpty(message.Annex1) && string.IsNullOrEmpty(message.Annex2) && string.IsNullOrEmpty(message.Annex3) && string.IsNullOrEmpty(message.Annex4))) { result = 1; return(result); } message.ValidDate = ((validDate == 1) ? 1 : 6); message.Type = 101; if (money > 0) { message.Money = money; index++; annexRemark.Append(index); annexRemark.Append("、"); annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.PayMoney", new object[0])); annexRemark.Append(money); annexRemark.Append(";"); } } else { message.Type = 1; if (player.PlayerCharacter.Money >= money && money > 0) { message.Money = money; player.RemoveMoney(money, LogMoneyType.Mail, LogMoneyType.Mail_Send); index++; annexRemark.Append(index); annexRemark.Append("、"); annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.Money", new object[0])); annexRemark.Append(money); annexRemark.Append(";"); } } if (annexRemark.Length > 1) { message.AnnexRemark = annexRemark.ToString(); } if (db.SendMail(message)) { player.RemoveGold(100); for (int i = 0; i < items.Count; i++) { player.TakeOutItem(items[i]); } } player.SaveIntoDatabase(); pkg.WriteBoolean(true); if (user.State != 0) { player.Out.SendMailResponse(user.ID, eMailRespose.Receiver); } player.Out.SendMailResponse(player.PlayerCharacter.ID, eMailRespose.Send); } else { msg = "UserSendMailHandler.Failed1"; pkg.WriteBoolean(false); } } else { eMsg = eMessageType.ERROR; msg = "UserSendMailHandler.Failed2"; pkg.WriteBoolean(false); } } else { eMsg = eMessageType.ERROR; msg = "UserSendMailHandler.Failed3"; pkg.WriteBoolean(false); } } player.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg, new object[0])); player.Out.SendTCP(pkg); result = 0; } } return(result); }
public PlayerInventory GetInventory(eBageType bageType) { switch (bageType) { case eBageType.MainBag: return m_mainBag; case eBageType.PropBag: return m_propBag; case eBageType.FightBag: return m_fightBag; case eBageType.TempBag: return m_tempBag; case eBageType.Bank: return m_storeBag; case eBageType.Store: return m_storeBag2; case eBageType.CaddyBag: return m_caddyBag; default: throw new NotSupportedException(string.Format("Did not support this type bag: {0}", bageType)); } }
public int HandlePacket(GameClient client, GSPacketIn packet) { GSPacketIn gSPacketIn = new GSPacketIn(110, client.Player.PlayerCharacter.ID); bool flag = false; int num = packet.ReadInt(); int num2 = packet.ReadInt(); List <ItemInfo> list = new List <ItemInfo>(); new List <ItemInfo>(); List <eBageType> list2 = new List <eBageType>(); StringBuilder stringBuilder = new StringBuilder(); int num3 = 25; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.locked", new object[0])); return(1); } for (int i = 0; i < num2; i++) { eBageType eBageType = (eBageType)packet.ReadInt(); int place = packet.ReadInt(); ItemInfo itemAt = client.Player.GetItemAt(eBageType, place); if (itemAt != null) { if (list.Contains(itemAt)) { client.Out.SendMessage(eMessageType.Normal, "Bad Input"); return(1); } if (itemAt.IsBinds) { flag = true; } stringBuilder.Append(string.Concat(new object[] { itemAt.ItemID, ":", itemAt.TemplateID, "," })); list.Add(itemAt); list2.Add(eBageType); } } eBageType bagType = (eBageType)packet.ReadInt(); int place2 = packet.ReadInt(); ItemInfo itemAt2 = client.Player.GetItemAt(bagType, place2); if (itemAt2 != null) { stringBuilder.Append(string.Concat(new object[] { itemAt2.ItemID, ":", itemAt2.TemplateID, "," })); } eBageType bagType2 = (eBageType)packet.ReadInt(); int place3 = packet.ReadInt(); ItemInfo itemAt3 = client.Player.GetItemAt(bagType2, place3); bool flag2 = itemAt3 != null; if (num2 != 4 || itemAt2 == null) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.ItemNotEnough", new object[0])); return(1); } bool flag3 = false; bool flag4 = false; if (num == 0) { ItemTemplateInfo itemTemplateInfo = RefineryMgr.Refinery(client.Player, list, itemAt2, flag2, num, ref flag3, ref num3, ref flag4); if (itemTemplateInfo != null) { client.Out.SendRefineryPreview(client.Player, itemTemplateInfo.TemplateID, flag, itemAt2); } return(0); } int num4 = 10000; if (client.Player.PlayerCharacter.Gold > num4) { client.Player.RemoveGold(num4); ItemTemplateInfo itemTemplateInfo2 = RefineryMgr.Refinery(client.Player, list, itemAt2, flag2, num, ref flag3, ref num3, ref flag4); if (itemTemplateInfo2 != null && flag4 && flag3) { stringBuilder.Append("Success"); flag3 = true; if (flag3) { ItemInfo itemInfo = ItemInfo.CreateFromTemplate(itemTemplateInfo2, 1, 114); if (itemInfo != null) { client.Player.OnItemMelt(itemAt2.Template.CategoryID); itemInfo.IsBinds = flag; AbstractInventory itemInventory = client.Player.GetItemInventory(itemTemplateInfo2); if (!itemInventory.AddItem(itemInfo, itemInventory.BeginSlot)) { stringBuilder.Append("NoPlace"); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(itemInfo.GetBagName(), new object[0]) + LanguageMgr.GetTranslation("ItemFusionHandler.NoPlace", new object[0])); } gSPacketIn.WriteByte(0); itemAt2.Count--; client.Player.UpdateItem(itemAt2); } } else { stringBuilder.Append("false"); } } else { gSPacketIn.WriteByte(1); } if (flag2) { itemAt3.Count--; client.Player.UpdateItem(itemAt3); } for (int j = 0; j < list.Count; j++) { client.Player.UpdateItem(list[j]); if (list[j].Count <= 0) { client.Player.RemoveItem(list[j]); } } client.Player.RemoveItem(list[list.Count - 1]); client.Player.Out.SendTCP(gSPacketIn); } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemRefineryHandler.NoGold", new object[0])); } return(1); }
public bool RemoveAt(eBageType bagType, int place) { PlayerInventory bag = GetInventory(bagType); if (bag != null) { return bag.RemoveItemAt(place); } else { return false; } }
// <summary> // 修改: Xiaov // 时间: 2009-11-7 // 描述: 发送邮件<未测试> public int HandlePacket(GameClient client, GSPacketIn packet) { if (client.Player.PlayerCharacter.Gold < 100) { return(1); } string msg = "UserSendMailHandler.Success"; eMessageType eMsg = eMessageType.Normal; GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); string nickName = packet.ReadString().Trim(); string title = packet.ReadString(); string content = packet.ReadString(); bool isPay = packet.ReadBoolean(); int validDate = packet.ReadInt(); int money = packet.ReadInt(); eBageType bag1 = (eBageType)packet.ReadByte(); int place1 = packet.ReadInt(); eBageType bag2 = (eBageType)packet.ReadByte(); int place2 = packet.ReadInt(); eBageType bag3 = (eBageType)packet.ReadByte(); int place3 = packet.ReadInt(); eBageType bag4 = (eBageType)packet.ReadByte(); int place4 = packet.ReadInt(); if ((money != 0 || place1 != -1 || place2 != -1 || place3 != -1 || place4 != -1) && (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked")); pkg.WriteBoolean(false); client.Out.SendTCP(pkg); return(1); } using (PlayerBussiness db = new PlayerBussiness()) { PlayerInfo user; GamePlayer player = Managers.WorldMgr.GetClientByPlayerNickName(nickName); if (player == null) { user = db.GetUserSingleByNickName(nickName); } else { user = player.PlayerCharacter; } if (user != null && !string.IsNullOrEmpty(nickName)) { if (user.NickName != client.Player.PlayerCharacter.NickName) { client.Player.SaveIntoDatabase(); //附件内容描述(例:邮件最后一行标注附件为:1、大喇叭x5;2、强化石4级x1;3、极•烈火x1;4、点券999999;5、强化公式-朱雀x5 MailInfo message = new MailInfo(); message.SenderID = client.Player.PlayerCharacter.ID; message.Sender = client.Player.PlayerCharacter.NickName; message.ReceiverID = user.ID; message.Receiver = user.NickName; message.IsExist = true; message.Gold = 0; message.Money = 0; message.Title = title; message.Content = content; List <ItemInfo> items = new List <ItemInfo>(); List <eBageType> bagType = new List <eBageType>(); StringBuilder annexRemark = new StringBuilder(); annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.AnnexRemark")); int index = 0; if (place1 != -1) { ItemInfo goods = client.Player.GetItemAt(bag1, place1); if (goods != null && !goods.IsBinds) { message.Annex1Name = goods.Template.Name; message.Annex1 = goods.ItemID.ToString(); items.Add(goods); bagType.Add(bag1); //annexRemark = message.Annex1Name + "x" + goods.Count; index++; annexRemark.Append(index); annexRemark.Append("、"); //annexRemark.Append(annexRemark.Length); annexRemark.Append(message.Annex1Name); annexRemark.Append("x"); annexRemark.Append(goods.Count); annexRemark.Append(";"); //goods.UserID = 0; //client.Player.RemoveAllItem(goods, true, ItemRemoveType.Mail); } } if (place2 != -1) { ItemInfo goods = client.Player.GetItemAt(bag2, place2); if (goods != null && !goods.IsBinds) { message.Annex2Name = goods.Template.Name; message.Annex2 = goods.ItemID.ToString(); items.Add(goods); bagType.Add(bag2); index++; annexRemark.Append(index); annexRemark.Append("、"); annexRemark.Append(message.Annex2Name); annexRemark.Append("x"); annexRemark.Append(goods.Count); annexRemark.Append(";"); //goods.UserID = 0; //client.Player.RemoveAllItem(goods, true, ItemRemoveType.Mail); } } if (place3 != -1) { ItemInfo goods = client.Player.GetItemAt(bag3, place3); if (goods != null && !goods.IsBinds) { message.Annex3Name = goods.Template.Name; message.Annex3 = goods.ItemID.ToString(); items.Add(goods); bagType.Add(bag3); index++; annexRemark.Append(index); annexRemark.Append("、"); annexRemark.Append(message.Annex3Name); annexRemark.Append("x"); annexRemark.Append(goods.Count); annexRemark.Append(";"); } } if (place4 != -1) { ItemInfo goods = client.Player.GetItemAt(bag4, place4); if (goods != null && !goods.IsBinds) { message.Annex4Name = goods.Template.Name; message.Annex4 = goods.ItemID.ToString(); items.Add(goods); bagType.Add(bag4); index++; annexRemark.Append(index); annexRemark.Append("、"); annexRemark.Append(message.Annex4Name); annexRemark.Append("x"); annexRemark.Append(goods.Count); annexRemark.Append(";"); } } if (isPay) { if (money <= 0 || (string.IsNullOrEmpty(message.Annex1) && string.IsNullOrEmpty(message.Annex2) && string.IsNullOrEmpty(message.Annex3) && string.IsNullOrEmpty(message.Annex4))) { return(1); } message.ValidDate = validDate == 1 ? 1 : 6; message.Type = (int)eMailType.Payment; if (money > 0) { message.Money = money; index++; annexRemark.Append(index); annexRemark.Append("、"); annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.PayMoney")); annexRemark.Append(money); annexRemark.Append(";"); } } else { message.Type = (int)eMailType.Common; if (client.Player.PlayerCharacter.Money >= money && money > 0) { message.Money = money; client.Player.RemoveMoney(money); LogMgr.LogMoneyAdd(LogMoneyType.Mail, LogMoneyType.Mail_Send, client.Player.PlayerCharacter.ID, money, client.Player.PlayerCharacter.Money, 0, 0, 0, 0, "", "", ""); index++; annexRemark.Append(index); annexRemark.Append("、"); annexRemark.Append(LanguageMgr.GetTranslation("UserSendMailHandler.Money")); annexRemark.Append(money); annexRemark.Append(";"); } } if (annexRemark.Length > 1) { message.AnnexRemark = annexRemark.ToString(); } if (db.SendMail(message)) { client.Player.RemoveGold(100); for (int i = 0; i < items.Count; i++) { items[i].UserID = 0; client.Player.RemoveItem(items[i]); items[i].IsExist = true; } } client.Player.SaveIntoDatabase(); pkg.WriteBoolean(true); //发送通知 if (user.State != 0) { client.Player.Out.SendMailResponse(user.ID, eMailRespose.Receiver); } client.Player.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Send); } else { msg = "UserSendMailHandler.Failed1"; pkg.WriteBoolean(false); } } else { eMsg = eMessageType.ERROR; msg = "UserSendMailHandler.Failed2"; pkg.WriteBoolean(false); } } client.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg)); client.Out.SendTCP(pkg); return(0); }
public bool RemoveTempate(eBageType bagType, ItemTemplateInfo template, int count) { PlayerInventory bag = GetInventory(bagType); if (bag != null) { return bag.RemoveTemplate(template.TemplateID, count); } return false; }
public override int HandlePacket(GamePlayer player, GSPacketIn packet) { int result2; if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked) { player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); result2 = 0; } else { StringBuilder payGoods = new StringBuilder(); int count = packet.ReadInt(); bool istips = true; for (int i = 0; i < count; i++) { eBageType bag = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); int goodsID = packet.ReadInt(); int type = (int)packet.ReadByte(); bool isDress = packet.ReadBoolean(); if (bag == eBageType.MainBag || bag == eBageType.PropBag || bag == eBageType.Bank) { ItemInfo item = player.GetItemAt(bag, place); if (item != null && item.ValidDate != 0 && !item.IsValidItem() && (bag == eBageType.MainBag || (bag == eBageType.PropBag && item.TemplateID == 10200))) { int gold = 0; int money = 0; int offer = 0; int gifttoken = 0; int oldDate = item.ValidDate; int oldCount = item.Count; bool isValid = item.IsValidItem(); List <int> needitemsinfo = new List <int>(); ShopItemInfo shopitem = ShopMgr.GetShopItemInfoById(goodsID); needitemsinfo = ShopMgr.GetShopItemBuyConditions(shopitem, type, ref gold, ref money, ref offer, ref gifttoken); int icount = player.MainBag.GetItems().Count; bool result = true; for (int j = 0; j < needitemsinfo.Count; j += 2) { if (player.GetItemCount(needitemsinfo[j]) < needitemsinfo[j + 1]) { result = false; } } if (!result) { eMessageType eMsg = eMessageType.ERROR; string msg = "UserBuyItemHandler.NoBuyItem"; player.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg, new object[0])); result2 = 1; return(result2); } if (gold <= player.PlayerCharacter.Gold && money <= player.PlayerCharacter.Money && offer <= player.PlayerCharacter.Offer && gifttoken <= player.PlayerCharacter.GiftToken) { player.RemoveMoney(money, LogMoneyType.Shop, LogMoneyType.Shop_Continue); player.RemoveGold(gold); player.RemoveOffer(offer); player.RemoveGiftToken(gifttoken); for (int j = 0; j < needitemsinfo.Count; j += 2) { player.RemoveTemplate(needitemsinfo[j], needitemsinfo[j + 1], eItemRemoveType.ShoppingForContinue); payGoods.Append(needitemsinfo[j].ToString() + ":"); } if (!isValid && item.ValidDate != 0) { if (1 == type) { item.ValidDate = shopitem.AUnit; item.BeginDate = DateTime.Now; item.IsUsed = true; } if (2 == type) { item.ValidDate = shopitem.BUnit; item.BeginDate = DateTime.Now; item.IsUsed = true; } if (3 == type) { item.ValidDate = shopitem.CUnit; item.BeginDate = DateTime.Now; item.IsUsed = true; } } if (bag == eBageType.MainBag) { player.MainBag.UpdateItem(item); } else { if (bag == eBageType.PropBag) { player.PropBag.UpdateItem(item); } else { player.StoreBag.UpdateItem(item); } } //LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Continue, player.PlayerCharacter.ID, money, gold, gifttoken, offer, "", item.TemplateID, 6, item.Count); } else { if (money <= player.PlayerCharacter.Money) { istips = false; item.ValidDate = oldDate; item.Count = oldCount; player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserItemContineueHandler.NoMoney", new object[0])); } else { if (gifttoken <= player.PlayerCharacter.GiftToken) { istips = false; item.ValidDate = oldDate; item.Count = oldCount; player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserItemContineueHandler.NoMoney", new object[0])); } } } } } } if (istips) { player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserItemContineueHandler.Success", new object[0])); } result2 = 0; } return(result2); }
public bool AddTemplate(ItemInfo cloneItem, eBageType bagType, int count) { PlayerInventory bag = GetInventory(bagType); if (bag != null) { // cloneItem.IsBinds = cloneItem.Template.BindType == 1; if (bag.AddTemplate(cloneItem, count)) { if (CurrentRoom != null && CurrentRoom.IsPlaying) SendItemNotice(cloneItem); return true; } } return false; }
public PlayerInventory GetInventory(eBageType bageType) { switch (bageType) { case eBageType.MainBag: return m_mainBag; case eBageType.PropBag: return m_propBag; case eBageType.FightBag: return m_fightBag; case eBageType.TempBag: return m_tempBag; case eBageType.Bank: return m_storeBag; case eBageType.Store: return m_storeBag2; case eBageType.CaddyBag: return m_caddyBag; case eBageType.FARM: return m_farm; case eBageType.VEGETABLE: return m_vegetable; case eBageType.FOOD: return m_food; case eBageType.PETEGG: return m_petEgg; default: throw new NotSupportedException(string.Format("Did not support this type bag: {0}", bageType)); } }
public bool AddTemplate(ItemInfo cloneItem, eBageType bagType, int count) { m_client.SendPlayerAddTemplate(m_character.ID, cloneItem, bagType, count); return true; }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType bagType = (eBageType)packet.ReadInt(); int place = packet.ReadInt(); eBageType bagType2 = (eBageType)packet.ReadInt(); List <ShopItemInfo> list = new List <ShopItemInfo>(); int num = packet.ReadInt(); int operation = packet.ReadInt(); ItemInfo itemInfo; if (num == -1) { packet.ReadInt(); int num2 = packet.ReadInt(); int num3 = 0; int num4 = 0; ItemTemplateInfo goods = ItemMgr.FindItemTemplate(34101); itemInfo = ItemInfo.CreateFromTemplate(goods, 1, 102); list = ShopMgr.FindShopbyTemplatID(34101); for (int i = 0; i < list.Count; i++) { if (list[i].APrice1 == -1 && list[i].AValue1 != 0) { num4 = list[i].AValue1; itemInfo.ValidDate = list[i].AUnit; } } if (itemInfo != null) { if (num3 <= client.Player.PlayerCharacter.Gold && num4 <= client.Player.PlayerCharacter.Money) { client.Player.RemoveMoney(num4); client.Player.RemoveGold(num3); LogMgr.LogMoneyAdd(LogMoneyType.Item, LogMoneyType.Item_Move, client.Player.PlayerCharacter.ID, num4, client.Player.PlayerCharacter.Money, num3, 0, 0, 0, "牌子编号", itemInfo.TemplateID.ToString(), num2.ToString()); } else { itemInfo = null; } } } else { itemInfo = client.Player.GetItemAt(bagType2, num); } ItemInfo itemAt = client.Player.GetItemAt(bagType, place); StringBuilder stringBuilder = new StringBuilder(); if (itemInfo == null || itemAt == null) { return(1); } bool flag = false; ItemTemplateInfo itemTemplateInfo = RefineryMgr.RefineryTrend(operation, itemAt, ref flag); if (flag && itemTemplateInfo != null) { ItemInfo itemInfo2 = ItemInfo.CreateFromTemplate(itemTemplateInfo, 1, 115); AbstractInventory itemInventory = client.Player.GetItemInventory(itemTemplateInfo); if (itemInventory.AddItem(itemInfo2, itemInventory.BeginSlot)) { client.Player.UpdateItem(itemInfo2); client.Player.RemoveItem(itemAt); itemInfo.Count--; client.Player.UpdateItem(itemInfo); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemTrendHandle.Success", new object[0])); } else { stringBuilder.Append("NoPlace"); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(itemInfo2.GetBagName(), new object[0]) + LanguageMgr.GetTranslation("ItemFusionHandler.NoPlace", new object[0])); } return(1); } client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemTrendHandle.Fail", new object[0])); return(1); }