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); }
/// <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); }
public void Init() { PeRoot.Log("CfgSvc Init Done.||数据配置.", LogType.Info); InitGuideCfgData(); InitStrongCfg(); InitTaskCfgData(); InitMapCfgData(); }
public void Init() { _cacheSvc = CacheSvc.Instance; _timeSvc = TimeSvc.Instance; TimeSvc.Instance.AddTimeTask(CalcPowerAdd, PeRoot.PowerAddSpace, PETimeUnit.Minute, 0); PeRoot.Log("PowerSys Init Done.||体力恢复系统."); }
/// <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); }
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); } }
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); } }
/// <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); }
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.||日常任务数据配置."); }
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.||地图数据配置."); }
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.||计时服务."); }
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); } } }
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); }
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.||引导任务数据配置."); }
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); }
public void Init() { _cacheSvc = CacheSvc.Instance; _resCfgSvc = ResCfgSvc.Instance; PeRoot.Log("TaskSys Init Done.||日常任务奖励系统."); }
public void Init() { _cacheSvc = CacheSvc.Instance; _resCfgSvc = ResCfgSvc.Instance; PeRoot.Log("GuideSys Init Done.||引导任务业务系统."); }
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); }
public void Init() { _cacheSvc = CacheSvc.Instance; PeRoot.Log("BuySys Init Done.||购买业务系统."); }
public void Init() { _cacheSvc = CacheSvc.Instance; _timeSvc = TimeSvc.Instance; PeRoot.Log("LoginSys Init Done.||登入业务系统."); }
public void Init() { _cacheSvc = CacheSvc.Instance; PeRoot.Log("ChatSys Init Done.||聊天业务系统."); }
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.||强化数据配置."); }
protected override void OnConnected() { PeRoot.Log("SessionId: " + sessionId + " Client Connect...||与客户端建立连接...\n开始接收消息:"); sessionId = ServerRoot.Instance.GetSessionId(); }
protected override void OnReciveMsg(NetMsg msg) { PeRoot.Log("SessionId: " + sessionId + " Client Req || 客户端发送消息:" + (Command)msg.cmd); NetSvc.Instance.AddMsgQueue(this, msg); }
protected override void OnDisConnected() { LoginSys.Instance.ClearOfflineData(this); ServerRoot.Instance.GetSessionIdOff(); PeRoot.Log("SessionId: " + sessionId + " Client DisConnect...||客户端断开连接..."); }
public void Init() { DbMgr = DbMgr.Instance; PeRoot.Log("CacheSvc Init Done.||数据缓存层."); }
public void Init() { _cacheSvc = CacheSvc.Instance; _resCfgSvc = ResCfgSvc.Instance; PeRoot.Log("BattleSys Init Done.||副本战斗系统."); }
public void Init() { CacheSvc = CacheSvc.Instance; PeRoot.Log("StrongSys Init Done.||强化业务系统."); }