Example #1
0
        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);
        }
Example #2
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //if (player.CurrentGame.Data.CurrentFire == player && player.CurrentGame.Data.ReduceFireBombs)
            //{
            //    player.CurrentGame.ReturnPacket(player, packet);

            //    int id = packet.ReadInt();

            //    player.CurrentGame.Data.BlastID = id;
            //    player.CurrentGame.Data.BlastX = packet.ReadInt();
            //    player.CurrentGame.Data.BlastY = packet.ReadInt();
            //    FireBallInfo ballInfo = player.CurrentGame.Data.FireBall[id];
            //    ballInfo.EndTime = packet.ReadInt();

            //    if (player.CurrentGame.Data.BlastX > 0)
            //    {
            //        int space = ballInfo.GetSpace(player.CurrentGame.Data.BlastX, player.CurrentGame.Data.BlastY, ballInfo.EndTime);
            //        if (space > 20)
            //        {
            //            GameServer.log.Error("子弹爆炸错误,距离为:" + space.ToString());
            //            player.Client.Disconnect();
            //            return false;
            //        }

            //    }

            //    process.TankFire(player.CurrentGame, player, player.CurrentGame.Data.BlastX, player.CurrentGame.Data.BlastY, ballInfo);
            //}
            return true;
        }
Example #3
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //if (player.CurrentGame.Data.CurrentFire == player && player.CurrentGame.Data.ReduceFireBombs)
            //{
            //    player.CurrentGame.ReturnPacket(player, packet);

            //    int id = packet.ReadInt();

            //    player.CurrentGame.Data.BlastID = id;
            //    player.CurrentGame.Data.BlastX = packet.ReadInt();
            //    player.CurrentGame.Data.BlastY = packet.ReadInt();
            //    FireBallInfo ballInfo = player.CurrentGame.Data.FireBall[id];
            //    ballInfo.EndTime = packet.ReadInt();

            //    if (player.CurrentGame.Data.BlastX > 0)
            //    {
            //        int space = ballInfo.GetSpace(player.CurrentGame.Data.BlastX, player.CurrentGame.Data.BlastY, ballInfo.EndTime);
            //        if (space > 20)
            //        {
            //            GameServer.log.Error("子弹爆炸错误,距离为:" + space.ToString());
            //            player.Client.Disconnect();
            //            return false;
            //        }

            //    }

            //    process.TankFire(player.CurrentGame, player, player.CurrentGame.Data.BlastX, player.CurrentGame.Data.BlastY, ballInfo);
            //}
            return(true);
        }
Example #4
0
        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;
        }
Example #5
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //if (player.CurrentGame.Data.CurrentFire != null && player.CurrentGame.Data.CurrentIndex != player && !(player.CurrentGame.Data.Players[player].State == TankGameState.DEAD 
            //    && player.CurrentTeamIndex == player.CurrentGame.Data.CurrentIndex.CurrentTeamIndex) && player.CanFly == false)
            //    return false;

            if (player.CurrentGame.Data.CurrentFire != null )
                return false;
            if (player.CurrentGame.Data.CurrentIndex != player|| !player.CanFly)
                return false;

            player.CanFly = false;
            GSPacketIn pkg = player.Out.SendPropUseRespone(player, -2, -2, CARRY_TEMPLATE_ID);
            player.CurrentGame.SendToPlayerExceptSelf(pkg, player);

            //构造一个CARRY Item
            //ItemInfo CarryItem;
            //using (ProduceBussiness db = new ProduceBussiness())
            //{
            //    ItemTemplateInfo[] CarryTemplate = db.GetSingleCategory(10);

            //    foreach (ItemTemplateInfo tmp in CarryTemplate)
            //    {
            //        if (tmp.TemplateID == CARRY_TEMPLATE_ID)
            //        {
            //            CarryItem = ItemInfo.CreateFromTemplate(tmp, 1);

            //            if (CarryItem == null)
            //            {
            //                return false;
            //            }

            //            //if (player.CurrentGame.Data.CurrentIndex == player)
            //            //    player.CurrentGame.Data.TotalDelay += CarryItem.Template.Property5;

            //            ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(CarryItem.Template.Property1);
            //            spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, CarryItem);



            //            return true;
            //        }
            //    }
            //}

            ItemTemplateInfo templateInfo = Managers.PropItemMgr.FindAllProp(CARRY_TEMPLATE_ID);

            if (templateInfo != null)
            {
                ItemInfo CarryItem = ItemInfo.CreateFromTemplate(templateInfo, 1, (int)ItemAddType.TempProp);
                ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(CarryItem.Template.Property1);
                spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, CarryItem);
                return true;
            }

            return false;

        }
