Esempio n. 1
0
        public bool QueryNameData(string name)
        {
            bool            exist  = false;
            MySqlDataReader reader = null;

            try
            {
                MySqlCommand cmd = new MySqlCommand("select * from drakgod where name= @name", connection);
                cmd.Parameters.AddWithValue("name", name);
                reader = cmd.ExecuteReader();
                if (reader.Read())
                {
                    exist = true;
                }
            }
            catch (Exception e)
            {
                PeRoot.Log("Query Name State Error:" + e, LogType.LogError);
            }
            finally
            {
                reader?.Close();
            }
            return(exist);
        }
Esempio n. 2
0
        /// <summary>
        /// 创建新的玩家游戏数据
        /// </summary>
        public int InsertNewAcctData(string acct, string pass, PlayerData playerData)
        {
            int id = -1;

            try
            {
                MySqlCommand cmd = new MySqlCommand(
                    "insert into drakgod set acct=@acct,pass =@pass,name=@name,level=@level,exp=@exp,power=@power,vip=@vip,coin=@coin,diamond=@diamond,crystal=@crystal,hp = @hp, ad = @ad, ap = @ap," +
                    " addefense = @addefense, apdefense = @apdefense, dodge = @dodge, pierce = @pierce, critical = @critical," +
                    "guideid=@guideid,strong=@strong,time=@time,task=@task,battle=@battle", connection);
                cmd.Parameters.AddWithValue("acct", acct);
                cmd.Parameters.AddWithValue("pass", pass);
                cmd.Parameters.AddWithValue("name", playerData.Name);
                cmd.Parameters.AddWithValue("level", playerData.Level);
                cmd.Parameters.AddWithValue("exp", playerData.Exp);
                cmd.Parameters.AddWithValue("power", playerData.Power);
                cmd.Parameters.AddWithValue("vip", playerData.Vip);

                cmd.Parameters.AddWithValue("coin", playerData.Coin);
                cmd.Parameters.AddWithValue("diamond", playerData.Diamond);
                cmd.Parameters.AddWithValue("crystal", playerData.Crystal);

                cmd.Parameters.AddWithValue("hp", playerData.Hp);
                cmd.Parameters.AddWithValue("ad", playerData.Ad);
                cmd.Parameters.AddWithValue("ap", playerData.Ap);
                cmd.Parameters.AddWithValue("addefense", playerData.AdDefense);
                cmd.Parameters.AddWithValue("apdefense", playerData.ApDefense);
                cmd.Parameters.AddWithValue("dodge", playerData.Dodge);
                cmd.Parameters.AddWithValue("pierce", playerData.Pierce);
                cmd.Parameters.AddWithValue("critical", playerData.Critical);

                cmd.Parameters.AddWithValue("guideid", playerData.GuideId);

                string strongInfo = "";
                foreach (var t in playerData.StrongArray)
                {
                    strongInfo += t;
                    strongInfo += "#";
                }
                cmd.Parameters.AddWithValue("strong", strongInfo);
                cmd.Parameters.AddWithValue("time", playerData.Time);

                string taskInfo = "";
                foreach (var t in playerData.TaskArray)
                {
                    taskInfo += t;
                    taskInfo += "#";
                }
                cmd.Parameters.AddWithValue("task", taskInfo);
                cmd.Parameters.AddWithValue("battle", playerData.Battle);
                //TODO
                cmd.ExecuteNonQuery();
                id = (int)cmd.LastInsertedId;
            }
            catch (Exception e)
            {
                PeRoot.Log(e.ToString(), LogType.LogError);
            }
            return(id);
        }
Esempio n. 3
0
 public void Init()
 {
     PeRoot.Log("CfgSvc Init Done.||数据配置.", LogType.Info);
     InitGuideCfgData();
     InitStrongCfg();
     InitTaskCfgData();
     InitMapCfgData();
 }
Esempio n. 4
0
        public void Init()
        {
            _cacheSvc = CacheSvc.Instance;
            _timeSvc  = TimeSvc.Instance;

            TimeSvc.Instance.AddTimeTask(CalcPowerAdd, PeRoot.PowerAddSpace, PETimeUnit.Minute, 0);
            PeRoot.Log("PowerSys Init Done.||体力恢复系统.");
        }
