예제 #1
0
 public int HandlePacket(GameClient client, GSPacketIn packet)
 {
     if (client.Player.CurrentRoom != null && client.Player == client.Player.CurrentRoom.Host && !client.Player.CurrentRoom.IsPlaying)
     {
         //string name = packet.ReadString();
         //string pwd = packet.ReadString();
        
         int mapId = packet.ReadInt();
         if (mapId == 10000) return 0;
         byte rT = packet.ReadByte();
         eRoomType roomType;
         if (rT == 10) roomType = eRoomType.Exploration;
         else 
          roomType = (eRoomType)rT;
         byte timeType = packet.ReadByte();
         byte hardLevel = packet.ReadByte();
         int levelLimits = packet.ReadInt();
         //eRoomType roomType = (eRoomType)packet.ReadByte();
         //eTeamType teamType = (eTeamType)packet.ReadByte();
        
         RoomMgr.UpdateRoomGameType(client.Player.CurrentRoom, packet, roomType, timeType, (eHardLevel)hardLevel, levelLimits, mapId);
         //RoomMgr.StartGame(client.Player.CurrentRoom);
     }
     return 0;
 }
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            byte roomType = packet.ReadByte();
            byte timeType = packet.ReadByte();
            string room = packet.ReadString();
            string pwd = packet.ReadString();
        
            RoomMgr.CreateRoom(client.Player, room, pwd, (eRoomType)roomType, timeType);

            return 1;
        }
예제 #3
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);
             }
         }
     }
 }
예제 #4
0
        public void HandleCommand(BaseGame game, Player player, GSPacketIn packet)
        {
            if (game.GameState != eGameState.Playing || player.GetSealState())
                return;

            int type = packet.ReadByte();
            int place = packet.ReadInt();
            int templateID = packet.ReadInt();

            ItemTemplateInfo template = ItemMgr.FindItemTemplate(templateID);
            if (player.CanUseItem(template))
            {
                //if (player.CurrentBall.ID == 3 && template.TemplateID == 10003)
                //    return;

                //if (player.PlayerDetail.UsePropItem(game, type, place, templateID, player.IsLiving))
                //{
                //    if (player.UseItem(template) == false)
                //    {
                //        BaseGame.log.Error("Using prop error");
                //    }
                //}
                if (player.PlayerDetail.UsePropItem(game, type, place, templateID, player.IsLiving))
                {
                    if (player.UseItem(template) == false)
                    {
                        BaseGame.log.Error("Using prop error");
                    }
                }
                else
                {
                    player.UseItem(template);
                }
            }
        }
예제 #5
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {

           
            //TODO: 储存物品
            if (client.Player.PlayerCharacter.ConsortiaID == 0)
                return 1;

            int bagType = packet.ReadByte();
            int bagPlace = packet.ReadInt();
            int storePlace = packet.ReadInt();

            if (bagType == 0 && bagPlace < 31)
                return 1;

            ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID);
            if (info != null)
            {
                PlayerInventory storeBag = client.Player.StoreBag;
                PlayerInventory toBag = client.Player.GetInventory((eBageType)bagType);
               // client.Player.StoreBag.MoveToStore(storeBag, storePlace, bagPlace, toBag, info.StoreLevel * 10);
            }

            return 0;
        }
예제 #6
0
 public void HandleCommand(BaseGame game, Player player, GSPacketIn packet)
 {
     if (player.IsAttacking)
     {
         player.Skip(packet.ReadByte());
     }
 }
예제 #7
0
 public int HandlePacket(GameClient client, GSPacketIn packet)
 {
     int numReadByte = packet.ReadByte();
     int numReadInt = packet.ReadInt();
     PlayerInventory caddyBag = client.Player.CaddyBag;
     PlayerInventory propBag = client.Player.PropBag;
     PlayerInventory storeBag = client.Player.StoreBag;
     PlayerInventory mainBag = client.Player.MainBag;
     for (int i = 0; i < caddyBag.Capalility; i++)
     {
         SqlDataProvider.Data.ItemInfo itemAt = caddyBag.GetItemAt(i);
         if (itemAt != null)
         {
             if (((itemAt.Template.CategoryID == 10) || (itemAt.Template.CategoryID == 11)) || (itemAt.Template.CategoryID == 12))
             {
                 caddyBag.MoveToStore(caddyBag, i, propBag.FindFirstEmptySlot(1), propBag, 999);
             }
             else if ((itemAt.Template.CategoryID == 7) && (mainBag.GetItemAt(6) == null))
             {
                 caddyBag.MoveToStore(caddyBag, i, 6, mainBag, 999);
             }
             else
             {
                 caddyBag.MoveToStore(caddyBag, i, mainBag.FindFirstEmptySlot(31), mainBag, 999);
             }
         }
     }
     client.Lottery = -1;
     return 1;
 }
        public void HandleCommand(BaseGame game, Player player, GSPacketIn packet)
        {
            if (player.HasPaymentTakeCard == false)
            {
                if (player.PlayerDetail.RemoveMoney(100) > 0&&player.PlayerDetail.RemoveGiftToken(429)>0)
                {
                    int index = packet.ReadByte();
                    player.CanTakeOut += 1;
                    player.FinishTakeCard = false;
                    player.HasPaymentTakeCard = true;
                    player.PlayerDetail.LogAddMoney(AddMoneyType.Game, AddMoneyType.Game_PaymentTakeCard, player.PlayerDetail.PlayerCharacter.ID, 100, player.PlayerDetail.PlayerCharacter.Money);

                    if (index < 0 || index > game.Cards.Length)
                    {
                        game.TakeCard(player);
                    }
                    else
                    {
                        game.TakeCard(player, index);
                    }
                }
                else
                {
                    player.PlayerDetail.SendInsufficientMoney((int)eBattleRemoveMoneyType.PaymentTakeCard);
                }
            }
        }