Example #6
0
 public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
 {
     //if (player.CurrentGame.Data.Players[player].State == TankGameState.FRIST)
     if (player.CurrentGame.GameState == eGameState.LOAD)
     {
         player.CurrentGame.ReturnPacket(player, packet);
         return(true);
     }
     return(false);
 }
Example #7
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD || player.CurrentGame.GameState != eGameState.PLAY)
                return false;

            player.CurrentGame.ReturnPacket(player, packet);
            player.CurrentGame.Data.Players[player].Dead();

            return true;
        }
Example #8
0
 public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
 {
     //if (player.CurrentGame.Data.Players[player].State == TankGameState.FRIST)
     if (player.CurrentGame.GameState == eGameState.LOAD)
     {
         player.CurrentGame.ReturnPacket(player, packet);
         return true;
     }
     return false;
 }
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //TankData data = player.CurrentGame.Data;
            //if (data.AddMultiple < 1 && data.CurrentFire == player)
            //{
            //    int id = packet.ReadInt();
            //    FireBallInfo fireBall = data.FireBall[id];
            //    fireBall.SetBallInfo(packet.ReadInt(), packet.ReadInt(), packet.ReadInt(), packet.ReadInt());
            //}

            return false;
        }
Example #10
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //TankData data = player.CurrentGame.Data;
            //if (data.AddMultiple < 1 && data.CurrentFire == player)
            //{
            //    int id = packet.ReadInt();
            //    FireBallInfo fireBall = data.FireBall[id];
            //    fireBall.SetBallInfo(packet.ReadInt(), packet.ReadInt(), packet.ReadInt(), packet.ReadInt());
            //}

            return(false);
        }
Example #11
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD || player.CurrentGame.GameState != eGameState.PLAY)
            {
                return(false);
            }

            player.CurrentGame.ReturnPacket(player, packet);
            player.CurrentGame.Data.Players[player].Dead();

            return(true);
        }
Example #12
0
 public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
 {
     if (player.CurrentGame.Data.CurrentIndex == player)
     {
         if (player.CurrentGame.Data.Players[player].Dander >= 200)
         {
             //player.CurrentGame.ReturnPacket(player, packet);
             player.CurrentGame.Data.Players[player].SetDander(-1);
         }
         return(true);
     }
     return(false);
 }
Example #13
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;
        }
Example #14
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD || player.CurrentGame.GameState != eGameState.PLAY)
            //    return false;

            //GSPacketIn pkg = new GSPacketIn((byte)ePackageType.GAME_CMD, player.Client.Player.PlayerCharacter.ID);
            //pkg.WriteByte((byte)TankCmdType.SUICIDE);
            //pkg.WriteInt(player.Client.Player.PlayerCharacter.ID);
            //player.CurrentGame.SendToAll(pkg);

            //player.CurrentGame.Data.Players[player].Dead();

            return true;
        }
Example #15
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            if (player.CurrentGame.Data.CurrentIndex == player)
            {
                if (player.CurrentGame.Data.Players[player].Dander >= 200)
                {
                    //player.CurrentGame.ReturnPacket(player, packet);
                    player.CurrentGame.Data.Players[player].SetDander( -1);

                }
                return true;
            }
            return false;
        }
Example #16
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD || player.CurrentGame.GameState != eGameState.PLAY)
            //    return false;

            //GSPacketIn pkg = new GSPacketIn((byte)ePackageType.GAME_CMD, player.Client.Player.PlayerCharacter.ID);
            //pkg.WriteByte((byte)TankCmdType.SUICIDE);
            //pkg.WriteInt(player.Client.Player.PlayerCharacter.ID);
            //player.CurrentGame.SendToAll(pkg);

            //player.CurrentGame.Data.Players[player].Dead();


            return(true);
        }
