はじめに

本プログラムの製作者である nibiironokane は、対応するブラウザゲーム(プラグイン)を精力的に増やしていく考えではありますが、実際には、仕事や個人的な私生活のために、開発に割ける時間が限られています。
そこで、対応するブラウザゲームを少しでも増やせるように、プラグインを開発するノウハウを一般に公開し、有志によるプラグイン開発の可能性を用意することにしました。

 

プラグインについて

ブラゲ専用ブラウザ「かなへび」では、ActionScript3.0 で作成された専用の Flash プログラム(以降はプラグインと呼ぶ)を読み込んで、ブラウザゲームへのログイン及び起動を実現しています。

 

かなへびのプログラム本体とプラグインは、一定の決まった命令の送信と受信を行っています。
この「一定の決まった命令の送信と受信」は、独自のEXEInvokerクラスのstaticメンバ関数に実装されています。

 

ゲームプログラムの再生には、そのゲームプログラムが存在するURLと、セッションIDなどが含まれたパラメーターを用意する必要があります。
EXEInvokerクラスでは、これらの値を引数として関数に与えることで、実際にゲームプログラムを再生することができます。

 

ダウンロード

サンプルとして、クリスタル◆コンクエスト プラグインのプロジェクトソースを公開します。

 

2013/10/31 ver0.1 CrystalConquestLoginer-0.1-src.zip (2.84MB) developed by nibiironokane

 

基本的なコードの使い方は、下記のマニュアルに掲載しています。
自由に改変して、お好きなブラウザゲームのプラグインを作ってみてください。
作成したソースを提供していただければ、新たなプラグインとして、本ホームページに追加させていただきます。

 

マニュアル

プラグインのプログラムの基本的な流れは以下のようになります。

 

なお、ログインエラーなどの細かい処理は省略しています。
実際のソースをご覧になって確かめてください。

 

プログラムソース(ActionScript 3.0, Flex)

ログイン画面の構成は、Flexでコードしています。
実際のプログラムは、その次の「CrystalConquestLoginerCoreクラス」を参照してください。

 

CrystalConquestLoginer.mxml

<?xml version="1.0" encoding="utf-8"?>
<core:CrystalConquestLoginerCore xmlns:fx="http://ns.adobe.com/mxml/2009"
                   xmlns:s="library://ns.adobe.com/flex/spark"
                   xmlns:mx="library://ns.adobe.com/flex/mx"
				   xmlns:core="*"
				   xmlns:support="com.nibiirosoft.loginers.supportClasses.*">
	<core:layout><s:BasicLayout /></core:layout>

	<s:BitmapImage source="@Embed(source='images/crystalconquenst_bg.jpg')" smooth="true" />

	<support:LoginFormWindow id="loginForm" x="170" y="380" />

	<support:ImageButton id="loginButton" x="752" y="355" toolTip="クリックでゲームを開始します。"
		normalImage="@Embed(source='images/crystalconquenst_login.png')" 
		mouseOverImage="@Embed(source='images/crystalconquenst_login.png')"
		mouseDownImage="@Embed(source='images/crystalconquenst_login_selected.png')" />

</core:CrystalConquestLoginerCore>
 

CrystalConquestLoginerCore.as

package  
{
	import com.nibiirosoft.core.EXEInvoker;
	import com.nibiirosoft.loginers.supportClasses.LoginerCore;

	// 最低限のルーチンを共通化したLoginerCoreクラスを継承します。
	public class CrystalConquestLoginerCore extends LoginerCore
	{

		// ログインページ、ログインアクション、ゲームページのアドレスを定義します。
		override protected function get LOGIN_PAGE_URL():String {
			return "http://sqex-bridge.jp/login?return_to=http%3A%2F%2Fcrystalconquest.jp%2Flogin"; }
		override protected function get LOGIN_ACTION_URL():String {
			return "https://login.yahoo.co.jp/config/login"; }
		override protected function get GAME_PAGE_REDIRECT_URL():String {
			return "http://w001.crystalconquest.jp/"; }


		// 画面構成を初期化します。
		override protected function onCreationComplete(event:FlexEvent):void
		{
			super.onCreationComplete(event);

			// 必要に応じて、利用できる再生モードを制限します。
			loginForm.uniPlayerCheck.visible = false;
		}

		// ログインに必要なパラメーターを作成します。
		override protected function getFormData(html:String):Array
		{
			/* 詳細は省きますが、入力したログインIDやパスワードなどをここで使用します。
			   実際にはより多くのパラメーターが必要になります。
			   ログインするサイトのフォームに従って用意してください。 */
			return [
				{ name: 'login', value: loginForm.ID.text },
				{ name: 'passwd', value: loginForm.PASS.text }
			];
		}

		// ログインが完了し、実際にゲームを起動します。
		override protected function onGamePageOpen():void 
		{
			// ゲームのページから、ゲームを起動するためのパラメーターを取得します。
			if (patternSrc.test(_httpEngine.data)) {
				/* _src変数には、Flash(.swf)のアドレスが代入されます。
				   _bridge_session_id変数には、ログインした個人を特定するセッションIDが代入されます。 */
				_src = patternSrc.exec(_httpEngine.data)[1];
				_bridge_session_id = patternSessionID.exec(_httpEngine.data)[1];

				/* ExternalInterfaceクラスをパッケージングした、EXEInvokerを使い、
				   ActiveX、スタンドアロンFlashPlayer、Unityなどの再生モードに合わせ、ブラウザに命令を送ります。 */
				if (EXEInvoker.available) {
					// まず始めに、ゲーム画面のサイズを設定します。
					EXEInvoker.setPlayerWindowSize(_width, _height);

					// runPlayer()関数は、現在選択されている再生モードに合わせて、パラメーターをブラウザに送信します。
					runPlayer(_src, "bridge_session_id=" + _bridge_session_id);

					/* ほとんどの場合は必要ありませんが、クリスタル◆コンクエストは例外的で、
					   画面サイズを変更すると画面構成が乱れてしまうため、起動ごとに画面サイズをリセットします。 */
					EXEInvoker.resizePlayerWindow(_title, _width, _height);
				}
				else {
					notifier("成功しました");
				}
			}
			else {
				notifier("ログインには成功しましたが、セッションIDの取得に失敗しました。");
			}
			
			/* ログイン処理が終了したら、loginClose()関数を実行してください。
			   ログインの処理中を示すクルクルが消えます。 */
			loginClose();
		}

	}
}
 

コメント

コメントはありません。 コメント/プラグイン開発?

お名前: URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White