示例#1
0
                /// <summary>
                /// Lievo IDとパスワードを使用してゲームを起動します。
                /// ゲームクライアントのアップデートがある場合にはランチャーを起動します。
                /// </summary>
                /// <param name="id">LievoID</param>
                /// <param name="password">アカウントパスワード</param>
                public new static void startGame(string id, string password)
                {
                    LievoLoginController clsLoginCon = new LievoLoginController();

                    clsLoginCon.initialize();
                    System.Text.Encoding enc = System.Text.Encoding.GetEncoding("Shift_JIS");
                    string          url;
                    string          param = "";
                    HttpWebResponse res;
                    string          html;

                    // ネットワーク接続を試みる
                    while (!LoginController.isAliveNetwork())
                    {
                        SimpleLogger.WriteLine("does not connect network.");
                        DialogResult dgRes = MessageBox.Show("ネットワークに接続されていないため、処理を続行できません。", "Trickster Tools", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
                        if (dgRes == DialogResult.Cancel)
                        {
                            return;
                        }
                    }



                    // パラメータ
                    param  = @"fUserID=" + ProgramController.UrlEncode(id, Encoding.GetEncoding("Shift_JIS"));
                    param += "&fUserPW=" + ProgramController.UrlEncode(password, Encoding.GetEncoding("Shift_JIS"));

                    try
                    {
                        /*
                         *
                         * Lievoトリックスタートップページに接続
                         *
                         */
                        url = "http://www.lievo.jp/contents/trickster/index.php";
                        clsLoginCon.doRequest(url, LoginController.RequestMethod.GET, null, 60000, null);

                        // レスポンスの取得と読み込み
                        res = clsLoginCon.getResponse();


                        /*
                         *
                         * Lievoにログイン
                         *
                         */
                        url = "https://www.lievo.jp/contents/trickster/mall/process/login.php";
                        clsLoginCon.doRequest(url, LoginController.RequestMethod.POST, param, 5000, "http://www.lievo.jp/contents/trickster/index.php");

                        // レスポンスの取得と読み込み
                        res = clsLoginCon.getResponse();


                        if (res.ResponseUri.AbsoluteUri == "http://www.lievo.jp/trickster/mall/error.asp")
                        {
                            SimpleLogger.WriteLine("Failed to login lievo.jp.");
                            MessageBox.Show("Lievo トリックスター にログインできませんでした。", "Trickster Tools", MessageBoxButtons.OK, MessageBoxIcon.Error);

                            clsLoginCon.ResponseClose();
                            clsLoginCon.initialize();
                            return;
                        }


                        /*
                         *
                         * Lievoトリックスタートップページに接続
                         *
                         */
                        url = "https://www.lievo.jp/contents/trickster/";
                        clsLoginCon.doRequest(url, LoginController.RequestMethod.POST, null, 5000, "https://www.lievo.jp/contents/trickster/mail/process/login.php");


                        /*
                         *
                         * LievoからTricksterへ起動を投げる
                         *
                         */
                        url = "https://www.lievo.jp/contents/trickster/gameloader/gamestart.php";
                        clsLoginCon.doRequest(url, LoginController.RequestMethod.GET, null, 5000, "https://www.lievo.jp/contents/trickster/");

                        // レスポンスの取得と読み込み
                        res = clsLoginCon.getResponse();

                        html = clsLoginCon.getResponseStream();

                        /*
                         * 取得したHTMLからランチャー起動用IDとキーを取得する
                         * <html xmlns="http://www.w3.org/1999/xhtml">
                         *
                         * <head>
                         * <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" />
                         * <title>トリックスター0 -ラブ-起動</title>
                         * <script language="JScript" type="text/javascript"><!--
                         * function execGame() {
                         *
                         *
                         *
                         * var objActiveX = document.activeXObj
                         * var dd = new Date();
                         * objActiveX.loader.UA = 'LV:0000000';		←★ クライアント起動時のID
                         * objActiveX.loader.PA = '0000000000';		←★ クライアント起動時のパスワード
                         * objActiveX.loader.DS = 'ee2d0ed0b6360caeb8c28201fbf8bcd4';
                         * objActiveX.loader.go();
                         *
                         *
                         * window.setTimeout("closeWin()",500);
                         * }
                         *
                         * function closeWin() {
                         *  window.close();
                         * }
                         * --></script>
                         *
                         * </head>
                         * <body background="./img/bg.jpg" onload="execGame()">
                         * <br />
                         *
                         *
                         * <form name="activeXObj" action="">
                         * <object id="loader" width="0" height="0"
                         *   CLASSID="CLSID:D85BD1B8-0000-4C5B-80D1-04AF514D200A"
                         *   codebase="https://www.lievo.jp/trickster/trickloader.cab#Version=1,0,0,001">
                         * </object>
                         * </form>
                         *
                         * </body>
                         * </html>
                         *
                         */
                        int    seekStart, seekEnd;
                        string seekStartString, seekEndString;
                        string startID;
                        string startKey;

                        seekStartString = "objActiveX.loader.UA = '";
                        seekEndString   = "';";
                        seekStart       = html.IndexOf(seekStartString) + seekStartString.Length;
                        seekEnd         = html.IndexOf(seekEndString, seekStart) - seekStart;

                        startID = html.Substring(seekStart, seekEnd);

                        seekStartString = "objActiveX.loader.PA = '";
                        seekStart       = html.IndexOf(seekStartString) + seekStartString.Length;
                        seekEnd         = html.IndexOf(seekEndString, seekStart) - seekStart;

                        startKey = html.Substring(seekStart, seekEnd);


                        /*
                         *
                         * ランチャー起動
                         *
                         */
                        clsLoginCon.runGame(startID, startKey);
                    }
                    catch (WebException we)
                    {
                        SimpleLogger.WriteLine(we.GetType().ToString() + Environment.NewLine + we.Message);
                        //MessageBox.Show("例外エラー:" + we.GetType().ToString() + Environment.NewLine + we.Message.ToString(), "Trickster Tools", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                        throw we;
                    }
                    finally
                    {
                        clsLoginCon.ResponseClose();
                        clsLoginCon.initialize();
                    }
                }
                /// <summary>
                /// Lievo ID�ƃp�X���[�h��g�p���ăQ�[����N�����܂��B
                /// �Q�[���N���C�A���g�̃A�b�v�f�[�g������ꍇ�ɂ̓����`���[��N�����܂��B
                /// </summary>
                /// <param name="id">LievoID</param>
                /// <param name="password">�A�J�E���g�p�X���[�h</param>
                public static new void startGame(string id, string password)
                {
                    LievoLoginController clsLoginCon = new LievoLoginController();
                    clsLoginCon.initialize();
                    System.Text.Encoding enc = System.Text.Encoding.GetEncoding("Shift_JIS");
                    string url;
                    string param = "";
                    HttpWebResponse res;
                    string html;

                    // �l�b�g���[�N�ڑ�����݂�
                    while (!LoginController.isAliveNetwork())
                    {
                        SimpleLogger.WriteLine("does not connect network.");
                        DialogResult dgRes = MessageBox.Show("�l�b�g���[�N�ɐڑ�����Ă��Ȃ����߁A�����𑱍s�ł��܂���B", "Trickster Tools", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);
                        if (dgRes == DialogResult.Cancel)
                        {
                            return;
                        }
                    }

                    // �p�����[�^
                    param = @"fUserID=" + ProgramController.UrlEncode(id, Encoding.GetEncoding("Shift_JIS"));
                    param += "&fUserPW=" + ProgramController.UrlEncode(password, Encoding.GetEncoding("Shift_JIS"));

                    try
                    {

                        /*
                         *
                         * Lievo�g���b�N�X�^�[�g�b�v�y�[�W�ɐڑ�
                         *
                         */
                        url = "http://www.lievo.jp/contents/trickster/index.php";
                        clsLoginCon.doRequest(url, LoginController.RequestMethod.GET, null, 60000, null);

                        // ���X�|���X�̎擾�Ɠǂݍ���
                        res = clsLoginCon.getResponse();

                        /*
                         *
                         * Lievo�Ƀ��O�C��
                         *
                         */
                        url = "https://www.lievo.jp/contents/trickster/mall/process/login.php";
                        clsLoginCon.doRequest(url, LoginController.RequestMethod.POST, param, 5000, "http://www.lievo.jp/contents/trickster/index.php");

                        // ���X�|���X�̎擾�Ɠǂݍ���
                        res = clsLoginCon.getResponse();

                        if (res.ResponseUri.AbsoluteUri == "http://www.lievo.jp/trickster/mall/error.asp")
                        {
                            SimpleLogger.WriteLine("Failed to login lievo.jp.");
                            MessageBox.Show("Lievo �g���b�N�X�^�[ �Ƀ��O�C���ł��܂���ł����B", "Trickster Tools", MessageBoxButtons.OK, MessageBoxIcon.Error);

                            clsLoginCon.ResponseClose();
                            clsLoginCon.initialize();
                            return;
                        }

                        /*
                         *
                         * Lievo�g���b�N�X�^�[�g�b�v�y�[�W�ɐڑ�
                         *
                         */
                        url = "https://www.lievo.jp/contents/trickster/";
                        clsLoginCon.doRequest(url, LoginController.RequestMethod.POST, null, 5000, "https://www.lievo.jp/contents/trickster/mail/process/login.php");

                        /*
                         *
                         * Lievo����Trickster�֋N���𓊂���
                         *
                         */
                        url = "https://www.lievo.jp/contents/trickster/gameloader/gamestart.php";
                        clsLoginCon.doRequest(url, LoginController.RequestMethod.GET, null, 5000, "https://www.lievo.jp/contents/trickster/");

                        // ���X�|���X�̎擾�Ɠǂݍ���
                        res = clsLoginCon.getResponse();

                        html = clsLoginCon.getResponseStream();

                        /*
                         * �擾����HTML���烉���`���[�N���pID�ƃL�[��擾����
                         * <html xmlns="http://www.w3.org/1999/xhtml">
                         *
                         * <head>
                         * <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" />
                         * <title>�g���b�N�X�^�[0 -���u-�N��</title>
                         * <script language="JScript" type="text/javascript"><!--
                         * function execGame() {
                         *
                         *
                         *
                         * var objActiveX = document.activeXObj
                         * var dd = new Date();
                         * objActiveX.loader.UA = 'LV:0000000';		���� �N���C�A���g�N������ID
                         * objActiveX.loader.PA = '0000000000';		���� �N���C�A���g�N�����̃p�X���[�h
                         * objActiveX.loader.DS = 'ee2d0ed0b6360caeb8c28201fbf8bcd4';
                         * objActiveX.loader.go();
                         *
                         *
                         * window.setTimeout("closeWin()",500);
                         * }
                         *
                         * function closeWin() {
                         *  window.close();
                         * }
                         * --></script>
                         *
                         * </head>
                         * <body background="./img/bg.jpg" onload="execGame()">
                         * <br />
                         *
                         *
                         * <form name="activeXObj" action="">
                         * <object id="loader" width="0" height="0"
                         *   CLASSID="CLSID:D85BD1B8-0000-4C5B-80D1-04AF514D200A"
                         *   codebase="https://www.lievo.jp/trickster/trickloader.cab#Version=1,0,0,001">
                         * </object>
                         * </form>
                         *
                         * </body>
                         * </html>
                         *
                         */
                        int seekStart, seekEnd;
                        string seekStartString, seekEndString;
                        string startID;
                        string startKey;

                        seekStartString = "objActiveX.loader.UA = '";
                        seekEndString = "';";
                        seekStart = html.IndexOf(seekStartString) + seekStartString.Length;
                        seekEnd = html.IndexOf(seekEndString, seekStart) - seekStart;

                        startID = html.Substring(seekStart, seekEnd);

                        seekStartString = "objActiveX.loader.PA = '";
                        seekStart = html.IndexOf(seekStartString) + seekStartString.Length;
                        seekEnd = html.IndexOf(seekEndString, seekStart) - seekStart;

                        startKey = html.Substring(seekStart, seekEnd);

                        /*
                         *
                         * �����`���[�N��
                         *
                         */
                        clsLoginCon.runGame(startID, startKey);

                    }
                    catch (WebException we)
                    {
                        SimpleLogger.WriteLine(we.GetType().ToString() + Environment.NewLine + we.Message);
                        //MessageBox.Show("��O�G���[:" + we.GetType().ToString() + Environment.NewLine + we.Message.ToString(), "Trickster Tools", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                        throw we;
                    }
                    finally
                    {
                        clsLoginCon.ResponseClose();
                        clsLoginCon.initialize();
                    }
                }