Esempio n. 5
0
        /// <summary>
        /// 更新玩家游戏数据
        /// </summary>
        public bool UpDatePlayerData(int id, PlayerData playerData)
        {
            try
            {
                MySqlCommand cmd = new MySqlCommand(
                    "update drakgod set name=@name,level=@level,exp=@exp,power=@power,vip=@vip,coin=@coin,diamond=@diamond,crystal=@crystal,hp = @hp, ad = @ad, ap = @ap, " +
                    "addefense = @addefense, apdefense = @apdefense, dodge = @dodge, pierce = @pierce, critical = @critical," +
                    "guideid=@guideid, strong=@strong,time=@time,task=@task,battle=@battle where id =@id", connection);
                cmd.Parameters.AddWithValue("id", id);
                cmd.Parameters.AddWithValue("name", playerData.Name);
                cmd.Parameters.AddWithValue("level", playerData.Level);
                cmd.Parameters.AddWithValue("exp", playerData.Exp);
                cmd.Parameters.AddWithValue("power", playerData.Power);
                cmd.Parameters.AddWithValue("vip", playerData.Vip);

                cmd.Parameters.AddWithValue("coin", playerData.Coin);
                cmd.Parameters.AddWithValue("diamond", playerData.Diamond);
                cmd.Parameters.AddWithValue("crystal", playerData.Crystal);

                cmd.Parameters.AddWithValue("hp", playerData.Hp);
                cmd.Parameters.AddWithValue("ad", playerData.Ad);
                cmd.Parameters.AddWithValue("ap", playerData.Ap);
                cmd.Parameters.AddWithValue("addefense", playerData.AdDefense);
                cmd.Parameters.AddWithValue("apdefense", playerData.ApDefense);
                cmd.Parameters.AddWithValue("dodge", playerData.Dodge);
                cmd.Parameters.AddWithValue("pierce", playerData.Pierce);
                cmd.Parameters.AddWithValue("critical", playerData.Critical);

                cmd.Parameters.AddWithValue("guideid", playerData.GuideId);

                string strongInfo = "";
                foreach (var t in playerData.StrongArray)
                {
                    strongInfo += t;
                    strongInfo += "#";
                }
                cmd.Parameters.AddWithValue("strong", strongInfo);
                cmd.Parameters.AddWithValue("time", playerData.Time);

                string taskInfo = "";
                foreach (var t in playerData.TaskArray)
                {
                    taskInfo += t;
                    taskInfo += "#";
                }
                cmd.Parameters.AddWithValue("task", taskInfo);
                cmd.Parameters.AddWithValue("battle", playerData.Battle);
                //TODO
                cmd.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                PeRoot.Log("Update PlayerData Error:" + e, LogType.LogError);
            }
            return(true);
        }
Esempio n. 6
0
        private MySqlConnection connection;//数据库连接

        public void Init()
        {
            PeRoot.Log("DbMgr Init Done.||数据库管理层.");
            connection = new MySqlConnection(
                "server=localhost;port = 3306;User = root;password=1329524041;Database=mysqldrakgod;");
            try
            {
                connection.Open();
            }
            catch (Exception e)
            {
                PeRoot.Log(e.ToString(), LogType.LogError);
            }
        }
Esempio n. 7
0
        public void ClearOffLineData(ServerSession session)
        {
            PlayerData playerData = _cacheSvc.GetPlayerDataBySession(session);

            if (playerData != null)
            {
                playerData.Time = _timeSvc.GetNowTime();
                if (!_cacheSvc.UpdatePlayerData(playerData.Id, playerData))
                {
                    PeRoot.Log("Update offline time error", LogType.LogError);
                }
                _cacheSvc.AcctOffLine(session);
            }
        }
Esempio n. 8
0
    /// <summary>
    /// 玩家下线处理
    /// </summary>
    public void AcctOffLine(ServerSession session)
    {
        foreach (var item in onLineAcctDic)
        {
            if (item.Value == session)
            {
                onLineAcctDic.Remove(item.Key);
                break;
            }
        }
        bool success = onLineSessionDic.Remove(session);

        PeRoot.Log("Offline Result: SessionID:" + session.sessionId + "  " + success);
    }
