Exemple #1
0
        public override bool Start()
        {
            if (m_isRunning)
            {
                return(false);
            }
            try
            {
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

                Thread.CurrentThread.Priority = ThreadPriority.Normal;

                GameProperties.Refresh();


                if (!InitComponent(RecompileScripts(), "Recompile Scripts"))
                {
                    return(false);
                }

                if (!InitComponent(StartScriptComponents(), "Script components"))
                {
                    return(false);
                }

                if (!InitComponent((GameProperties.EDITION == Edition), "Edition:" + Edition))
                {
                    return(false);
                }

                if (!InitComponent(InitSocket(IPAddress.Parse(Configuration.Ip), Configuration.Port), "InitSocket Port:" + Configuration.Port))
                {
                    return(false);
                }

                if (!InitComponent(AllocatePacketBuffers(), "AllocatePacketBuffers()"))
                {
                    return(false);
                }

                if (!InitComponent(LogMgr.Setup(Configuration.GAME_TYPE, Configuration.ServerID, Configuration.AreaID), "LogMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(WorldMgr.Init(), "WorldMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(MapMgr.Init(), "MapMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(ItemMgr.Init(), "ItemMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(ItemBoxMgr.Init(), "ItemBox Init"))
                {
                    return(false);
                }

                if (!InitComponent(BallMgr.Init(), "BallMgr Init"))
                {
                    return(false);
                }
                if (!InitComponent(BallConfigMgr.Init(), "BallConfigMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(FusionMgr.Init(), "FusionMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(AwardMgr.Init(), "AwardMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(NPCInfoMgr.Init(), "NPCInfoMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(MissionInfoMgr.Init(), "MissionInfoMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(PveInfoMgr.Init(), "PveInfoMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(DropMgr.Init(), "Drop Init"))
                {
                    return(false);
                }

                if (!InitComponent(FightRateMgr.Init(), "FightRateMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(ConsortiaLevelMgr.Init(), "ConsortiaLevelMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(RefineryMgr.Init(), "RefineryMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(StrengthenMgr.Init(), "StrengthenMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(PropItemMgr.Init(), "PropItemMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(ShopMgr.Init(), "ShopMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(QuestMgr.Init(), "QuestMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(RoomMgr.Setup(Configuration.MaxRoomCount), "RoomMgr.Setup"))
                {
                    return(false);
                }

                if (!InitComponent(GameMgr.Setup(Configuration.ServerID, GameProperties.BOX_APPEAR_CONDITION), "GameMgr.Start()"))
                {
                    return(false);
                }

                if (!InitComponent(ConsortiaMgr.Init(), "ConsortiaMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(LanguageMgr.Setup(@""), "LanguageMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(RateMgr.Init(Configuration), "ExperienceRateMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(MacroDropMgr.Init(), "MacroDropMgr Init"))
                {
                    return(false);
                }

                if (!InitComponent(BattleMgr.Setup(), "BattleMgr Setup"))
                {
                    return(false);
                }

                if (!InitComponent(InitGlobalTimer(), "Init Global Timers"))
                {
                    return(false);
                }

                if (!InitComponent(MarryRoomMgr.Init(), "MarryRoomMgr Init"))
                {
                    return(false);
                }
                if (!InitComponent(LogMgr.Setup(1, 4, 4), "LogMgr Setup"))
                {
                    return(false);
                }
                GameEventMgr.Notify(ScriptEvent.Loaded);

                if (!InitComponent(InitLoginServer(), "Login To CenterServer"))
                {
                    return(false);
                }

                RoomMgr.Start();
                GameMgr.Start();
                BattleMgr.Start();
                MacroDropMgr.Start();

                if (!InitComponent(base.Start(), "base.Start()"))
                {
                    return(false);
                }



                GameEventMgr.Notify(GameServerEvent.Started, this);

                GC.Collect(GC.MaxGeneration);

                if (log.IsInfoEnabled)
                {
                    log.Info("GameServer is now open for connections!");
                }

                m_isRunning = true;
                return(true);
            }
            catch (Exception e)
            {
                if (log.IsErrorEnabled)
                {
                    log.Error("Failed to start the server", e);
                }

                return(false);
            }
        }
        public override bool Start()
        {
            try
            {
                Thread.CurrentThread.Priority = ThreadPriority.Normal;

                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

                GameProperties.Refresh();

                if (!InitComponent(RecompileScripts(), "Recompile Scripts"))
                {
                    return(false);
                }

                //初始化脚本
                if (!InitComponent(StartScriptComponents(), "Script components"))
                {
                    return(false);
                }

                //检查版本是否和数据库一致
                if (!InitComponent(GameProperties.EDITION == Edition, "Check Server Edition:" + Edition))
                {
                    return(false);
                }

                //初始化监听端口
                if (!InitComponent(InitSocket(IPAddress.Parse(_config.Ip), _config.Port), "InitSocket Port:" + _config.Port))
                {
                    return(false);
                }

                //启动服务监听
                if (!InitComponent(CenterService.Start(), "Center Service"))
                {
                    return(false);
                }

                //加载服务器列表
                if (!InitComponent(ServerMgr.Start(), "Load serverlist"))
                {
                    return(false);
                }

                //加载公会等级信息
                if (!InitComponent(ConsortiaLevelMgr.Init(), "Init ConsortiaLevelMgr"))
                {
                    return(false);
                }

                //初始化宏观掉落表
                if (!InitComponent(MacroDropMgr.Init(), "Init MacroDropMgr"))
                {
                    return(false);
                }

                //初始化语言包
                if (!InitComponent(LanguageMgr.Setup(@""), "LanguageMgr Init"))
                {
                    return(false);
                }

                //初始化全局Timer
                if (!InitComponent(InitGlobalTimers(), "Init Global Timers"))
                {
                    return(false);
                }

                //发布脚本已加载事件
                GameEventMgr.Notify(ScriptEvent.Loaded);

                //宏观掉落控制开始
                MacroDropMgr.Start();

                if (!InitComponent(base.Start(), "base.Start()"))
                {
                    return(false);
                }

                //发布服务器开始事件
                GameEventMgr.Notify(GameServerEvent.Started, this);

                GC.Collect(GC.MaxGeneration);

                log.Info("GameServer is now open for connections!");


                GameProperties.Save();
                return(true);
            }
            catch (Exception e)
            {
                log.Error("Failed to start the server", e);
                return(false);
            }
        }
Exemple #3
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            var consortiaCmd = packet.ReadInt();

            bool result = false;
            string msg = "Packet Error!";
            ConsortiaLevelInfo levelInfo = null;
            GamePlayer[] players = WorldMgr.GetAllPlayers();

            switch (consortiaCmd)
            {
                case (int)ConsortiaPackageType.CONSORTIA_TRYIN:
                    HandleCONSORTIA_TRYIN(packet);
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_CREATE:
                    //Create Guild
                    {
                        if (client.Player.PlayerCharacter.ConsortiaID != 0)
                            return 0;
                        levelInfo = ConsortiaLevelMgr.FindConsortiaLevelInfo(1);
                        string name = packet.ReadString();
                        //if (string.IsNullOrEmpty(name) || System.Text.Encoding.Default.GetByteCount(name) > 12)
                        //{
                        //    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ConsortiaCreateHandler.Long"));
                        //    return 1;
                        //}                    
                        //result = false;
                        int id = 0;
                        int mustGold = levelInfo.NeedGold;
                        int mustLevel = 5;
                        msg = "ConsortiaCreateHandler.Failed";
                        ConsortiaDutyInfo dutyInfo = new ConsortiaDutyInfo();

                        if (!string.IsNullOrEmpty(name) && client.Player.PlayerCharacter.Gold >= mustGold && client.Player.PlayerCharacter.Grade >= mustLevel)
                        {
                            using (ConsortiaBussiness db = new ConsortiaBussiness())
                            {
                                ConsortiaInfo info = new ConsortiaInfo();
                                info.BuildDate = DateTime.Now;
                                info.CelebCount = 0;
                                info.ChairmanID = client.Player.PlayerCharacter.ID;
                                info.ChairmanName = client.Player.PlayerCharacter.NickName;
                                info.ConsortiaName = name;
                                info.CreatorID = info.ChairmanID;
                                info.CreatorName = info.ChairmanName;
                                info.Description = "";
                                info.Honor = 0;
                                info.IP = "";
                                info.IsExist = true;
                                info.Level = levelInfo.Level;
                                info.MaxCount = levelInfo.Count;
                                info.Riches = levelInfo.Riches;
                                info.Placard = "";
                                info.Port = 0;
                                info.Repute = 0;
                                info.Count = 1;

                                if (db.AddConsortia(info, ref msg, ref dutyInfo))
                                {
                                    client.Player.PlayerCharacter.ConsortiaID = info.ConsortiaID;
                                    client.Player.PlayerCharacter.ConsortiaName = info.ConsortiaName;
                                    client.Player.PlayerCharacter.DutyLevel = dutyInfo.Level;
                                    client.Player.PlayerCharacter.DutyName = dutyInfo.DutyName;
                                    client.Player.PlayerCharacter.Right = dutyInfo.Right;
                                    client.Player.PlayerCharacter.ConsortiaLevel = levelInfo.Level;
                                    client.Player.RemoveGold(mustGold);
                                    msg = "ConsortiaCreateHandler.Success";
                                    result = true;
                                    id = info.ConsortiaID;
                                    GameServer.Instance.LoginServer.SendConsortiaCreate(id, client.Player.PlayerCharacter.Offer, info.ConsortiaName);
                                }
                                else
                                {
                                    client.Player.SendMessage("db.AddConsortia Error ");
                                }
                            }

                        }
                        //Send package create Guild
                        client.Out.SendConsortiaCreate(name, result, id, name, LanguageMgr.GetTranslation(msg), dutyInfo.Level, dutyInfo.DutyName, dutyInfo.Right, client.Player.PlayerCharacter.ID);
                    }
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_DISBAND:
                    HandleCONSORTIA_DISBAND(packet);
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_RENEGADE:
                    HandleCONSORTIA_RENEGADE(packet);
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_TRYIN_PASS:
                    HandleCONSORTIA_TRYIN_PASS(packet);
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_TRYIN_DEL:
                    HandleCONSORTIA_TRYIN_DEL(packet);
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_RICHES_OFFER:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_APPLY_STATE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_DUTY_DELETE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_DUTY_UPDATE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_INVITE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_INVITE_PASS:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_INVITE_DELETE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_DESCRIPTION_UPDATE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_PLACARD_UPDATE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_BANCHAT_UPDATE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_USER_REMARK_UPDATE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_USER_GRADE_UPDATE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_CHAIRMAN_CHAHGE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_CHAT:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_LEVEL_UP:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_TASK_RELEASE:
                    break;
                case (int)ConsortiaPackageType.DONATE:
                    break;
                case (int)ConsortiaPackageType.CONSORTIA_EQUIP_CONTROL:
                    break;
                case (int)ConsortiaPackageType.POLL_CANDIDATE:
                    break;
                case (int)ConsortiaPackageType.SKILL_SOCKET:
                    break;
                case (int)ConsortiaPackageType.CONSORTION_MAIL:
                    break;
                case (int)ConsortiaPackageType.BUY_BADGE:
                    break;
            }

            return 0;
        }
Exemple #4
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (client.Player.PlayerCharacter.ConsortiaID == 0)
            {
                return(0);
            }

            int bagType = packet.ReadByte();
            int place   = packet.ReadInt();

            bool   result = false;
            string msg    = "ConsortiaUpGradeHandler.Failed";

            using (ConsortiaBussiness db = new ConsortiaBussiness())
            {
                ConsortiaInfo info = db.GetConsortiaSingle(client.Player.PlayerCharacter.ConsortiaID);
                if (info == null)
                {
                    msg = "ConsortiaUpGradeHandler.NoConsortia";
                }
                else
                {
                    ConsortiaLevelInfo levelInfo = ConsortiaLevelMgr.FindConsortiaLevelInfo(info.Level + 1);
                    //ItemTemplateInfo temp = ItemMgr.GetSingleGoods(levelInfo.NeedItem);

                    if (levelInfo == null)
                    {
                        msg = "ConsortiaUpGradeHandler.NoUpGrade";
                    }
                    //else if (levelInfo.NeedItem != 0 && client.Player.GetAllItemCount(levelInfo.NeedItem) < 1)
                    //{
                    //    msg = "ConsortiaUpGradeHandler.NoItem";
                    //}
                    else if (levelInfo.NeedGold > client.Player.PlayerCharacter.Gold)
                    {
                        msg = "ConsortiaUpGradeHandler.NoGold";
                    }
                    else
                    {
                        using (ConsortiaBussiness cb = new ConsortiaBussiness())
                        {
                            if (cb.UpGradeConsortia(client.Player.PlayerCharacter.ConsortiaID, client.Player.PlayerCharacter.ID, ref msg))
                            {
                                info.Level++;
                                client.Player.RemoveGold(levelInfo.NeedGold);
                                // client.Player.RemoveItemCount(levelInfo.NeedItem, 1);
                                GameServer.Instance.LoginServer.SendConsortiaUpGrade(info);
                                msg    = "ConsortiaUpGradeHandler.Success";
                                result = true;
                            }
                        }
                    }
                }
                if (info.Level >= 5)
                {
                    string msg1 = LanguageMgr.GetTranslation("ConsortiaUpGradeHandler.Notice", info.ConsortiaName, info.Level);

                    GSPacketIn pkg = new GSPacketIn((byte)ePackageType.SYS_NOTICE);
                    pkg.WriteInt(2);
                    pkg.WriteString(msg1);

                    GameServer.Instance.LoginServer.SendPacket(pkg);

                    GamePlayer[] players = Game.Server.Managers.WorldMgr.GetAllPlayers();

                    foreach (GamePlayer p in players)
                    {
                        if (p != client.Player && p.PlayerCharacter.ConsortiaID != client.Player.PlayerCharacter.ConsortiaID)
                        {
                            p.Out.SendTCP(pkg);
                        }
                    }
                }
            }


            packet.WriteBoolean(result);
            packet.WriteString(LanguageMgr.GetTranslation(msg));
            client.Out.SendTCP(packet);

            return(1);
        }
Exemple #5
0
        public override bool Start()
        {
            bool result;

            try
            {
                Thread.CurrentThread.Priority = ThreadPriority.Normal;
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(this.CurrentDomain_UnhandledException);
                GameProperties.Refresh();
                if (!this.InitComponent(this.RecompileScripts(), "Recompile Scripts"))
                {
                    result = false;
                }
                else
                {
                    if (!this.InitComponent(this.StartScriptComponents(), "Script components"))
                    {
                        result = false;
                    }
                    else
                    {
                        if (!this.InitComponent(GameProperties.EDITION == this.Edition, "Check Server Edition:" + this.Edition))
                        {
                            result = false;
                        }
                        else
                        {
                            if (!this.InitComponent(this.InitSocket(IPAddress.Parse(this._config.Ip), this._config.Port), "InitSocket Port:" + this._config.Port))
                            {
                                result = false;
                            }
                            else
                            {
                                if (!this.InitComponent(CenterService.Start(), "Center Service"))
                                {
                                    result = false;
                                }
                                else
                                {
                                    if (!this.InitComponent(ServerMgr.Start(), "Load serverlist"))
                                    {
                                        result = false;
                                    }
                                    else
                                    {
                                        if (!this.InitComponent(ConsortiaLevelMgr.Init(), "Init ConsortiaLevelMgr"))
                                        {
                                            result = false;
                                        }
                                        else
                                        {
                                            if (!this.InitComponent(MacroDropMgr.Init(), "Init MacroDropMgr"))
                                            {
                                                result = false;
                                            }
                                            else
                                            {
                                                if (!this.InitComponent(LanguageMgr.Setup(""), "LanguageMgr Init"))
                                                {
                                                    result = false;
                                                }
                                                else
                                                {
                                                    if (!this.InitComponent(this.InitGlobalTimers(), "Init Global Timers"))
                                                    {
                                                        result = false;
                                                    }
                                                    else
                                                    {
                                                        GameEventMgr.Notify(ScriptEvent.Loaded);
                                                        MacroDropMgr.Start();
                                                        if (!this.InitComponent(base.Start(), "base.Start()"))
                                                        {
                                                            result = false;
                                                        }
                                                        else
                                                        {
                                                            GameEventMgr.Notify(GameServerEvent.Started, this);
                                                            GC.Collect(GC.MaxGeneration);
                                                            CenterServer.log.Info("GameServer is now open for connections!");
                                                            GameProperties.Save();
                                                            result = true;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                CenterServer.log.Error("Failed to start the server", exception);
                result = false;
            }
            return(result);
        }
Exemple #6
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (client.Player.PlayerCharacter.ConsortiaID != 0)
            {
                return(0);
            }

            ConsortiaLevelInfo levelInfo = ConsortiaLevelMgr.FindConsortiaLevelInfo(1);
            string             name      = packet.ReadString();

            if (string.IsNullOrEmpty(name) || System.Text.Encoding.Default.GetByteCount(name) > 12)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ConsortiaCreateHandler.Long"));
                return(1);
            }

            bool              result    = false;
            int               id        = 0;
            int               mustGold  = levelInfo.NeedGold;
            int               mustLevel = 5;
            string            msg       = "ConsortiaCreateHandler.Failed";
            ConsortiaDutyInfo dutyInfo  = new ConsortiaDutyInfo();

            if (!string.IsNullOrEmpty(name) && client.Player.PlayerCharacter.Gold >= mustGold && client.Player.PlayerCharacter.Grade >= mustLevel)
            {
                using (ConsortiaBussiness db = new ConsortiaBussiness())
                {
                    ConsortiaInfo info = new ConsortiaInfo();
                    info.BuildDate     = DateTime.Now;
                    info.CelebCount    = 0;
                    info.ChairmanID    = client.Player.PlayerCharacter.ID;
                    info.ChairmanName  = client.Player.PlayerCharacter.NickName;
                    info.ConsortiaName = name;
                    info.CreatorID     = info.ChairmanID;
                    info.CreatorName   = info.ChairmanName;
                    info.Description   = "";
                    info.Honor         = 0;
                    info.IP            = "";
                    info.IsExist       = true;
                    info.Level         = levelInfo.Level;
                    info.MaxCount      = levelInfo.Count;
                    info.Riches        = levelInfo.Riches;
                    info.Placard       = "";
                    info.Port          = 0;
                    info.Repute        = 0;
                    info.Count         = 1;
                    if (db.AddConsortia(info, ref msg, ref dutyInfo))
                    {
                        client.Player.PlayerCharacter.ConsortiaID    = info.ConsortiaID;
                        client.Player.PlayerCharacter.ConsortiaName  = info.ConsortiaName;
                        client.Player.PlayerCharacter.DutyLevel      = dutyInfo.Level;
                        client.Player.PlayerCharacter.DutyName       = dutyInfo.DutyName;
                        client.Player.PlayerCharacter.Right          = dutyInfo.Right;
                        client.Player.PlayerCharacter.ConsortiaLevel = levelInfo.Level;
                        client.Player.RemoveGold(mustGold);
                        msg    = "ConsortiaCreateHandler.Success";
                        result = true;
                        id     = info.ConsortiaID;
                        GameServer.Instance.LoginServer.SendConsortiaCreate(id, client.Player.PlayerCharacter.Offer, info.ConsortiaName);
                    }
                }
            }
            packet.WriteBoolean(result);
            packet.WriteInt(id);
            packet.WriteString(name);
            packet.WriteString(LanguageMgr.GetTranslation(msg));
            packet.WriteInt(dutyInfo.Level);
            packet.WriteString(dutyInfo.DutyName == null ? "" : dutyInfo.DutyName);
            packet.WriteInt(dutyInfo.Right);
            client.Out.SendTCP(packet);

            //client.Out.SendMessage(eMessageType.Normal, msg);

            return(0);
        }
Exemple #7
0
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            int result2;

            if (player.PlayerCharacter.ConsortiaID != 0)
            {
                result2 = 0;
            }
            else
            {
                ConsortiaLevelInfo levelInfo = ConsortiaLevelMgr.FindConsortiaLevelInfo(1);
                string             name      = packet.ReadString();
                if (string.IsNullOrEmpty(name) || Encoding.Default.GetByteCount(name) > 12)
                {
                    player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("ConsortiaCreateHandler.Long", new object[0]));
                    result2 = 1;
                }
                else
                {
                    bool result = false;
                    int  id     = 0;
                    //int mustGold = levelInfo.NeedGold;
                    //int mustLevel = 5;
                    string            msg      = "ConsortiaCreateHandler.Failed";
                    ConsortiaDutyInfo dutyInfo = new ConsortiaDutyInfo();
                    if (!string.IsNullOrEmpty(name) && player.PlayerCharacter.Money >= 1000)
                    {
                        using (ConsortiaBussiness db = new ConsortiaBussiness())
                        {
                            ConsortiaInfo info = new ConsortiaInfo();
                            info.BuildDate     = DateTime.Now;
                            info.CelebCount    = 0;
                            info.ChairmanID    = player.PlayerCharacter.ID;
                            info.ChairmanName  = player.PlayerCharacter.NickName;
                            info.ConsortiaName = name;
                            info.CreatorID     = info.ChairmanID;
                            info.CreatorName   = info.ChairmanName;
                            info.Description   = "";
                            info.Honor         = 0;
                            info.IP            = "";
                            info.IsExist       = true;
                            info.Level         = levelInfo.Level;
                            info.MaxCount      = levelInfo.Count;
                            info.Riches        = levelInfo.Riches;
                            info.Placard       = "";
                            info.Port          = 0;
                            info.Repute        = 0;
                            info.Count         = 1;
                            if (db.AddConsortia(info, ref msg, ref dutyInfo))
                            {
                                player.PlayerCharacter.ConsortiaID    = info.ConsortiaID;
                                player.PlayerCharacter.ConsortiaName  = info.ConsortiaName;
                                player.PlayerCharacter.DutyLevel      = dutyInfo.Level;
                                player.PlayerCharacter.DutyName       = dutyInfo.DutyName;
                                player.PlayerCharacter.Right          = dutyInfo.Right;
                                player.PlayerCharacter.ConsortiaLevel = levelInfo.Level;
                                player.RemoveGold(1000);
                                msg    = "ConsortiaCreateHandler.Success";
                                result = true;
                                id     = info.ConsortiaID;
                                GameServer.Instance.LoginServer.SendConsortiaCreate(id, player.PlayerCharacter.Offer, info.ChairmanName);
                            }
                        }
                    }
                    packet.WriteBoolean(result);
                    packet.WriteInt(id);
                    packet.WriteString("cName");//UnKnown
                    packet.WriteString(LanguageMgr.GetTranslation(msg, new object[0]));
                    packet.WriteInt(dutyInfo.Level);
                    packet.WriteString((dutyInfo.DutyName == null) ? "" : dutyInfo.DutyName);
                    packet.WriteInt(dutyInfo.Right);
                    player.Out.SendTCP(packet);
                    result2 = 0;
                }
            }
            return(result2);
        }
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            int result2;

            if (client.Player.PlayerCharacter.ConsortiaID == 0)
            {
                result2 = 0;
            }
            else
            {
                int    bagType = (int)packet.ReadByte();
                int    place   = packet.ReadInt();
                bool   result  = false;
                string msg     = "ConsortiaUpGradeHandler.Failed";
                using (ConsortiaBussiness db = new ConsortiaBussiness())
                {
                    ConsortiaInfo info = db.GetConsortiaSingle(client.Player.PlayerCharacter.ConsortiaID);
                    if (info == null)
                    {
                        msg = "ConsortiaUpGradeHandler.NoConsortia";
                    }
                    else
                    {
                        ConsortiaLevelInfo levelInfo = ConsortiaLevelMgr.FindConsortiaLevelInfo(info.Level + 1);
                        if (levelInfo == null)
                        {
                            msg = "ConsortiaUpGradeHandler.NoUpGrade";
                        }
                        else
                        {
                            if (levelInfo.NeedGold > client.Player.PlayerCharacter.Gold)
                            {
                                msg = "ConsortiaUpGradeHandler.NoGold";
                            }
                            else
                            {
                                using (ConsortiaBussiness cb = new ConsortiaBussiness())
                                {
                                    if (cb.UpGradeConsortia(client.Player.PlayerCharacter.ConsortiaID, client.Player.PlayerCharacter.ID, ref msg))
                                    {
                                        info.Level++;
                                        client.Player.RemoveGold(levelInfo.NeedGold);
                                        GameServer.Instance.LoginServer.SendConsortiaUpGrade(info);
                                        msg    = "ConsortiaUpGradeHandler.Success";
                                        result = true;
                                    }
                                }
                            }
                        }
                    }
                    if (info.Level >= 5 && info.Level <= 10)
                    {
                        string msg2 = LanguageMgr.GetTranslation("ConsortiaUpGradeHandler.Notice", new object[]
                        {
                            info.ConsortiaName,
                            info.Level
                        });
                        GSPacketIn pkg = new GSPacketIn(10);
                        pkg.WriteInt(2);
                        pkg.WriteString(msg2);
                        GameServer.Instance.LoginServer.SendPacket(pkg);
                        GamePlayer[] players = WorldMgr.GetAllPlayers();
                        GamePlayer[] array   = players;
                        for (int i = 0; i < array.Length; i++)
                        {
                            GamePlayer p = array[i];
                            if (p != client.Player && p.PlayerCharacter.ConsortiaID != client.Player.PlayerCharacter.ConsortiaID)
                            {
                                p.Out.SendTCP(pkg);
                            }
                        }
                    }
                }
                packet.WriteBoolean(result);
                packet.WriteString(LanguageMgr.GetTranslation(msg, new object[0]));
                client.Out.SendTCP(packet);
                result2 = 1;
            }
            return(result2);
        }
Exemple #9
0
        public override bool Start()
        {
            bool result = true;

            try
            {
                IsRunning = 0;
                Thread.CurrentThread.Priority = ThreadPriority.Normal;
                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(this.CurrentDomain_UnhandledException);


                if (!this.StartScriptComponents())
                {
                    result = false;
                    GameServer.log.Error("初始化脚本失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化脚本成功!");

                if (!this.InitSocket(IPAddress.Parse(this.Config.GameIP), this.Config.GamePort))
                {
                    result = false;
                    GameServer.log.Error("初始化监听端口失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化监听端口成功!");

                if (!this.AllocatePacketBuffers())
                {
                    result = false;
                    GameServer.log.Error("分配数据包缓冲区失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("分配数据包缓冲区成功!");

                //LogMgr.Setup

                if (!WorldMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化世界场景失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化世界场景成功!");



                if (!FusionMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化熔炼失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化熔炼成功!");

                if (!AwardMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化奖励失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化奖励成功!");


                if (!MissionInfoMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化关卡失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化关卡成功!");

                if (!PveInfoMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化pve失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化pve成功!");



                if (!FightRateMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化战斗倍率失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化战斗倍率成功!");

                if (!ConsortiaLevelMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化公会等级失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化公会等级成功!");

                if (!StrengthenMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化强化失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化强化成功!");

                if (!ShopMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化商店失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化商店成功!");

                if (!BoxMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化时间宝箱失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化时间宝箱成功!");

                if (!QuestMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化任务失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化任务成功!");

                if (!AchievementMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化成就失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化成就成功!");

                if (!AchievementMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化成就失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化成就成功!");

                if (!RoomMgr.Setup(this.Config.MaxRoomCount))
                {
                    result = false;
                    GameServer.log.Error("初始化房间管理服务失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化房间管理服务成功!");

                if (!GameMgr.Setup(1, 4))
                {
                    result = false;
                    GameServer.log.Error("初始化游戏管理服务失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化游戏管理服务成功!");

                if (!ConsortiaMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化公会失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化公会成功!");


                if (!Game.Server.Managers.RateMgr.Init(this.Config))
                {
                    result = false;
                    GameServer.log.Error("初始化经验倍率管理服务失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化经验倍率管理服务成功!");

                if (!MacroDropMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化宏观掉落失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化宏观掉落成功!");


                if (!BattleMgr.Setup(this.Config))
                {
                    result = false;
                    GameServer.log.Error("加载战斗管理服务失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("加载战斗管理服务成功!");

                if (!this.InitGlobalTimer())
                {
                    result = false;
                    GameServer.log.Error("初始化全局Timers失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化全局Timers成功!");

                if (!this.InitLoginServer())
                {
                    result = false;
                    GameServer.log.Error("登陆到中心服务器失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("登陆到中心服务器成功!");

                if (!MarryRoomMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化礼堂失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化礼堂成功!");

                if (!SpaRoomMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化温泉失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化温泉成功!");

                if (!ActiveMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化活动失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化活动成功!");
                if (!VIPMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化VIP失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化VIP成功!");
                if (!LevelMgr.Init())
                {
                    result = false;
                    GameServer.log.Error("初始化等级失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("初始化等级成功!");

                /*  if (!WorldBossMgr.Init())
                 * {
                 *    result = false;
                 *    GameServer.log.Error("初始化世界Boss失败,请检查!");
                 *    return result;
                 * }
                 * GameServer.log.Info("初始化世界Boss成功!");
                 */
                RoomMgr.Start();
                GameMgr.Start();
                BattleMgr.Start();
                MacroDropMgr.Start();

                if (!base.Start())
                {
                    result = false;
                    GameServer.log.Error("启动基础服务失败,请检查!");
                    return(result);
                }
                GameServer.log.Info("启动基础服务成功!");

                GameEventMgr.Notify(ScriptEvent.Loaded);
                GC.Collect(GC.MaxGeneration);
                //LogMgr.Setup(1, 1, 1);
                GameServer.log.Warn("游戏服务器启动成功!");
                IsRunning = 1;
            }
            catch (Exception e)
            {
                GameServer.log.Error("Failed to start the server", e);
                // throw e;
                result = false;
            }
            return(result);
        }