Example #17
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);
        }
Example #18
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);
        }
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //int turnNum = packet.ReadInt();
            //if (turnNum != player.CurrentGame.Data.TurnNum)
            //    return false;

            //player.CurrentGame.Data.Players[player].TurnNum = turnNum;
            //int Count = player.CurrentGame.Data.GetPlayFinishCount();
            //if (Count == player.CurrentGame.Data.Count)
            //{
            //    process.SendNextFire(player.CurrentGame, player.CurrentGame.Data.CurrentIndex);
            //}

            return true;
        }
Example #20
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //int turnNum = packet.ReadInt();
            //if (turnNum != player.CurrentGame.Data.TurnNum)
            //    return false;

            //player.CurrentGame.Data.Players[player].TurnNum = turnNum;
            //int Count = player.CurrentGame.Data.GetPlayFinishCount();
            //if (Count == player.CurrentGame.Data.Count)
            //{
            //    process.SendNextFire(player.CurrentGame, player.CurrentGame.Data.CurrentIndex);
            //}

            return(true);
        }
Example #21
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;
        }
Example #22
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);
        }
Example #23
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;
        }
Example #24
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //if (player.CurrentGame.Data.CurrentIndex != player && player.CurrentGame.Data.Players[player].State != TankGameState.DEAD)
            //    return false;

            player.CurrentGame.ReturnPacket(player, packet);
            MapGoodsInfo goods = null;

            if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD)
            {
                int arkID = packet.ReadInt();
                goods = player.CurrentGame.Data.GetFallItemsID(arkID, player);
            }
            else
            {
                int arkID  = packet.ReadInt();
                int bombID = packet.ReadInt();
                int time   = packet.ReadInt();
                goods = player.CurrentGame.Data.GetFallItemsID(arkID, player.PlayerCharacter.ID);
            }
            if (goods != null)
            {
                ItemTemplateInfo temp = Bussiness.Managers.ItemMgr.GetSingleGoods(goods.GoodsID);
                if (temp != null)
                {
                    //如果是道具
                    if (temp.CategoryID == 10)
                    {
                        if (player.PropInventory.AddItemTemplate(temp) == null)
                        {
                            player.Out.SendMessage(Game.Server.Packets.eMessageType.ChatERROR, LanguageMgr.GetTranslation("Game.Server.SceneGames.TankHandle.PropFull"));
                        }
                    }
                    else
                    {
                        player.TempInventory.AddItemTemplate(temp, goods);
                    }
                }
            }

            return(true);
        }
Example #25
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //if (player.CurrentGame.Data.CurrentIndex != player && player.CurrentGame.Data.Players[player].State != TankGameState.DEAD)
            //    return false;

            player.CurrentGame.ReturnPacket(player, packet);
            MapGoodsInfo goods = null;
            if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD)
            {
                int arkID = packet.ReadInt();
                goods = player.CurrentGame.Data.GetFallItemsID(arkID, player);
            }
            else
            {
                int arkID = packet.ReadInt();
                int bombID = packet.ReadInt();
                int time = packet.ReadInt();
                goods = player.CurrentGame.Data.GetFallItemsID(arkID, player.PlayerCharacter.ID);

            }
            if (goods != null)
            {
                ItemTemplateInfo temp = Bussiness.Managers.ItemMgr.GetSingleGoods(goods.GoodsID);
                if (temp != null)
                {
                    //如果是道具
                    if (temp.CategoryID == 10)
                    {
                        if (player.PropInventory.AddItemTemplate(temp) == null)
                        {
                            player.Out.SendMessage(Game.Server.Packets.eMessageType.ChatERROR, LanguageMgr.GetTranslation("Game.Server.SceneGames.TankHandle.PropFull"));
                        }
                    }
                    else
                    {
                        player.TempInventory.AddItemTemplate(temp, goods);
                    }
                }
            }

            return true;
        }