Esempio n. 9
0
    private void InitTaskCfgData()
    {
        XmlDocument xmlDocument = new XmlDocument();

        xmlDocument.Load("D:\\UNITY\\DarkGod\\Assets\\Resources\\ResCfgs\\taskreward.xml");

        XmlNodeList xmlNodeList = xmlDocument.SelectSingleNode("root")?.ChildNodes;

        for (int i = 0; i < xmlNodeList?.Count; i++)
        {
            XmlElement xmlElement = xmlNodeList[i] as XmlElement;

            if (xmlElement?.GetAttributeNode("ID") == null)
            {
                continue;
            }

            int           id      = Convert.ToInt32(xmlElement.GetAttributeNode("ID")?.InnerText);
            TaskRewardCfg taskCfg = new TaskRewardCfg
            {
                Id = id
            };

            foreach (XmlElement e in xmlNodeList[i].ChildNodes)
            {
                switch (e.Name)
                {
                case "coin":
                    taskCfg.Coin = int.Parse(e.InnerText);
                    break;

                case "exp":
                    taskCfg.Exp = int.Parse(e.InnerText);
                    break;

                case "count":
                    taskCfg.Count = int.Parse(e.InnerText);
                    break;

                case "diamond":
                    taskCfg.Diamond = int.Parse(e.InnerText);
                    break;
                }
            }
            taskDictionary.Add(id, taskCfg);
        }
        PeRoot.Log("TaskRewardCfg Init Done.||日常任务数据配置.");
    }
Esempio n. 10
0
    private void InitMapCfgData()
    {
        XmlDocument xmlDocument = new XmlDocument();

        xmlDocument.Load("D:\\UNITY\\DarkGod\\Assets\\Resources\\ResCfgs\\map.xml");

        XmlNodeList xmlNodeList = xmlDocument.SelectSingleNode("root")?.ChildNodes;

        for (int i = 0; i < xmlNodeList?.Count; i++)
        {
            XmlElement xmlElement = xmlNodeList[i] as XmlElement;

            if (xmlElement?.GetAttributeNode("ID") == null)
            {
                continue;
            }

            int    id     = Convert.ToInt32(xmlElement.GetAttributeNode("ID")?.InnerText);
            MapCfg mapCfg = new MapCfg
            {
                Id = id
            };

            foreach (XmlElement e in xmlNodeList[i].ChildNodes)
            {
                switch (e.Name)
                {
                case "power":
                    mapCfg.Power = int.Parse(e.InnerText);
                    break;

                case "coin":
                    mapCfg.Coin = int.Parse(e.InnerText);
                    break;

                case "exp":
                    mapCfg.Exp = int.Parse(e.InnerText);
                    break;

                case "crystal":
                    mapCfg.Crystal = int.Parse(e.InnerText);
                    break;
                }
            }
            mapDictionary.Add(id, mapCfg);
        }
        PeRoot.Log("MapCfg Init Done.||地图数据配置.");
    }
Esempio n. 11
0
 public void Init()
 {
     PETimer = new PETimer(100);
     taskPackQueue.Clear();
     PETimer.SetLog((string info) => PeRoot.Log(info));//设置日志输出
     PETimer.SetHandle((Action <int> cb, int tid) =>
     {
         if (cb != null)
         {
             lock (queueLock)
             {
                 taskPackQueue.Enqueue(new TaskPack(tid, cb));
             }
         }
     });
     PeRoot.Log("TimerSvc Init Done.||计时服务.");
 }
