忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2026/04/10 14:55 |
Xbox360シューティングフェスタ2010に行ってきた

Xbox360シューティングフェスタ2010に行ってきました。

12時ちょうど頃に着きましたが並び順は102番目。
12:30開場のときには既に270人で、その後は入場制限されてしまったようです。

具体的な発表なんかは各メディアサイトスライドを見た方が早いので、体験したゲームの感想などを。
そういやセガ山下氏の発表のとき、「村山ってディレクター連れてきたんですが『シュタゲの設定資料買ってくる』と出ていったのでちょっと今いません」とか言ってたのには笑った。
もちろん帰りに買いました。


デススマイルズIIXは先着200人のみがプレイできるという仕様でした。
試遊は前半2面。
基本的に1と変わらないテイストでした。
レベル3でもボスがやたら柔らかかったのですがこんなものだっけ?

そんなことよりみんなが選んでたキャラがローザとフォレットばっかりだったのですがお前らそんなにまんじゅう好きか。私は大好きです。
しかし5月27日って発売日近いね。びっくりだ。


ぐわんげはさすがにオリジナルが1999年なだけあって今から見ると古い感じがした。
モデルが無いからHD化は無理ということらしいです。
発売したら?当然買いますよ。

それにしても本日発表したばっかりのタイトルを早々と試遊とかすごいなケイブ。
どちらも開発中という感じが全然なく、今すぐ発売しても正直問題無いんじゃないかと思うような出来でした。
まあ展示してあったほぼ全タイトルで思ったことですが。


KOFスカイステージは果てしなく微妙。
なんというか特筆すべきことがない。


今回一番面白かったのがアフターバーナークライマックス。
試遊台では通常コントローラ2台、フライトスティック2台でしたが残念ながら通常コントローラ台。
ただ、後ろから見てる分には通常コントローラのほうがダイナミックな感じで面白そうでした。
ゲーム自体はアフターバーナーをそのままパワーアップさせました的内容です。
3面が渓谷面でしたがかなり脳汁。
デモで建物内を飛ぶ映像が流れていたのですが死ぬほどやりてー。


レイストームやケツイも試遊台あったのですが人が多すぎたので断念。
人混みはやはり苦手だ。

レイストームは見た目的には問題なさげに見えたんだがいつまでも出ないのには何か理由があるのだろうか。


おみやげにデスマ2のマグカップと下敷き、センコロDuoのポスターと360のストラップを頂きました。
セガも5pbもケイブもがんばれ。超がんばれ。
あとMSもな。

PR


2010/02/27 18:44 | Comments(0) | TrackBack() | ゲーム
EC-CUBE 会員専用サイトに

EC-CUBEはデフォルト設定では、非会員の人も商品を閲覧、検索、購入できるようになっています。
非会員は特定の機能を使用できないように変更してみます。

EC-CUBEのインスタンスの基底となるファイルは/data/class/pages/LC_Page.phpです。
そして、基底ファイルはそれしかありません。
対応する/data/class_extends/page_extends/LC_Page_Ex.php的なものが存在しません。
つまり、サイト全体に関わる変更を行いたい場合は直接これをいじるしかないんだよね。

また、LC_Page::process()は、継承されたクラスでは何故か呼び出されていません。
従って、LC_Page::init()で判定を行う必要があります。

/data/class/pages/LC_Page.php
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
    function init() {
        //ログインしていない場合、指定したページの閲覧を禁止します
        
        //2回目以降の呼び出しではログインチェックをパス
            static $login_checked=false;
            if($login_checked===true){return true;}
            $login_checked=true;
        
        //ログインを強要するURLリスト
            $force_login_page=array(
                 'products/'    //商品ページ、検索等
                ,'cart/'        //買い物かご
                ,'shopping/'    //購入ページ
            );
        
        //$force_login_pageにひっかからなければ何もしない
            if($this->str_match_array(
              $_SERVER['PHP_SELF'],$force_login_page) === false){
                return true;
            }
        
        //ログインチェックし、ログイン状態であれば何もしない
            $objCustomer = new SC_Customer();
            if($objCustomer->isLoginSuccess()) {
                return true;
            }
        
        //ログイン状態でなければサイトトップにリダイレクト
            $this->sendRedirect(SITE_URL);
    }
 
    /*
     * ↑LC_Page::init()で使ってる、単なる配列対応のpreg_match()的なもの
     */
    function str_match_array($haystack,$needle_array) {
        if(!is_array($needle_array)){return false;}
        $needle_array=array_unique($needle_array,SORT_STRING);
        foreach($needle_array as $needle){
            if(strpos($haystack,$needle)!==false){
                return true;
            }
        }
        return false;
    }

 


以上で、商品ページおよび検索機能、買い物かご、購入ページはログイン状態でないと使用できないようになりまし……管理画面の商品管理(/html/admin/products/)で誤爆する!
URLにadminが入ってたらログイン強要URLから排除、みたいなロジックを入れておきましょう。
会員登録やマイページ、各ブロックや前回作ったヴィジェットなどは今までどおり使用できます。

今回はサイトトップにリダイレクトしてますが、もちろんエラーページの表示などを行うこともできます。

作成しながら気になったのですが、このLC_Page、ページやブロックを呼び出すたびに毎回実行されます。
サイトトップにログインブロック、商品検索ブロック、新着情報ブロック、お薦め商品ブロック、カレンダーブロックを表示していたらLC_Page::init()がなんと6回も実行されることに。
ログイン状態は一回チェックしたら2回目以降はチェックする必要ありません。
毎回SC_Customerのインスタンス化とか非常に無駄ですので、2回目以降はパスするようにしましょう。
今回は手っ取り早くstaticで実装しています。

ブロックは/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc.phpLC_Page_FrontParts_Blocを継承しているので、ブロックにだけ行いたい処理があった場合はそちらに書けばいいのですが、レイアウトだけが継承しているクラスは無く、いきなりLC_Pageを継承しています。
なのでレイアウトにだけ行いたい処理を書いたりする場所がありません。
LC_Page_FrontParts_Bloc::init()parent::init_block()とか書いて無理矢理分類するしかないんじゃろうか。


マスタデータを覗いていたらmtb_disable_logoutなるテーブルを見つけたので、これを利用すればいちいち実装しなくてもどうにかなるのかもしれないがよくわからなかった。

↓参考
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=870&forum=10


EC-CUBEの記事
 



