コード例 #1
0
ファイル: WebUtil.cs プロジェクト: viticm/pap2
	/// <summary>
	/// 查询游戏数据库
	/// </summary>
	/// <param name="server">游戏服务器</param>
	/// <param name="cmd">SQL命令</param>
	/// <returns>查询结果</returns>
	/// <remarks>这个函数是同步的(会阻塞)</remarks>
	public static SqlResult QueryGameServerDb(int userId,GameServer server, SqlCommand cmd)
	{
        object outArg = null;
        //简单判断
        if (!server.IsConnected) return null;
        if (server.DoPlugInAction(userId, GameServerDb.PlugInGuid, GameServerDb.ActionKeyQuery, ref outArg, "xxx", cmd))
		{
			uint sessionId = (uint)outArg;
			for (int i = 0; i < WebConfig.GetQueryResultRetryTimes; i++)
			{
				Thread.Sleep(WebConfig.GetQueryResultDelay);
                SqlResult result = server.GetPlugInData(userId, GameServerDb.PlugInGuid, GameServerDb.DataKeyQueryResult, sessionId) as SqlResult;
				if (result != null)
				{
					return result;
				}
			}
		}

		return null;
	}
コード例 #2
0
ファイル: Automations.cs プロジェクト: viticm/pap2
		protected override bool CreateScript(GameServer server, out string script, out string input)
		{
			if (server.GameServiceState == GameServer.ServiceState.Running)
			{
				script = (string)server.GetPlugInData(0, GameServerControl.PlugInGuid, GameServerControl.DataKeyStopGameScript);
				input = null;

				return (script != null);
			}
			else
			{
				script = null;
				input = null;

				return false;
			}
		}
コード例 #3
0
ファイル: Automations.cs プロジェクト: viticm/pap2
		protected override bool CreateScript(GameServer server, out string script, out string input)
		{
			script = (string)server.GetPlugInData(0, GameServerControl.PlugInGuid, GameServerControl.DataKeyRollbackDbScript, _backupFileName);
			input = null;

			return (script != null);
		}