Esempio n. 12
0
        private void CalcPowerAdd(int timeId)
        {
            PeRoot.Log("All Online Player Calc Power Incress....");
            NetMsg netMsg = new NetMsg
            {
                cmd = (int)Command.PshPower
            };

            netMsg.PshPower = new PshPower();

            Dictionary <ServerSession, PlayerData> onLineDictionary = _cacheSvc.GetOnLine();

            foreach (var item in onLineDictionary)
            {
                PlayerData    playerData = item.Value;
                ServerSession session    = item.Key;

                int powerMax = PeRoot.GetPowerLimit(playerData.Level);
                if (playerData.Power >= powerMax)
                {
                    continue;
                }
                else
                {
                    playerData.Power += PeRoot.PowerAddCount;
                    playerData.Time   = _timeSvc.GetNowTime();
                    if (playerData.Power > powerMax)
                    {
                        playerData.Power = powerMax;
                    }
                }

                if (!_cacheSvc.UpdatePlayerData(playerData.Id, playerData))
                {
                    netMsg.err = (int)ErrorCode.UpdateDbError;
                }
                else
                {
                    netMsg.PshPower.Power = playerData.Power;
                    session.SendMsg(netMsg);
                }
            }
        }
Esempio n. 13
0
        public void Init()
        {
            //自动获取本机IP地址
            string name   = Dns.GetHostName();
            string ipName = "";

            IPAddress[] iPAddress = Dns.GetHostAddresses(name);
            foreach (IPAddress ipa in iPAddress)
            {
                if (ipa.AddressFamily == AddressFamily.InterNetwork)
                {
                    ipName = ipa.ToString();
                }
            }
            PESocket <ServerSession, NetMsg> server = new PESocket <ServerSession, NetMsg>(); //创建Socket服务器

            server.StartAsServer(ipName, IpCfg.SrvPort);                                      //打印小提示,服务器启动成功
            PeRoot.Log("NetSvc Init Done.||网络服务.", LogType.Info);
        }
Esempio n. 14
0
    private void InitGuideCfgData()
    {
        XmlDocument xmlDocument = new XmlDocument();

        xmlDocument.Load("D:\\UNITY\\DarkGod\\Assets\\Resources\\ResCfgs\\guide.xml");

        XmlNodeList xmlNodeList = xmlDocument.SelectSingleNode("root")?.ChildNodes;

        for (int i = 0; i < xmlNodeList?.Count; i++)
        {
            XmlElement xmlElement = xmlNodeList[i] as XmlElement;

            if (xmlElement?.GetAttributeNode("ID") == null)
            {
                continue;
            }

            int      id = Convert.ToInt32(xmlElement.GetAttributeNode("ID")?.InnerText);
            GuideCfg mc = new GuideCfg
            {
                Id = id
            };

            foreach (XmlElement e in xmlNodeList[i].ChildNodes)
            {
                switch (e.Name)
                {
                case "coin":
                    mc.Coin = int.Parse(e.InnerText);
                    break;

                case "exp":
                    mc.Exp = int.Parse(e.InnerText);
                    break;
                }
            }
            guideDictionary.Add(id, mc);
        }
        PeRoot.Log("GuideCfg Init Done.||引导任务数据配置.");
    }
Esempio n. 15
0
 public void Init()
 {
     //服务层
     NetSvc.Instance.Init();
     //数据层
     DbMgr.Instance.Init();
     //缓存层
     CacheSvc.Instance.Init();
     //计时器
     TimeSvc.Instance.Init();
     //配置层
     ResCfgSvc.Instance.Init();
     //业务系统层
     PeRoot.Log("ServerRoot Init Done.||业务系统:", LogType.Info);
     LoginSys.Instance.Init();
     GuideSys.Instance.Init();
     StrongSys.Instance.Init();
     ChatSys.Instance.Init();
     BuySys.Instance.Init();
     PowerSys.Instance.Init();
     TaskSys.Instance.Init();
     BattleSys.Instance.Init();
     PeRoot.Log("等待客户端连接", LogType.Info);
 }
Esempio n. 16
0
 public void Init()
 {
     _cacheSvc  = CacheSvc.Instance;
     _resCfgSvc = ResCfgSvc.Instance;
     PeRoot.Log("TaskSys Init Done.||日常任务奖励系统.");
 }
Esempio n. 17
0
 public void Init()
 {
     _cacheSvc  = CacheSvc.Instance;
     _resCfgSvc = ResCfgSvc.Instance;
     PeRoot.Log("GuideSys Init Done.||引导任务业务系统.");
 }