예제 #9
0
 //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;
 }
예제 #10
0
        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;
        }
예제 #11
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;
 }
예제 #12
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 int HandlePacket(GameClient client, GSPacketIn packet)
 {
     if (client.Player.CurrentRoom != null && client.Player == client.Player.CurrentRoom.Host)
     {
         RoomMgr.UpdateRoomPos(client.Player.CurrentRoom, packet.ReadByte(), packet.ReadBoolean());
     }
     return 0;
 }
예제 #14
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;
        }
예제 #15
0
 public int HandlePacket(GameClient client, GSPacketIn packet)
 {
     if (client.Player.CurrentRoom != null && client.Player == client.Player.CurrentRoom.Host)
     {
         RoomMgr.KickPlayer(client.Player.CurrentRoom, packet.ReadByte());
     }
     return 0;
 }
예제 #16
0
 public int HandlePacket(GameClient client, GSPacketIn packet)
 {
     if (client.Player == client.Player.CurrentGame.Player)
     {
         byte index = packet.ReadByte();
         client.Player.CurrentGame.OpenState[index] = true;
         client.Player.CurrentGame.SendToAll(packet);
         client.Player.CurrentGame.SendRoomInfo();
     }
     return 0;
 }
예제 #17
0
        public void HandleCommand(BaseGame game, Player player, GSPacketIn packet)
        {
            if (player.IsAttacking)
            {
                game.SendToAll(packet);

                bool tag = packet.ReadBoolean();
                byte speedTime = packet.ReadByte();

                player.PrepareShoot(speedTime);
            }
        }
예제 #18
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            //已经开始游戏则不处理
            if (client.Player.CurrentRoom != null && client.Player.CurrentRoom.IsPlaying)
                return 0;
            int bagType = packet.ReadByte();
            int index = packet.ReadInt();
            PlayerInventory bag = client.Player.GetInventory((eBageType)bagType);
            ItemInfo item = bag.GetItemAt(index);

            if (item != null && !item.IsValidItem())
            {
                if (bagType == 0 && index < 11)
                {
                    int place = bag.FindFirstEmptySlot(31);
                    if (place != -1)
                    {
                        bag.RemoveItem(item);
                        //bag.MoveItem(item.Place, place);
                    }
                    else
                    {
                        using (PlayerBussiness pb = new PlayerBussiness())
                        {
                            MailInfo mail = new MailInfo();
                            mail.Annex1 = item.ItemID.ToString();
                            mail.Content = LanguageMgr.GetTranslation("ItemOverdueHandler.Content");
                            mail.Gold = 0;
                            mail.IsExist = true;
                            mail.Money = 0;
                            mail.Receiver = client.Player.PlayerCharacter.NickName;
                            mail.ReceiverID = item.UserID;
                            mail.Sender = client.Player.PlayerCharacter.NickName;
                            mail.SenderID = item.UserID;
                            mail.Title = LanguageMgr.GetTranslation("ItemOverdueHandler.Title");
                            mail.Type = (int)eMailType.ItemOverdue;
                            if (pb.SendMail(mail))
                            {
                                //item.UserID = 0;
                                bag.RemoveItem(item);
                            }
                        }
                    }
                }
                else
                {
                    bag.UpdateItem(item);
                }
            }


            return 0;
        }