2010/02/26 22:48 | Comments(0) | TrackBack() | PHP
==NOVEL PHILOSOMA== 03

 西暦2088年、科学探査船「S・ホーキング」は、96名の科学者を乗せて星域探査に出発した。探査星域は、第13軍管区……プラネット220が存在する空域だ。星域到着から47時間後、ホーキングはメイディの発信と共に消息を絶った。連合政府は直ちに第13軍管区に対してサーチ・アンド・レスキュー(捜索と救難)を命じた。
 SCVギャラントは、39隻投入された捜索艦隊の中の一隻だった。キナバルは副長としてギャラントに乗艦していた。
 捜索開始から56時間後、船体の引き裂かれたホーキングをギャラントは発見した。ただちに救助が開始されたが、乗員は全員が行方不明となっていた。破損したブロックから吸い出されたものと推定された。
 これがただの民間宇宙船なら、「遺憾極まる悲劇」のひとことで捜索の幕は閉じたはずだ。
 キナバルにとっての不幸は、ホーキングが各国の著名な科学者を乗せた科学探査船だったことだ。この遭難は、連合政府の存続を揺るがす大問題へと発展してしまった。
 連合政府は、地球を筆頭に各地域の代表が入閣して構成されていた。地球、月、火星、スペースコロニー群、それに各星域に発見された居住可能な植民星……要するに人類が展開している各ポイントの代表が寄り集まった政権だ。皮肉にも16年前、これらはそれぞれ独立していた。無論、そのための政治的駆け引き、謀略、独立戦争を三度ほど経験し、数億の人口を犠牲にした飢えでの話だ。
 しかし、宇宙開発にかかるコストは莫大だった。設備の維持、防衛力の維持にも金がかかりすぎた。宇宙開発は一地域のみで実現するには荷が勝ちすぎたのだ。経済破綻を恐れた各地域は(シミュレーションでは混乱による死傷者は数十億という結果が出た)再び統合の道を歩むことを決断した。
 ナショナリズムも民族主義の壁も乗り越え、5年の移行期間を経て、連合政府は発足した。その中で誕生したのがUNF(連合軍)とUASA(連合高等科学局)だ。前者は防衛を、後者は各国合同の科学研究局として誕生した。
 基本的に、この連合政府はうまく機能した。だが、波風が立った時期もある。その原因の多くは、各地域の民衆から沸き起こる「独立」への回帰だった。民族主義とナショナリズムのゆらぎは、定期的に各地域を揺さぶった。
 キナバルにとって不幸なことに、ホーキングは、各地域で再び独立運動が沸き起こったときに遭難した。一部の政治家はこの遭難を利用して民衆を扇動、対立をあおった。
 混乱の収拾には、誰かが責任をとらねばならなかった。その生け贄とされたのが、ギャラント副長の地位にあったキナバルだった。
 キナバルにとって重ね重ねの不幸は、ギャラントの艦長が連合政府高官の息子だったことだ。彼の代りにキナバルは泥を被る羽目になり、降格処分を受けた。
 この処分とほぼ同時期、第13軍管区はアンタッチャブル・エリアに指定され、UNF以外の宇宙船の進入は禁止された。ホーキングの遭難は、隕石の直撃を受けたのが原因だった。このエリアは隕石帯の異様に比率が高く、類似事故の防止のためだと発表があった。
 やがて、さらに大きな災害―――バイオハザードによる植民星の全滅―――が起きたことで、民衆はこの事件を忘れた。
 だが、キナバルに対する処分はそのままだった。彼は中佐から少佐に降格され、さらに辺境の補給部隊に左遷された……。
 6年後、この事実はキナバルに有利に働いた。ギャラントの艦長の父親が、連合政府大統領になったのだ。そして、元艦長は方面群艦隊司令に就任した。彼等は、罪を黙って被ったキナバルに報いるため、彼を大佐に昇進させてギャラント艦長に任命、最新鋭戦闘攻撃機、ストレガをギャラントに最優先で配備した。「UNF奇跡の人事」と巷で評されたキナバルの昇進には、そんな裏があった。もっとも、それでキナバルがやっかみを受けることはあまりなかった。なぜならギャラントは、各部隊をエリミネートされた札付きの部下たちだけで編成されていたからだ。
 ギャラントは、通称"ディープ29"と呼ばれていた。「これ以上墜ちるところはない」という意味出だ。兵学校で同期だった友人(彼は既に准将に昇進していた)は、開口一番いってくれたものだ。
「昇進の代償にゴロツキ部隊のお守りとはね。大変だな、君も」
 同情と共に、半ば嘲りも込められていたことをキナバルは思い出した。彼はインドの血を引く誇り高い男だった。家系をさかのぼれば、独立運動の闘志からインド軍将軍まで努めた者がいるのがキナバル家だ。
 名誉にかけて、自分を嘲笑った者たちを見返してやらねばならない……キナバルはそう思った。ならば、220が発信したエマーコールは、汚名挽回のチャンスではないのか?
「これまでのことはプロローグ、か……」
 気を取り直したキナバルは独り呟いた。
「またシェイクスピアですか、大佐?」
 キナバルは振り向いた。いつの間にか副長のコックス少佐が傍らに立っていた。
 アイバン・コックス少佐は、はげ上がった頭にメタルフレームの眼鏡がよく似合う理知的な顔立ちの男だった。その知的能力は、軍人よりも科学者のそれに近い。知能指数も150はあるはずだ。
 キナバルは微笑した。
「ああ……少佐、君もそろそろ古典を読んだらどうだ?」
「考えておきます」
 コックスは軽く受け流した。キナバルは、世間では軍人よりはシェイクスピアの研究家として著名だった。退役後は優雅な研究生活が待っているのだろうが……今のコックスには、文学のヨタ話につき合う気はなかった。
「大佐、グレインジャーはどうします?」
 キナバルは微かに思案の表情を浮かべた。グレインジャーとは、補給コンテナを搭載した空中補給機の事だ。
「君の判断は?」
「エマーコールの内容が不明です。無駄に終わるかもしれませんが……」
 口ではそう言いつつも、コックスは明らかに懸念の表情を浮かべていた。
「よし、出そう。デルタの後に発鑑させろ」
「イエッサー」
 その時、緊急通信を示すフラッシュサインが点滅した。コックスは無線マイクを掴んだ。
「どうした?」
「こちらブラボー・リーダー、ターナー。交戦空域を宣言……」
「なに?」
 漆黒の宇宙には、ミショーのストレガを先頭に六機が飛行していた。
「チャーリー・アンド・デルタ、発鑑完了」
 ミショーはキャット・コー(空母航空管制センター)に報告した。間髪を入れず管制士官が切り返してきた。
「ラジャー、貴チームをレーダーで確認。ヘディング214、大気圏突入に備えろ」
「ラジャー」
 ミショーは機体制御モードセレクターを大気圏突入に切り替えた。ディスプレイが点滅し、220のグランドマップが表示される。続いてマップにグリーンのグリッドが被さり、目標位置マーカー、方位マーカーが点滅した。コックスのコールはその時だった。
「ギャラントよりチャーリー・リーダー。先行したアルファとブラボーは交戦中。相手はフレンドリーだ」
「フレンドリー?」
 ミショーに続いてラングのコールが響いた。
「味方がなぜ攻撃を?」
「防衛システムのブレイクダウンだ。交戦を避け、渓谷から進入しろ」
 ミショーは微かに舌打ちした。都市防衛システムはどの惑星でも人件費の関係から無人で運営されている。ブレイクダウンは今に始まった事ではない……。
「アリス、ルート変更」
 了解を意味する電子音と共にストレガ全機の降下制御プログラムが一斉に起動した。
 ミショーの機体で交わした情報はリアルタイムで他の機体のアリスに流されていた。アリスは、個体情報を瞬時にデータリンクによって全体に共有化する事が出来た。さらに、情報の価値を自動判別し、瞬時に優先順位をつける機能も搭載されている。パイロットの仕事は、それを確認する事だけだった。なぜなら、ストレガに関する限りアリスの誤動作はゼロだからだ。ストレガ一機につきアリスは七台搭載されていた。それにより同一問題を多数決方式により処理し、誤動作をほぼ完璧に防いでいた。また、問題を並列処理することで高速化も実現していた。
 今のところアリスを巡ってのトラブルは皆無で、技術者たちは勝利を収め続けていた。それも当然といえた。アリスの開発には10年の歳月が傾けられたが、その大半はシステムとしての信頼性と安全性を確保するために消費されていた。ロジック、ソースコードに存在する問題点を洗い直し、アルゴリズムをチェックし、デバッグを繰り返し、実機に搭載しフライトテストを幾度も……あらゆるパートに難関は待ち受けていたが、彼等はついに全てのハードルをクリアーした。
 このAIは、正式名称の他に"Alice"「アリス」のニックネームを授かり、2年前にUNFに正式採用された。
 アリスは何かの頭文字のように思えるが、実は、ルイス・キャロルの小説「不思議の国のアリス」のヒロインからの引用だった。ルイス・キャロルは、本名をC.L.ドッチスンという数学者兼論理学者だった。彼は小説やパラドックスの発案者というだけではなく、本業の論理学でも業績をあげていた。アリスの命名は、AIに関連する論理学に貢献した、ドッチスンの業績を記念してのものだった。また、人間工学の見地から見ても、女性の名前の方が好ましいと言う(もっともらしい)理由もあった。それ故、アリスのボイスはやや女性寄りに調整されていた。