Example #26
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD)
                return false;
            //{
            bool tag = packet.ReadBoolean();
            if (player.CurrentGame.Data.CurrentFire == null && tag && player.CurrentGame.Data.CurrentIndex == player)
            {
                player.CurrentGame.Data.SpendTime(packet.ReadByte());
                player.CurrentGame.Data.CurrentFire = player;
            }

            if (!tag && player.CurrentGame.Data.CurrentIndex == player)
            {
                process.SendPlayFinish(player.CurrentGame, player);
            }

            player.CurrentGame.ReturnPacket(player, packet);
            //}
            return false;
        }
Example #27
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD)
            {
                return(false);
            }
            //{
            bool tag = packet.ReadBoolean();

            if (player.CurrentGame.Data.CurrentFire == null && tag && player.CurrentGame.Data.CurrentIndex == player)
            {
                player.CurrentGame.Data.SpendTime(packet.ReadByte());
                player.CurrentGame.Data.CurrentFire = player;
            }

            if (!tag && player.CurrentGame.Data.CurrentIndex == player)
            {
                process.SendPlayFinish(player.CurrentGame, player);
            }

            player.CurrentGame.ReturnPacket(player, packet);
            //}
            return(false);
        }
Example #28
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            if (player.CurrentGame.Data.CurrentIndex == player && player.CurrentGame.Data.Players[player].State != TankGameState.DEAD)
            {
                if (player.CurrentGame.Data.CurrentFire == null)
                    player.CurrentGame.Data.CurrentFire = player;

                int x = packet.ReadInt();
                int y = packet.ReadInt();

                if (Math.Abs(player.CurrentGame.Data.Players[player].X - x) > 100)
                {
                    //player.Out.SendMessage(eMessageType.ALERT, LanguageMgr.GetTranslation("Game.Server.SceneGames.TankHandle"));
                    StatMgr.LogErrorPlayer(player.PlayerCharacter.ID, player.PlayerCharacter.UserName, player.PlayerCharacter.NickName,
     ItemRemoveType.FireError, player.CurrentGame.Data.Players[player].X.ToString() + " to " + x.ToString() + ",MapID:" + player.CurrentGame.Data.MapIndex);
                    player.Client.Disconnect();
                    return false; ;
                }

                int force = packet.ReadInt();
                int angle = packet.ReadInt();

                TankData data = player.CurrentGame.Data;
                Tile shape = Managers.BallMgr.FindTile(data.CurrentBall.ID);
                GSPacketIn pkg = new GSPacketIn((byte)ePackageType.GAME_CMD, player.PlayerCharacter.ID);
                pkg.WriteByte((byte)TankCmdType.FIRE);
                pkg.WriteInt(data.AddBall);
                for (int i = 0; i < data.AddBall; i++)
                {
                    if (player.CurrentGame.Data.ReduceFireBombs)
                    {
                        if (data.IsFastSpeed())
                        {
                            StatMgr.LogErrorPlayer(player.PlayerCharacter.ID, player.PlayerCharacter.UserName, player.PlayerCharacter.NickName,
                                ItemRemoveType.FastError, "MapID:" + player.CurrentGame.Data.MapIndex);
                            player.Client.Disconnect();
                            return false; ;
                        }

                        data.FireLogin = true;
                        double reforce = 1;
                        int reangle = 0;
                        if (i == 1)
                        {
                            reforce = 0.9;
                            reangle = -5;
                        }
                        else if (i == 2)
                        {
                            reforce = 1.1;
                            reangle = 5;
                        }

                        int vx = (int)(force * reforce * Math.Cos((double)(angle + reangle) / 180 * Math.PI));
                        int vy = (int)(force * reforce * Math.Sin((double)(angle + reangle) / 180 * Math.PI));

                        data.PhyID++;

                        BombObject bomb = new BombObject(data.PhyID, BallMgr.GetBallType(data.CurrentBall.ID), data.Players[player], shape, data.CurrentBall.Radii, data.AddMultiple < 1,
                            data.CurrentBall.Mass, data.CurrentBall.Weight, data.CurrentBall.Wind, data.CurrentBall.DragIndex, data.BallPower);

                        bomb.SetXY(x, y);
                        bomb.setSpeedXY(vx, vy);
                        data.CurrentMap.AddPhysical(bomb);
                        pkg.WriteBoolean(bomb.IsHole);
                        pkg.WriteInt(bomb.Id);
                        pkg.WriteInt(x);
                        pkg.WriteInt(y);
                        pkg.WriteInt(vx);
                        pkg.WriteInt(vy);
                        pkg.WriteInt(bomb.Actions.Count);
                        foreach (BombAction action in bomb.Actions)
                        {
                            pkg.WriteInt(action.TimeInt);
                            pkg.WriteInt(action.Type);
                            pkg.WriteInt(action.Param1);
                            pkg.WriteInt(action.Param2);
                            pkg.WriteInt(action.Param3);
                            pkg.WriteInt(action.Param4);
                        }

                        data.SetRunTime((int)bomb.RunTime);
                    }
                }

                player.CurrentGame.SendToAll(pkg);

                data.FireLogin = false;
                if (data.Bombs || data.Players[player].State == TankGameState.DEAD)
                {
                    data.TotalDelay += data.CurrentBall.Delay;
                    process.SendArk(player.CurrentGame, player);
                    player.PropInventory.AddItemTemplate(PropItemMgr.GetRandomFightProp(data.MapIndex));
                    data.Players[player].SetDander(20);

                    process.SendPlayFinish(player.CurrentGame, player);
                    //GSPacketIn pkgMsg = new GSPacketIn((byte)ePackageType.GAME_CMD);
                    //pkgMsg.WriteByte((byte)TankCmdType.PLAYFINISH);
                    //pkgMsg.WriteInt(player.CurrentGame.Data.TurnNum);
                    //player.CurrentGame.SendToAll(pkgMsg);

                }
                return true;

            }
            return false;
        }