Esempio n. 18
0
        public PlayerData QueryPlayerData(string acct, string pass)
        {
            bool            isNew      = true;
            PlayerData      playerData = null;
            MySqlDataReader reader     = null;

            try
            {
                MySqlCommand command = new MySqlCommand("select * from drakgod where acct=@acct", connection);
                command.Parameters.AddWithValue("acct", acct);
                reader = command.ExecuteReader();
                if (reader.Read())
                {
                    isNew = false;
                    string _pass = reader.GetString("pass");
                    if (_pass.Equals(pass))
                    {
                        ////密码正确,返回玩家数据
                        playerData = new PlayerData
                        {
                            Id    = reader.GetInt32("id"),
                            Name  = reader.GetString("name"),
                            Level = reader.GetInt32("level"),
                            Exp   = reader.GetInt32("exp"),
                            Power = reader.GetInt32("power"),
                            Vip   = reader.GetInt32("vip"),

                            Coin    = reader.GetInt32("coin"),
                            Diamond = reader.GetInt32("diamond"),
                            Crystal = reader.GetInt32("crystal"),

                            Hp        = reader.GetInt32("hp"),
                            Ad        = reader.GetInt32("ad"),
                            Ap        = reader.GetInt32("ap"),
                            AdDefense = reader.GetInt32("addefense"),
                            ApDefense = reader.GetInt32("apdefense"),
                            Dodge     = reader.GetInt32("dodge"),
                            Pierce    = reader.GetInt32("pierce"),
                            Critical  = reader.GetInt32("critical"),

                            GuideId = reader.GetInt32("guideid"),
                            Time    = reader.GetInt64("time"),
                            Battle  = reader.GetInt32("battle"),
                            //TODO
                        };

                        #region Strong
                        string[] strongArray = reader.GetString("strong").Split('#');
                        int[]    strongArr   = new int[6];
                        for (int i = 0; i < strongArray.Length; i++)
                        {
                            if (strongArray[i] == "")
                            {
                                continue;
                            }
                            if (int.TryParse(strongArray[i], out int starLevel))
                            {
                                strongArr[i] = starLevel;
                            }
                            else
                            {
                                PeRoot.Log("Parse Strong Data Error", LogType.LogError);
                            }
                        }
                        playerData.StrongArray = strongArr;
                        #endregion

                        #region Task
                        string[] taskArray = reader.GetString("task").Split('#');
                        playerData.TaskArray = new string[6];
                        for (int i = 0; i < taskArray.Length; i++)
                        {
                            if (taskArray[i] == "")
                            {
                                continue;
                            }
                            else if (taskArray[i].Length >= 5)
                            {
                                playerData.TaskArray[i] = taskArray[i];
                            }
                            else
                            {
                                throw new Exception("DataError.");
                            }
                        }
                        #endregion
                    }
                }
            }
            catch (Exception e)
            {
                PeRoot.Log(e.ToString(), LogType.LogError);
            }
            finally
            {
                reader?.Close();
                if (isNew)
                {
                    //不存在账号数据,创建新的默认账号数据,并返回
                    playerData = new PlayerData
                    {
                        Id    = -1,
                        Name  = "",
                        Level = 1,
                        Exp   = 0,
                        Power = 150,
                        Vip   = 0,

                        Coin    = 5000,
                        Diamond = 500,
                        Crystal = 500,

                        Hp          = 2000,
                        Ad          = 100,
                        Ap          = 100,
                        AdDefense   = 40,
                        ApDefense   = 40,
                        Dodge       = 5, //闪避概率
                        Pierce      = 5, //穿透比率
                        Critical    = 5, //暴击概率
                        GuideId     = 1001,
                        StrongArray = new int[6],
                        Time        = TimeSvc.Instance.GetNowTime(),
                        TaskArray   = new string[6],
                        Battle      = 10001,
                        //TODO
                    };
                    for (int i = 0; i < playerData.TaskArray.Length; i++)
                    {
                        playerData.TaskArray[i] = (i + 1) + "|0|0";
                    }
                    playerData.Id = InsertNewAcctData(acct, pass, playerData);
                }
            }
            return(playerData);
        }