예제 #19
0
        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 int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (client.Player.PlayerCharacter.ConsortiaID == 0)
                return 0;

            int dutyID = packet.ReadInt();
            int updateType = packet.ReadByte();
            //int level = packet.ReadInt();
            bool result = false;
            string msg = "ConsortiaDutyUpdateHandler.Failed";

            using (ConsortiaBussiness db = new ConsortiaBussiness())
            {
                ConsortiaDutyInfo info = new ConsortiaDutyInfo();
                info.ConsortiaID = client.Player.PlayerCharacter.ConsortiaID;
                info.DutyID = dutyID;
                info.IsExist = true;
                info.DutyName = "";
                switch (updateType)
                {
                    case 1:
                        return 1;
                    case 2:
                        info.DutyName = packet.ReadString();
                        if (string.IsNullOrEmpty(info.DutyName) || System.Text.Encoding.Default.GetByteCount(info.DutyName) > 10)
                        {
                            client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ConsortiaDutyUpdateHandler.Long"));
                            return 1;
                        }
                        info.Right = packet.ReadInt();
                        break;
                    case 3:
                        break;
                    case 4:
                        break;
                }

                if (db.UpdateConsortiaDuty(info, client.Player.PlayerCharacter.ID, updateType, ref msg))
                {
                    dutyID = info.DutyID;
                    msg = "ConsortiaDutyUpdateHandler.Success";
                    result = true;
                    GameServer.Instance.LoginServer.SendConsortiaDuty(info, updateType, client.Player.PlayerCharacter.ConsortiaID);
                }
            }
            packet.WriteBoolean(result);
            packet.WriteInt(dutyID);
            packet.WriteString(LanguageMgr.GetTranslation(msg));
            client.Out.SendTCP(packet);

            return 0;
        }
예제 #21
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (client.Player.CurrentGame != null && client.Player == client.Player.CurrentGame.Player)
            {

                    byte index = packet.ReadByte();
                    client.Player.CurrentGame.OpenState[index] = false;
                    client.Player.CurrentGame.KickPlayerIndex(client.Player, index);
                    client.Player.CurrentGame.SendToAll(packet);
                
            }
            return 0;
        }
예제 #22
0
        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;
                }
            }
        }
예제 #23
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;
        }
예제 #24
0
        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();
                //_loc_7.writeShort(param6); _player.map.currentTurn
                short map_currentTurn = packet.ReadShort();
                game.SendPlayerMove(player, type, tx, ty, dir, isLiving);
                switch (type)
                {
                    case 0:
                    case 1:

                        player.SetXY(tx, ty);
                        player.StartMoving();
                        if (player.Y - ty > 1 || player.IsLiving != isLiving)
                        {
                            //trminhpc type=3
                            game.SendPlayerMove(player, 3, player.X, player.Y, 0);//, player.IsLiving, null);
                        }
                        //else
                        //{
                        //    game.SendPlayerMove(player, type, tx, ty, dir, isLiving, null);
                        //}
                        break;

                }
            }
        }
예제 #25
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            byte type = packet.ReadByte();
            int x = packet.ReadInt();
            int y = packet.ReadInt();
            player.CurrentGame.Data.Players[player].SetXY(packet.ReadInt(), packet.ReadInt());

            if (player.CurrentGame.Data.CurrentIndex == player || player.CurrentGame.Data.Players[player].State == TankGameState.DEAD)
            {
                player.CurrentGame.ReturnPacket(player, packet);
                return true;
            }
            return false;
        }
예제 #26
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (client.Player.MainWeapon == null)
            {
                client.Player.SendMessage(LanguageMgr.GetTranslation("Game.Server.SceneGames.NoEquip"));
                return 0;
            }
            if (client.Player.CurrentRoom != null)
            {
                RoomMgr.UpdatePlayerState(client.Player, packet.ReadByte());
            }

            return 0;
        }
예제 #27
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            if (player.CurrentGame.Data.CurrentIndex == player && player.CurrentGame.Data.CurrentFire == null)
            {
                player.CurrentGame.Data.SpendTime(packet.ReadByte());

                player.CurrentGame.Data.TotalDelay += 100;
                player.CurrentGame.Data.Players[player].SetDander(40);

                player.CurrentGame.ReturnPacket(player, packet);
                process.SendPlayFinish(player.CurrentGame, player);
                return true;
            }
            return false;
        }
예제 #28
0
 public int HandlePacket(GameClient client, GSPacketIn packet)
 {
     int num = packet.ReadByte();
     int num2 = packet.ReadInt();
     PlayerInventory caddyBag = client.Player.CaddyBag;
     PlayerInventory propBag = client.Player.PropBag;
     for (int i = 0; i < caddyBag.Capalility; i++)
     {
         if (caddyBag.GetItemAt(i) != null)
         {
             caddyBag.MoveToStore(caddyBag, i, propBag.FindFirstEmptySlot(0), propBag, 999);
         }
     }
     return 1;
 }
예제 #29
0
 public void HandleCommand(BaseGame game, Player player, GSPacketIn packet)
 {
     //if (player.FinishTakeCard == false && player.CanTakeOut > 0)
     //{
         int index = packet.ReadByte();
         if (index < 0 || index > game.Cards.Length)
         {
             game.TakeCard(player);
         }
         else
         {
             game.TakeCard(player,index);
         }
     //}
 }
예제 #30
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);
         }
     }
 }
예제 #31
0
        public void HandleCommand(BaseGame game, Player player, GSPacketIn packet)
        {
            if (player.IsAttacking)
            {
                packet.Parameter1 = player.Id;
                game.SendToAll(packet);

                //同客户端同步LifeTime
                game.SendSyncLifeTime();
                bool tag = packet.ReadBoolean();

                //开炮所需时间
                byte speedTime = packet.ReadByte();
                player.PrepareShoot(speedTime);
            }
        }