Example #29
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //if (player.CurrentGame.Data.CurrentFire != null && player.CurrentGame.Data.CurrentIndex != player && !(player.CurrentGame.Data.Players[player].State == TankGameState.DEAD
            //    && player.CurrentTeamIndex == player.CurrentGame.Data.CurrentIndex.CurrentTeamIndex) && player.CanFly == false)
            //    return false;

            if (player.CurrentGame.Data.CurrentFire != null)
            {
                return(false);
            }
            if (player.CurrentGame.Data.CurrentIndex != player || !player.CanFly)
            {
                return(false);
            }

            player.CanFly = false;
            GSPacketIn pkg = player.Out.SendPropUseRespone(player, -2, -2, CARRY_TEMPLATE_ID);

            player.CurrentGame.SendToPlayerExceptSelf(pkg, player);

            //构造一个CARRY Item
            //ItemInfo CarryItem;
            //using (ProduceBussiness db = new ProduceBussiness())
            //{
            //    ItemTemplateInfo[] CarryTemplate = db.GetSingleCategory(10);

            //    foreach (ItemTemplateInfo tmp in CarryTemplate)
            //    {
            //        if (tmp.TemplateID == CARRY_TEMPLATE_ID)
            //        {
            //            CarryItem = ItemInfo.CreateFromTemplate(tmp, 1);

            //            if (CarryItem == null)
            //            {
            //                return false;
            //            }

            //            //if (player.CurrentGame.Data.CurrentIndex == player)
            //            //    player.CurrentGame.Data.TotalDelay += CarryItem.Template.Property5;

            //            ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(CarryItem.Template.Property1);
            //            spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, CarryItem);



            //            return true;
            //        }
            //    }
            //}

            ItemTemplateInfo templateInfo = Managers.PropItemMgr.FindAllProp(CARRY_TEMPLATE_ID);

            if (templateInfo != null)
            {
                ItemInfo      CarryItem    = ItemInfo.CreateFromTemplate(templateInfo, 1, (int)ItemAddType.TempProp);
                ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(CarryItem.Template.Property1);
                spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, CarryItem);
                return(true);
            }

            return(false);
        }