「降下制御プログラムスタート」
 大気圏突入を前にアリスがリポートを始めた。このシークエンスに人間は介入しない。全て自動で処理されるのである。
「SIF・モードセレクター3」
 SIF―――味方特徴識別装置をアリスは最適モードにセットし、続けて、大気圏突入において最も重要なデバイスを作動させた。
「ヴァリュート展開」
 轟音と共にストレガの胴体下部を黒い物体が覆った。それは先端が平らでへこんでいる、ガスで満たされた巨大な風船だった。ヴァリュートシステムは、大気圏突入において発生する空気との摩擦熱を吸収してしまう目的で開発された。それは、自ら燃焼することでストレガを大気の摩擦熱から守り、同時に極超音速衝撃波を造ることで効果的にストレガのスピードを遅くすることができた。
 このシステムはボーイングエアロスペース社が実用化、以後の宇宙開発においては標準的に用いられている優れた方式だった。
「大気圏突入スタンバイ……ファイブ、フォー、スリー、ツー、ワン、マーク」
 アリスはストレガ全機を最適突入角度で大気圏に突入させた。
 たちまちヴァリュートが白熱を始めた。空気分子が凄まじいスピードでヴァリュートに突き進み、運動エネルギーを熱エネルギーへと変換する。高熱と共にヴァリュートはオレンジからホワイトへとその輝きを変え、もてる性能の全てを振り絞ってストレガを大気の摩擦熱から守り続けていた。
 同時にヴァリュートは極超音速衝撃波を発生し、機体のスピードを殺していった。
「電位上昇。機体温度上昇。冷却システム・ノーマル……」
 空電のノイズと降下の轟音、ヴァリュートが白熱し、徐々に溶解していく音だけがコクピットを満たしていた。
 ミショーはキャノピーに映る炎の壁を見つめていた。煉獄の業火も色あせる炎の饗宴が繰り広げられている……。
 やがて、ヴァリュートを固定していたベッドが切り離され、220へと落下していった。
 アリスは機首を上げ、ストレガを水平飛行に戻すと共にエンジンを始動させた。獰猛なパワーを持つBAA社製可変サイクルエンジンが再び凄まじい咆哮を挙げ始めた。

 ミショー達のストレガは編隊を組み、茫洋と広がる放電雲の中へと降下していった。
  チャーリー&デルタ……ニコラ・ミショー大尉以下、6名のパイロットたちのオペレーションはこうして始まった。

 ギャラント内では、ミショーたちの降下成功を知ったキナバルが内線をコールしていた。
「CAGか、待機中の地上偵察部隊も降ろす。降下ポイントはシティ外周部だ。そうだ、偵察小隊を降下させる。装備はTO/E(携行定数)通りだ……かまわん、責任は私がとる。降ろせ」
 キナバルはテレトークを切った。
 本来なら充分に偵察を行い、状況分析を行った上で兵力を展開させるのがセオリーだ。だが、今回はその余裕がなかった。サーチ・アンド・レスキューのためには、兵力の逐次投入もやむを得ない処置だ。すべての情報が集まってから行動したのでは手遅れになる。現にその兆候は、220防衛システムのブレイクダウンに現れていた。今のところ先行したアルファとブラボーは無傷だが、この種の暴走は時間の経過と共に加速する傾向がある。つまり、後に続く者ほど損害を被ることになる……キナバルは顔をしかめた。
「デルタフライトはどこだ?」

 ミショーのストレガは、渓谷上空を飛んでいた。
「全機、ディープドライブで渓谷に突入、シティに向かう」
 各機から一斉に無線のクリック音が二度鳴り響いた。了解を意味する伝統的な方法だ。
 ミショーはブレイクダウンした無人機との交戦を控えるため、探知されにくい渓谷からのシティ突入を考えていた。それ故CRTには、220のシティ、「リュイシュウン」を中心に撮影した惑星全域の3D映像が投射されていた。
 それは地表全体が不気味なディープグリーンに輝いていた。撮影ミスや機材の故障によるものではない。リアルモードでの映像だ。
 220の最大の特徴は、惑星が自ら発光する点にあった。惑星を覆う鉱石が光を放っているのだ。
 この点だけでも充分に異様な星だが、地形はさらに異様だった。脳髄を思わせる不気味なしわが、果てしなく続いている。しわは惑星全域を多い、余すところなくディープグリーンの発光を続けていた。
 つまり、惑星全域が発光する鉱石に覆われているのだ。
 鉱石の詳しい情報は不明だが、その採掘のために五万人を超える人間が220唯一の都市、リュイシュウンに住んでいる。
 リュイシュウンは、中央の採掘タワーを中心に放射線状に展開されていた。古代ローマのコロシアム───円形劇場によく似た構造で、この形式の年は頭文字をとってC2と呼ばれている。どうやって侵攻するか……ミショーは、渓谷からリュイシュウンに向けてのルートを知る必要があった。
「アリス、シティへのルートを出せ」
 電子音と共にシティを中心としたCGマップが表示された。
 グラフィックス表示されたマップに、電子音と共に赤い輝線が伸びた。それはポートからアクセスルートを通り、シティへ突入するルートだった。ミショーがさらに詳しいデータをアリスにコールしようとした瞬間、コクピットに警報音が鳴り響いた。
「レーダーコンタクト。デダヘッド」
「全機、ブレイク!」
 反射的にミショーはコールした。可変サイクルエンジンが唸り、瞬時に編隊が散開する。
「フラッシュ。デダヘッド。マグネティック・フィールド探知」
 アリスのコールと共にディスプレイが切り替わった。そこには、前方に強力な磁気反応があることが示されている。
 一瞥したラングは微かに鼻を鳴らした。この現象は以前にも見たことがある。あれは確か、クラップ戦で起きた現象だ。
 さらに警報音が鳴り響いた。
「コーション。目標多数。レーダー・ブラックアウトマグネティック・リアクト・アップ」
 やはりな……ラングは兵装コントロールをCCDモードに切り替え、呟いた。
「岩石が磁気浮揚って訳か」
 強力な磁気のために、峡谷周辺の岩石が浮き上がっているのだ。滅多にない現象だが、鉱石の組成によっては起こりうる。クラップ星での戦いでラング達はそれを経験していた。
「チャーリーリーダーより全機、排除開始」
「ラジャー。こちらデルタリーダー。カレン、ディースリー、俺に続け」
「ラジャー」
「ラジャー」
 二人のコールを聞きつつ、ミショーは兵装コントロール解除スイッチを跳ね上げた。
「フォックスワン・ファイア」
 次の瞬間、かすかな衝撃と共にストレガのウェポンベイが開いた。風切り音と同時にランチャーのロックが解除され、ランサーミサイルが投下される。ゼロコンマ3秒後、ランサーのロケットモーターが始動、発射音が腹の下から響く。ロケットモーターの炎と轟音と白煙を残し、ダルドフ社製中射程空対空ミサイル・ランサーがミショーのストレガから放たれた。
 彼等の攻撃はそれが始まりだった。
 2秒後にはカレンとハントのストレガがランサーを放ち、続いてクラウスとラングのストレガが続く。ストレガから放たれた10発のランサーは、たちまちマッハ5まで加速し、それぞれターゲットを補足していた。ランサーには目標選択アルゴリズムが搭載されており、互いに同じ標的を狙わないように設計されている。発射から34秒後、全てのランサーがターゲットを直撃、信管を一斉に作動させた。
 ディスプレイには砕ける岩石が映っている……続いて電子音が鳴り響いた。
