Пример #1
0
        public static BattleGame StartBattleGame(List <IGamePlayer> red, ProxyRoom roomRed, List <IGamePlayer> blue, ProxyRoom roomBlue, int mapIndex, eRoomType roomType, eGameType gameType, int timeType)
        {
            try
            {
                int index = MapMgr.GetMapIndex(mapIndex, (byte)roomType, m_serverId);
                Map map   = MapMgr.CloneMap(index);

                if (map != null)
                {
                    BattleGame game = new BattleGame(m_gameId++, red, roomRed, blue, roomBlue, map, roomType, gameType, timeType);

                    lock (m_games)
                    {
                        m_games.Add(game.Id, game);
                    }
                    game.Prepare();
                    SendStartMessage(game);
                    return(game);
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception e)
            {
                log.Error("Create battle game error:", e);
                return(null);
            }
        }
Пример #2
0
 private static void UpdatePlayerGameId(BattleGame game)
 {
     foreach (Player p in game.GetAllFightPlayers())
     {
         if (p.PlayerDetail is ProxyPlayer)
         {
             (p.PlayerDetail as ProxyPlayer).GameId = game.Id;
         }
     }
 }
Пример #3
0
        private static void SendStartMessage(BattleGame game)
        {
            GSPacketIn pkg = new GSPacketIn(3);

            pkg.WriteInt(2);
            if (game.GameType == eGameType.Free)
            {
                pkg.WriteString(LanguageMgr.GetTranslation("StartMessage.free", new object[0]));
            }
            else
            {
                pkg.WriteString(LanguageMgr.GetTranslation("StartMessage.Consortia", new object[0]));
            }
            game.SendToAll(pkg, null);
        }
Пример #4
0
 private static void SendBufferList(BattleGame game)
 {
     foreach (Player p in game.GetAllFightPlayers())
     {
         List <BufferInfo> infos = (p.PlayerDetail as ProxyPlayer).Buffers;
         GSPacketIn        pkg   = new GSPacketIn(186, p.PlayerDetail.PlayerCharacter.ID);
         pkg.Parameter1 = p.Id;
         pkg.WriteInt(infos.Count);
         foreach (BufferInfo info in infos)
         {
             pkg.WriteInt(info.Type);
             pkg.WriteBoolean(info.IsExist);
             pkg.WriteDateTime(info.BeginDate);
             pkg.WriteInt(info.ValidDate);
             pkg.WriteInt(info.Value);
         }
         game.SendToAll(pkg);
     }
 }
Пример #5
0
 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);
 }
Пример #6
0
 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);
 }
Пример #7
0
        public static void SendStartMessage(BattleGame game)
        {
            GSPacketIn gSPacketIn = new GSPacketIn(3);

            gSPacketIn.WriteInt(2);
            if (game.GameType == eGameType.Free)
            {
                foreach (Player current in game.GetAllFightPlayers())
                {
                    (current.PlayerDetail as ProxyPlayer).m_antiAddictionRate = 1.0;
                    GSPacketIn pkg = GameMgr.SendBufferList(current, (current.PlayerDetail as ProxyPlayer).Buffers);
                    game.SendToAll(pkg);
                }
                gSPacketIn.WriteString("Tham chiến thành công, chúc bạn may mắn!");
            }
            else
            {
                gSPacketIn.WriteString("Kết nối thất bại!");
            }
            game.SendToAll(gSPacketIn, null);
        }
Пример #8
0
        public static BattleGame StartBattleGame(List <IGamePlayer> red, ProxyRoom roomRed, List <IGamePlayer> blue, ProxyRoom roomBlue, int mapIndex, eRoomType roomType, eGameType gameType, int timeType)
        {
            BattleGame result;

            try
            {
                int index = MapMgr.GetMapIndex(mapIndex, (byte)roomType, GameMgr.m_serverId);
                Map map   = MapMgr.AllocateMapInstance(index);
                if (map != null)
                {
                    BattleGame game = new BattleGame(GameMgr.m_gameId++, red, roomRed, blue, roomBlue, map, roomType, gameType, timeType, 0);
                    game.GameOverLog += new BaseGame.GameOverLogEventHandle(roomRed.LogFight);
                    Dictionary <int, BaseGame> games;
                    Monitor.Enter(games = GameMgr.m_games);
                    try
                    {
                        GameMgr.m_games.Add(game.Id, game);
                    }
                    finally
                    {
                        Monitor.Exit(games);
                    }
                    game.Prepare();
                    GameMgr.SendStartMessage(game);
                    GameMgr.SendBufferList(game);
                    GameMgr.UpdatePlayerGameId(game);
                    result = game;
                }
                else
                {
                    result = null;
                }
            }
            catch (Exception e)
            {
                GameMgr.log.Error("Create battle game error:", e);
                result = null;
            }
            return(result);
        }
Пример #9
0
        public static BattleGame StartBattleGame(List <IGamePlayer> red, ProxyRoom roomRed, List <IGamePlayer> blue, ProxyRoom roomBlue, int mapIndex, eRoomType roomType, eGameType gameType, int timeType)
        {
            BattleGame result;

            try
            {
                int mapIndex2 = MapMgr.GetMapIndex(mapIndex, (byte)roomType, GameMgr.m_serverId);
                Map map       = MapMgr.CloneMap(mapIndex2);
                List <PetSkillElementInfo> gameNeedPetSkill = PetMgr.GameNeedPetSkill();
                if (map != null)
                {
                    BattleGame battleGame = new BattleGame(GameMgr.m_gameId++, red, roomRed, blue, roomBlue, map, roomType, gameType, timeType, gameNeedPetSkill);
                    Dictionary <int, BaseGame> games;
                    Monitor.Enter(games = GameMgr.m_games);
                    try
                    {
                        GameMgr.m_games.Add(battleGame.Id, battleGame);
                    }
                    finally
                    {
                        Monitor.Exit(games);
                    }
                    battleGame.Prepare();
                    GameMgr.SendStartMessage(battleGame);
                    result = battleGame;
                }
                else
                {
                    result = null;
                }
            }
            catch (Exception exception)
            {
                GameMgr.log.Error("Create battle game error:", exception);
                result = null;
            }
            return(result);
        }
Пример #10
0
 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);
 }
Пример #11
0
        public static BattleGame StartBattleGame(List<IGamePlayer> red, ProxyRoom roomRed, List<IGamePlayer> blue, ProxyRoom roomBlue, int mapIndex, eRoomType roomType, eGameType gameType, int timeType)
        {
            try
            {
                int index = MapMgr.GetMapIndex(mapIndex, (byte)roomType, m_serverId);
                Map map = MapMgr.CloneMap(index);

                if (map != null)
                {
                    BattleGame game = new BattleGame(m_gameId++, red, roomRed, blue, roomBlue, map, roomType, gameType, timeType);

                    lock (m_games)
                    {
                        m_games.Add(game.Id, game);
                    }
                    game.Prepare();
                    SendStartMessage(game);
                    return game;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception e)
            {
                log.Error("Create battle game error:", e);
                return null;
            }
        }
Пример #12
0
 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);
 }