public int HandlePacket(GameClient client, GSPacketIn packet) { GSPacketIn pkg = packet.Clone(); //pkg.ClearContext(); if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked")); return 0; } int id = packet.ReadInt(); int senderID; using (PlayerBussiness db = new PlayerBussiness()) { if (db.DeleteMail(client.Player.PlayerCharacter.ID, id, out senderID)) { client.Out.SendMailResponse(senderID,eMailRespose.Receiver); pkg.WriteBoolean(true); } else { pkg.WriteBoolean(false); } } client.Out.SendTCP(pkg); return 0; }
//修改: Xiaov //时间: 2009-11-4 //描述: 修改邮件的已读未读标志<已测试> public int HandlePacket(GameClient client, GSPacketIn packet) { GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); int id = packet.ReadInt(); using (PlayerBussiness db = new PlayerBussiness()) { MailInfo mes = db.GetMailSingle(client.Player.PlayerCharacter.ID, id); if (mes != null && !mes.IsRead) { mes.IsRead = true; if (mes.Type < 100) { mes.ValidDate = 3 * 24; mes.SendTime = DateTime.Now; } db.UpdateMail(mes, mes.Money); pkg.WriteBoolean(true); } else { pkg.WriteBoolean(false); } } client.Out.SendTCP(pkg); return 0; }
//修改: Xiaov //时间: 2009-11-7 //描述: 用户与用户之间私聊<已测试> public int HandlePacket(GameClient client, GSPacketIn packet) { int receiverID = packet.ReadInt(); //int senderID = packet.ReadInt(); string receiver = packet.ReadString(); string sender = packet.ReadString(); string msg = packet.ReadString(); bool isAutoReply = packet.ReadBoolean(); if (receiverID == 0) { using (PlayerBussiness db = new PlayerBussiness()) { PlayerInfo info = db.GetUserSingleByNickName(receiver); if (info != null) receiverID = info.ID; } } if (receiverID != 0) { GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); pkg.WriteInt(receiverID); pkg.ClientID = (client.Player.PlayerCharacter.ID); //pkg.WriteInt(senderID); pkg.WriteString(receiver); pkg.WriteString(sender); pkg.WriteString(msg); pkg.WriteBoolean(false); GamePlayer player = Managers.WorldMgr.GetPlayerById(receiverID); if (player != null) { if (player.IsBlackFriend(client.Player.PlayerCharacter.ID)) return 1; player.Out.SendTCP(pkg); } else { GameServer.Instance.LoginServer.SendPacket(pkg); } client.Out.SendTCP(pkg); } else { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserPrivateChatHandler.NoUser")); } return 1; }
public int HandlePacket(GameClient client, GSPacketIn packet) { GSPacketIn pkg = packet.Clone(); //if (DateTime.Now.Date != client.Player.PlayerCharacter.LastDate.Date) //{ pkg.WriteBoolean(true); //} //else //{ // pkg.WriteBoolean(false); //} client.SendTCP(pkg); return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { packet = packet.Clone(); packet.ClearContext(); int num = packet.ReadInt(); int num2 = packet.ReadInt(); int num3 = packet.ReadInt(); int num4 = packet.ReadInt(); int num5 = packet.ReadInt(); int num6 = packet.ReadInt(); int num7 = packet.ReadInt(); client.Player.CurrentHotSpringRoom = new HotSpringRoom(new HotSpringRoomInfo(), new TankHotSpringLogicProcessor()); client.Player.CurrentHotSpringRoom.ProcessData(client.Player, packet); return 0; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { GSPacketIn pkg = packet.Clone(); pkg.ClientID = player.PlayerCharacter.ID; player.CurrentGame.SendToPlayerExceptSelf(pkg, player); byte type = packet.ReadByte(); int tx = packet.ReadInt(); int ty = packet.ReadInt(); byte dir = packet.ReadByte(); bool isLiving = packet.ReadBoolean(); Player p = player.CurrentGame.Data.Players[player]; switch (type) { case 0: case 1: //p.X = tx; //p.Y = ty; p.SetXY(tx, ty); if (player.CurrentGame != null) { p.StartMoving(); if (p.Y - ty > 1 || p.IsLiving != isLiving) { //GameServer.log.Error(string.Format("修正掉落: 动作类型 {0} 原始Y:{1} 最新Y:{2}", type, ty, p.Y)); //把服务器修正的掉落指令和客户掉落指令加以区分。 pkg = player.Out.SendPlayerMove(3, p.X, p.Y, 0, p.IsLiving); player.CurrentGame.SendToPlayerExceptSelf(pkg, player); } } break; case 2: if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { p.EndX = tx; p.EndY = ty; } break; } return true; } return false; }
public int HandlePacket(GameClient client, GSPacketIn packet) { byte unknow = packet.ReadByte(); int id = packet.ReadInt(); if (client.Player.PlayerCharacter.AnswerSite < id) { List<ItemInfo> infos = null; client.Player.PlayerCharacter.AnswerSite = id; if (DropInventory.AnswerDrop(id, ref infos)) { int gold = 0; int money = 0; int giftToken = 0; int medal = 0; foreach (ItemInfo info in infos) { ItemInfo.FindSpecialItemInfo(info, ref gold, ref money, ref giftToken, ref medal); //if ((info != null) && (info.Template.BagType == eBageType.PropBag)) //{ client.Player.MainBag.AddTemplate(info, info.Count); //} client.Player.AddGold(gold); client.Player.AddMoney(money); client.Player.AddGiftToken(giftToken); client.Player.AddMedal(medal); LogMgr.LogMoneyAdd(LogMoneyType.Award, LogMoneyType.Award_Answer, client.Player.PlayerCharacter.ID, giftToken, client.Player.PlayerCharacter.Money, money, 0, 0,0, "", "", ""); } } } GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); pkg.WriteInt(client.Player.PlayerCharacter.AnswerSite); for (int i = 0; i < client.Player.PlayerCharacter.AnswerSite; i++) { pkg.WriteByte(unknow); } client.Player.Out.SendTCP(pkg); return 1; }
public int HandlePacket(GameClient client, GSPacketIn packet) { //修改: Xiaov //时间: 2009-11-4 //描述: 小喇叭<未测试> ItemInfo item = client.Player.PropBag.GetItemByCategoryID(0,11, 4); if (item != null) { //item.Count--; //if (item.Count <= 0) //{ // client.Player.RemoveItem(item); //} //else //{ client.Player.PropBag.RemoveCountFromStack(item, 1); // } int senderID = packet.ReadInt(); string senderName = packet.ReadString(); string msg = packet.ReadString(); GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); pkg.ClientID = (client.Player.PlayerCharacter.ID); pkg.WriteInt(client.Player.PlayerCharacter.ID); pkg.WriteString(client.Player.PlayerCharacter.NickName); pkg.WriteString(msg); GamePlayer[] players = Managers.WorldMgr.GetAllPlayers(); foreach (GamePlayer p in players) { p.Out.SendTCP(pkg); } } return 0; }
public bool HandleCommand(TankHotSpringLogicProcessor process, GamePlayer player, GSPacketIn packet) { if ((player.CurrentHotSpringRoom != null) && (player.CurrentHotSpringRoom.RoomState == eRoomState.FREE)) { if (player.PlayerCharacter.ID != player.CurrentHotSpringRoom.Info.PlayerID) { return false; } GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); GamePlayer playerById = WorldMgr.GetPlayerById(packet.ReadInt()); if (((playerById != null) && (playerById.CurrentRoom == null)) && (playerById.CurrentHotSpringRoom == null)) { pkg.WriteByte((byte)HotSpringCmdType.HOTSPRING_ROOM_INVITE); pkg.WriteInt(player.CurrentHotSpringRoom.Info.RoomID); playerById.Out.SendTCP(pkg); return true; } } return false; }
public void HandleCommand(BaseGame game, Player player, GSPacketIn packet) { if (player.IsAttacking) { GSPacketIn pkg = packet.Clone(); pkg.ClientID = player.PlayerDetail.PlayerCharacter.ID; pkg.Parameter1 = player.Id; game.SendToAll(pkg, player.PlayerDetail); byte type = packet.ReadByte(); int tx = packet.ReadInt(); int ty = packet.ReadInt(); byte dir = packet.ReadByte(); bool isLiving = packet.ReadBoolean(); //Console.WriteLine("isLiving : {0}, tx : {1}, ty : {2}, type : {3}, playerId : {4}", isLiving, tx, ty, type, player.Id); switch (type) { case 0: case 1: //p.X = tx; //p.Y = ty; // if (player.PlayerDetail.PlayerCharacter.NickName == "jacken123") // Console.WriteLine(player.PlayerDetail.PlayerCharacter.NickName + "X坐标" + player.X.ToString() + "Y坐标" + player.Y.ToString()); player.SetXY(tx, ty); player.StartMoving(); // if (player.PlayerDetail.PlayerCharacter.NickName == "jacken123") // Console.WriteLine(string.Format("修正掉落: 动作类型 {0} 原始Y:{1} 最新Y:{2}", type, ty, player.Y)); if (player.Y - ty > 1 || player.IsLiving != isLiving) { //Console.WriteLine("player.IsLiving : {0}, playerId : {1}", player.IsLiving, player.Id); //把服务器修正的掉落指令和客户掉落指令加以区分。 Console.WriteLine("玩家移动掉落:"+player.IsLiving.ToString()); game.SendPlayerMove(player, 3, player.X, player.Y, 0, player.IsLiving, null); } break; case 2: break; } } }
public void HandleCommand(BaseGame game, Player player, GSPacketIn packet) { if (player.IsLiving || player.IsAttacking) { GSPacketIn pkg = packet.Clone(); pkg.ClientID = player.Id; game.SendToAll(pkg, player.PlayerDetail); byte type = packet.ReadByte(); int tx = packet.ReadInt(); int ty = packet.ReadInt(); byte dir = packet.ReadByte(); bool isLiving = packet.ReadBoolean(); switch (type) { case 0: case 1: //p.X = tx; //p.Y = ty; player.SetXY(tx, ty); player.StartMoving(); if (player.Y - ty > 1 || player.IsLiving != isLiving) { //GameServer.log.Error(string.Format("修正掉落: 动作类型 {0} 原始Y:{1} 最新Y:{2}", type, ty, p.Y)); //把服务器修正的掉落指令和客户掉落指令加以区分。 pkg = player.PlayerDetail.Out.SendPlayerMove(player,3, player.X, player.Y, 0, player.IsLiving); game.SendToAll(pkg, player.PlayerDetail); } break; case 2: if (player.IsLiving == false) { player.TargetPoint = new Point(tx, ty); } break; } } }
public int HandlePacket(GameClient client,GSPacketIn packet ) { ItemInfo item = client.Player.PropBag.GetItemByCategoryID(0,11, 5); if (item != null) { //item.Count--; //if (item.Count <= 0) //{ // //client.Player.RemoveAllItem(item, false, Game.Server.Statics.ItemRemoveType.Use, item.GetBagType()); // client.Player.RemoveItem(item); //} //else //{ // client.Player.PropBag.RefreshItem(item); client.Player.PropBag.RemoveCountFromStack(item,1); // } int senderID = packet.ReadInt(); string senderName = packet.ReadString(); string msg = packet.ReadString(); GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); pkg.ClientID = (client.Player.PlayerCharacter.ID); pkg.WriteInt(client.Player.PlayerCharacter.ID); pkg.WriteString(client.Player.PlayerCharacter.NickName); pkg.WriteString(msg); GameServer.Instance.LoginServer.SendPacket(pkg); GamePlayer[] players = Managers.WorldMgr.GetAllPlayers(); foreach (GamePlayer p in players) { p.Out.SendTCP(pkg); } } return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); byte page = packet.ReadByte(); byte count = packet.ReadByte(); GamePlayer[] players = Managers.WorldMgr.GetAllPlayersNoGame(); int total = players.Length; byte length = total > count ? count : (byte)total; pkg.WriteByte(length); for (int i = page * count; i < page * count + length; i++) { PlayerInfo info = players[i % total].PlayerCharacter; pkg.WriteInt(info.ID); pkg.WriteString(info.NickName); pkg.WriteByte(info.typeVIP); pkg.WriteInt(info.VIPLevel); pkg.WriteBoolean(info.Sex); pkg.WriteInt(info.Grade); pkg.WriteInt(info.ConsortiaID); pkg.WriteString(info.ConsortiaName);// == null ? "" : info.ConsortiaName); pkg.WriteInt(info.Offer); pkg.WriteInt(info.Win); pkg.WriteInt(info.Total); pkg.WriteInt(info.Escape); pkg.WriteInt(info.Repute); pkg.WriteInt(info.FightPower); pkg.WriteBoolean(info.IsOldPlayer);//_loc_6.isOld = _loc_2.readBoolean(); } client.Out.SendTCP(pkg); return 0; }
public bool HandleCommand(TankMarryLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentMarryRoom == null || player.CurrentMarryRoom.RoomState != eRoomState.FREE) { return false; } if (player.CurrentMarryRoom.Info.GuestInvite == false) { if( player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.GroomID && player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.BrideID) { return false; } } GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); int id = packet.ReadInt(); GamePlayer invitedplayer = Managers.WorldMgr.GetPlayerById(id); if (invitedplayer != null && invitedplayer.CurrentRoom == null && invitedplayer.CurrentMarryRoom == null) { pkg.WriteByte((byte)MarryCmdType.INVITE); pkg.WriteInt(player.PlayerCharacter.ID); pkg.WriteString(player.PlayerCharacter.NickName); pkg.WriteInt(player.CurrentMarryRoom.Info.ID); //pkg.WriteInt(player.CurrentMarryRoom.Info.MapIndex); pkg.WriteString(player.CurrentMarryRoom.Info.Name); pkg.WriteString(player.CurrentMarryRoom.Info.Pwd); pkg.WriteInt(player.MarryMap); invitedplayer.Out.SendTCP(pkg); return true; } return false; }
//修改: Xiaov //时间: 2009-11-7 //描述: 进入结婚场景<已测试> public int HandlePacket(GameClient client, GSPacketIn packet) { GSPacketIn pkg = packet.Clone(); if (WorldMgr.MarryScene.AddPlayer(client.Player)) { pkg.WriteBoolean(true); } else { pkg.WriteBoolean(false); } client.Out.SendTCP(pkg); if (client.Player.CurrentMarryRoom==null) { MarryRoom[] list = MarryRoomMgr.GetAllMarryRoom(); foreach (MarryRoom g in list) { client.Player.Out.SendMarryRoomInfo(client.Player, g); } } return 0; //if (client.Player.CurrentScene == WorldMgr.MarryScene) //{ // MarryRoom[] list = MarryRoomMgr.GetAllMarryRoom(); // foreach (MarryRoom g in list) // { // client.Player.Out.SendMarryRoomInfo(client.Player, g); // } // client.Out.SendPingTime(); //} }
public int HandlePacket(GameClient client, GSPacketIn packet) { GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); //eBageType bagType = (eBageType)packet.ReadByte(); int holeNum = packet.ReadInt(); //int toplace = packet.ReadInt(); int templateID = packet.ReadInt(); int mustGold = 500; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked")); return 0; } if (client.Player.PlayerCharacter.Gold < mustGold) { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("ItemComposeHandler.NoMoney")); return 0; } PlayerInventory storeBag = client.Player.GetInventory(eBageType.Store); ItemInfo item = storeBag.GetItemAt(0); ItemInfo gem; ItemTemplateInfo goods = Bussiness.Managers.ItemMgr.FindItemTemplate(templateID); // storeBag.a if (goods == null) return 11; var result=false; switch (holeNum) { case 1: if (item.Hole1 > 0) { item.Hole1=0; result = true; } break; case 2: if (item.Hole2 > 0) { item.Hole2 = 0; result = true; } break; case 3: if (item.Hole3 > 0) { item.Hole3 = 0; result = true; } break; case 4: if (item.Hole4 > 0) { item.Hole4 = 0; result = true; } break; case 5: if (item.Hole5 > 0) { item.Hole5 = 0; result = true; } break; case 6: if (item.Hole6 > 0) { item.Hole6 = 0; result = true; } break; default: return 1; } if (result) { pkg.WriteInt(0); client.Player.BeginChanges(); gem = ItemInfo.CreateFromTemplate(goods, 1, (int)ItemAddType.Buy); client.Player.AddItem(gem); client.Player.StoreBag2.MoveToStore(client.Player.StoreBag2, 0, client.Player.MainBag.FindFirstEmptySlot(32), client.Player.MainBag, 9); client.Player.UpdateItem(item); client.Player.RemoveGold(mustGold); client.Player.CommitChanges(); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("OK")); } else { pkg.WriteInt(1); } client.Player.SendTCP(pkg); client.Player.SaveIntoDatabase();//保存到数据库 return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); StringBuilder str = new StringBuilder(); int mustGold = 40000; bool _moveHole = packet.ReadBoolean(); bool _moveFivSixHole = packet.ReadBoolean(); ItemInfo transferBefore = client.Player.StoreBag2.GetItemAt(0); ItemInfo transferAfter = client.Player.StoreBag2.GetItemAt(1); //未开始 if (transferBefore != null && transferAfter != null && transferBefore.Template.CategoryID == transferAfter.Template.CategoryID && //transferBefore.Template.CategoryID < 10 && transferAfter.Count == 1 && transferBefore.Count == 1 && transferBefore.IsValidItem() && transferAfter.IsValidItem()) { if (client.Player.PlayerCharacter.Gold < mustGold) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("itemtransferhandler.nogold")); return 1; } client.Player.RemoveGold(mustGold); if (transferBefore.Template.CategoryID == 7 || transferAfter.Template.CategoryID == 7) { ItemTemplateInfo newTemp0 = null; ItemTemplateInfo newTemp1 = null; ItemInfo newItem0 = null; ItemInfo newItem1 = null; int _temID0 = transferBefore.TemplateID; int _temID1 = transferAfter.TemplateID; GetWeaponID(ref _temID0, ref _temID1); newTemp0 = Bussiness.Managers.ItemMgr.FindItemTemplate(_temID0); newTemp1 = Bussiness.Managers.ItemMgr.FindItemTemplate(_temID1); if (newTemp0 != null) newItem0 = ItemInfo.CreateWeapon(newTemp0, transferBefore, (int)ItemAddType.Strengthen); transferBefore = newItem0; if (newTemp1 != null) newItem1 = ItemInfo.CreateWeapon(newTemp1, transferAfter, (int)ItemAddType.Strengthen); transferAfter = newItem1; } StrengthenMgr.InheritTransferProperty(ref transferBefore, ref transferAfter, _moveHole, _moveFivSixHole); client.Player.StoreBag2.ClearBag(); client.Player.StoreBag2.AddItemTo(transferBefore, 0); client.Player.StoreBag2.AddItemTo(transferAfter, 1); client.Player.SaveIntoDatabase(); pkg.WriteByte(0); client.Out.SendTCP(pkg); } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("itemtransferhandler.nocondition")); } return 0; }
public void ReturnPacket(GamePlayer player, GSPacketIn packet) { GSPacketIn pkg = packet.Clone(); pkg.ClientID = player.PlayerCharacter.ID; SendToAll(pkg); }
public int HandlePacket(GameClient client, GSPacketIn packet) { GSPacketIn pkg = packet.Clone(); client.SendTCP(pkg); return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { int id = packet.ReadInt(); byte type = packet.ReadByte(); List<int> types = new List<int>(); string msg = "";// LanguageMgr.GetTranslation("MailGetAttachHandler.Falied"); eMessageType eMsg = eMessageType.Normal; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked")); return 0; } GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); using (PlayerBussiness db = new PlayerBussiness()) { MailInfo mes = db.GetMailSingle(client.Player.PlayerCharacter.ID, id); if (mes != null) { bool result = true; int oldMoney = mes.Money; GamePlayer player = Managers.WorldMgr.GetPlayerById(mes.ReceiverID); if (mes.Type > 100 && mes.Money > client.Player.PlayerCharacter.Money) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("MailGetAttachHandler.NoMoney")); return 0; } if (!mes.IsRead) { mes.IsRead = true; mes.ValidDate = 3 * 24; mes.SendTime = DateTime.Now; } if (result && (type == 0 || type == 1) && !string.IsNullOrEmpty(mes.Annex1)) { if (GetAnnex(mes.Annex1, client.Player, ref msg, ref result, ref eMsg)) { types.Add(1); mes.Annex1 = null; } } if (result && (type == 0 || type == 2) && !string.IsNullOrEmpty(mes.Annex2)) { if (GetAnnex(mes.Annex2, client.Player, ref msg, ref result, ref eMsg)) { types.Add(2); mes.Annex2 = null; } } if (result && (type == 0 || type == 3) && !string.IsNullOrEmpty(mes.Annex3)) { if (GetAnnex(mes.Annex3, client.Player, ref msg, ref result, ref eMsg)) { types.Add(3); mes.Annex3 = null; } } if (result && (type == 0 || type == 4) && !string.IsNullOrEmpty(mes.Annex4)) { if (GetAnnex(mes.Annex4, client.Player, ref msg, ref result, ref eMsg)) { types.Add(4); mes.Annex4 = null; } } if (result && (type == 0 || type == 5) && !string.IsNullOrEmpty(mes.Annex5)) { if (GetAnnex(mes.Annex5, client.Player, ref msg, ref result, ref eMsg)) { types.Add(5); mes.Annex5 = null; } } if ((type == 0 || type == 6) && mes.Gold > 0) { types.Add(6); player.AddGold(mes.Gold); mes.Gold = 0; } if ((type == 0 || type == 7) && mes.Type < 100 && mes.Money > 0) { types.Add(7); player.AddMoney(mes.Money); LogMgr.LogMoneyAdd(LogMoneyType.Mail, LogMoneyType.Mail_Money, player.PlayerCharacter.ID, mes.Money, player.PlayerCharacter.Money, 0, 0, 0,0, "", "", "");//添加日志 mes.Money = 0; } if (mes.Type > 100 && mes.GiftToken > 0)//trminhpc { types.Add(8); player.AddGiftToken(mes.GiftToken); mes.GiftToken = 0; } if (mes.Type > 100 && mes.Money > 0) { mes.Money = 0; msg = LanguageMgr.GetTranslation("MailGetAttachHandler.Deduct") + (string.IsNullOrEmpty(msg) ? LanguageMgr.GetTranslation("MailGetAttachHandler.Success") : msg); } if (db.UpdateMail(mes, oldMoney)) { if (mes.Type > 100 && oldMoney > 0) { player.RemoveMoney(oldMoney); LogMgr.LogMoneyAdd(LogMoneyType.Mail, LogMoneyType.Mail_Pay, client.Player.PlayerCharacter.ID, oldMoney, client.Player.PlayerCharacter.Money, 0, 0, 0,0, "", "", ""); client.Out.SendMailResponse(mes.SenderID, eMailRespose.Receiver); client.Out.SendMailResponse(mes.ReceiverID, eMailRespose.Send); } } //pkg.WriteBoolean(result); pkg.WriteInt(id); pkg.WriteInt(types.Count); foreach (int i in types) { pkg.WriteInt(i); } client.Out.SendTCP(pkg); client.Out.SendMessage(eMsg, string.IsNullOrEmpty(msg) ? LanguageMgr.GetTranslation("MailGetAttachHandler.Success") : msg); } else { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("MailGetAttachHandler.Falied")); } } return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (countConnect >= 3000){client.Disconnect();return 0;} GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); StringBuilder str = new StringBuilder(); int mustGold = GameProperties.PRICE_COMPOSE_GOLD; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked")); return 0; } if (client.Player.PlayerCharacter.Gold < mustGold) { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("ItemComposeHandler.NoMoney")); return 0; } int itemPlace = - 1; int godPlace = -1; bool isBinds = false; bool consortia = packet.ReadBoolean(); ItemInfo item = client.Player.StoreBag2.GetItemAt(1); ItemInfo stone = client.Player.StoreBag2.GetItemAt(2); ItemInfo luck = null; ItemInfo god = null; string BeginProperty = null; string AddItem = null; using (ItemRecordBussiness db = new ItemRecordBussiness()) { db.PropertyString(item, ref BeginProperty); } if (item != null && stone != null && item.Template.CanCompose && (item.Template.CategoryID < 10 || stone.Template.CategoryID == 11 && stone.Template.Property1 == 1)) { isBinds = isBinds ? true : item.IsBinds; isBinds = isBinds ? true : stone.IsBinds; str.Append(item.ItemID + ":" + item.TemplateID + "," + stone.ItemID + ":" + stone.TemplateID + ","); ThreadSafeRandom random = new ThreadSafeRandom(); bool result = false; byte isSuccess = 1; //bool isGod = false; double probability = composeRate[(stone.Template.Quality - 1)] * 100;//stone.Template.Property2; if (client.Player.StoreBag2.GetItemAt(0)!=null) { luck = client.Player.StoreBag2.GetItemAt(0); if (luck != null && luck.Template.CategoryID == 11 && luck.Template.Property1 == 3) { isBinds = isBinds ? true : luck.IsBinds; AddItem += "|" + luck.ItemID + ":" + luck.Template.Name + "|" + stone.ItemID + ":" + stone.Template.Name; str.Append(luck.ItemID + ":" + luck.TemplateID + ","); probability += probability * luck.Template.Property2 / 100; } } else { probability += probability * 1 / 100; } if (godPlace != -1) { god = client.Player.PropBag.GetItemAt(godPlace); if (god != null && god.Template.CategoryID == 11 && god.Template.Property1 == 7) { isBinds = isBinds ? true : god.IsBinds; //isGod = true; str.Append(god.ItemID + ":" + god.TemplateID + ","); AddItem += "," + god.ItemID + ":" + god.Template.Name; } else { god = null; } } //判断是公会铁匠铺还是铁匠铺 if (consortia) { ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID); //这里添加公会权限限制的判断 ConsortiaBussiness csbs = new ConsortiaBussiness(); ConsortiaEquipControlInfo cecInfo = csbs.GetConsortiaEuqipRiches(client.Player.PlayerCharacter.ConsortiaID, 0, 2); if (info == null) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemStrengthenHandler.Fail")); } else { if (client.Player.PlayerCharacter.Riches < cecInfo.Riches) { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("ItemStrengthenHandler.FailbyPermission")); return 1; } else { probability *= (1 + 0.1 * info.SmithLevel); } } } probability = Math.Floor(probability * 10) / 10; //client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Probability: " + probability.ToString())); int rand = random.Next(100); switch (stone.Template.Property3) { case 1: if (stone.Template.Property4 > item.AttackCompose) { result = true; if (probability > rand) { isSuccess = 0; item.AttackCompose = stone.Template.Property4; } } break; case 2: if (stone.Template.Property4 > item.DefendCompose) { result = true; if (probability > rand) { isSuccess = 0; item.DefendCompose = stone.Template.Property4; } } break; case 3: if (stone.Template.Property4 > item.AgilityCompose) { result = true; if (probability > rand) { isSuccess = 0; item.AgilityCompose = stone.Template.Property4; } } break; case 4: if (stone.Template.Property4 > item.LuckCompose) { result = true; if (probability > rand) { isSuccess = 0; item.LuckCompose = stone.Template.Property4; } } break; } if (result) { item.IsBinds = isBinds; if (isSuccess != 0) { str.Append("false!"); result = false; } else { str.Append("true!"); result = true; client.Player.OnItemCompose(stone.TemplateID); } LogMgr.LogItemAdd(client.Player.PlayerCharacter.ID, LogItemType.Compose, BeginProperty, item, AddItem, Convert.ToInt32(result)); client.Player.RemoveItem(stone); client.Player.SaveIntoDatabase();//保存到数据库 if (luck != null) { client.Player.RemoveItem(luck); } if (god != null) { client.Player.RemoveItem(god); } client.Player.RemoveGold(mustGold); client.Player.StoreBag2.ClearBag(); client.Player.StoreBag2.AddItemTo(item, 1); //client.Player.StoreBag2.UpdateItem(item); pkg.WriteByte(isSuccess); client.Out.SendTCP(pkg); if (itemPlace < 31) { client.Player.MainBag.UpdatePlayerProperties(); } } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemComposeHandler.NoLevel")); } } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemComposeHandler.Fail")); } return 0; }
// <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, "", "", ""); 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 void ReturnPacketForScene(GamePlayer player, GSPacketIn packet) { GSPacketIn pkg = packet.Clone(); pkg.ClientID = player.PlayerCharacter.ID; SendToPlayerExceptSelfForScene(pkg, player); //SendToAll(pkg); }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (countConnect >= 3000){client.Disconnect();return 0;} GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); int ItemBagType = packet.ReadInt(); int ItemPlace = packet.ReadInt(); int HoleNum = packet.ReadInt(); int GemBagType = packet.ReadInt(); int GemPlace = packet.ReadInt(); ItemInfo Item = client.Player.GetItemAt((eBageType)ItemBagType, ItemPlace); ItemInfo Gem = client.Player.GetItemAt((eBageType)GemBagType, GemPlace); string BeginProperty = null; string AddItem = ""; using (ItemRecordBussiness db = new ItemRecordBussiness()) { db.PropertyString(Item, ref BeginProperty); } int Glod = 2000; if (Item == null || Gem == null || Gem.Template.Property1 != 31) return 0; if (client.Player.PlayerCharacter.Gold > Glod) { string[] Hole = Item.Template.Hole.Split('|'); if (HoleNum > 0 && HoleNum < 7) { client.Player.RemoveGold(Glod); bool result = false; switch (HoleNum) { case 1: if (Item.Hole1 >= 0) { string[] str = Hole[0].Split(','); if (Convert.ToInt32(str[1]) == Gem.Template.Property2) { Item.Hole1 = Gem.TemplateID; AddItem += "," + Gem.ItemID + ","+ Gem.Template.Name ; result = true; } } break; case 2: if (Item.Hole2 >= 0) { string[] str = Hole[1].Split(','); if (Convert.ToInt32(str[1]) == Gem.Template.Property2) { Item.Hole2 = Gem.TemplateID; AddItem += "," + Gem.ItemID + "," + Gem.Template.Name; result = true; } } break; case 3: if (Item.Hole3 >= 0) { string[] str = Hole[2].Split(','); if (Convert.ToInt32(str[1]) == Gem.Template.Property2) { Item.Hole3 = Gem.TemplateID; AddItem += "," + Gem.ItemID + "," + Gem.Template.Name; result = true; } } break; case 4: if (Item.Hole4 >= 0) { string[] str = Hole[3].Split(','); if (Convert.ToInt32(str[1]) == Gem.Template.Property2) { Item.Hole4 = Gem.TemplateID; AddItem += "," + Gem.ItemID + "," + Gem.Template.Name; result = true; } } break; case 5: if (Item.Hole5 >= 0) { string[] str = Hole[4].Split(','); if (Convert.ToInt32(str[1]) == Gem.Template.Property2) { Item.Hole5 = Gem.TemplateID; AddItem += "," + Gem.ItemID + "," + Gem.Template.Name; result = true; } } break; case 6: if (Item.Hole6 >= 0) { string[] str = Hole[5].Split(','); if (Convert.ToInt32(str[1]) == Gem.Template.Property2) { Item.Hole6 = Gem.TemplateID; AddItem += "," + Gem.ItemID + "," + Gem.Template.Name; result = true; } } break; } if (result) { //client.Player.StoreBag2.MoveToStore(client.Player.StoreBag2, 0, client.Player.MainBag.FindFirstEmptySlot(31), client.Player.MainBag, 9); pkg.WriteInt(0); Gem.Count--; client.Player.StoreBag2.UpdateItem(Item); client.Player.UpdateItem(Gem); //client.Player.UpdateItem(Item); //client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemInlayHandle.Success", Gem.Template.Name)); } LogMgr.LogItemAdd(client.Player.PlayerCharacter.ID, LogItemType.Insert, BeginProperty, Item, AddItem, Convert.ToInt32(result)); } else { pkg.WriteByte(1); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemInlayHandle.NoPlace")); } client.Player.SendTCP(pkg); client.Player.SaveIntoDatabase();//保存到数据库 } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserBuyItemHandler.NoMoney")); } return 0; }
public bool HandleCommand(TankMarryLogicProcessor process, GamePlayer player, GSPacketIn packet) { if (player.CurrentMarryRoom == null || player.CurrentMarryRoom.RoomState != eRoomState.FREE) { return false; } if(player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.GroomID && player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.BrideID ) { return false; } int needMoney = GameProperties.PRICE_PROPOSE; if(player.CurrentMarryRoom.Info.IsHymeneal) { if (player.PlayerCharacter.Money < needMoney) { player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("UserFirecrackersCommand.MoneyNotEnough")); return false; } } GamePlayer Groom = player.CurrentMarryRoom.GetPlayerByUserID(player.CurrentMarryRoom.Info.GroomID); if(Groom == null) { player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("HymenealCommand.NoGroom")); return false; } GamePlayer Bride = player.CurrentMarryRoom.GetPlayerByUserID(player.CurrentMarryRoom.Info.BrideID); if (Bride == null) { player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("HymenealCommand.NoBride")); return false; } bool result = false; bool isFirst = false; GSPacketIn pkg = packet.Clone(); int hymenealState = packet.ReadInt(); if (1 == hymenealState) { player.CurrentMarryRoom.RoomState = eRoomState.FREE; } else { player.CurrentMarryRoom.RoomState = eRoomState.Hymeneal; player.CurrentMarryRoom.BeginTimerForHymeneal(170 * 1000); if (!player.PlayerCharacter.IsGotRing) { isFirst = true; ItemTemplateInfo ringTemplate = ItemMgr.FindItemTemplate(9022); ItemInfo ring1 = ItemInfo.CreateFromTemplate(ringTemplate, 1, (int)ItemAddType.webing); ring1.IsBinds = true; //Groom.CurrentInventory.AddItem(ring1, 11); using (PlayerBussiness pb = new PlayerBussiness()) { ring1.UserID = 0; pb.AddGoods(ring1); string content = LanguageMgr.GetTranslation("HymenealCommand.Content", Bride.PlayerCharacter.NickName); MailInfo mail = new MailInfo(); mail.Annex1 = ring1.ItemID.ToString(); mail.Content = content; mail.Gold = 0; mail.IsExist = true; mail.Money = 0; mail.Receiver = Groom.PlayerCharacter.NickName; mail.ReceiverID = Groom.PlayerCharacter.ID; mail.Sender = LanguageMgr.GetTranslation("HymenealCommand.Sender"); mail.SenderID = 0; mail.Title = LanguageMgr.GetTranslation("HymenealCommand.Title"); mail.Type = (int)eMailType.Marry; if (pb.SendMail(mail)) { result = true; } player.Out.SendMailResponse(mail.ReceiverID, eMailRespose.Receiver); } ItemInfo ring2 = ItemInfo.CreateFromTemplate(ringTemplate, 1, (int)ItemAddType.webing); ring2.IsBinds = true; //Bride.CurrentInventory.AddItem(ring2, 11); using (PlayerBussiness pb = new PlayerBussiness()) { ring2.UserID = 0; pb.AddGoods(ring2); string content = LanguageMgr.GetTranslation("HymenealCommand.Content", Groom.PlayerCharacter.NickName); MailInfo mail = new MailInfo(); mail.Annex1 = ring2.ItemID.ToString(); mail.Content = content; mail.Gold = 0; mail.IsExist = true; mail.Money = 0; mail.Receiver = Bride.PlayerCharacter.NickName; mail.ReceiverID = Bride.PlayerCharacter.ID; mail.Sender = LanguageMgr.GetTranslation("HymenealCommand.Sender"); mail.SenderID = 0; mail.Title = LanguageMgr.GetTranslation("HymenealCommand.Title"); mail.Type = (int)eMailType.Marry; if (pb.SendMail(mail)) { result = true; } player.Out.SendMailResponse(mail.ReceiverID, eMailRespose.Receiver); } player.CurrentMarryRoom.Info.IsHymeneal = true; using (PlayerBussiness db = new PlayerBussiness()) { db.UpdateMarryRoomInfo(player.CurrentMarryRoom.Info); //更新IsGotRing的数据库 db.UpdatePlayerGotRingProp(Groom.PlayerCharacter.ID,Bride.PlayerCharacter.ID); //通过数据库读入PlayerCharacter内存 Groom.LoadMarryProp(); Bride.LoadMarryProp(); } //Groom.PlayerCharacter.IsGotRing = true; //Bride.PlayerCharacter.IsGotRing = true; } else { isFirst = false; result = true; } if (!isFirst) { //player.SetMoney(-needMoney, MoneyRemoveType.Marry); player.RemoveMoney(needMoney); LogMgr.LogMoneyAdd(LogMoneyType.Marry, LogMoneyType.Marry_Hymeneal, player.PlayerCharacter.ID, needMoney, player.PlayerCharacter.Money, 0, 0, 0,0, "", "", ""); CountBussiness.InsertSystemPayCount(player.PlayerCharacter.ID, needMoney, 0, (int)eConsumerType.Marry, (int)eSubConsumerType.Marry_Hymeneal); } pkg.WriteInt(player.CurrentMarryRoom.Info.ID); pkg.WriteBoolean(result); //0 player.CurrentMarryRoom.SendToAll(pkg); //0 player.CurrentMarryRoom.SendToAllForScene(pkg,1); player.CurrentMarryRoom.SendToAll(pkg); if(result) { string msg = LanguageMgr.GetTranslation("HymenealCommand.Succeed", Groom.PlayerCharacter.NickName, Bride.PlayerCharacter.NickName); GSPacketIn message = player.Out.SendMessage(eMessageType.ChatNormal, msg); player.CurrentMarryRoom.SendToPlayerExceptSelfForScene(message, player); } } return true; }
public int HandlePacket(GameClient client, GSPacketIn packet) { packet.ClientID = (client.Player.PlayerCharacter.ID); byte channel = packet.ReadByte(); bool team = packet.ReadBoolean(); string nick = packet.ReadString(); string msg = packet.ReadString(); GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); pkg.ClientID = (client.Player.PlayerCharacter.ID); pkg.WriteInt(4); pkg.WriteByte(channel); pkg.WriteBoolean(team); pkg.WriteString(client.Player.PlayerCharacter.NickName); pkg.WriteString(msg); if (client.Player.CurrentRoom != null) { if (client.Player.CurrentRoom.RoomType == eRoomType.Match) { if (client.Player.CurrentRoom.Game != null) { client.Player.CurrentRoom.BattleServer.Server.SendChatMessage(msg, client.Player,team); return 1; } } } //3公会 if (channel == 3) { if (client.Player.PlayerCharacter.ConsortiaID == 0) return 0; if (client.Player.PlayerCharacter.IsBanChat) { client.Out.SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("ConsortiaChatHandler.IsBanChat")); return 1; } //packet.ClientID = (client.Player.PlayerCharacter.ID); //string nick = packet.ReadString(); //string msg = packet.ReadString(); pkg.WriteInt(client.Player.PlayerCharacter.ConsortiaID); GamePlayer[] players = WorldMgr.GetAllPlayers(); foreach (GamePlayer p in players) { if (p.PlayerCharacter.ConsortiaID == client.Player.PlayerCharacter.ConsortiaID && !p.IsBlackFriend(client.Player.PlayerCharacter.ID)) p.Out.SendTCP(pkg); } GameServer.Instance.LoginServer.SendPacket(pkg); } else if (channel == 9) { if (client.Player.CurrentMarryRoom == null) { return 1; } //0 client.Player.CurrentMarryRoom.SendToAll(pkg); client.Player.CurrentMarryRoom.SendToAllForScene(pkg, client.Player.MarryMap); } else { if (client.Player.CurrentRoom != null) { if (team) { client.Player.CurrentRoom.SendToTeam(pkg, client.Player.CurrentRoomTeam, client.Player); } else { client.Player.CurrentRoom.SendToAll(pkg); } } else { if (DateTime.Compare(client.Player.LastChatTime.AddSeconds(1), DateTime.Now) > 0 && channel == 5) return 1; if (team) return 1; if (DateTime.Compare(client.Player.LastChatTime.AddSeconds(30), DateTime.Now) > 0) { client.Out.SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("SceneChatHandler.Fast")); return 1; } client.Player.LastChatTime = DateTime.Now; GamePlayer[] list = Managers.WorldMgr.GetAllPlayers(); foreach (GamePlayer p in list) { if (p.CurrentRoom == null && p.CurrentMarryRoom == null && !p.IsBlackFriend(client.Player.PlayerCharacter.ID)) p.Out.SendTCP(pkg); } } } return 1; }
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 int HandlePacket(GameClient client, GSPacketIn packet) { int id = packet.ReadInt(); int price = packet.ReadInt(); bool result = false; GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); string msg = "AuctionUpdateHandler.Fail"; if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked")); return 0; } using (PlayerBussiness db = new PlayerBussiness()) { AuctionInfo info = db.GetAuctionSingle(id); if (info == null) { msg = "AuctionUpdateHandler.Msg1"; } else if (info.PayType == 0 && price > client.Player.PlayerCharacter.Gold) { msg = "AuctionUpdateHandler.Msg2"; } else if (info.PayType == 1 && price > client.Player.PlayerCharacter.Money) { msg = "AuctionUpdateHandler.Msg3"; } else if (info.BuyerID == 0 && info.Price > price) { msg = "AuctionUpdateHandler.Msg4"; } else if (info.BuyerID != 0 && info.Price + info.Rise > price && (info.Mouthful == 0 || info.Mouthful > price)) { msg = "AuctionUpdateHandler.Msg5"; } else { int oldBuyerID = info.BuyerID; info.BuyerID = client.Player.PlayerCharacter.ID; info.BuyerName = client.Player.PlayerCharacter.NickName; info.Price = price; if (info.Mouthful != 0 && price >= info.Mouthful) { info.Price = info.Mouthful; info.IsExist = false; } if (db.UpdateAuction(info)) { if (info.PayType == 0) { client.Player.RemoveGold(info.Price); } else { client.Player.RemoveMoney(info.Price); LogMgr.LogMoneyAdd(LogMoneyType.Auction, LogMoneyType.Auction_Update, client.Player.PlayerCharacter.ID, info.Price, client.Player.PlayerCharacter.Money, 0, 0, 0, "", "", ""); } if (info.IsExist) { msg = "AuctionUpdateHandler.Msg6"; } else { msg = "AuctionUpdateHandler.Msg7"; client.Out.SendMailResponse(info.AuctioneerID, eMailRespose.Receiver); client.Out.SendMailResponse(info.BuyerID, eMailRespose.Receiver); } if (oldBuyerID != 0) { client.Out.SendMailResponse(oldBuyerID, eMailRespose.Receiver);//通知老买主价格被超出 } result = true; } } client.Out.SendAuctionRefresh(info, id, info != null ? info.IsExist : false, null); client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(msg)); } pkg.WriteBoolean(result); pkg.WriteInt(id); client.Out.SendTCP(pkg); return 0; }
//private static readonly double[] rateItems = new double[] { 0.75, 3, 12, 48, 240, 768 }; //public static int countConnect = 0; public int HandlePacket(GameClient client, GSPacketIn packet) { //if (countConnect >= 3000) //{ // client.Disconnect(); // return 0; //} StringBuilder str = new StringBuilder(); bool isBinds = false; bool consortia = packet.ReadBoolean(); bool MultiSelected = packet.ReadBoolean(); GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); List<ItemInfo> stones = new List<ItemInfo>(); ItemInfo stone = client.Player.StoreBag2.GetItemAt(0); ItemInfo item = client.Player.StoreBag2.GetItemAt(1); //ItemInfo luck = null; //ItemInfo god = null; string BeginProperty = null; string AddItem = ""; using (ItemRecordBussiness db = new ItemRecordBussiness()) { db.PropertyString(item, ref BeginProperty); } if (item != null && item.Template.CanStrengthen && item.Template.CategoryID < 18 && item.Count == 1) { isBinds = isBinds ? true : item.IsBinds; str.Append(item.ItemID + ":" + item.TemplateID + ","); double exp1 = 0; double exp2 = 0; double exp3 = 0; double totalExp = 0; if (stone != null && stone.Template.CategoryID == 11 && (stone.Template.Property1 == 2 || stone.Template.Property1 == 35)) { isBinds = isBinds ? true : stone.IsBinds; AddItem += "," + stone.ItemID.ToString() + ":" + stone.Template.Name; stones.Add(stone); exp1 += stone.Template.Property2; } bool ConsortiaRate = false; ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID); //判断是公会铁匠铺还是铁匠铺?? if (consortia) { ConsortiaBussiness csbs = new ConsortiaBussiness(); ConsortiaEquipControlInfo cecInfo = csbs.GetConsortiaEuqipRiches(client.Player.PlayerCharacter.ConsortiaID, 0, 2); if (info == null) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemStrengthenHandler.Fail")); } else { if (client.Player.PlayerCharacter.Riches < cecInfo.Riches) { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("ItemStrengthenHandler.FailbyPermission")); return 1; } ConsortiaRate = true; } } if (ConsortiaRate) { //ConsortiaRateManager.instance.getConsortiaStrengthenEx(PlayerManager.Instance.Self.consortiaInfo.SmithLevel) //"ConsortiaStrengthenEx" Value="10|20|30|40|50|60|70|80|90|100" List<double> ConsortiaStrengthenEx = new List<double> { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 }; exp2 = ConsortiaStrengthenEx[info.SmithLevel - 1] / 100 * exp1; } if (client.Player.PlayerCharacter.VIPExpireDay >= DateTime.Now) { //_loc_4 = VipController.instance.getVIPStrengthenEx(PlayerManager.Instance.Self.VIPLevel) //"VIPStrengthenEx" Value="25|25|25|35|35|50|50|50|50|50|50|50" List<double> VIPStrengthenEx = new List<double> { 25, 25, 25, 35, 35, 50, 50, 50, 50, 50, 50, 50 }; exp3 = VIPStrengthenEx[client.Player.PlayerCharacter.VIPLevel - 1] / 100 * exp1; } totalExp += Math.Floor(exp1 + exp2 + exp3); str.Append("true"); List<int> StrengThenExp = new List<int> { 0, 10, 50, 150, 350, 700, 1500, 2300, 3300, 4500, 6000, 7500, 9000 }; //Console.WriteLine("-------Total: " + stone.Count.ToString() + "| Inject: " + MultiSelected); if (MultiSelected)// && stone.Count > 1) { //for (int i = 0; i < stone.Count; i++) //{ item.StrengthenExp += (int)totalExp * stone.Count; client.Player.StoreBag2.RemoveTemplate(stone.TemplateID, stone.Count); //} } else { item.StrengthenExp += (int)totalExp; client.Player.StoreBag2.RemoveTemplate(stone.TemplateID, 1); } if (item.StrengthenExp >= StrengThenExp[item.StrengthenLevel + 1]) { //for (int a = StrengThenExp[item.StrengthenLevel]; a < item.StrengthenExp; a++) int a = StrengThenExp[item.StrengthenLevel]; do { if (item.StrengthenLevel < 13) { if (item.StrengthenExp >= StrengThenExp[item.StrengthenLevel + 1]) { item.StrengthenLevel++; item.StrengthenExp -= StrengThenExp[item.StrengthenLevel]; a = StrengThenExp[item.StrengthenLevel]; } else { break; } } } while (item.StrengthenExp > a); if (item.StrengthenLevel == 12 && (item.StrengthenExp / totalExp) > 0) { stone.Count = (int)Math.Floor(item.StrengthenExp / totalExp); client.Player.StoreBag2.AddItemTo(stone, 0); client.Player.StoreBag2.UpdateItem(stone); //if (item.StrengthenLevel == 12) item.StrengthenExp = 0; } pkg.WriteByte(1); StrengthenGoodsInfo strengthenGoodsInfo = StrengthenMgr.FindStrengthenGoodsInfo(item.StrengthenLevel, item.TemplateID); if (strengthenGoodsInfo != null && item.Template.CategoryID == 7) { ItemTemplateInfo Temp = Bussiness.Managers.ItemMgr.FindItemTemplate(strengthenGoodsInfo.GainEquip); if (Temp != null) { ItemInfo newItem = ItemInfo.CreateFromTemplate(Temp, 1, (int)ItemAddType.Strengthen); newItem.StrengthenLevel = item.StrengthenLevel; newItem.StrengthenExp = item.StrengthenExp; ItemInfo.OpenHole(ref newItem); StrengthenMgr.InheritProperty(item, ref newItem); client.Player.StoreBag2.RemoveItemAt(1); client.Player.StoreBag2.AddItemTo(newItem, 1); //client.Player.StoreBag2.UpdateItem(newItem); item = newItem; if ((item.StrengthenLevel == 3 || item.StrengthenLevel == 6 || item.StrengthenLevel == 9 || item.StrengthenLevel == 12) && item.Template.CategoryID != 17) { pkg.WriteBoolean(true); } else { pkg.WriteBoolean(false); } } } else { ItemInfo.OpenHole(ref item); //client.Player.StoreBag2.AddItemTo(item, 1); if ((item.StrengthenLevel == 3 || item.StrengthenLevel == 6 || item.StrengthenLevel == 9 || item.StrengthenLevel == 12) && item.Template.CategoryID != 17) { pkg.WriteBoolean(true); } else { pkg.WriteBoolean(false); } } //系统广播 if (item.StrengthenLevel >= 7) { string msg = LanguageMgr.GetTranslation("ItemStrengthenHandler.congratulation", client.Player.PlayerCharacter.NickName, item.Template.Name, item.StrengthenLevel); GSPacketIn sys_notice = WorldMgr.SendSysNotice(msg); GameServer.Instance.LoginServer.SendPacket(sys_notice); } } else { pkg.WriteByte(1); pkg.WriteBoolean(false); } client.Player.StoreBag2.UpdateItem(item); client.Player.OnItemStrengthen(item.Template.CategoryID, item.StrengthenLevel);//任务<强化> LogMgr.LogItemAdd(client.Player.PlayerCharacter.ID, LogItemType.Strengthen, BeginProperty, item, AddItem, 1);//强化日志 //client.Player.SaveIntoDatabase();//保存到数据库 client.Out.SendTCP(pkg); str.Append(item.StrengthenLevel); //client.Player.BeginChanges(); //client.Player.CommitChanges(); } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemStrengthenHandler.Content1") + stone.Template.Name + LanguageMgr.GetTranslation("ItemStrengthenHandler.Content2")); } if (item.Place < 31) { client.Player.MainBag.UpdatePlayerProperties(); } return 0; }
//修改: Xiaov //时间: 2009-11-9 //描述: 登陆请求 public int HandlePacket(GameClient client, GSPacketIn packet) { try { GSPacketIn pkg = packet.Clone(); pkg.ClearContext(); if (client.Player == null) { int version = packet.ReadInt(); int clientType = packet.ReadInt(); byte[] tempKey = new byte[8]; byte[] src = packet.ReadBytes(); //解密 try { src = WorldMgr.RsaCryptor.Decrypt(src,false); } catch (ExecutionEngineException e) { client.Out.SendKitoff(LanguageMgr.GetTranslation("UserLoginHandler.RsaCryptorError")); client.Disconnect(); GameServer.log.Error("ExecutionEngineException", e); return 0; } catch (Exception ex) { //防止攻击,如果解密出错,直接断开连接 client.Out.SendKitoff(LanguageMgr.GetTranslation("UserLoginHandler.RsaCryptorError")); client.Disconnect(); GameServer.log.Error("RsaCryptor", ex); return 0; } //DateTime date = new DateTime(src[0] * 256 + src[1], src[2], src[3], src[4], src[5], src[6]); //int fms_key = (src[7] << 8) + src[8]; //client.SetFsm(fms_key, version); //string edition = GameServer.Instance.Configuration.Edition; string edition = GameServer.Edition; //if (version.ToString() != edition && edition != "0") //{ // client.Out.SendKitoff(LanguageMgr.GetTranslation("UserLoginHandler.EditionError")); // //client.Out.SendEditionError(LanguageMgr.GetTranslation("UserLoginHandler.EditionError")); // client.Disconnect(); // return 0; //} for (int i = 0; i < 8; i++) { tempKey[i] = src[i+7]; } client.setKey(tempKey); string[] temp = Encoding.UTF8.GetString(src, 15, src.Length - 15).Split(','); if (temp.Length == 2) { string user = temp[0]; string pass = temp[1]; //TimeSpan span = date - DateTime.UtcNow; //if (Math.Abs(span.TotalMinutes) < 5) //{ if (!LoginMgr.ContainsUser(user)) { bool isFirst = false; BaseInterface inter = BaseInterface.CreateInterface(); PlayerInfo cha = inter.LoginGame(user, pass, ref isFirst); if (cha != null && cha.ID != 0) { if (cha.ID == -2) { //帐号被禁用 client.Out.SendKitoff(LanguageMgr.GetTranslation("UserLoginHandler.Forbid")); client.Disconnect(); return 0; } if (!isFirst) { client.Player = new GamePlayer(cha.ID,user, client, cha); LoginMgr.Add(cha.ID, client); client.Server.LoginServer.SendAllowUserLogin(cha.ID); client.Version = version; } else { client.Out.SendKitoff(LanguageMgr.GetTranslation("UserLoginHandler.Register")); client.Disconnect(); } } else { //client.Out.SendLoginFailed("用户名密码错误"); client.Out.SendKitoff(LanguageMgr.GetTranslation("UserLoginHandler.OverTime")); client.Disconnect(); } } else { //避免攻击,有另外的客户端在登陆,则断掉次客户端。 client.Out.SendKitoff(LanguageMgr.GetTranslation("UserLoginHandler.LoginError")); client.Disconnect(); } } else { client.Out.SendKitoff(LanguageMgr.GetTranslation("UserLoginHandler.LengthError")); //验证格式错误,端口连接 client.Disconnect(); } } } catch (Exception ex) { client.Out.SendKitoff(LanguageMgr.GetTranslation("UserLoginHandler.ServerError")); client.Disconnect(); GameServer.log.Error(LanguageMgr.GetTranslation("UserLoginHandler.ServerError"), ex); } return 1; }