「コウション、デダヘッド。ブラドギー探知」
 さらに警報音が響いた。この警報は……。
 ミショーはかすかに眉をしかめた。
「チャーリーリーダーよりギャラント、補足されました」
 ESMによれば、40機以上のブラドギーが前方から接近していた。無人機とはいえ、接近されたら厄介な敵だ。
 既にミショーの指は兵装コントロールスイッチへと伸びていた。

 ギャラントではキナバルがコンソールを軽く叩いた。ブレイクダウンに対する懸念が早くも現実になった……彼は傍らの副官に向けて頷いた。
「ギャラントよりチャーリー・リーダー、交戦を許可する」
 ノイズ混じりのボイスがスピーカーから立て続けに流れた。
「ラジャー。チャーリーリーダーより全機、オール・ウェポンズ・フリー」
「敵、火器管制レーダー使用」
「ラジャー。ディースリー、こちらはデルタリーダー。フロントは俺とカレンがやる。おまえはバックで撃ちもらしを片づけろ」
「ラジャー」
「ブラドギー、接近。スカイブレード、接近」

 ラングのコール、そしてアリスの報告を聞きつつ、ミショーは兵装コントロールをSRMにセットした。ブラドギーは無人防衛機、スカイブレードはその母機だ。どちらも墜としやすい敵だ。こんな敵に長射程ミサイルはもったいない……ショート・レンジのウッドペッカーで充分だ……ミショーは微かに反省した。さっきはたかが岩石に貴重なランサーを使ってしまったからだ。やはり昨夜のアルコールがまだ残っている……。
 電子音と共にオートセットされたレーダーがレンジ30マイル、方位150度の捜索パターンに切り替わった。ターゲットを示すグリップがレーダーに輝く。あとは、ロックオンのオーラルトーンが響いた瞬間にスティックの発射ボタンを押せばいい。ミショーはコールした。
「全機、コンバットオープン」
 蒼空にストレガのコントレールが一斉に伸びた。IN RNGの表示を確認したミショーは、オーラルトーンの響きを聞き、発射ボタンを押した。
 ウェポン・ベイの開閉音と共に、短射程ミサイルのウッドペッカーが轟音と共に発射された。それは接近しつつあったブラドギーの胴体に命中、爆発した。
 この一発が最初だった。ミショーたちは続く7秒で18機のブラドギーを撃墜し、2機のスカイブレードを葬った。
 炎に引き裂かれたスカイブレードが、破片を撒き散らしつつ地表に激突、爆発する。ブラドギーが空中分解し炎の塊が乱舞する。
 渓谷上空には無数のコントレール、エンジンの轟音、それに爆発の炎が満ちていた。

 ミショー達の戦闘のデータは、ギャラントのCICディスプレイにそっくり投影されていた。暗がりの中でキナバルはじっとデータを見つめ、微かに頷いた。
 ミショーたちは冷静に対応している。今のところ、味方に損害はない…味方だと?
 思わずキナバルは眉をしかめた。無人機とはいえ、交戦している相手も本来なら味方なのだ……ブレイクダウンのために貴重なパイロットの命を晒すのは馬鹿げている……。
 キナバルの考えを読んだようにコックスが言った。
「大佐、司令部に220の最高機密データを要求したいのですが」
「………?」
「防衛システムの解除コードはペンタゴンの機密金庫の中です。コードを要請し、システムをスレイブ・モードに……」
「やってくれ」
 頷いたコックスは真っ直ぐドアから出て行った。その態度は、人によっては傲慢そのものに見えた。だが、キナバルは無視した。コックスはそういう男なのだ……何事も手順を簡素化して事を進めてしまう。頭のキレがよく、先が見えすぎる故の欠陥だ。彼がここに流されたのもそれが原因だった。
 だが、キナバルは有能な副官を歓迎した。人格に多少の問題があろうと、軍隊は戦うための組織なのだ。有能ならばそれでいい。
「降下させた偵察部隊はどこだ?」
「シティ外周部に無事降下しました。現在、付近を捜索中です」
 C2構造のリュイシュウン・シティ外周部には、主に研究施設が建ち並んでいた。
「まるで墓地だな……」
 偵察小隊を預かるリチャード・アイスバーグ中尉は、紅星戦機重工社製87式自動小銃を構えながら、辺りを見回した。
 白を基調にした研究施設は、いずれも無人だった。建物の形と色は、巨大な墓石そのものだ。
「中尉、来てください!」
 アイスバーグは振り向いた。400フィートほどいった所の研究施設の玄関から、部下が手を振ったのが見えた。
「どうした!」アイスバーグは怒鳴りながら駆け出した。


他章



2010/02/24 22:50 | Comments(0) | TrackBack() | ゲーム
EC-CUBE EC-CUBEの外からブロックを利用

ログインブロックやカレンダーブロックといったブロック機能は、/html/frontparts/bloc/login.phpとDocumentRoot配下にあるのに、単独で利用することはできません。
直接アクセスするとエラーになります。
ちなみに、公式で紹介されているサイトでも直接見てみるとよくFatal error: require_once()とか出てくるので試してみると楽しいかもしれません。

このようなブロックをヴィジェットのようにEC-CUBEの外から使用してみます。
とりあえずヴィジェットとして扱うために/html/widget/ディレクトリを作成します。
DocumentRootの中に入れる必要は全く無いし普通は外に出すべきなんですが、どうせ/html/frontparts/とかも中にあるしどうでもいいや。

次にEC-CUBEの管轄ではない適当なファイルを作成。
/html/example.php

1
2
3
4
5
6
7
8
9
<?php require_once('./require.php'); ?>
<html><body>
    ↓ログインヴィジェット<br />
    <?php require_once('widget/widget_login.php'); ?>
    ↑ログインヴィジェット<br />
    ↓商品検索ヴィジェット<br />
    <?php require_once('widget/widget_search.php'); ?>
    ↑商品検索ヴィジェット<br />
</body></html>


/html/require.phpは定数設定やインクルードの他にセッションの設定なんかも行っているので、一切の出力を行う前に呼ぶ必要があります。

次にexample.phpで呼び出しているwidget_login.phpwidget_search.phpなんかを作成。

/html/widget/widget_login.php

