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; }
public int HandlePacket(GameClient client, GSPacketIn packet) { int user_id = packet.ReadInt(); //PlayerInfo info = client.Player.PlayerCharacter; return 0; }
public override void OnRecvPacket(Game.Base.Packets.GSPacketIn pkg) { if (pkg.Code == 0x03) //system_message { Console.WriteLine(pkg.ReadString()); } }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (client.Player.PlayerCharacter.ConsortiaID == 0) return 0; int banUserID = packet.ReadInt(); bool isBanChat = packet.ReadBoolean(); int userID = 0; string userName = ""; bool result = false; string msg = "ConsortiaIsBanChatHandler.Failed"; using (ConsortiaBussiness db = new ConsortiaBussiness()) { if (db.UpdateConsortiaIsBanChat(banUserID, client.Player.PlayerCharacter.ConsortiaID, client.Player.PlayerCharacter.ID, isBanChat, ref userID, ref userName, ref msg)) { msg = "ConsortiaIsBanChatHandler.Success"; result = true; GameServer.Instance.LoginServer.SendConsortiaBanChat(userID, userName, client.Player.PlayerCharacter.ID, client.Player.PlayerCharacter.NickName,isBanChat); } } packet.WriteBoolean(result); packet.WriteString(LanguageMgr.GetTranslation(msg)); client.Out.SendTCP(packet); return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { int activeID = packet.ReadInt(); string awardID = packet.ReadString(); string msg = "ActivePullDownHandler.Fail"; using (ActiveBussiness db = new ActiveBussiness()) { int result = db.PullDown(activeID, awardID, client.Player.PlayerCharacter.ID,ref msg); if (result == 0) { client.Out.SendMailResponse(client.Player.PlayerCharacter.ID,eMailRespose.Receiver); } if (msg != "ActiveBussiness.Msg0") { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation(msg)); } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(msg)); } } return 0; }
//0友好,1黑名单 public int HandlePacket(GameClient client, GSPacketIn packet) { var im_cmd = packet.ReadByte(); switch (im_cmd) { case (byte)IMPackageType.FRIEND_ADD: HandleFRIEND_ADD(packet); break; case (byte)IMPackageType.FRIEND_REMOVE: break; case (byte)IMPackageType.FRIEND_UPDATE: break; case (byte)IMPackageType.FRIEND_STATE: break; case (byte)IMPackageType.ONS_EQUIP: break; case (byte)IMPackageType.FRIEND_RESPONSE: break; case (byte)IMPackageType.SAME_CITY_FRIEND: break; case (byte)IMPackageType.ADD_CUSTOM_FRIENDS: break; case (byte)IMPackageType.ONE_ON_ONE_TALK: break; } return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { int index = packet.ReadInt(); client.Player.FightBag.RemoveItemAt(index); return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (client.Player.PlayerCharacter.ConsortiaID == 0) return 0; int id = client.Player.PlayerCharacter.ConsortiaID; string consortiaName = client.Player.PlayerCharacter.ConsortiaName; bool result = false; string msg = "ConsortiaDisbandHandler.Failed"; using (ConsortiaBussiness db = new ConsortiaBussiness()) { if (db.DeleteConsortia(client.Player.PlayerCharacter.ConsortiaID, client.Player.PlayerCharacter.ID, ref msg)) { result = true; msg = "ConsortiaDisbandHandler.Success1"; client.Player.ClearConsortia(); GameServer.Instance.LoginServer.SendConsortiaDelete(id); } } string temp = LanguageMgr.GetTranslation(msg); if (msg == "ConsortiaDisbandHandler.Success1") { temp += consortiaName + LanguageMgr.GetTranslation("ConsortiaDisbandHandler.Success2"); } packet.WriteBoolean(result); packet.WriteInt(client.Player.PlayerCharacter.ID); packet.WriteString(temp); client.Out.SendTCP(packet); return 0; }
public void HandleCommand(BaseGame game, Player player, GSPacketIn packet) { if (player.IsAttacking) { player.UseSpecialSkill(); } }
public int HandlePacket(GameClient client, GSPacketIn packet) { //if (client.Player.CurrentHotSpringRoom != null) //{ // client.Player.CurrentHotSpringRoom.ProcessData(client.Player, packet); //} GSPacketIn pkg = new GSPacketIn((byte)ePackageType.HOTSPRING_ROOM_PLAYER_ADD); var player = client.Player.PlayerCharacter; pkg.WriteInt(player.ID); pkg.WriteInt(player.Grade); pkg.WriteInt(player.Hide); pkg.WriteInt(player.Repute); pkg.WriteString(player.NickName); pkg.WriteBoolean(true); pkg.WriteInt(5); pkg.WriteBoolean(player.Sex); pkg.WriteString(player.Style); pkg.WriteString(player.Colors); pkg.WriteString(player.Skin); pkg.WriteInt(405); pkg.WriteInt(405); //var _loc_6:* = new Point(_loc_2.readInt(), _loc_2.readInt()); pkg.WriteInt(player.FightPower); pkg.WriteInt(player.Win); pkg.WriteInt(player.Total); pkg.WriteInt(45); //_loc_5.FightPower = _loc_2.readInt(); //_loc_5.WinCount = _loc_2.readInt(); //_loc_5.TotalCount = _loc_2.readInt(); //_loc_4.playerDirection = _loc_2.readInt(); client.SendTCP(pkg); return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { //Lay Danh Sach tat ca cac phong GSPacketIn pkg = new GSPacketIn((byte)ePackageType.HOTSPRING_ROOM_LIST_GET); pkg.WriteInt(10); for (int i = 0; i < 10; i++) { //loc_2.roomNumber = _loc_3.readInt(); pkg.WriteInt(i); //_loc_2.roomID = _loc_3.readInt(); pkg.WriteInt(i); //_loc_2.roomName = _loc_3.readUTF(); pkg.WriteString("Room" + i); //_loc_2.roomPassword = _loc_3.readUTF(); pkg.WriteString(""); //_loc_2.effectiveTime = _loc_3.readInt(); pkg.WriteInt(1); //_loc_2.curCount = _loc_3.readInt(); pkg.WriteInt(1); //_loc_2.playerID = _loc_3.readInt(); pkg.WriteInt(client.Player.PlayerCharacter.ID); //_loc_2.playerName = _loc_3.readUTF(); pkg.WriteString("abc"); //_loc_2.startTime = _loc_3.readDate(); pkg.WriteDateTime(DateTime.Now.AddDays(-50)); //_loc_2.roomIntroduction = _loc_3.readUTF(); pkg.WriteString("Room Intro"); //_loc_2.roomType = _loc_3.readInt(); pkg.WriteInt(1); //_loc_2.maxCount = _loc_3.readInt(); pkg.WriteInt(10); } client.SendTCP(pkg); return 0; }
public void SendLoginFailed(string msg) { GSPacketIn pkg = new GSPacketIn((byte)ePackageType.LOGIN); pkg.WriteByte(1); pkg.WriteString(msg); SendTCP(pkg); }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (client.Player.PlayerCharacter.ConsortiaID == 0) return 0; int id = packet.ReadInt(); bool upGrade = packet.ReadBoolean(); bool result = false; string msg = "ConsortiaUserGradeUpdateHandler.Failed"; using (ConsortiaBussiness db = new ConsortiaBussiness()) { string tempUserName = ""; ConsortiaDutyInfo info = new ConsortiaDutyInfo(); if (db.UpdateConsortiaUserGrade(id, client.Player.PlayerCharacter.ConsortiaID, client.Player.PlayerCharacter.ID, upGrade, ref msg, ref info, ref tempUserName)) { msg = "ConsortiaUserGradeUpdateHandler.Success"; result = true; GameServer.Instance.LoginServer.SendConsortiaDuty(info, upGrade ? 6 : 7, client.Player.PlayerCharacter.ConsortiaID,id, tempUserName,client.Player.PlayerCharacter.ID,client.Player.PlayerCharacter.NickName); } } packet.WriteBoolean(result); packet.WriteString(LanguageMgr.GetTranslation(msg)); client.Out.SendTCP(packet); return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { int hallType=packet.ReadInt(); int updateType=packet.ReadInt(); int page=packet.ReadInt(); if(page<0)page=0; page++; BaseRoom[] list = RoomMgr.Rooms; List<BaseRoom> tempList = new List<BaseRoom>(); //int maxRoomInList = 7; var count = 0; for (int i = 0; i < list.Length; i++) { if (!list[i].IsEmpty ) { // if(!list[i].IsPlaying&&cou) countPr count++; if (count < page * numberRoomInPage&&count>(page-1)*numberRoomInPage) tempList.Add(list[i]); else if(count > page * numberRoomInPage) { break; } //m_player.Out.SendUpdateRoomList(list[i]); } } if(tempList.Count>0) client.Out.SendUpdateRoomList(tempList); return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { //GSPacketIn pkg = packet.Clone(); //pkg.ClearContext(); PlayerInventory m_storeBag = client.Player.StoreBag2; PlayerEquipInventory m_mainBag = client.Player.MainBag; PlayerInventory m_propBag = client.Player.PropBag; for(int i=0;i<m_storeBag.Capalility;i++){ if (m_storeBag.GetItemAt(i) != null) { var item = m_storeBag.GetItemAt(i); if (item.Template.CategoryID == 10 || item.Template.CategoryID == 11 || item.Template.CategoryID == 12) { m_storeBag.MoveToStore(m_storeBag, i, m_propBag.FindFirstEmptySlot(1), m_propBag, 999); } else { if (item.Template.CategoryID == 7&&m_mainBag.GetItemAt(6)==null) { m_storeBag.MoveToStore(m_storeBag, i, 6, m_mainBag, 999); }else m_storeBag.MoveToStore(m_storeBag, i, m_mainBag.FindFirstEmptySlot(32), m_mainBag, 999); } } } //m_storeBag.ClearBag(); return 0; }
public void HandleCommand(BaseGame game, Player player, GSPacketIn packet) { if (game is PVEGame) { PVEGame pve = game as PVEGame; if (pve.BossCardCount + 1 > 0) { int index = packet.ReadByte(); if (index < 0 || index > pve.BossCards.Length) { if (pve.IsBossWar != "") { pve.TakeBossCard(player); } else pve.TakeCard(player); } else { if (pve.IsBossWar != "") { pve.TakeBossCard(player, index); } else pve.TakeCard(player, index); } } } }
public override void OnTick(HotSpringRoom room) { try { if(room != null) { room.KickAllPlayer(); //using(PlayerBussiness db = new PlayerBussiness()) //{ // db.DisposeHotSpringRoomInfo(room.Info.ID); //} //GameServer.Instance.LoginServer.SendUpdatePlayerMarriedStates(room.Info.GroomID); //GameServer.Instance.LoginServer.SendUpdatePlayerMarriedStates(room.Info.BrideID); //GameServer.Instance.LoginServer.SendHotSpringRoomInfoToPlayer(room.Info.GroomID, false, room.Info); //GameServer.Instance.LoginServer.SendHotSpringRoomInfoToPlayer(room.Info.BrideID, false, room.Info); //HotSpringRoomMgr.RemoveHotSpringRoom(room); GSPacketIn pkg = new GSPacketIn((short)ePackageType.MARRY_ROOM_DISPOSE); pkg.WriteInt(room.Info.ID); WorldMgr.MarryScene.SendToALL(pkg); room.StopTimer(); } } catch(Exception ex) { if (log.IsErrorEnabled) log.Error("OnTick",ex); } }
//0友好,1黑名单 public int HandlePacket(GameClient client, GSPacketIn packet) { var pet_cmd = packet.ReadByte(); switch (pet_cmd) { case (byte)Game.Logic.eTankCmdType.UPDATE_PET: HandleUPDATE_PET(client, packet.ReadInt()); break; case (byte)Game.Logic.eTankCmdType.ADD_PET://ADD_PET break; case (byte)Game.Logic.eTankCmdType.MOVE_PETBAG://MOVE_PETBAG break; case (byte)Game.Logic.eTankCmdType.FEED_PET://FEED_PET break; case (byte)Game.Logic.eTankCmdType.REFRESH_PET://REFRESH_PET client.Out.SendRefreshPet(); break; case (byte)Game.Logic.eTankCmdType.ADOPT_PET://ADOPT_PET break; case (byte)Game.Logic.eTankCmdType.EQUIP_PET_SKILL://EQUIP_PET_SKILL break; case (byte)Game.Logic.eTankCmdType.RELEASE_PET://RELEASE_PET break; case (byte)Game.Logic.eTankCmdType.RENAME_PET://RENAME_PET break; case (byte)Game.Logic.eTankCmdType.PAY_SKILL://PAY_SKILL break; case (byte)Game.Logic.eTankCmdType.FIGHT_PET://FIGHT_PET break; } return 0; }
public void HandleCommand(BaseGame game, Player player, GSPacketIn packet) { if (player.IsAttacking) { player.Skip(packet.ReadByte()); } }
public int HandlePacket(GameClient client, GSPacketIn packet) { 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); byte channel = packet.ReadByte(); string nick = packet.ReadString(); string msg = packet.ReadString(); packet.WriteInt(client.Player.PlayerCharacter.ConsortiaID); GamePlayer[] players = WorldMgr.GetAllPlayers(); foreach (GamePlayer p in players) { if (p.PlayerCharacter.ConsortiaID == client.Player.PlayerCharacter.ConsortiaID) p.Out.SendTCP(packet); } GameServer.Instance.LoginServer.SendPacket(packet); return 0; }
public void HandleCommand(BaseGame game, Player player, GSPacketIn packet) { if(game is PVEGame) { PVEGame pve = game as PVEGame; int tryAgain = packet.ReadInt(); bool isHost = packet.ReadBoolean(); if (isHost == true) { if (tryAgain == 1) { if (player.PlayerDetail.RemoveMoney(100) > 0) { //退回关卡结算 pve.WantTryAgain = 1; game.SendToAll(packet); player.PlayerDetail.LogAddMoney(AddMoneyType.Game, AddMoneyType.Game_TryAgain, player.PlayerDetail.PlayerCharacter.ID, 100, player.PlayerDetail.PlayerCharacter.Money); } else { player.PlayerDetail.SendInsufficientMoney((int)eBattleRemoveMoneyType.TryAgain); } } else { //退回房间 pve.WantTryAgain = 0; game.SendToAll(packet); } pve.CheckState(0); } } }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (client.Player.PlayerCharacter.ConsortiaID == 0) return 0; int id = packet.ReadInt(); bool isAlly = packet.ReadBoolean(); bool result = false; string msg = "ConsortiaApplyAllyAddHandler.Add_Failed"; using (ConsortiaBussiness db = new ConsortiaBussiness()) { ConsortiaApplyAllyInfo info = new ConsortiaApplyAllyInfo(); info.Consortia1ID = client.Player.PlayerCharacter.ConsortiaID; info.Consortia2ID = id; info.Date = DateTime.Now; info.State = 0;// isAlly ? 1 : 0; info.Remark = ""; info.IsExist = true; if (db.AddConsortiaApplyAlly(info, client.Player.PlayerCharacter.ID, ref msg)) { msg = "ConsortiaApplyAllyAddHandler.Add_Success"; result = true; } } packet.WriteBoolean(result); packet.WriteString(LanguageMgr.GetTranslation(msg)); client.Out.SendTCP(packet); return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (client.Player.PlayerCharacter.ConsortiaID == 0) return 0; int id = packet.ReadInt(); bool result = false; string nickName = ""; string msg = id == client.Player.PlayerCharacter.ID ? "ConsortiaUserDeleteHandler.ExitFailed" : "ConsortiaUserDeleteHandler.KickFailed"; using (ConsortiaBussiness db = new ConsortiaBussiness()) { if (db.DeleteConsortiaUser(client.Player.PlayerCharacter.ID, id, client.Player.PlayerCharacter.ConsortiaID, ref msg, ref nickName)) { msg = id == client.Player.PlayerCharacter.ID ? "ConsortiaUserDeleteHandler.ExitSuccess" : "ConsortiaUserDeleteHandler.KickSuccess"; int consortiaID = client.Player.PlayerCharacter.ConsortiaID; if (id == client.Player.PlayerCharacter.ID) { client.Player.ClearConsortia(); client.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Receiver); } // client.Player.StoreBag.SendStoreToMail(); GameServer.Instance.LoginServer.SendConsortiaUserDelete(id, consortiaID, id != client.Player.PlayerCharacter.ID, nickName,client.Player.PlayerCharacter.NickName); result = true; } } packet.WriteBoolean(result); packet.WriteString(LanguageMgr.GetTranslation(msg)); client.Out.SendTCP(packet); return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { eBageType bagType = (eBageType)packet.ReadByte(); int place = packet.ReadInt(); int count = packet.ReadInt(); client.Player.BeginChanges(); PlayerInventory bag = client.Player.GetInventory(bagType); if (bag != null && bag.GetItemAt(place) != null) { ItemTemplateInfo item = bag.GetItemAt(place).Template; int price = count * item.ReclaimValue; if (item.ReclaimType == 2) { client.Player.AddGiftToken(price); //client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.Success1", price)); } if (item.ReclaimType == 1) { client.Player.AddGold(price); //client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.Success2", price)); } bag.RemoveItemAt(place); } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ItemReclaimHandler.NoSuccess")); return 1; } client.Player.CommitChanges(); //LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Continue, client.Player.PlayerCharacter.ID, 25, client.Player.PlayerCharacter.Money, 25, 0, 0, 0, "牌子编号",)); //client.Player.SaveIntoDatabase();//保存到数据库 return 0; }
public void HandleGameRoomCreate(GSPacketIn pkg) { int roomId = pkg.ReadInt(); int gameType = pkg.ReadInt(); int count = pkg.ReadInt(); IGamePlayer[] players = new IGamePlayer[count]; for (int i = 0; i < count; i++) { PlayerInfo info = new PlayerInfo(); info.ID = pkg.ReadInt(); info.Attack = pkg.ReadInt(); info.Defence = pkg.ReadInt(); info.Agility = pkg.ReadInt(); info.Luck = pkg.ReadInt(); double baseAttack = pkg.ReadDouble(); double baseDefence = pkg.ReadDouble(); double baseAgility = pkg.ReadDouble(); double baseBlood = pkg.ReadDouble(); int templateId = pkg.ReadInt(); ItemTemplateInfo itemTemplate = ItemMgr.FindItemTemplate(templateId); ItemInfo item = new ItemInfo(itemTemplate); players[i] = new ProxyPlayer(info, item, baseAttack, baseDefence, baseAgility, baseBlood); } ProxyRoomMgr.CreateRoom(players, roomId, this); }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (client.Player.CurrentMarryRoom != null && client.Player.PlayerCharacter.ID == client.Player.CurrentMarryRoom.Info.PlayerID) { string roomName = packet.ReadString(); bool isPwdChanged = packet.ReadBoolean(); string pwd = packet.ReadString(); string introduction = packet.ReadString(); MarryRoom room = client.Player.CurrentMarryRoom; room.Info.RoomIntroduction = introduction; room.Info.Name = roomName; if (isPwdChanged) { room.Info.Pwd = pwd; } using (PlayerBussiness db = new PlayerBussiness()) { db.UpdateMarryRoomInfo(room.Info); } room.SendMarryRoomInfoUpdateToScenePlayers(room); client.Player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("MarryRoomInfoUpdateHandler.Successed")); return 0; } return 1; }
public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet) { //if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.FRIST || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD) { player.CurrentGame.ReturnPacket(player, packet); player.CurrentGame.Data.Players[player].SetXY(packet.ReadInt(), packet.ReadInt()); //player.CurrentGame.Data.Players[player].StartMoving(); //GameServer.log.Error(string.Format("StopMoving {0} {1}",player.CurrentGame.Data.Players[player].X,player.CurrentGame.Data.Players[player].Y)); //由于同步问题,暂时去掉 //if (player.CurrentGame != null) // player.CurrentGame.Data.Players[player].StartMoving(); // GameServer.log.Error(string.Format("StopMoving {0} {1}", player.CurrentGame.Data.Players[player].X, player.CurrentGame.Data.Players[player].Y)); return true; } else { //if (player.CurrentGame.Data.CurrentFire != null) //{ //int x = packet.ReadInt(); //player.CurrentGame.Data.Players[player].PosY = packet.ReadInt(); //} //return true; } return false; }
public override void OnRecvPacket(GSPacketIn pkg) { switch (pkg.Code) { case (int)eFightPackageType.LOGIN: HandleLogin(pkg); break; case (int)eFightPackageType.ROOM_CREATE: HandleGameRoomCreate(pkg); break; case (int)eFightPackageType.ROOM_REMOVE: HandleGameRoomCancel(pkg); break; case (int)eFightPackageType.SEND_TO_GAME: HanleSendToGame(pkg); break; case (int)eFightPackageType.PLAYER_USE_PROP_INGAME: HandlePlayerUsingProp(pkg); break; case (int)eFightPackageType.DISCONNECT: HandlePlayerExit(pkg); break; case (int)eFightPackageType.CHAT: HandlePlayerMessage(pkg); break; case (int)eFightPackageType.SYS_NOTICE: HandleSysNotice(pkg); break; case (int)eFightPackageType.FIND_CONSORTIA_ALLY: HandleConsortiaAlly(pkg); break; default: break; } }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (client.Player.PlayerCharacter.ConsortiaID == 0) return 0; //Type 1表示商城,2表示铁匠铺 bool result = false; string msg = "ConsortiaEquipControlHandler.Fail"; ConsortiaEquipControlInfo info = new ConsortiaEquipControlInfo(); info.ConsortiaID = client.Player.PlayerCharacter.ConsortiaID; using (ConsortiaBussiness db = new ConsortiaBussiness()) { for (int i = 0; i < 5; i++) { info.Riches = packet.ReadInt(); info.Type = 1; info.Level = i + 1; db.AddAndUpdateConsortiaEuqipControl(info, client.Player.PlayerCharacter.ID, ref msg); } info.Riches = packet.ReadInt(); info.Type = 2; info.Level = 0; db.AddAndUpdateConsortiaEuqipControl(info, client.Player.PlayerCharacter.ID, ref msg); msg = "ConsortiaEquipControlHandler.Success"; result = true; } packet.WriteBoolean(result); packet.WriteString(LanguageMgr.GetTranslation(msg)); client.Out.SendTCP(packet); return 0; }
public int HandlePacket(GameClient client, GSPacketIn packet) { //修改: Xiaov //时间: 2009-11-4 //描述: 场景准备<已通过> if (client.Player.CurrentRoom != null) { GSPacketIn pkgMsg = null; List<GamePlayer> players = client.Player.CurrentRoom.GetPlayers(); foreach (GamePlayer p in players) { if (p != client.Player) { if (pkgMsg == null) { pkgMsg = p.Out.SendSceneAddPlayer(client.Player); } else { p.Out.SendTCP(pkgMsg); } client.Out.SendSceneRemovePlayer(p); } } } return 1; }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (client.Player.PlayerCharacter.ConsortiaID == 0) return 0; int id = packet.ReadInt(); bool result = false; string msg = "ConsortiaApplyLoginPassHandler.Failed"; using (ConsortiaBussiness db = new ConsortiaBussiness()) { int consortiaRepute = 0; ConsortiaUserInfo info = new ConsortiaUserInfo(); if (db.PassConsortiaApplyUsers(id, client.Player.PlayerCharacter.ID, client.Player.PlayerCharacter.NickName, client.Player.PlayerCharacter.ConsortiaID, ref msg, info, ref consortiaRepute)) { msg = "ConsortiaApplyLoginPassHandler.Success"; result = true; if (info.UserID != 0) { info.ConsortiaID = client.Player.PlayerCharacter.ConsortiaID; info.ConsortiaName = client.Player.PlayerCharacter.ConsortiaName; GameServer.Instance.LoginServer.SendConsortiaUserPass(client.Player.PlayerCharacter.ID, client.Player.PlayerCharacter.NickName, info, false, consortiaRepute, info.LoginName, client.Player.PlayerCharacter.FightPower); } } } packet.WriteBoolean(result); packet.WriteString(LanguageMgr.GetTranslation(msg)); client.Out.SendTCP(packet); return 0; }
public void HandleCommand(BaseGame game, Player player, Game.Base.Packets.GSPacketIn packet) { if (player.HasTakeCard == false && player.CanTakeOut == true) { int index = packet.ReadByte(); if (index < 0 || index > 7) { game.TakeCard(player); } else { game.TakeCard(player, index); } } }
public override void OnStarting(BaseSceneGame game, Game.Base.Packets.GSPacketIn data) { //base.OnStarting(game, data); TankData tank = game.Data; tank.Reset(); GamePlayer[] list = game.Data.GetAllPlayers(); int i = random.Next(list.Length); GamePlayer player = GetLowDelayPlayer(game, list[i]); //List<Point> pos = new List<Point>(); //pos.AddRange(Managers.MapMgr.GetMapPos(game.Data.MapIndex)); MapPoint pos = Managers.MapMgr.GetMapRandomPos(game.Data.MapIndex); tank.CurrentWind = random.Next(-40, 40); data.WriteInt(player.PlayerCharacter.ID); data.WriteInt(tank.CurrentWind); data.WriteByte((byte)game.Data.Count); Point temp = new Point(); int lastTeam = -1; foreach (GamePlayer p in list) { temp = GetRandom(pos, temp, lastTeam, p.CurrentTeamIndex); tank.Players[p].X = temp.X; tank.Players[p].Y = temp.Y; tank.CurrentMap.AddPhysical(tank.Players[p]); p.CanFly = true; p.Count = 2; data.WriteInt(p.PlayerCharacter.ID); data.WriteInt(tank.Players[p].X); data.WriteInt(tank.Players[p].Y); data.WriteInt(random.Next(0, 2) > 0 ? 1 : -1); data.WriteInt(tank.Players[p].Blood); data.WriteBoolean(game.Data.Players[p].IsCaptain); lastTeam = p.CurrentTeamIndex; } tank.CurrentIndex = player; game.BeginTimer(TIMEOUT); if (game.RoomType == eRoomType.PAIRUP && game.MatchGame != null) { game.MatchGame.StopTimer(); } }
public static void SendStartMessage(BattleGame game) { Game.Base.Packets.GSPacketIn pkg = new Game.Base.Packets.GSPacketIn((byte)ePackageType.GAME_CHAT); pkg.WriteInt(2); if (game.GameType == eGameType.Free) { foreach (Player p in game.GetAllFightPlayers()) { (p.PlayerDetail as ProxyPlayer).Rate = 1; GSPacketIn pkg1 = SendBufferList(p, (p.PlayerDetail as ProxyPlayer).Buffers); game.SendToAll(pkg1); } pkg.WriteString("撮合成功!您所在的小队开始了自由战"); } else { pkg.WriteString("撮合成功!您所在的小队开始了公会战"); } game.SendToAll(pkg, null); }
public static void SendStartMessage(BattleGame game) { Game.Base.Packets.GSPacketIn pkg = new Game.Base.Packets.GSPacketIn((byte)ePackageType.GAME_CHAT); pkg.WriteInt(2); if (game.GameType == eGameType.Free) { foreach (Player p in game.GetAllFightPlayers()) { (p.PlayerDetail as ProxyPlayer).Rate = 1; GSPacketIn pkg1 = SendBufferList(p, (p.PlayerDetail as ProxyPlayer).Buffers); game.SendToAll(pkg1); } pkg.WriteString("Bắt cặp thành công, Bắt đẩu chiến đấu!"); } else { pkg.WriteString("Kết nối thất bại!"); } game.SendToAll(pkg, null); }
public int HandlePacket(GameClient client, Game.Base.Packets.GSPacketIn packet) { int type_award = packet.ReadInt(); //1:isDailyGotten //2:isShowEgg //3:Vip if (type_award == 3) { //client.Player.PlayerCharacter.CanTakeVipReward = false; client.Player.PlayerCharacter.LastVIPPackTime = DateTime.Now; using (PlayerBussiness db = new PlayerBussiness()) { db.UpdateLastVIPPackTime(client.Player.PlayerCharacter); } } if (type_award == 2) { } if (Managers.AwardMgr.AddDailyAward(client.Player) == true && type_award == 1) { using (PlayerBussiness db = new PlayerBussiness()) { if (db.UpdatePlayerLastAward(client.Player.PlayerCharacter.ID)) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("GameUserDailyAward.Success")); } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("GameUserDailyAward.Fail")); } } } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("GameUserDailyAward.Fail1")); } return(2); }
public int HandlePacket(GameClient client, Game.Base.Packets.GSPacketIn packet) { if (Managers.AwardMgr.AddDailyAward(client.Player) == true) { using (PlayerBussiness db = new PlayerBussiness()) { if (db.UpdatePlayerLastAward(client.Player.PlayerCharacter.ID) == true) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("GameUserDailyAward.Success")); } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("GameUserDailyAward.Fail")); } } } else { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("GameUserDailyAward.Fail1")); } return(2); }
public void WritePacket(GSPacketIn pkg) { pkg.WriteHeader(); this.Write(pkg.Buffer, 0, pkg.Length); }
public int HandlePacket(GameClient client, Game.Base.Packets.GSPacketIn packet) { int type_award = packet.ReadInt(); return(0); }
public override void OnStopping(BaseSceneGame game, Game.Base.Packets.GSPacketIn pkg) { base.OnStopping(game, pkg); game.BeginTimer(TIMEOUT / 2); TankData data = game.Data; pkg.WriteByte((byte)data.Players.Count); int winTeam = -1; int lastTeam = -1; data.killFlag = false; foreach (KeyValuePair <GamePlayer, Player> p in data.Players) { //if(p.Value.TotalHurt > 0) //{ // data.killFlag = true; //} if (winTeam == -1 && p.Value.Blood > 0) { if (game.GameMode == eGameMode.FLAG) { if (p.Value.IsCaptain) { winTeam = p.Key.CurrentTeamIndex; break; } else { lastTeam = p.Key.CurrentTeamIndex; } } else { winTeam = p.Key.CurrentTeamIndex; break; } } } //if (!data.killFlag) //{ // game.BeginTimer(3000); //} if (winTeam == -1 && game.Data.CurrentIndex == null) { winTeam = lastTeam; } if (winTeam == -1) { if (game.Data.CurrentFire != null) { winTeam = game.Data.CurrentFire.CurrentTeamIndex; } else { winTeam = data.LastDead; } } int GP; //E等级差=(对方平均等级+5)-玩家等级;取值区间(1~9); // P赢=4*[(对方平均等级+5)-玩家等级]+伤害的血量*0.2%+击杀数*2+(命中次数/玩家总的回合次数)*8; //P输=1*[(对方平均等级+5)-玩家等级]+伤害的血量*0.2%+击杀数*2+(命中次数/玩家总的回合次数)*8 // P赢=[2+伤害的血量*0.1%+击杀数*0.5+(命中次数/玩家总的回合次数)*2]*[(对方平均等级+10)-玩家等级] //P输=[伤害的血量*0.1%+击杀数*0.5+(命中次数/玩家总的回合次数)*2]*[(对方平均等级+10)-玩家等级]; // P赢=[2+伤害的血量*0.1%+击杀数*0.5+(命中次数/玩家总的回合次数)*2]*对方平均等级*[1+(总击杀数-1)*33%] //P输=[伤害的血量*0.1%+击杀数*0.5+(命中次数/玩家总的回合次数)*2]*对方平均等级*[1+(总击杀数-1)*33%] //P赢=[2+伤害的血量*0.1%+击杀数*0.5+(命中次数/玩家总的回合次数)*2]*对方平均等级*[0.9+(游戏开始时对方玩家人数-1)*30%] //P输=[伤害的血量*0.1%+击杀数*0.5+(命中次数/玩家总的回合次数)*2]*对方平均等级*[0.9+(游戏开始时对方玩家人数-1)*30%] //bool flag = data.GameStart.AddMinutes(1).CompareTo(DateTime.Now) > 0; string winStr = LanguageMgr.GetTranslation("Game.Server.SceneGames.OnStopping.Msg5"); GamePlayer winPlayer = null; string loseStr = LanguageMgr.GetTranslation("Game.Server.SceneGames.OnStopping.Msg5"); GamePlayer losePlayer = null; foreach (KeyValuePair <GamePlayer, Player> p in data.Players) { if (game.RoomType == 0) { p.Key.PlayerCharacter.CheckCount++; } else { p.Key.PlayerCharacter.CheckCount += 2; } p.Key.Out.SendCheckCode(); if (p.Value.TotalHurt > 0) { data.killFlag = true; } if (game.GameClass == eGameClass.CONSORTIA) { if (p.Key.CurrentTeamIndex == winTeam) { winStr += " [" + p.Key.PlayerCharacter.NickName + "] "; winPlayer = p.Key; } else { loseStr += " [" + p.Key.PlayerCharacter.NickName + "] "; losePlayer = p.Key; } } } int riches = 0; if (game.GameClass == eGameClass.CONSORTIA) { winStr += LanguageMgr.GetTranslation("Game.Server.SceneGames.OnStopping.Msg1") + losePlayer.PlayerCharacter.ConsortiaName + LanguageMgr.GetTranslation("Game.Server.SceneGames.OnStopping.Msg2"); loseStr += LanguageMgr.GetTranslation("Game.Server.SceneGames.OnStopping.Msg3") + winPlayer.PlayerCharacter.ConsortiaName + LanguageMgr.GetTranslation("Game.Server.SceneGames.OnStopping.Msg4"); riches = ConsortiaMgr.ConsortiaFight(winPlayer.CurrentTeamIndex == 1 ? data.ConsortiaID1 : data.ConsortiaID2, winPlayer.CurrentTeamIndex == 1 ? data.ConsortiaID2 : data.ConsortiaID1, game.Data.Players, game.RoomType, game.GameClass, data.persons[winPlayer.CurrentTeamIndex].TotalKillHealth); GameServer.Instance.LoginServer.SendConsortiaFight(winPlayer.PlayerCharacter.ConsortiaID, riches, winStr); //GameServer.Instance.LoginServer.SendConsortiaFight(losePlayer.PlayerCharacter.ConsortiaID, -riches, loseStr); } foreach (KeyValuePair <GamePlayer, Player> p in data.Players) { GP = 1; if (p.Value.State != TankGameState.LOSE) { if (game.RoomType == eRoomType.PAIRUP) { p.Key.PlayerCharacter.Total++; } double level = (data.TotalLevel - data.persons[p.Key.CurrentTeamIndex].TotalLevel) / (data.TotalPerson - data.persons[p.Key.CurrentTeamIndex].TeamPerson); double disLevel = level + 10 - p.Key.PlayerCharacter.Grade; if (p.Key.CurrentTeamIndex == winTeam) { if (game.RoomType == eRoomType.PAIRUP) { p.Key.PlayerCharacter.Win++; } //GP = (int)Math.Ceiling((((data.killFlag ? 2 : 0) + (double)p.Value.TotalHurt * 0.001 + p.Value.TotalKill * 0.5 + (p.Value.HitNum / (p.Value.BoutNum == 0 ? 1 : p.Value.BoutNum)) * 2) * level * (1 + (data.persons[p.Key.CurrentTeamIndex].TatolKill - 1) * 0.33))); GP = (int)Math.Ceiling((((data.killFlag ? 2 : 0) + (double)p.Value.TotalHurt * 0.001 + p.Value.TotalKill * 0.5 + (p.Value.HitNum / (p.Value.BoutNum == 0 ? 1 : p.Value.BoutNum)) * 2) * level * (0.9 + (data.persons[p.Key.CurrentTeamIndex].TeamPerson - 1) * 0.3))); } else { GP = (int)Math.Ceiling(((double)p.Value.TotalHurt * 0.001 + p.Value.TotalKill * 0.5 + (p.Value.HitNum / (p.Value.BoutNum == 0 ? 1 : p.Value.BoutNum)) * 2) * level * (0.9 + (data.persons[p.Key.CurrentTeamIndex].TeamPerson - 1) * 0.3)); } bool isMarried = false; if (p.Key.PlayerCharacter.IsMarried) { foreach (GamePlayer q in data.Players.Keys) { if (q.PlayerCharacter.ID != p.Key.PlayerCharacter.ID) { if (q.CurrentTeamIndex == p.Key.CurrentTeamIndex && p.Key.PlayerCharacter.SpouseID == q.PlayerCharacter.ID) { GP = (int)(GP * 1.2); isMarried = true; } } } } p.Key.QuestInventory.CheckWin(data.MapIndex, (int)game.GameMode, game.ScanTime, p.Value.IsCaptain, data.persons[p.Key.CurrentTeamIndex].TeamPerson, data.TotalPerson - data.persons[p.Key.CurrentTeamIndex].TeamPerson, p.Key.CurrentTeamIndex == winTeam, game.GameClass == eGameClass.CONSORTIA, (int)game.RoomType, isMarried); double AAS = AntiAddictionMgr.GetAntiAddictionCoefficient(p.Key.PlayerCharacter.AntiAddiction); GP = (int)(GP * AAS); GP = (int)(GP * RateMgr.GetRate(eRateType.Experience_Rate)); GP *= p.Key.BuffInventory.GPMultiple(); if (game.RoomType != eRoomType.PAIRUP && (disLevel <= 0 || disLevel >= 20)) { GP = 1; } if (AAS < 10E-6) { GP = 0; } else { if (GP < 1) { GP = 1; } } p.Key.SetGP(GP); Dictionary <int, int> requestItems = p.Key.QuestInventory.GetRequestItems(); List <MapGoodsInfo> questItems = Managers.MapMgr.GetQuestGoodsAll(data.MapIndex); foreach (MapGoodsInfo questID in questItems) { if (requestItems.ContainsKey(questID.GoodsID) && requestItems[questID.GoodsID] > 0) { int total = random.Next(questID.Value + 1); if (p.Key.CurrentTeamIndex != winTeam) { total = total / 2; } else if (total < 1) { total = 1; } if (total < 1) { continue; } int count = requestItems[questID.GoodsID] > total ? total : requestItems[questID.GoodsID]; ItemTemplateInfo temp = Bussiness.Managers.ItemMgr.GetSingleGoods(questID.GoodsID); p.Key.TempInventory.AddItemTemplate(temp, questID, count); requestItems[questID.GoodsID] -= count; } } } //p.Value.IsTakeOut = true; pkg.WriteInt(p.Key.PlayerCharacter.ID); pkg.WriteBoolean(winTeam == p.Key.CurrentTeamIndex); pkg.WriteInt(p.Key.PlayerCharacter.Grade); pkg.WriteInt(p.Key.PlayerCharacter.GP); pkg.WriteInt((int)p.Value.TotalKill); pkg.WriteInt(p.Value.TotalHurt); pkg.WriteInt(GP); pkg.WriteInt((int)p.Value.HitNum); pkg.WriteInt((int)p.Value.BoutNum); pkg.WriteInt(p.Value.Offer); if (data.persons[p.Key.CurrentTeamIndex].TotalKillHealth > 0) { p.Value.IsTakeOut = true; if (p.Key.CurrentGame != null) { p.Key.CurrentGame.IsTakeOut = true; } } pkg.WriteBoolean(p.Value.IsTakeOut); } pkg.WriteInt(riches); //pkg.WriteBoolean(data.killFlag); pkg.WriteInt(data.TotalPerson / 2); data.InsertGameInfo(game, winTeam); GamePlayer[] list = data.Players.Keys.ToArray(); foreach (GamePlayer p in list) { if (data.Players[p].State == TankGameState.LOSE) { data.Players.Remove(p); } else { //data.Players[p].Reset(); //p.PropInventory.Clear(); //if (!killFlag) //{ // if (p.CurrentGame.GameState != eGameState.FREE) // { // p.CurrentGame.ShowArk(p.CurrentGame, p); // } //} } } }
/// <summary> /// Called when the client receives bytes /// </summary> /// <param name="numBytes">The number of bytes received</param> public void ReceiveBytes(int numBytes) { lock (this) { byte[] buffer = m_client.PacketBuf; //End Offset of buffer int bufferSize = m_client.PacketBufSize + numBytes; //log.Debug(Marshal.ToHexDump("Recieve:", buffer, 0, bufferSize)); //Size < minimum if (bufferSize < GSPacketIn.HDR_SIZE) { m_client.PacketBufSize = bufferSize; // undo buffer read return; } //Reset the offset m_client.PacketBufSize = 0; int curOffset = 0; do { //read buffer length int packetLength = 0; int header = 0; if (m_client.Encryted) { //int key = receive_fsm.getState(); int i = receive_fsm.count; //key = (key & (0xff << 16)) >> 16; byte[] tempKey = cloneArrary(m_client.RECEIVE_KEY); while (curOffset + 4 < bufferSize) { byte[] tempBuffer = decryptBytes(buffer, curOffset, 8, tempKey); header = ((byte)(tempBuffer[0]) << 8) + (byte)(tempBuffer[1]); if (header == GSPacketIn.HEADER) { packetLength = ((byte)(tempBuffer[2]) << 8) + (byte)(tempBuffer[3]); break; } else { curOffset++; } } //decryptBytes(buffer, } else { while (curOffset + 4 < bufferSize) { header = (buffer[curOffset] << 8) + buffer[curOffset + 1]; if (header == GSPacketIn.HEADER) { packetLength = (buffer[curOffset + 2] << 8) + buffer[curOffset + 3]; break; } else { curOffset++; } } } if ((packetLength != 0 && packetLength < GSPacketIn.HDR_SIZE) || packetLength > 2048) { log.Error("packetLength:" + packetLength + ",GSPacketIn.HDR_SIZE:" + GSPacketIn.HDR_SIZE + ",offset:" + curOffset + ",bufferSize:" + bufferSize + ",numBytes:" + numBytes); log.ErrorFormat("Err pkg from {0}:", m_client.TcpEndpoint); log.Error(Marshal.ToHexDump("===> error buffer", buffer)); m_client.PacketBufSize = 0; if (m_client.Strict) { m_client.Disconnect(); } return; } int dataLeft = bufferSize - curOffset; if (dataLeft < packetLength || packetLength == 0) { Array.Copy(buffer, curOffset, buffer, 0, dataLeft); m_client.PacketBufSize = dataLeft; break; } GSPacketIn pkg = new GSPacketIn(new byte[2048], 2048); if (m_client.Encryted) { // pkg.CopyFrom(buffer, curOffset, 0, packetLength, receive_fsm.getState()); pkg.CopyFrom3(buffer, curOffset, 0, packetLength, m_client.RECEIVE_KEY); //receive_fsm.UpdateState(); } else { pkg.CopyFrom(buffer, curOffset, 0, packetLength); } pkg.ReadHeader(); log.Debug((Marshal.ToHexDump("Recieve Packet:", pkg.Buffer, 0, packetLength))); try { m_client.OnRecvPacket(pkg); } catch (Exception e) { if (log.IsErrorEnabled) { log.Error("HandlePacket(pak)", e); } } curOffset += packetLength; } while (bufferSize - 1 > curOffset); if (bufferSize - 1 == curOffset) { buffer[0] = buffer[curOffset]; m_client.PacketBufSize = 1; } } }