コード例 #4
0
ファイル: Automations.cs プロジェクト: viticm/pap2
        private MemoryStream CreatePlayerCountImageOneMonth(GameServer server, out string fileName)
        {
            LordControl.PlayerCountStatisticInfo[] _infoArray = null;
            DateTime _endTime = DateTime.Now;
            DateTime _startTime = _endTime.AddMonths(-1);

            _infoArray = server.GetPlugInData(0, LordControl.PlugInGuid, LordControl.DataKeyPlayerCountStatistic, _startTime, _endTime) as LordControl.PlayerCountStatisticInfo[];

            if (_infoArray.Length != 0)
            {
                ArrayList playerCountArrayList = new ArrayList();

                LordControl.PlayerCountStatisticInfo tempInfo = new LordControl.PlayerCountStatisticInfo();
                tempInfo.Time = _infoArray[0].Time;

                int countInOneDay = 0;

                for (int i = 0; i < _infoArray.Length; i++)
                {
                    LordControl.PlayerCountStatisticInfo info = _infoArray[i];

                    if (tempInfo.Time.Date == info.Time.Date)
                    {
                        if (info.MaxCount > tempInfo.MaxCount)
                            tempInfo.MaxCount = info.MaxCount;
                        if (info.MinCount < tempInfo.MinCount)
                            tempInfo.MinCount = info.MinCount;
                        tempInfo.AverageCount += info.AverageCount;
                        countInOneDay++;

                        if (i == _infoArray.Length - 1)
                        {
                            tempInfo.AverageCount /= countInOneDay;
                            playerCountArrayList.Add(tempInfo);
                        }
                    }
                    else
                    {
                        tempInfo.AverageCount /= countInOneDay;

                        playerCountArrayList.Add(tempInfo);

                        tempInfo = new LordControl.PlayerCountStatisticInfo();

                        tempInfo.Time = info.Time;
                        tempInfo.AverageCount = info.AverageCount;
                        tempInfo.MaxCount = info.MaxCount;
                        tempInfo.MinCount = info.MinCount;

                        countInOneDay = 1;

                        if (i == _infoArray.Length - 1)
                        {
                            playerCountArrayList.Add(tempInfo);
                        }
                    }
                }

                double[] maxCountArray = new double[playerCountArrayList.Count];
                double[] minCountArray = new double[playerCountArrayList.Count];
                double[] averageCountArray = new double[playerCountArrayList.Count];
                double[] timeArray = new double[playerCountArrayList.Count];

                for (int i = 0; i < playerCountArrayList.Count; i++)
                {
                    LordControl.PlayerCountStatisticInfo info = playerCountArrayList[i] as LordControl.PlayerCountStatisticInfo;
                    maxCountArray[i] = info.MaxCount;
                    minCountArray[i] = info.MinCount;
                    averageCountArray[i] = info.AverageCount;
                    timeArray[i] = new XDate(info.Time);
                }

                GraphPane graphPane = new GraphPane(new Rectangle(0, 0, 840, 450), String.Empty, String.Empty, String.Empty);

                graphPane.Fill = new Fill(Color.FromArgb(212, 208, 200));

                graphPane.Legend.Fill.IsVisible = false;
                graphPane.Legend.Border.IsVisible = false;
                graphPane.Legend.FontSpec.Fill.IsVisible = false;

                graphPane.XAxis.Title.Text = "时间";
                graphPane.XAxis.MajorGrid.Color = Color.DarkGreen;
                graphPane.XAxis.Type = AxisType.Date;
                graphPane.XAxis.Scale.FontSpec.Size = 11;

                graphPane.YAxis.Title.Text = "玩家数量";
                //graphPane.YAxis.MajorGrid.IsVisible = true;
                //graphPane.YAxis.MajorGrid.DashOff = 0;
                //graphPane.YAxis.MajorGrid.Color = Color.Gray;
                //graphPane.YAxis.MinorGrid.IsVisible = true;
                //graphPane.YAxis.MinorGrid.Color = Color.LightGray;
                //graphPane.YAxis.MinorGrid.DashOff = 0;
                graphPane.YAxis.Scale.Min = 0;

                graphPane.Title.Text = string.Format("{0} [ {1}  {2} ]", "玩家数量", _startTime, _endTime);

                graphPane.AddCurve("最大", timeArray, maxCountArray, Color.Red, SymbolType.Triangle);
                graphPane.AddCurve("最小", timeArray, minCountArray, Color.Green, SymbolType.TriangleDown);
                graphPane.AddCurve("平均", timeArray, averageCountArray, Color.Orange, SymbolType.Diamond);

                graphPane.AxisChange();

                fileName = server.Group.Name + "-" + DateTime.Now.Date.ToString("yyyy-MM-dd") + "-(Month)" + ".jpg";

                MemoryStream imageMemoryStream = new MemoryStream();
                graphPane.GetImage().Save(imageMemoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                imageMemoryStream.Position = 0;

                return imageMemoryStream;
            }
            else
            {
                fileName = String.Empty;
                return null;
            }
        }
コード例 #5
0
ファイル: Automations.cs プロジェクト: viticm/pap2
        private string GetPlayerCountTextOneMonthOneServer(GameServer server)
        {
            LordControl.PlayerCountStatisticInfo[] _infoArray = null;
            DateTime _endTime = DateTime.Now;
            DateTime _startTime = _endTime.AddMonths(-1);

            string contentString = String.Empty;

            _infoArray = server.GetPlugInData(0, LordControl.PlugInGuid, LordControl.DataKeyPlayerCountStatistic, _startTime, _endTime) as LordControl.PlayerCountStatisticInfo[];

            ArrayList playerCountArrayList = new ArrayList();

            if (_infoArray.Length != 0)
            {
                LordControl.PlayerCountStatisticInfo tempInfo = new LordControl.PlayerCountStatisticInfo();
                tempInfo.Time = _infoArray[0].Time;

                int countInOneDay = 0;

                for (int i = 0; i < _infoArray.Length; i++)
                {
                    LordControl.PlayerCountStatisticInfo info = _infoArray[i];

                    if (tempInfo.Time.Date == info.Time.Date)
                    {
                        if (info.MaxCount > tempInfo.MaxCount)
                            tempInfo.MaxCount = info.MaxCount;
                        if (info.MinCount < tempInfo.MinCount)
                            tempInfo.MinCount = info.MinCount;
                        tempInfo.AverageCount += info.AverageCount;
                        countInOneDay++;

                        if (i == _infoArray.Length - 1)
                        {
                            tempInfo.AverageCount /= countInOneDay;
                            playerCountArrayList.Add(tempInfo);
                        }
                    }
                    else
                    {
                        tempInfo.AverageCount /= countInOneDay;

                        playerCountArrayList.Add(tempInfo);

                        tempInfo = new LordControl.PlayerCountStatisticInfo();

                        tempInfo.Time = info.Time;
                        tempInfo.AverageCount = info.AverageCount;
                        tempInfo.MaxCount = info.MaxCount;
                        tempInfo.MinCount = info.MinCount;

                        countInOneDay = 1;

                        if (i == _infoArray.Length - 1)
                        {
                            playerCountArrayList.Add(tempInfo);
                        }
                    }
                }

                string groupName = server.Group.Name;
                contentString += "<div style=\"font-family:Arial\">" + groupName + "</div>";

                contentString += "<table>";

                string timeString = "<tr><td>时间</td>";
                string maxString = "<tr><td>最大</td>";
                string aveString = "<tr><td>平均</td>";
                string minString = "<tr><td>最小</td>";

                foreach (LordControl.PlayerCountStatisticInfo info in playerCountArrayList)
                {
                    timeString += "<td>" + info.Time.ToString("MM-dd") + "</td>";
                    maxString += "<td>" + info.MaxCount.ToString() + "</td>";
                    aveString += "<td>" + info.AverageCount.ToString() + "</td>";
                    minString += "<td>" + info.MinCount.ToString() + "</td>";
                }

                timeString += "</tr>";
                maxString += "</tr>";
                aveString += "</tr>";
                minString += "</tr>";

                contentString += timeString;
                contentString += maxString;
                contentString += aveString;
                contentString += minString;

                contentString += "</table>";

                contentString += "<br />";
            }

            return contentString;
        }
コード例 #6
0
ファイル: Automations.cs プロジェクト: viticm/pap2
        private string GetPlayerCountTextOneDayOneServer(GameServer server)
        {
            LordControl.PlayerCountStatisticInfo[] _infoArray = null;
            DateTime _endTime = DateTime.Now;
            DateTime _startTime = _endTime.AddDays(-1);

            string contentString = String.Empty;

            _infoArray = server.GetPlugInData(0, LordControl.PlugInGuid, LordControl.DataKeyPlayerCountStatistic, _startTime, _endTime) as LordControl.PlayerCountStatisticInfo[];
            
            if (_infoArray.Length != 0)
            {
                string groupName = server.Group.Name;
                contentString += "<div style=\"font-family:Arial\">" + groupName + "</div>";

                contentString += "<table>";

                string timeString = "<tr><td>时间</td>";
                string maxString = "<tr><td>最大</td>";
                string aveString = "<tr><td>平均</td>";
                string minString = "<tr><td>最小</td>";

                foreach (LordControl.PlayerCountStatisticInfo info in _infoArray)
                {
                    timeString += "<td>" + info.Time.ToString("HH:mm") + "</td>";
                    maxString += "<td>" + info.MaxCount.ToString() + "</td>";
                    aveString += "<td>" + info.AverageCount.ToString() + "</td>";
                    minString += "<td>" + info.MinCount.ToString() + "</td>";
                }

                timeString += "</tr>";
                maxString += "</tr>";
                aveString += "</tr>";
                minString += "</tr>";

                contentString += timeString;
                contentString += maxString;
                contentString += aveString;
                contentString += minString;

                contentString += "</table>";

                contentString += "<br />";
            }

            return contentString;
        }
コード例 #7
0
ファイル: GMUtil.cs プロジェクト: viticm/pap2
 public static string GetGMCommandResult(GameServer server, int userId)
 {
     string GMResult = server.GetPlugInData(userId, LordControl.PlugInGuid, LordControl.DataKeyUserGMResult, userId) as string;
     
     return GMResult;
 }