Esempio n. 19
0
 public void Init()
 {
     _cacheSvc = CacheSvc.Instance;
     PeRoot.Log("BuySys Init Done.||购买业务系统.");
 }
Esempio n. 20
0
 public void Init()
 {
     _cacheSvc = CacheSvc.Instance;
     _timeSvc  = TimeSvc.Instance;
     PeRoot.Log("LoginSys Init Done.||登入业务系统.");
 }
Esempio n. 21
0
 public void Init()
 {
     _cacheSvc = CacheSvc.Instance;
     PeRoot.Log("ChatSys Init Done.||聊天业务系统.");
 }
Esempio n. 22
0
    private void InitStrongCfg()
    {
        XmlDocument doc = new XmlDocument();

        doc.Load(@"D:\UNITY\DarkGod\Assets\Resources\ResCfgs\strong.xml");

        XmlNodeList nodLst = doc.SelectSingleNode("root")?.ChildNodes;

        for (int i = 0; i < nodLst?.Count; i++)
        {
            XmlElement ele = nodLst[i] as XmlElement;

            if (ele != null && ele.GetAttributeNode("ID") == null)
            {
                continue;
            }

            if (ele != null)
            {
                int       id        = Convert.ToInt32(ele.GetAttributeNode("ID")?.InnerText);
                StrongCfg strongCfg = new StrongCfg
                {
                    Id = id
                };

                foreach (XmlElement e in nodLst[i].ChildNodes)
                {
                    int val = int.Parse(e.InnerText);
                    switch (e.Name)
                    {
                    case "pos":
                        strongCfg.Pos = val;
                        break;

                    case "starlv":
                        strongCfg.StartLevel = val;
                        break;

                    case "addhp":
                        strongCfg.AddHp = val;
                        break;

                    case "addhurt":
                        strongCfg.AddHurt = val;
                        break;

                    case "adddef":
                        strongCfg.AddDefense = val;
                        break;

                    case "minlv":
                        strongCfg.MinLevel = val;
                        break;

                    case "coin":
                        strongCfg.Coin = val;
                        break;

                    case "crystal":
                        strongCfg.Crystal = val;
                        break;
                    }
                }
                if (strongDictionary.TryGetValue(strongCfg.Pos, out var dic))
                {
                    dic.Add(strongCfg.StartLevel, strongCfg);
                }
                else
                {
                    dic = new Dictionary <int, StrongCfg> {
                        { strongCfg.StartLevel, strongCfg }
                    };
                    strongDictionary.Add(strongCfg.Pos, dic);
                }
            }
        }
        PeRoot.Log("StrongCfg Init Done.||强化数据配置.");
    }
Esempio n. 23
0
 protected override void OnConnected()
 {
     PeRoot.Log("SessionId: " + sessionId + " Client Connect...||与客户端建立连接...\n开始接收消息:");
     sessionId = ServerRoot.Instance.GetSessionId();
 }
Esempio n. 24
0
 protected override void OnReciveMsg(NetMsg msg)
 {
     PeRoot.Log("SessionId: " + sessionId + " Client Req || 客户端发送消息:" + (Command)msg.cmd);
     NetSvc.Instance.AddMsgQueue(this, msg);
 }
Esempio n. 25
0
 protected override void OnDisConnected()
 {
     LoginSys.Instance.ClearOfflineData(this);
     ServerRoot.Instance.GetSessionIdOff();
     PeRoot.Log("SessionId: " + sessionId + " Client DisConnect...||客户端断开连接...");
 }
Esempio n. 26
0
 public void Init()
 {
     DbMgr = DbMgr.Instance;
     PeRoot.Log("CacheSvc Init Done.||数据缓存层.");
 }
Esempio n. 27
0
 public void Init()
 {
     _cacheSvc  = CacheSvc.Instance;
     _resCfgSvc = ResCfgSvc.Instance;
     PeRoot.Log("BattleSys Init Done.||副本战斗系统.");
 }
Esempio n. 28
0
 public void Init()
 {
     CacheSvc = CacheSvc.Instance;
     PeRoot.Log("StrongSys Init Done.||强化业务系统.");
 }