1
2
3
4
5
6
7
8
9
10
<?php
    /*
        EC-CUBE外からブロックをヴィジェット的に使用
        ログインブロックを表示
    */
    //ログインブロックにはsite.jsが必要
        print('<script type="text/javascript" src="'.TPL_DIR.'js/site.js">
           </script>');
    //ブロック表示
        require_once($require_php_dir.'/frontparts/bloc/login.php');

/html/widget/widget_search.php
1
2
3
4
5
6
7
<?php
    /*
        EC-CUBE外からブロックをヴィジェット的に使用
        商品検索ブロックを表示
    */
    //商品検索表示
        require_once($require_php_dir.'/frontparts/bloc/search_products.php');


別ファイルにする意味がほとんど無いような中身ですが、ディレクトリ構成を見ればヴィジェットだと言うことが一目でわかりやすいということで。
とりあえず以上でEC-CUBE外からEC-CUBEのブロックをヴィジェットとして扱うことができるようになりました。
あんまり検証していないのでどんなバグが眠っているかわからんけどな。
あとインクルードした時点で画面出力まで行われてしまう作りは筋が悪いと言わざるをえない。

一応ここを参考にしたつもりだったんだけど原形を留めていない。
結局/html/require.php/frontparts/bloc/***.phpをインクルードすればよいという結論になりました。


EC-CUBEの記事
  



2010/02/22 22:01 | Comments(0) | TrackBack() | PHP
買ったものリスト 2010/02/21

Fallout3ようやくメインシナリオが終了した。
プレイ時間はさくっと100時間超。
どっかの伝えるべきストーリーがあり、プレイヤーが、キャラクターや彼らが生きている世界に感情移入できることが重要なゲームなんかよりよっぽど感情移入させていただきました。
テンペニータワーとかどうしてくれようかと思ったわ。
しかもかなり寄り道をしてたのに、サブシナリオもだいぶ残ってるとかどうしよう。
まだ行ってすらいない、マーキングしただけで入ってないようなポイントも大量にあるし。


さよなら絶望先生20
☆☆☆☆☆

よし、今回は間違えずに限定版を買えたぞ。
中身は何一つ変わらない久米田節。

おまけのDVD、今回はなんとOPがフルコーラス入ってました。
相変わらずシャフトは無駄にクオリティ高いな。
内容は「DAED」「土台が腐っています」「著しく他者より考える力に貧しき人物」とかそこらへん。


波打際のむろみさん1
☆☆☆

そこはかとなく人魚っぽい謎生命体がだらだらだべったり釣られたりするだけというなんだかさっぱりわからない漫画。
連載時からずっと待ってたのがようやく単行本化ですよ。
……さすがに通読するとなんかきつかった。
やっぱ週刊ペースくらいがちょうどいいのかも。


生徒会役員共3
☆☆☆☆

やはりスズが一番。
このまま周りに毒されないでいてほしい。
内容は毎度毎度くだらない下ネタばっかりなのだが、何年も同じようなものばっかり書いていながらネタ切れネタ被りがほとんど無いのが素晴らしいな。


人類は衰退しました5
☆☆☆☆

あれ?
4巻で終わりとか言ってなかったっけ?幻覚か?
ということで前半は過去話。
想像以上にハードな感じだったが、そもそもわたしって頭の出来があんまりよろしくないという描写がなされていたような気がするんだが。
後半はもしもボックスみたい話。
妖精の描写が秀逸すぎる。
そしてその内面のほとんど描かれることのなかった助手さんの意外な一面が発覚。


史上最強の弟子ケンイチ37
☆☆☆

ボルックスとの対決。以上。
本作には珍しく展開が少々スローだった。
最近ありがちな「特に修行してるわけでもないのに何故か強い」というようなキャラがほとんど居ず、友情・努力・勝利の言葉がまさに当てはまる地に足のついた作品。
この三大原則って当のジャンプからは滅びてるよな。

ただ、さすがに徹夜明けの修行明けで対決とかは体力的にどうなのよという気がするんだが。
あとどうでもいいんだが無駄なサービスカットは個人的には要らないんだがどうだろう。
裏表紙がちょっとウケた。



2010/02/21 18:28 | Comments(0) | TrackBack() | 買ったもの
Smartyで文字コードの違うPHPをincludeする

http://www.studio-bloom.net/archives/853
 

{$output|mb_encoding:"UTF-8":"EUC-JP"}
{include_php}のassign指定で変数に出力を突っ込み、その変数をSmartyの中で文字コード変換してUTF-8に揃えちゃう。これでテンプレートの中身がUTF-8に統一されるので後はウマー。
ちなみにSmartyのプラグインを作らないといけないので、

 


実はなにげに修正子にはPHPの全関数が使用できます(ただし$smarty->security等で禁止されている場合を除く)。

ですので、特にプラグインを作らずとも、
{$output|mb_convert_encoding:"UTF-8":"EUC-JP"}
で同じことが可能です。


……ってこれよく見たら去年の1月の記事じゃないか!




2010/02/20 17:52 | Comments(0) | TrackBack() | PHP
EC-CUBE 購入履歴をブロック化

前回の記事を参考に、現在マイページに固定で書かれており流用ができない購入履歴をブロックに切り出してみます。

まず管理画面からデザイン管理→新規ブロックを作成。
ファイル名はorder_history。
中身はとりあえず空白でかまいません。

データベースにブロックが登録され、
/htdocs/user_data/packages/default/bloc/order_history.tpl
にテンプレートファイルが作成されます。

データベースを編集。
dtb_bloc.php_pathfrontparts/bloc/order_history.phpと記入します。

/html/frontparts/bloc/order_history.phpを作成。
他のファイルをコピペして、
 

1
2
3
    require_once(CLASS_EX_PATH . 
       "page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_OrderHistory_Ex.php");
    $objPage = new LC_Page_FrontParts_Bloc_OrderHistory_Ex();

の2行を修正するだけです。

data/class_extends/page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_OrderHistory_Ex.phpを作成。
これまた同様に他のファイルをコピペし、
 

1
2
3
4
    require_once(CLASS_PATH . 
        "pages/frontparts/bloc/LC_Page_FrontParts_Bloc_OrderHistory.php");
    class LC_Page_FrontParts_Bloc_OrderHistory_Ex 
        extends LC_Page_FrontParts_Bloc_OrderHistory {


の2行を修正するだけです。

/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_OrderHistory.phpを作成。
ここはロジックを書かないといけないのでコピペでは終われません。
購入履歴を取得するロジックはマイページを作成する部分、/data/class/pages/mypage/LC_Page_Mypage.phpLC_Page_MyPage::process()に書かれていますので、その部分をまるごとコピペします。
同じコードを複数の箇所にコピペというのは本来やってはいけない開発手法なのですが、EC-CUBE上での解決方法がわかりませんでした。

全体を表示するわけではなくブロックを表示するだけなので、全体レイアウトを定義するSC_Helper_PageLayout_Exあたりを呼ぶ必要はありません。
またブロックなのでページングまでは要らないや、マイページに飛ばせばいいかということでページング部分も削除。

/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_OrderHistory.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
require_once(CLASS_PATH . "pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php");
 
class LC_Page_FrontParts_Bloc_OrderHistory extends LC_Page_FrontParts_Bloc {
    function init() {
        parent::init();
        $bloc_file = 'order_history.tpl';
        $this->setTplMainpage($bloc_file);
    }
 
    function process() {
    
        $objView = new SC_SiteView();
        $objQuery = new SC_Query();
        $objCustomer = new SC_Customer();
        
        // ログインチェック
        if(!$objCustomer->isLoginSuccess()) {
            SC_Utils_Ex::sfDispSiteError(CUSTOMER_ERROR);
        }else {
            //個人情報
            $this->CustomerName1 = $objCustomer->getvalue('name01');
            $this->CustomerName2 = $objCustomer->getvalue('name02');
        }
        
        //SQL
        $col = "order_id, create_date, payment_id, payment_total";
        $from = "dtb_order";
        $where = "del_flg = 0 AND customer_id=?";
        $arrval = array($objCustomer->getvalue('customer_id'));
        $order = "order_id DESC";
        
        //全件数
        $linemax = $objQuery->count($from, $where, $arrval);
        $this->tpl_linemax = $linemax;
 
        // 取得範囲の指定(開始行番号、行数のセット)
        $objQuery->setlimitoffset(SEARCH_PMAX, 0);
        // 表示順序
        $objQuery->setorder($order);
 
        //購入履歴の取得
        $this->arrOrder = $objQuery->select($col, $from, $where, $arrval);
 
        // 支払い方法の取得
        $objDb = new SC_Helper_DB_Ex();
        $this->arrPayment = $objDb->sfGetIDValueList(
       "dtb_payment", "payment_id", "payment_method");
        
        //テンプレ
        $objView->assignobj($this);
        $objView->display($this->tpl_mainpage);
    }
 
    function destroy() {   parent::destroy();   }}


生SQLとかモデルに隠せよ……

最後はテンプレートを編集します。
/htdocs/members/user_data/packages/default/bloc/order_history.tplを直接、もしくは管理画面のブロック管理からでも編集できます。
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<div id="order_history">
  <!--{if $tpl_linemax > 0}-->
    <form name="form1" method="post" 
       action="<!--{$smarty.const.URL_DIR}-->mypage/index.php">
        <input type="hidden" name="order_id" value="" />
        <p>
            <!--{$CustomerName1|escape}--> <!--{$CustomerName2|escape}-->
            様のご注文履歴。
         </p>
        <p>
            最新<!--{$smarty.const.SEARCH_PMAX|escape}-->件を表示しています。
            <a href="<!--{$smarty.const.URL_DIR}-->mypage/">
            全ての履歴を確認</a>
        </p>
        <table summary="購入履歴">
          <tr>
            <th>購入日時</th>
            <th>注文番号</th>
            <th>お支払い方法</th>
            <th>合計金額</th>
            <th>詳細</th>
          </tr>
          <!--{section name=cnt loop=$arrOrder}-->
            <tr>
              <td><!--{$arrOrder[cnt].create_date|sfDispDBDate}--></td>
              <td><!--{$arrOrder[cnt].order_id}--></td>
              <!--{assign var=payment_id value="`$arrOrder[cnt].payment_id`"}-->
              <td><!--{$arrPayment[$payment_id]|escape}--></td>
              <td class="pricetd">
                  <!--{$arrOrder[cnt].payment_total|number_format}--></td>
              <td class="centertd">
                <a href="<!--{$smarty.server.PHP_SELF|escape}-->" 
                 onclick="fnChangeAction('
                    <!--{$smarty.const.URL_DIR}-->mypage/history.php');
                    fnKeySubmit('order_id','<!--{$arrOrder[cnt].order_id}-->');
                    return false">詳細</a>
              </td>
            </tr>
          <!--{/section}-->
        </table>
      </form>
    <!--{/if}-->
</div>


ここもマイページの購入履歴表示部分をそっくりコピペ。
submitのないフォームになんの意味があるかというと、詳細リンク押下を探知して送信内容を書き換えてPOST送信するというかなり意味不明なことを行っています。
素直に<a href="<!--{$smarty.const.URL_DIR}-->mypage/history.php?order_id=<!--{$arrOrder[cnt].order_id}-->">ってやって$_REQUESTで受け取れば平穏無事に穏便に終わるのに何故POSTでしか受け取れないような作りになってるんだろう。
注文番号は連番なのでリファラ隠したところで全く意味ないですし。

以上で、好きなページに購入履歴ブロックを追加することができるようになりました。
めでたし。


EC-CUBEの記事



2010/02/19 21:42 | Comments(0) | TrackBack() | PHP
==NOVEL PHILOSOMA== 02

==OPENING==

 レッドアラートを意味する警報音が、ストレガのコクピットに反響していた。
 ニコラ・ミショー大尉は、酸素マスクのホースをヘルメットに接続し、深呼吸を繰り返していた。濃度100パーセントの酸素が彼女の肺を見たし、先ほどまで感じていた鈍い頭痛を拭い去ってくれる筈だった。だが、息を吐き出すと再び頭痛が始まった。よほど飲まなければこうはならない……ミショーは、ラング達と飲み過ぎたことを後悔した。
 軍規では、艦内でのアルコールは厳禁だ。所持できるのは軍医だけと決まっている。だが、この「ギャラント」は例外だった。
 ミショーが所属するUNF第7独立任務舞台は、攻撃型宇宙空母SCV-13「ギャラント」ただ一隻で編成されていた。いわゆる独航艦だ。退役間際の老朽艦とはいえ、空母をエスコートする巡洋艦等が全く存在しない事は、ギャラントの異様さをよく物語っていた。
 ミショーは、ギャラントの中核である戦闘攻撃飛行機VFA-29のフライトリーダーのひとりだった。この飛行機は、ブラッドフォード・アズミ・アエロスペース社(BAA)が製作した宇宙戦闘攻撃機F/A-37ストレガを、定数いっぱい保有している。この事実は、ギャラントのパイロット達の自尊心を大いに満足させていた。ストレガは連合軍で実戦配備が始まったばかりの最新鋭戦闘攻撃機だからだ。そして、その実現の功労者は……。
「ミショー大尉、こちらはキナバルだ」
 ミショーは苦笑した。御当人の名を思い浮かべた瞬間に向こうから呼びかけてきたのだ。彼の名はスタンレー・キナバル大佐。このギャラントの艦長だ。階級は大佐。
「こちらミショー、大佐、状況は?」
「220へ降下させた偵察機は撃墜された」
「撃墜……それで敵機は?」
「データを送る間もなく瞬時に堕ちた。エマーコールの受信から七時間……偵察を再度行う余裕はない」
 キナバルの口調には苦渋が滲んでいた。つまり、敵情不明のまま突入しろということだ……危険だ……危険すぎる……だが、次の瞬間ミショーは答えていた。
「ラジャー、発進許可願います」

 多国籍企業シンフォ・カイファーが保有する資源採掘惑星ORA-194-220が惑星遭難信号を発したのは、三時間前のことだった。220からのエマーコールを受信したギャラントは、直ちに全速でポイントに急行した。
 惑星遭難信号はよほどの突発事態が起きなければコールされない。過去にコールされたのはわずか8件。いずれも大規模な自然災害、あるいは核使用を含んだ内戦だった。
「コックスよりチャーリーフライト、ランチ・シークエンス」
「ラジャー。こちらチャーリー・リーダー・ミショー。ランチ・シークエンス」
 副長のコックスのコールが始まった。それは発鑑シークエンスの開始を意味していた。
「続いてデルタフライト、ランチ・シークエンス」
「ラジャー。こちらデルタ・リーダー。ランチ・シークエンス」
 デルタリーダーのコールが響いた。彼の名はアイザック・ラング大尉。
 パイロットとしては特Aランクの腕。安心して後方を任せられる。飲み友達としても悪くない男だ。
 だが、彼は同時に命令違反の常習者だった。ミショーは彼に釘を差そうとカフをあげた。
「チャーリーリーダー・ミショーよりデルタ・リーダーへ」
「こちらデルタリーダー・ラング」
「オペレーション・オーダーに従い、チャーリーとデルタは私が指揮する」
「ラジャー。カレン、ディースリー、これよりデルタフライトはチャーリー・リーダー、ミショーの指揮下に入る」
「……?」
 やけに素直だった……いつものラングなら軽口混じりの嫌みの一つも返してくるのだが……その疑問は次のコールで氷解した。
「ラングよりコードネーム・ディースリーへ。気分はどうだ?」
「大丈夫です、大尉」
「記念すべきファースト・ミッションだ。カレン中尉、デルタスリーをサポート」
「ラジャー。ディースリー、訓練通りにやるのよ」
「イエッサー」
 ミショーは思い出した。今日のラングにはお荷物が二人いる……。一人はコードネーム・ディースリー。本名は知らない。アナポリス出のパリパリの新米少尉。腕の方はそれなりという話だ。しかし、実戦は今回が初めてだ。所詮は、足手まといにならなければ幸い、というレベルでしかあるまい。それにしても『サー』とはね……。ミショーは苦笑した。サーは、男性の上官に対する呼びかけだ。普通、女性に対しては上官でも名前か階級を使う。にもかかわらず、敢えてカレンをそう呼んだその意味は……? 容姿からいえば、カレンは断じてサーと呼ばれるようなものではない。同性のミショーから見ても、いや、誰が見ても彼女は美人だ。なにせ、スコットランドの名家の出というし……育ちの良さは誰もが一目見て感じることだ。ということは……別の意味で言ったわけだ。もしかしたらディースリーは、既にカレンの技量を見抜いていて……うん、たぶんそうだろう。皮肉を込めて彼女をそう呼んだのだ。
 全くいい性格をしている……。ミショーはかすかにため息をついた。どうやらディースリーは、おとなしそうな声とは裏腹にかなりの皮肉屋らしい。
 ミショーはモニターを切り替え、カレン機を捉えた。
 カレン・レイノックス中尉は、デルタフライトの2番機だ。ロングヘアの金髪美人で、VF-29のアイドル……。偶像とは、よく言ったものだ。パイロットとしてのカレンの腕はBクラス……腕利きが大半のギャラントの中では不釣り合いな存在だ。カレンは単独でハイレベルな戦闘を切り抜けられる練度ではない。つまり、ラングは必然的にカレンの面倒を見ざるを得なくなり……必然的……必然的ね……まったくお笑いだ。
 ラングが公私ともにカレンの面倒を見ていることを、密かにミショーは知っていた。本人達は上手く隠しているつもりらしいが……生憎とミショーは、二人が抱き合っているのを目撃していた。まあ、お付き合いが周囲にバレたら、カレンを落とそうと狙っている若手パイロット達が黙ってないだろう。せいぜい気を入れてやってくれ……。
 ミショーは微笑とも苦笑ともつかない表情で、手元のパットを操作した。かすかな電子音と共に、コックピット全面の視界が格納庫から宇宙空間に切り替わる。ストレガのキャノピーは透明アルミニウムの二重構造になっており、その間には液晶が満たされていた。液晶はそのまま立体テレビとして機能し、外部の映像を望むままに映し出すことができた。
 続いてカメラがコクピット・ビューに切り替わる。キャノピー全域に格納庫の情景が展開された。
「チャーリー・アンド・デルタ、ファイナル・ランチ・シークエンス」
 最終発進過程───コックスのコールと共にストレガがゆっくりと前方に動き出した。トランスファーシャフトのレールに沿い、ストレガを吊り下げているブロックが移動を開始したのだ。線路の継ぎ目に車輪が当たったような鈍い金属音が断続的に響き、続いて格納庫のゲートが開いた。
「全機、アンティル・ファザー・アドバイス」
「ラジャー」
 別名あるまでの待機命令―――更にコールが来る。
「コックスよりチャーリー・アンド・デルタフライト。アリスをチェックする」
電子音が連続して鳴り響き、冷たく整った合成ボイスがスピーカーから流れ始めた。
「チャーリーフライト・アリスワン、ツー、スリー、ノーマル」
「デルタフライト・アリスワン、ツー、スリー、ノーマル」
 ミショーはかすかにうなずいた。ニックネーム「アリス」は、ストレガの制御を司る総合戦術支援AIコンピューターだった。正式名称は凍項電子新社製祥雲LLN68と言い、ボイス応答タイプのAIだ。
 今を去ること約百年前、1970年代から、戦闘機のコントロールの複雑さ、操作性の悪さは大きな問題だった。
 ミサイルと電子装備の登場は、戦闘機のコンバットエリアを飛躍的に拡大させたが、それに比例してパイロットの負担は増す一方だった。
 操作の軽減が技術者達の課題になり、その回答として当時の技術者は、グラスコクピットやHOTAS―――スティックとスロットルレバーへの操作スイッチの集中などを産み出した。しかし、グラスコクピットは情報のスポイルを、HOTASはパイロットにピアニスト並みの指使いを要求し、問題を解決するまでには至らなかった。やがて時が経ち、コンピューターの発達はAIを産み出した。AIとボイス応答機能を組み合わせることにより、初めてパイロットは煩わしい操作から解放されたのだ。
 それ故、ストレガのコクピットはきわめてシンプルだった。パイロットが操作するのはコントロール・スティックとスロットル、フットペダルだけと言っていい。もっとも、マニュアル操作を好むパイロットのために普通の操作パネルも設けられているが……基本的にはAIが、アリスが全てをサポートする。
 さらにアリスの特長として挙げられるのが、アリス同士のリンクが可能なことだ。つまり、アリスを搭載する機体で編隊を組めば、情報の完全共有化と同時運用が実現するわけだ。
 これは、一斉攻撃には特に有効だった。味方が一機でも敵を発見すれば、次の瞬間全機でターゲットを攻撃出来る。そのために必要なデータ、発射のタイミングなどは、アリスが処理する。パイロットはただ、機体を操ることだけに集中すればいい。
 ストレガが単なる戦闘機から戦闘攻撃機へと設計を変更したのは、アリスの搭載にめどがついたからだ。
 通常、このような変更はいい結果を呼ばない。マルチローリングファイターを狙った機体は古来からあるが、どれもが中途半端な性能のため没落していった。成功例はほんの一握りにすぎない。
 幸いなことに、ストレガは数少ない例外の仲間入りを果たした。この戦闘攻撃機は、宇宙戦闘、対空戦闘から対地攻撃ミッションまでを自在にこなす万能機として誕生したのだ。
「ランチ・スタンバイ」
 アリスの合成ボイスにデルタリーダーのラング大尉は、うんざりした顔で首を回した。先発したアルファ、ブラボーとの間隔を考えるだけで嫌気がさした。蜂の巣を突っついたところに飛び込んでいくことになりそうだ。
「スタート・ユア・エンジン」
 エンジン系列パネルが微かに発行し、タービンブレードの回転音が後方から響いてきた。
 双星電子社製の多目的CRT・美麗五式に、エンジンの状態が表示された。油圧、電圧、燃料流量、エンジン回転、タービン内圧……どのデータも正常値を示している。
「カタパルト・テンショニング。ファイナル・ランチ・シークエンス」
 リニアカタパルトが射出姿勢に入り、220に向けて傾斜していく。眼下に広がる惑星の姿をラングは見つめた。そのまま吸い込まれていくような感覚を彼は覚えた。
 ラングは最終チェックを行った。ラダーとエレボンの動作を素早くチェックし、スタビライザとトリムを、最後にベクター・ノズルの動作を確認する。全て正常だ。
 ラングはスロットルを全開にした。
「バーナーオン。マックスパワー」
BAA重工社製飛龍FAS.909Dbis2可変サイクルエンジンが咆哮を発した。ノズルが白熱し、プラズマトーチを遙かにしのぐ高熱が放出される。その推力はアフターバーナー使用時で80トンを超えていた。ストレガはそのエンジンを4機搭載していた。ブーストなしで地球の引力圏を離脱できるのも、怪物的なエンジンパワーがあっての話だ。
 エンジンの咆哮が一段と高まった。彼は射出の衝撃に備え、ヘルメットをヘッドレストに押しつけた。次の瞬間、アリスのボイスがコクピットに反響する。
「レディ……ゴー」
 リニアカタパルトが作動した。サポートブロックと共にストレガは瞬時に加速された。強烈なGがラングの肉体をシートに押しつける。視野狭窄と同時に脳天をハンマーで一撃されたような衝撃が来る。続いて激しい擦過音と共に、燃料がパイプを通過する不気味な唸り声が頭上に響く。リニアカタパルトを通過したアブレーターが、役目を終えて炎と化してパイプを通過しているのだ。カタパルトの先端部が一瞬のうちに流れ去った。
 ストレガは射出された。次の瞬間、ストレガを吊り下げていたサポートブロックが機体から離れた。
 デルタの発鑑は全機がほぼ同時に行われた。充分に加速された各機のストレガは、エンジンパワーを虚空に解放し、220へ向けて降下していった。
 ギャラントのCICでは、発鑑の光景がサブ・スクリーンに映し出されていた。
「彼らに神の幸運を……」
 ギャラントの中腹深部に設けられた戦闘情報センター―――CICで、スタンレー・キナバル大佐は呟いた。
 CICとは、戦闘を効率化するために設けられた情報統制管制室だ。索敵センサーや通信機能、搭載航法機材、兵装コントロール等、各機能をとりまとめ、情報を分析し兵装の割り当て等を行う戦闘指揮システムがCICだ。
 暗い室内にはコンソールがずらりと並び、ヘッドフォンを被った管制官がキーボードを叩いている。正面に設置された巨大なメインスクリーンが目を引くが、ここには指揮管制、作戦情報、戦術状況の表示を初め、さまざまなデータが表示されていた。
 キナバルが立っているのは、スクリーンから見て一番後ろのコマンドエリアだった。そこは管制官たちのフロアより2フィートほど高くなっておりメインスクリーンとオペレーター全員を見渡すことができた。
 だが、キナバルはメインではなく手元の20インチ3Dディスプレイに見入っていた。
 そこには、外の景色が映っていた。発鑑したストレガが編隊を組む様子が……そして、深淵の中に微かな輝きを放つ恒星の群が……。
 星々の輝きは、キナバルに忌まわしい記憶を思い出させた。それは、ギャラントにストレガが配備された理由のひとつでもあった……。


他章
 



2010/02/17 22:04 | Comments(0) | TrackBack() | ゲーム
EC-CUBE ブロックを作成してみる

最初から用意されているブロック要素としてログインブロックがあります。
ログアウト状態であればログインボックスを表示し、ログイン状態であれば氏名とログアウトボタンを表示してくれる優れものです。
さて、このログインボックス内では氏名を
<!--{$tpl_name1|escape}--> <!--{$tpl_name2|escape}-->
という形で取得しています。

なるほど、これを使えば氏名を取得できるんだな、と新しく作ったブロックに<!--{$tpl_name1|escape}--> <!--{$tpl_name2|escape}-->と書いても全然氏名を表示してくれません。
なんでだよ。


実は最初から用意されているブロックは、内部的にそれぞれのブロック単位で独自のPHPを実行しています。
dtb_blocテーブルにそこらへんが書かれていますが、例えばログインブロックは/html/frontparts/bloc/login.phpを呼び出して$tpl_name1$transactionidといった値を取得しています。

ログインブロックの氏名を取得する部分だけ他のブロックから利用できないかと思えば、cookieを取得して氏名を取得してテンプレを表示するまで全部をひとつのメソッドで実行したりしているので流用できません。
せっかくdtb_bloc.tpl_pathにテンプレート名が書いてあるのに何気にそれも使っていません。なにそれ。
複数のブロックでログイン状態の表示を行いたい場合、それぞれのブロックで毎回ログイン状態を取得しないといけません。
もしかしたらどこかにコンポーネントやビヘイビア的なものがあるのかもしれませんがよくわかりませんでした。
ヘルパーはあるのですがいまいち使い方がわかりません。
というわけで特殊な情報が欲しい場合は以下のように面倒なことを行う必要があります。


とりあえず最初からあるログインブロックと同じようなものを作成してみましょう。

まず管理画面から適当にブロックを作成。
名前はなんでもいいですが、とりあえずuser_nameにしました。
中身を
姓:<!--{$tpl_name1|escape}--><br />
名:<!--{$tpl_name2|escape}--><br />
とします。
サイトトップなり適当なページなりかっらブロックを呼び出すように設定します。
初期状態では単にそのブロックが表示されるだけで、ロジックの記述は何処にもできません。

dtb_blocテーブルに今作成したブロックが記録されます。
php_pathカラムに、ブロックを呼び出したときに実行されるPHPのパスを記入。
今回は周りと揃えて
frontparts/bloc/user_name.php
としました。

/htdocs/members/frontparts/bloc/user_name.phpを作成。
中身はlogin.php等をコピペしてクラス名だけ変更します。
 

1
2
3
4
5
6
7
<?php
    require_once(CLASS_EX_PATH . 
        "page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_UserName_Ex.php");
    $objPage = new LC_Page_FrontParts_BLoc_UserName_Ex();
    register_shutdown_function(array($objPage, "destroy"));
    $objPage->init();
    $objPage->process();


てか、なんでこれDocumentRoot内にあるんですかね?
ブログパーツ的にAJAXで使えるわけでもないですし意味わからん。

/data/class_extends/page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_UserName_Ex.phpを作成。
こちらもLC_Page_FrontParts_Bloc_Login_Ex.phpをコピペするだけです。
 

1
2
3
4
5
6
7
8
9
<?php
    require_once(CLASS_PATH . 
        "pages/frontparts/bloc/LC_Page_FrontParts_Bloc_UserName.php");
    class LC_Page_FrontParts_Bloc_UserName_Ex 
      extends LC_Page_FrontParts_Bloc_UserName {
        function init() {    parent::init();    }
        function process() { parent::process(); }
        function destroy() { parent::destroy(); }
    }


/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_UserName.phpを作成。
こちらはロジックを書く必要があります。
とりあえずはLC_Page_FrontParts_Bloc_Login.phpをコピペしてクラス名、テンプレート名を変えるだけで動作確認はできます。

以上の設定を行い、ログインしてみると、作成したブロックに氏名が表示されるようになります。
めでたし。


めんどくさいですね。
どうにかならんものじゃろうか。

たとえばカレンダーブロックに氏名を表示させたくなっただけでも、
LC_Page_FrontParts_Bloc_Calendar_Ex.phpLC_Page_FrontParts_Bloc_Login_Exのコードをまるまるコピペさせられる羽目になります。
設計がおかしすぎる。

EC-CUBEの記事



2010/02/15 22:20 | Comments(0) | TrackBack() | PHP
買ったものリスト 2010/02/14

Fallout3は止めどきがわからなくなるな。
しかしこれといいオブリといいFable2といい、広大なフィールドでやることが結局地面あさり死体あさりってのはどうにかならないんですかね。
あとレギンは売り切れてた。


大伝説の勇者の伝説7
☆☆☆

主人公の居ないところでちょこちょこ出ていたリューラがついに登場。
二人の会話と過去話だけで一巻終わりました。
いやあなんでこんなに凄いキャラが名前も残っていませんかね。
あとルシルと渡り合ったわりに最後が呆気無さ過ぎる。
絶対死んでないだろお前。


純潔のマリア1
☆☆☆

あれ?及川スピンオフ?
と思ったら全然別の作品だった。

全体的に話がとっちらかってる印象。
もやしもんの濃さとペースはそのままに解説菌が居ないのと大ゴマを多用したのでコマの感覚が広がっちゃって行間が足りないよ、とかそんなかんじ。
今巻は最後でようやく話がスタートしたところなので評価は保留。
しかしフクロウ手抜き過ぎだろ。


チャンネルはそのまま1
☆☆☆

騙された!
いや、このタイトルは100人中20人くらいは騙されるだろうよ。
というわけで忠告しておきますとスペースチャンネル5とはなんの関係もありません。
底抜けキャスターが大器晩成になるんじゃなかろうか的ストーリーですが一巻はどたばたしているうちに終わります。
同期のキャラとか主人公の家族とかの出しどころが全体的に散漫で唐突な感じを受けました。
もうちょっと流れ的に自然な方法はなかったものかと思います。


情報セキュリティスペシャリスト本試験問題

前買った対策本は読破したような気がなんとなくしないでもないと断言するにやぶさかではないかもしれない程度には読んだかもしれないので、今度は過去問を購入。
うむ、よくわからん。


BROTHERS IN ARMS HELL'S HIGHWAY

さくらやで投げ売りしてたので買ってみたはいいもののFallout3が終わりそうにないので全然手が出せない。
のうのうとしていたらレギンやらエスガルやらBFBC2やらがやってきそうである。
どうしたものか。



2010/02/14 18:52 | Comments(0) | TrackBack() | 買ったもの

<<前のページ | HOME | 次のページ>>
忍者ブログ[PR]