Example #30
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //if (player.CurrentGame.Data.CurrentFire != null)
            //    return false;
            //if (player.CurrentGame.Data.CurrentIndex != player && !(player.CurrentGame.Data.Players[player].State == TankGameState.DEAD && player.CurrentTeamIndex == player.CurrentGame.Data.CurrentIndex.CurrentTeamIndex))
            //    return false;

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

            ////背包中的道具
            //if (type == 1)
            //{
            //    if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD)
            //        return false;

            //    ItemInfo item = player.PropBag.GetItemAt(place);
            //    bool isInfinity = false;

            //    if (item == null && place != -1)
            //        return false;

            //    //如果是全能道具
            //    if (place == -1 || item.TemplateID == 10200)
            //    {
            //        if (!player.BuffInventory.PropBag() && (item == null || !item.IsValidItem() || item.TemplateID != 10200))
            //        {
            //            return false;
            //        }

            //        isInfinity = true;
            //        if (item != null)
            //        {
            //            player.PropBag.UseItem(item);
            //            player.PropBag.RefreshItem(item);
            //        }

            //        //ItemTemplateInfo template = Managers.PropItemMgr.FindAllProp(templateID);
            //        ItemTemplateInfo template = Managers.PropItemMgr.FindPropBag(templateID);
            //        item = ItemInfo.CreateFromTemplate(template, 1, (int)ItemAddType.FullProp);
            //    }

            //    if (item != null && item.Count > 0 && item.IsValidItem() && player.CurrentGame.Data.Players[player].ReduceEnergy(item.Template.Property4))
            //    {
            //        player.CurrentGame.ReturnPacket(player, packet);

            //        if (player.CurrentGame.Data.CurrentIndex == player)
            //            player.CurrentGame.Data.TotalDelay += item.Template.Property5;

            //        ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(item.Template.Property1);
            //        spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, item);

            //        if (!isInfinity)
            //        {
            //            player.PropBag.UseItem(item);
            //            item.Count--;
            //            if (item.Count <= 0)
            //            {
            //                player.RemoveAllItem(item, false, Game.Server.Statics.ItemRemoveType.Use,1);
            //            }
            //            else
            //            {
            //                Statics.StatMgr.LogItemRemove(item.TemplateID, Game.Server.Statics.ItemRemoveType.Use, 1);
            //                player.PropBag.RefreshItem(item);
            //            }
            //        }
            //        player.QuestInventory.CheckUseItem(item.TemplateID);

            //        if (item.Template.Property6 == 1 && player == player.CurrentGame.Data.CurrentIndex)
            //            process.SendPlayFinish(player.CurrentGame, player.CurrentGame.Data.CurrentIndex);

            //        if (!isInfinity)
            //            player.CurrentGame.Data.CostInfo(item);
            //        return true;

            //    }

            //}
            ////道具栏的道具
            //else
            //{
            //    ItemInfo item = player.PropInventory.GetItemAt(place);
            //    if (item != null && player.CurrentGame.Data.Players[player].ReduceEnergy(item.Template.Property4))
            //    {
            //        player.CurrentGame.ReturnPacket(player, packet);

            //        if (player.CurrentGame.Data.CurrentIndex == player)
            //            player.CurrentGame.Data.TotalDelay += item.Template.Property5;

            //        ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(item.Template.Property1);
            //        spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, item);

            //        player.PropInventory.RemoveItemAt(place);
            //        player.QuestInventory.CheckUseItem(item.TemplateID);

            //        if (item.Template.Property6 == 1 && player == player.CurrentGame.Data.CurrentIndex)
            //            process.SendPlayFinish(player.CurrentGame, player.CurrentGame.Data.CurrentIndex);
            //        return true;
            //    }
            //}
            return false;
        }
Example #31
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            //if (player.CurrentGame.Data.CurrentFire != null)
            //    return false;
            //if (player.CurrentGame.Data.CurrentIndex != player && !(player.CurrentGame.Data.Players[player].State == TankGameState.DEAD && player.CurrentTeamIndex == player.CurrentGame.Data.CurrentIndex.CurrentTeamIndex))
            //    return false;

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

            ////背包中的道具
            //if (type == 1)
            //{
            //    if (player.CurrentGame.Data.Players[player].State == TankGameState.DEAD)
            //        return false;

            //    ItemInfo item = player.PropBag.GetItemAt(place);
            //    bool isInfinity = false;

            //    if (item == null && place != -1)
            //        return false;

            //    //如果是全能道具
            //    if (place == -1 || item.TemplateID == 10200)
            //    {
            //        if (!player.BuffInventory.PropBag() && (item == null || !item.IsValidItem() || item.TemplateID != 10200))
            //        {
            //            return false;
            //        }

            //        isInfinity = true;
            //        if (item != null)
            //        {
            //            player.PropBag.UseItem(item);
            //            player.PropBag.RefreshItem(item);
            //        }

            //        //ItemTemplateInfo template = Managers.PropItemMgr.FindAllProp(templateID);
            //        ItemTemplateInfo template = Managers.PropItemMgr.FindPropBag(templateID);
            //        item = ItemInfo.CreateFromTemplate(template, 1, (int)ItemAddType.FullProp);
            //    }

            //    if (item != null && item.Count > 0 && item.IsValidItem() && player.CurrentGame.Data.Players[player].ReduceEnergy(item.Template.Property4))
            //    {
            //        player.CurrentGame.ReturnPacket(player, packet);

            //        if (player.CurrentGame.Data.CurrentIndex == player)
            //            player.CurrentGame.Data.TotalDelay += item.Template.Property5;

            //        ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(item.Template.Property1);
            //        spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, item);

            //        if (!isInfinity)
            //        {
            //            player.PropBag.UseItem(item);
            //            item.Count--;
            //            if (item.Count <= 0)
            //            {
            //                player.RemoveAllItem(item, false, Game.Server.Statics.ItemRemoveType.Use,1);
            //            }
            //            else
            //            {
            //                Statics.StatMgr.LogItemRemove(item.TemplateID, Game.Server.Statics.ItemRemoveType.Use, 1);
            //                player.PropBag.RefreshItem(item);
            //            }
            //        }
            //        player.QuestInventory.CheckUseItem(item.TemplateID);

            //        if (item.Template.Property6 == 1 && player == player.CurrentGame.Data.CurrentIndex)
            //            process.SendPlayFinish(player.CurrentGame, player.CurrentGame.Data.CurrentIndex);

            //        if (!isInfinity)
            //            player.CurrentGame.Data.CostInfo(item);
            //        return true;

            //    }

            //}
            ////道具栏的道具
            //else
            //{
            //    ItemInfo item = player.PropInventory.GetItemAt(place);
            //    if (item != null && player.CurrentGame.Data.Players[player].ReduceEnergy(item.Template.Property4))
            //    {
            //        player.CurrentGame.ReturnPacket(player, packet);

            //        if (player.CurrentGame.Data.CurrentIndex == player)
            //            player.CurrentGame.Data.TotalDelay += item.Template.Property5;

            //        ISpellHandler spellHandler = SpellMgr.LoadSpellHandler(item.Template.Property1);
            //        spellHandler.Execute(player.CurrentGame.Data.CurrentIndex, item);

            //        player.PropInventory.RemoveItemAt(place);
            //        player.QuestInventory.CheckUseItem(item.TemplateID);

            //        if (item.Template.Property6 == 1 && player == player.CurrentGame.Data.CurrentIndex)
            //            process.SendPlayFinish(player.CurrentGame, player.CurrentGame.Data.CurrentIndex);
            //        return true;
            //    }
            //}
            return(false);
        }
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            player.CurrentGame.ReturnPacket(player, packet);

            return true;
        }
Example #33
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            if (player.CurrentGame.Data.CurrentIndex == player && player.CurrentGame.Data.Players[player].State != TankGameState.DEAD)
            {
                if (player.CurrentGame.Data.CurrentFire == null)
                {
                    player.CurrentGame.Data.CurrentFire = player;
                }

                int x = packet.ReadInt();
                int y = packet.ReadInt();

                if (Math.Abs(player.CurrentGame.Data.Players[player].X - x) > 100)
                {
                    //player.Out.SendMessage(eMessageType.ALERT, LanguageMgr.GetTranslation("Game.Server.SceneGames.TankHandle"));
                    StatMgr.LogErrorPlayer(player.PlayerCharacter.ID, player.PlayerCharacter.UserName, player.PlayerCharacter.NickName,
                                           ItemRemoveType.FireError, player.CurrentGame.Data.Players[player].X.ToString() + " to " + x.ToString() + ",MapID:" + player.CurrentGame.Data.MapIndex);
                    player.Client.Disconnect();
                    return(false);;
                }

                int force = packet.ReadInt();
                int angle = packet.ReadInt();

                TankData   data  = player.CurrentGame.Data;
                Tile       shape = Managers.BallMgr.FindTile(data.CurrentBall.ID);
                GSPacketIn pkg   = new GSPacketIn((byte)ePackageType.GAME_CMD, player.PlayerCharacter.ID);
                pkg.WriteByte((byte)TankCmdType.FIRE);
                pkg.WriteInt(data.AddBall);
                for (int i = 0; i < data.AddBall; i++)
                {
                    if (player.CurrentGame.Data.ReduceFireBombs)
                    {
                        if (data.IsFastSpeed())
                        {
                            StatMgr.LogErrorPlayer(player.PlayerCharacter.ID, player.PlayerCharacter.UserName, player.PlayerCharacter.NickName,
                                                   ItemRemoveType.FastError, "MapID:" + player.CurrentGame.Data.MapIndex);
                            player.Client.Disconnect();
                            return(false);;
                        }

                        data.FireLogin = true;
                        double reforce = 1;
                        int    reangle = 0;
                        if (i == 1)
                        {
                            reforce = 0.9;
                            reangle = -5;
                        }
                        else if (i == 2)
                        {
                            reforce = 1.1;
                            reangle = 5;
                        }

                        int vx = (int)(force * reforce * Math.Cos((double)(angle + reangle) / 180 * Math.PI));
                        int vy = (int)(force * reforce * Math.Sin((double)(angle + reangle) / 180 * Math.PI));

                        data.PhyID++;

                        BombObject bomb = new BombObject(data.PhyID, BallMgr.GetBallType(data.CurrentBall.ID), data.Players[player], shape, data.CurrentBall.Radii, data.AddMultiple < 1,
                                                         data.CurrentBall.Mass, data.CurrentBall.Weight, data.CurrentBall.Wind, data.CurrentBall.DragIndex, data.BallPower);

                        bomb.SetXY(x, y);
                        bomb.setSpeedXY(vx, vy);
                        data.CurrentMap.AddPhysical(bomb);
                        pkg.WriteBoolean(bomb.IsHole);
                        pkg.WriteInt(bomb.Id);
                        pkg.WriteInt(x);
                        pkg.WriteInt(y);
                        pkg.WriteInt(vx);
                        pkg.WriteInt(vy);
                        pkg.WriteInt(bomb.Actions.Count);
                        foreach (BombAction action in bomb.Actions)
                        {
                            pkg.WriteInt(action.TimeInt);
                            pkg.WriteInt(action.Type);
                            pkg.WriteInt(action.Param1);
                            pkg.WriteInt(action.Param2);
                            pkg.WriteInt(action.Param3);
                            pkg.WriteInt(action.Param4);
                        }

                        data.SetRunTime((int)bomb.RunTime);
                    }
                }

                player.CurrentGame.SendToAll(pkg);

                data.FireLogin = false;
                if (data.Bombs || data.Players[player].State == TankGameState.DEAD)
                {
                    data.TotalDelay += data.CurrentBall.Delay;
                    process.SendArk(player.CurrentGame, player);
                    player.PropInventory.AddItemTemplate(PropItemMgr.GetRandomFightProp(data.MapIndex));
                    data.Players[player].SetDander(20);

                    process.SendPlayFinish(player.CurrentGame, player);
                    //GSPacketIn pkgMsg = new GSPacketIn((byte)ePackageType.GAME_CMD);
                    //pkgMsg.WriteByte((byte)TankCmdType.PLAYFINISH);
                    //pkgMsg.WriteInt(player.CurrentGame.Data.TurnNum);
                    //player.CurrentGame.SendToAll(pkgMsg);
                }
                return(true);
            }
            return(false);
        }
Example #34
0
        public bool HandleCommand(TankGameLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            player.CurrentGame.ReturnPacket(player, packet);

            return(true);
        }