忍者ブログ
[PR]
×

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



2026/04/09 21:46 |
買ったものリスト 2010/03/14

今日のヒゲじいはいつにも増してウザいな。
というか今週も来週も使い回しかよ。全部見たよ。


とある魔術の禁書目録20
☆☆☆☆☆

これまで毎回いろんなところでバラバラに起こっていた色々な事件、それらがついに一本の紐に絡まり始める。
ということで第三次世界大戦が始まるもののその緊張感の薄いこと薄いこと。
一部組織と個人がオーパーツとか超科学レベルの力を持っているせいで、主人公特権のない一般人はいくら武装しようともゴミ扱いなんだよなあ。
浜面があんだけがんばったのと同じことをアックアが一瞬でやってみたりとそういうの。
だがまあ正直面白いのでそこらへんはどうでもいいんだが。
複数の視点で平行して物語が語られますが、今回絡み合うのはそのうちの2本だけです。
次こそは他の全てもまとまるのかと思うと楽しみだ。

あと最後のお前はいい加減もう死んどけと。


パーツのぱ1
☆☆☆

明るい絵柄とギャグパートに釣られてみたらえらい生々しくて内幕ドロドロの秋葉原パーツショップ事情。
本当にこんなかんじなのか?嫌すぎる。


キルミーベイビー1
☆☆☆☆

ほのぼの殺伐4コマ。
本作には、本作程度の年齢層の登場人物が登場する作品には不可欠である、容赦とか良識といった要素が欠落しています。
普通に関節外したりグーパンチだったりバールのようなもので殴ったりと、普通の感覚ではありえないレベルの表現なのに何故かほのぼのしています。
登場人物が基本的にほぼ二人、ときに三人という最小限の構成で、大抵毎回どちらかがボコられるという単純な展開なのに飽きがきません。
無為に登場人物を増やさずに行ってほしいですね。
全日本妹選手権の後期とか酷かったからな…


月見月理解の探偵殺人
☆☆☆

えー、たいしたことのない闇だな。
ていうか、結局依頼を実行してないじゃない。
あれだけ大口叩いてあたり中引っかき回しておいて結局のところ何もしなかったのと同義とかなんだそれ。


竜と勇者と可愛げのない私
☆☆

実力はあるものの出自のせいで出世できない宮廷魔術師と、腕は超一流なのにやる気が死ぬほど無い勇者の魔王討伐珍道中。
といっても魔王の十人の娘のうち一人を倒したところでおわりです。
全体的に御都合主義というか話の都合が良すぎてどうも合わなかった。 

PR


2010/03/14 20:09 | Comments(0) | TrackBack() | 買ったもの
EC-CUBE 商品情報を追加

商品情報テーブルはdtb_productsですが、ここに適当に商品情報のカラムを追加したら商品リストですぐに表示できるかというとできません。
検索ブロックなどからの検索は/data/class/pages/products/LC_Page_Products_List.phpLC_Page_Products_List::lfDispProductsList()で実行されています。

450行目あたり、▼商品詳細取得の部分で、検索対象となるカラムを羅列しています。
ここに追加したカラムを記入すると、表示できるようになるかというとシステムエラーになりました。

そこらへんの処理をよく見てみると、実はvw_products_allclassという得体の知れないテーブルから検索を行っています。
実際にデータベースを覗いてみてもvw_products_allclassは存在しません。
名前の通りvw_products_allclassはビューなのですが、MySQLの場合は何故か実際にビューを作成せずに、ビューに相当するSQL文を毎回作成して実行しているみたいです。
どうしてこんな作りなのかは謎。

実際にそのビュー的なSQLを作成しているところは
/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.phpSC_DB_DBFactory_MYSQL::viewToSubQuery()です。
最初に$sql['vw_products_allclass_detail']を作成するところでdtb_products.***なんかがいっぱい並んでいますが、そこにカラムを追加することでようやくテンプレートから参照できるようになります。
このビューですが、なにやら尋常ではないJOINを行っていてとんでもなく訳がわからないことになっています。
どうしてこんな作りなのかは謎。
 

EC-CUBEの記事


2010/03/12 22:29 | Comments(0) | TrackBack() | PHP
==NOVEL PHILOSOMA== 05

==SCENE 02==

「ヴィジュアル・ID・ターゲット、ドギーハウス、チャージ・モード接近」
「ドギー、射出しました!」
 チャーリー・フライトのクラウスが叫んだ。
 ドギーハウスからドギーが射出されていた。ドギーは一種の巡航ミサイルだ。オレンジ色のその姿は、ミサイルの尾部に似ていた。フィンだけが飛んでいるような寸詰まりのデザインだ。魚で言えばマンボウに近い。空力的には全く不細工なものだが、攻撃力は高い……。機首に装備している20ミリ機関砲弾を喰らったら、ストレガといえども危険だ。
 ドギーは4機編隊で接近していた。生き残る方法はただ一つ。先にドギーを片づけ、あとは一気にドギーハウスを叩く……ミショーは決断した。
「ハント、カート、ドギーを殺れ。残りはドギーハウス」
「ラジャー」
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

 ハントとカートのストレガのウェポン・ベイが開いた。続いてウッドペッカー・ミサイルが空中に放たれる。轟音と共にロケットモーターが点火し、ミサイルは炎と白煙を引きながら目標を目指した。
 ウッドペッカーはヒューズ・エアクラフト社が開発した短射程空対空ミサイルだ。誘導方式は赤外線とCCDイメージセンサーを併用し、高い命中率を誇る。
 空中で爆発が起こった。ハントとカートの放った4発のウッドペッカーは、3発がそれぞれドギーに命中した。だが、残る1機はミサイルを回避し、ストレガへ向かってきた。
 ハント中尉はレーダーをボアサイト・モードに切り替えた。これはレーダーを直前方にのみ固定し、ヘッド・アップ・ディスプレイ内に入ったターゲットを射撃するモードだ。レーダーのビーム幅は60ミル。ヘッド・アップ・ディスプレイの表示幅とほぼ一致する。パイロットは、ただディスプレイ上にターゲットを捉える事に集中すればいい。
 彼はドギーを照準レティクルに捉えた。距離は約1マイル。トリガーを引きかけたハントは、前方にきらめきを見た。なんだ……?
 次の瞬間、彼のストレガは爆発していた。シートを貫く強烈な光が網膜を焼き尽くす。
 オレンジ色に輝く光の塊……それがハントの見た最後の光景だった。
 ドギーの放った20ミリ機関砲弾がストレガのウェポン・ベイを直撃し、残りのミサイルと弾薬を爆発させたのだ。
 その破壊力は圧倒的だった。ハントのストレガは内部からの爆発により瞬時に引き裂かれ、ちぎれ、四散した。
 あとに残ったのは、空中爆発の炎と白煙だけだった……。
「ハント!」
 ミショーは叫んだ。敵はウェポン・ベイを狙った……なんてヤツだ……ならば……。
「フォックス・スリー」
 最初からバルカンで勝負だ。ミショーはスロットルを全開にしてドギーに突撃した。ドギーは真正面───ヘッド音だ。戦闘機相手の空戦では相打ちになるため厳禁されている。危険だ……ええい、かまうものか、墜ちろ!
 バルカンが吠えた。アサルトウイングの付け根から、オレンジ色に輝く弾流がほとばしる。口径20ミリの劣化ウラニウム弾が、徹甲弾、通常弾、曳光弾、焼夷榴弾の順で毎分8000発の高速で放たれる。発射の轟音は電動ノコの唸りにそっくりだ。曳光弾が空中を飛翔するのがはっきり見える。
 ゼロコンマ8秒後、ドギーと曳光弾が交差した。爆発が起きる……ドギーは20ミリ弾の直撃を受け、空中分解した。
 ハントの仇はとった……だが、ドギーハウスはまだ健在だ。
 ミショーは右へバンクして機首をドギーハウスへと向けた。
「全機、フォーメーション・アルファフォー」
「ラジャー」

 ギャラントのCICでは、全員が息を呑んでスクリーンを見つめていた。ストレガに搭載されているビデオカメラからの映像が、メインスクリーンに投影されていた。
「無謀だ……無謀すぎる……」
 呆れ顔でコックスは呟いた。
 ストレガ6機とドギーハウス3機では勝負にならない。ドギーハウスは近接戦闘でも手強い。ミサイル、バルカンを始めとするあらゆる武器を装備している……正面きった接近は、ただ撃墜されに行くようなものだ。

 ミショーにしてもその点は覚悟していた。だが、逃げては捕捉され、結局は撃墜される。ドギーハウスを倒すしか道はないのだ。
 ミショーの作戦はただ一つ。ドギーハウスにロケット弾を集中して叩き込むのだ。チタニウムと特殊セラミックスで構成されている、厚さ180ミリの複合装甲を張り巡らしているドギーハウスを墜とすには、それしかない。
 ヘッド・アップ・ディスプレイにドギーハウスが映った。距離は約7マイル。ミショーはアリスに同時集中攻撃を命じた。
「ファイア」
 ストレガ全機から一斉にロケット弾が発射された。オレンジ色に輝く弾体が虚空の一点に向けて吸い込まれていく。そこはブラドギーが移動するであろう未来位置だった。敵の回避運動の偏差を組みこんで放たれたロケット弾は、74%という……無誘導ロケットとしては素晴らしい確率でドギーハウスにヒットした。
 空中に炸裂が起きた。爆炎がターゲットを包み、雷鳴のような爆発音が響いてくる。
 クラウスが叫んだ。
「やった!」
 さらに爆炎が派生する。炎の壁が一面に広がった。だが妙だ……何かおかしい。
 ラングは目を見開いた。
 爆煙が揺らいだ……次の瞬間、ドギーハウスが炎の衣をまといつつ姿を現した。
「なにぃ!」
 ラングは愕然とした。なんてこった……ヤツの表面を僅かに燃やしただけじゃないか……いったいどういう装甲なんだ……?
 彼は唖然としてドギーハウスを見つめていた。ロケット弾が通じない相手には、炸裂量の少ない対空ミサイルは無力だ。
 他の兵装は……? パルス・レーザーではヤツの特殊セラミックスを貫通できない。唯一の策は荷電粒子ビーム───アサルト・ブレイカーだが、この位置では間違いなく相打ちになる。距離を取るために離脱をかけたら……? ダメだ。離脱中に撃墜されるだけだ。
 その時、不意にディースリーが上昇した。一直線にブラドギーのいる上空に向かった。
 何を血迷ったんだ? あれじゃ、墜としてくれと言っているようなものだ……。思わずラングは怒鳴った。
「ディースリー、降下しろ!」
 だが、ディースリーは無視した。彼はアフターバーナーに点火した。ドーン……という音とともに機体が瞬時に加速され、速度がたちまちマッハ2を超える。ズーム上昇をかけつつ、ディースリーはドギーハウスの上をフライパスした。ウェポン・ベイが開くと共に、黒い物体がドギーハウスめがけて投下される。
 ラングは愕然とした。ディースリーが投下したのは爆弾だった。それも50ポンドのMk-38燃料気化爆弾だ。ラングは叫んだ。
「全機、ブレイク!」
 燃料気化爆弾は、エアロゾールを振りまきつつ、ドギーハウスの上空、約70メートルで信管を作動させた。
 次の瞬間、太陽の輝きにも似た閃光がきらめき、続いて巨大な火球が発生した。一平方センチメートルにつき150キロを超える爆圧がドギーハウスを叩きのめす。燃料気化爆弾の最大の特徴は爆圧にあった。この点だけで比較すれば、小型の戦術核に匹敵する(タイプと弾頭重量にもよるが)威力が燃料気化爆弾にはあった……。
 ラングのストレガは、続いて押し寄せた爆風を喰らって激しく揺れた。アリスが全力で補正しているが、それでもセスナでタービュランスの中に飛び込んだような凄まじさだ。
 激しく揺れるコクピットでラングは驚喜した。なんてヤツだ……一発で蹴りをつけやがった。
 たった一発で……。
 火球が消滅し、爆風が煙を吹き飛ばした……爆心地を見たラングは唖然とした。
 ドギーハウスが飛んでいた位置には、200フィートはある巨大なクレーターが開いていた……奴等は全滅したのだ。
 ラングはカフをあげた。
「ディースリー、よくやった」
 何を今さら……。
 ラングのコールに、ディースリーは心の中で呟いた。
 少年のようなおとなしい容貌とは裏腹に、ディースリーは自信家だった。また、それを裏打ちする能力もある。飛行学校ではトップの成績で、教官機すら何度も撃墜した。彼は、(ラングが知れば目をむくだろうが)自分をトップガンの資格があるパイロットだと絶対的に確信していた。
 ノイズと共に今度は別のコールが響く。
「ディースリー、こちらチャーリー・リーダー、ミショー。編隊に戻れ」
「ラジャー」
 ミショー大尉か……ショートカットのブラウンヘア。チャーリーリーダーの腕利き……。一度、お手合わせ願いたい相手だ。訓練でもプライベートでも……。顔立ちはきついが、ミショー大尉は美人だ。こんなヤクザな部隊にいるにはもったいないほどの……。
 ディースリーはニヤリと笑った。ここは一つ、俺の実力をミショーに認めさせ、彼女を口説いてみるのもおもしろい……俺の見たところ、カレン中尉にはどうやら決まった相手がいるようだからな……。
 ミショー達が新米と軽んじていたディースリー……だが、彼は外観と対照的に、恐ろしいほどシビアな内面を、パイロットとしてハイレベルの力量を持っていた。彼の存在は、ある意味で今回のミッションの性格を象徴するものとなった。後にX-FILE0139として最高機密に指定される220レスキュー・オペレーション……ディースリーとミショーには、その当事者として当局の長期の尋問と拘留が待ち受けており、二人は嫌がうえでも接近するのだが……それは先の話だ。
 続きを話そう。
 ディースリーの戦果を見たギャラントのCICは、今やスーパーボールの観客席と化していた。誰もが歓声を上げ、腕を振り上げている。あのキナバルですら笑みを浮かべていた。
 ただ一人の例外はコックスだった。彼は難しい顔をして手元のモニターを睨んでいた。彼はデータの意味するところを理解しつつあったのだが…不幸な偶然がそれを砕いた。
 警報音と共にメイン・スクリーンにある単語が表示された。その瞬間、歓声はピタリと止んだ……いったい何が……? 思わずコックスは顔を上げ、そして息を呑んだ。

 ミショーは酸素マスクを着け、アリスに上昇を指示した。低空進入はこりごりだった。高度があったほうがまだ対処しやすい。フラッシュ・コールが響いたのはその時だった。
 


他章


2010/03/10 23:45 | Comments(0) | TrackBack() | ゲーム
EC-CUBE 複数商品の一括登録その2
続き

/data/class/page/products/LC_Page_Products_Buy.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<?php
 
    require_once(CLASS_PATH . 
        "pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php");
 
class LC_Page_Products_Buy extends LC_Page_FrontParts_Bloc {
    
    //定数
      const ERROR_MESSAGE = '買い物籠への投入処理に失敗しました';
    
    //変数
      protected $error_flg=false;
    
    //初期化
    public function init() {
        parent::init();
        //テンプレは使用しません
        //DB接続クラス
        $this->objDb = new SC_Helper_DB_Ex();
    }
 
    //デストラクタ.
    public function destroy() {
        parent::destroy();
    }
    
    //メイン処理
    public function process() {
        
        //引数から、商品番号および件数を取得
            $item_array=$this->getRequest($_REQUEST);
            if(!$item_array){
                $this->printError();
                exit();
            }
        
        //商品をカートに投入
            $ret=$this->setOrder($item_array);
            if($this->error_flg){
                $this->printError();
                exit();
            }
        
        //買い物が成功
            $this->processSuceed();
            exit();
        
    }
      
    //---------------------------------------------------
    // 商品IDから商品リストを作成する
    protected function getRequest($request){
        //返り値
            $ret=array();
        //繰り返し
        foreach($request['product_id'] as $key=>$val){
        
            //IDや数量欄が空白であれば異常
                if(!$val || !$request['quantity'][$key]){continue;}
            //ID毎にリクエストを纏める
                $product=array();
                $product['id']      = $val;
                $product['quantity']= $request['quantity'][$key];
                $product['cat1']    = isset($request['cat1'][$key]) 
                    ? $request['cat1'][$key] : 0;
                $product['cat2']    = isset($request['cat2'][$key])
                    ? $request['cat2'][$key] : 0;
            //引数に異常値があれば買い物籠に投入不可
                $product_check=$this->checkProductError($product);
                if(!$product_check)){
                    $this->error_flg=true;
                    return false;
                }
            //籠に入れる用リスト
                $ret[$key]=$product;
        }
        //返却
            return $ret;
    }
    
    //---------------------------------------------------
    // 配列に入ってきた商品を買い物籠に突っ込む
    protected function setOrder($item_array){
        //引数
        if(!is_array($item_array)){return false;}
        
        //インスタンス
            $objCartSess = new SC_CartSession();
        
        //各商品でループ
        foreach($item_array as $key=>$item){
                        
            //変数整理
                $product_id   =$item['id'];
                $quantity     =$item['quantity'];
                $product_cat1 =$item['cat1'] ? $item['cat1'] : "0";
                $product_cat2 =$item['cat2'] ? $item['cat2'] : "0";
            //実行
                //エラーが出ても取得できないので困る
                $objCartSess->addProduct(
                    array($product_id, $product_cat1, $product_cat2),$quantity
                );
        }
        
        //買い物かごの集計更新
            $this->setOrder_updateCart();
        
        //返却
            return true;
    }
    
    /*
       setOrderのサブルーチン
        買い物かごの集計を更新する
        これを行わないと、合計金額などが更新されなかったりする
    */
    protected function setOrder_updateCart(){
        //中身はLC_Page_Cart::process()のコピペ  どうなってるのかはよくわからない
        
        //インスタンス?
            global $objCampaignSess;
            $objView = new SC_SiteView(false);
            $objCartSess = new SC_CartSession("", false);
            $objSiteSess = new SC_SiteSession();
            $objCampaignSess = new SC_CampaignSession();
            $objSiteInfo = $objView->objSiteInfo;
            $objCustomer = new SC_Customer();
            $db = new SC_Helper_DB_Ex();
            $arrInfo = $objSiteInfo->data;
        //実行?
            $db->sfTotalCart($this, $objCartSess, $arrInfo);
            $db->sfTotalConfirm($this->arrData, 
                $this, $objCartSess, $arrInfo, $objCustomer);
        //終了?
            return true;
    }
    
    //---------------------------------------------------
    /*
        買い物籠に投入失敗時、エラーを表示して終了
    */
    protected function peinrError() {
        SC_Utils_Ex::sfDispSiteError(
          FREE_ERROR_MSG,false,false,self::ERROR_MESSAGE);
         exit();
    }    
    //---------------------------------------------------
    /*
        買い物籠に投入成功時、カートにリダイレクト
    */
    protected function processSuceed() {
          $this->sendRedirect($this->getLocation(URL_CART_TOP));
            exit();
    }
     
    //---------------------------------------------------
    /*
        サブルーチン
        基本的にLC_Page_Products_Detail等のコピペ、のはずだったがそうでもなくなった
    */
    
    /*
        商品ID、数量、サブカテゴリ1、サブカテゴリ2から、不正値がないかチェック
        
        ここらへんは本来SC_Helper_DBあたりに入れるべき
        ていうか、SC_Helper_Product的なものを作るべき
    */
    protected function checkProductError($product){
        //商品IDが数値でなければ異常
            if(!SC_Utils_Ex::sfIsInt($product['id'])){
                return false;
            }
        
        //該当の商品が存在しなければ異常
            if(!$this->objDb->sfIsRecord("dtb_products", "product_id"
                , $product['id'] , "del_flg = 0 AND status = 1")
            ){
                return false;
            }
        
        //商品を取得できるかどうか確認
            $ret=$this->getProductInfo($product);
            if(is_array($ret) && isset($ret['error'])){
                return false;
            }
        
        //商品の在庫チェック
        //商品の購入量制限チェック
            //めんどいので略
            
        //チェックを通過
            return true;
    }
    
    /*
        商品ID、サブカテゴリ1、サブカテゴリ2から、商品情報を取得
    */
    protected function getProductInfo($product){
    
        //SC_Helper_DB::sfGetProductsClass()が引数をlistで受け取るので順番を設定
            $product_obj=array();
            $product_obj[]=$product['id'];
            if($product['cat1'] != 0){
                $product_obj[]= $product['cat1'];
            }
            if($product['cat2'] != 0){
                $product_obj[]= $product['cat2'];
            }
        
        //取得
            $ret=$this->objDb->sfGetProductsClass($product_obj);
            if(!$ret){
                return false;
            }
        //返却
            return $ret;
    }
    
//↓クラスのおわり
}

products/buy.php?product_id[]=1&cat1[]=1&cat2[]=6&quantity[]=1&product_id[]=1&cat1[]=2&cat2[]=5&quantity[]=2&product_id[]=1&cat1[]=2&cat2[]=4&quantity[]=3

などというリクエストを送信すると任意の商品をさくさく登録することができます。

実はエラー制御とかわりと適当ですが気にしない。
SC_FormParamの使い方がかなり意味不明だったので自力でやってます。
他にも各ヘルパなんかの使い方がよくわかってないので無駄っぽいことをやってる気がします。
メソッド名とかも適当に過ぎますし。

ですが、元のソースもせめてこの程度には分割してほしい。
switchの中に長大なロジックとかいい加減もう見たくないぞ。
まあ、もっと言うならFactoryMethodかなんか使えって話ですが、さすがにそこまでするのはめんどい。


EC-CUBEの記事


2010/03/08 21:47 | Comments(0) | TrackBack() | PHP
EC-CUBE 複数商品の一括登録その1
ブラウザバック対策だと思われますが、デフォルトの商品購入ボタンは<form>を使用しているにもかかわらずボタン自体は<a>で表示し、ボタンを押したらJavaScriptで検知して<form>に値を突っ込んでPOSTするという意味のわからない仕様になっています。
ソースを追うのが面倒なのですが、最終的にやってることはproduct_idに商品IDを突っ込んで送信です。

送信先での動きは2種類の経路があります。

まず商品詳細ページから。フォームの宛先は自分自身。
/html/productes/detail.php
/data/class_extends/page_extends/products/LC_Page_Products_Detail_Ex.php
/data/class/pages/products/LC_Page_Products_Detail.php
/data/class/pages/products/LC_Page.php


具体的な登録ロジックはLC_Page_Products_Detail::process()のSC_CartSessionを触っている部分です。

商品一覧、検索ページからでも購入することができますが、こちらもフォームの宛先は自分自身です。
/html/productes/list.php
/data/class_extends/page_extends/products/LC_Page_Products_List_Ex.php
/data/class/pages/products/LC_Page_Products_List.php
/data/class/pages/products/LC_Page.php


購入ロジックはLC_Page_Products_List::process()のやはりSC_CartSessionの部分です。

どちらも、商品表示を行うロジック中で、引数product_idを見つけたら買い物籠に突っ込んでショッピングカートに飛ばす、ということを行っています。
普通籠に投入する専用のクラスとか作るだろ。
また、この両者、行うことは同じなのに書き方が全然違います。
なんでこんなことになってるんだよ。


見通しのいいように、ていうか既存のロジック触りたくないので、購入処理専用のロジックを作成することにします。

まず、購入ブロックを呼び出すロジックを作成します。
内容的に/html/productsディレクトリに作成するのが無難だろうので/html/products/buy.phpを作成。
中身はブロックの呼び出しと同じ作りです。

/html/products/buy.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
    /*
     * 商品を買い物籠に入れる専用のロジック
     * 買い物籠に入れた後はカートに移動します。
     */    
     
    //必要ファイルのインクルード、セッション呼び出しなど
        require_once('../require.php');
    
    //ロジックを実行
        require_once(CLASS_EX_PATH . 
          "page_extends/products/LC_Page_Products_Buy_Ex.php");
        $objPage = new LC_Page_Products_Buy_Ex();
        register_shutdown_function(array($objPage, "destroy"));
        $objPage->init();
        $objPage->process();

/data/class_extends/page_extends/products/LC_Page_Products_Buy_Ex.phpを作成。
1
2
3
4
5
6
7
<?php
    require_once(CLASS_PATH . 
        "pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Buy.php");
    class LC_Page_Products_Buy_Ex extends LC_Page_Products_Buy {
        public function init()    { parent::init();   }
        public function process() { parent::process();}
        public function destroy() { parent::destroy();}
    }

/data/class/page/products/LC_Page_Products_Buy.phpを作成。
ここに実際のロジックを記入していきます。

なんと驚いたことに容量制限とやらで入りきらないので続く


2010/03/08 21:45 | Comments(0) | TrackBack() | PHP
買ったものリスト 2010/03/07

特に決めたわけでもないんですがなんとなく毎週5冊というスタイルになったのでそれを続けているのですが、紹介してないタイトルがどんどん増えてきた。
こんなに買ってたとはさすがにびっくりだ。


シュタインズ・ゲート 公式資料集
☆☆☆☆

大丈夫?ファミ通の設定資料だよ?

本作は大丈夫でした。
コレクターなら集めてよし。
しかし夢の解釈はやっぱりちょっと残念。


アクセル・ワールド1
☆☆☆☆☆

電脳メガネが完全に社会に根付いた世界。
ストーリーは現実世界でのいじめられっ子がネットでヒーローになるというまあありがちな話なのですが、文章や展開が上手なので普通に引き込まれます。
本来はネット上でも通常と同じ速度でしか行動できないのですが、そのプロテクトを打ち破り一千倍にまで超加速できるブレイン・バースト、それを利用して何をするかと思えば格ゲーって。
あまりにギャップの激しすぎる技術の無駄遣いに脱力しましたが、やはり王道は読んでいて安心できる面白さがある。
ところでソーシャルカメラを利用して再構成って書いてあるけど病院内個室とか東京全域をハッキングして1000分の1秒単位で再構成して全リンカーに送信とかどんだけ超技術だよ。
あとネットに接続するだけで常時対戦待ち状態とかウィルス並に嫌がらせだな。
あと最後の短編はちょっとウケた。

しかし何故モテる。そこだけが納得いかん。


舞勇伝キタキタ2
☆☆☆

今からでも遅くはない。主人公をチェンジするんだ。
あれ?主人公オヤジじゃなかったのか。
というわけで影の薄い主人公となんだかよくわからないオヤジが不快な旅を繰り広げる第二巻。
ちょっとおかしな性癖のルウが居なければとっくに本作を諦めていたことでしょう。


オバカミーコ15
☆☆☆☆

とてもオバカとは呼べなくなったミーコの戦い最終刊。
ミーコがその壁だった馬杉に挑み、波溜がその壁だった我鷹に挑みます。
ただ波溜は主題じゃないからかページがないからかあっさりしすぎ。
「麻雀の神様は二度と微笑まない」もスルーしたしな。
どうせ似たような戦法なんだから同時進行とか面白ギミックを仕込んでもよかったのに。


ユニコーンの日 下
☆☆

腐海の奥底から上巻を発掘したので一気に読破。

あれ?オチは?
話が終わってないんですが。
ていうか始まってすらいないんですが。
初代で言うと「ガンダム大地に立つ!終わり」みたいな。
アルベルトとか箱の正体も一切不明のままとかもうね。
福井晴敏だけあって筆力はすごいのですが、イージスやローズダストを越える竜頭蛇尾感に驚きを禁じ得ない。

と、ここまで書いたあと初めて気がついたのだが、実は上下巻ではなく全10巻だった。
先に言ってくれよ!
本作の何処にも全10巻ですよとかそのうちの第二巻ですよとか書かれていないんですが。
店頭で見て買っただけなので完全に全二巻構成だと思ってました。
もうちょっとそこらへんの宣伝どうにかしてほしかった。



2010/03/07 16:57 | Comments(0) | TrackBack() | 買ったもの
EC-CUBE ログインで画面移動しない
デフォルトのログインブロックは、ログインするとサイトトップに移動してしまいます。
ログインしても画面移動を行わず、単にログイン状態になるだけのほうが便利だと思うので変更してみます。

幸いなことにデフォルトのログインフォームにはログイン元のページを示すurlパラメータが最初からくっついているので、ログイン終了後にそこにリダイレクトさせれば解決しそうです。

ログイン先のURLは
http://eccube.localhost/login_check.php
呼ばれるファイルは、順に
/html/frontparts/login_check.php
/data/class_extends/page_extends/frontparts/LC_Page_FrontParts_LoginCheck_Ex.php
/data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php
/data/class/pages/LC_Page.php
となっています。

具体的にログインに成功した場合の処理を行っているのはLC_Page_FrontParts_LoginCheck::process()の以下の部分です。

1
2
3
4
5
  if($objCustomer->getCustomerDataFromEmailPass(
    $arrForm['login_pass'], $arrForm['login_email'], true)) {
      $this->sendRedirect($this->getLocation(URL_DIR, array(), false));
      exit;
  }

でだ、EC-CUBEのデフォルト動作を修正する場合は/data/class/以下は触らずに、そこに対応する/data/class_extends/を触れ、ということになっています。
つまりLC_Page_FrontParts_LoginCheck::process()の動作を修正するかわりにLC_Page_FrontParts_LoginCheck_Ex::process()を修正すればよいのですが、LC_Page_FrontParts_LoginCheck::process()はひとつのメソッドに動作を全部詰め込んでいるせいで一部だけの修正というのができないんだこれが。
画面表示までやらせるなよ。いくらなんでも。
parent::process()が完全に死にメソッドじゃないか。
EC-CUBEはとにかく粒度が荒い。

LC_Page_FrontParts_LoginCheck_Ex::process()LC_Page_FrontParts_LoginCheck::process()を全部コピペし、上記の部分だけをこのように修正。

1
2
3
4
5
6
  if($objCustomer->getCustomerDataFromEmailPass(
    $arrForm['login_pass'], $arrForm['login_email'], true)) {
      $this->sendRedirect($this->getLocation(
        $_REQUEST['url'], array(), false));
      exit;
  }

あっさり完成しました。
が、結局全部まるごとコピペしなければならないというこの作りはいただけない。
今回はやってませんが、プログラムを作成する際は各機能毎にメソッドに分けるようにしましょう。
そうなっていれば、今回の場合もリダイレクトするメソッドだけをオーバーライドすれば済んでいたはずですし。

あと問題点として、POSTで移動した後のページからログインするとPOSTで渡したパラメータが無くなるのでエラーになったりおかしくなったりします。
メソッドを見て処理を分岐するなり、ログインブロックでPOSTパラメータを全部常時一緒に送るようにしたりといったことが必要になります。
面倒なのでやめたほうがよかったかもしれない。


EC-CUBEの記事


2010/03/05 21:37 | Comments(0) | TrackBack() | PHP
==NOVEL PHILOSOMA== 04

==SCENE 01==

「ラングよりディースリー、距離を詰めろ」
「ラジャー」
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

ディースリーの機体がすこし前に出る。
「セブン・オ・クロックにボギー」
「スプラッシュ」
「フォックス・ツー・ファイア」
 コールと爆発音が響く中、ミショーは戦闘機動を繰り返しつつカレンとディースリーの動きを観察していた。
 二人とも、射撃の命中率はあまり高くないようだ。彼女は素早くパッドを操作して二人の命中率をCRTに出した。
「Shit……」
 思わず罵声が漏れた。カレンの方がディースリーよりも低い命中率だ。

 兵学校出の新入りに抜かれるなんて……モニターに映るカレンの機体に、ミショーは心の中で毒づいた。ミショーは、兵学校を始めとする学歴の高い者を軽蔑していた。
 だがそれは、彼女の頭が悪いことを意味しない。むしろ逆だ。ミショーは、かつて医大でウィルス学を専攻する学生だった。成績はトップクラスで、指導教官の受けも良かった。あの頃は輝いていた……未来への希望と、夢と、恋人と、そして何よりも愛する家族があった。生涯の最良の刻を選べと言われたら、ミショーはためらいなくこの日々を選んだだろう。
 だが、ひとりの酔っぱらいが彼女の運命を変えた。ミショーの両親は、信号を無視し、側面から突っ込んできた酔っぱらいの車のため重傷を負った。
 生きてさえいてくれたら……知らせを受けたミショーは車で病院に向かった。
 ここまでは、誰にでも起こり得る話だ。不幸な話なのは確かだが……。ミショーの悲劇はここから始まった。彼女は病院に向けて全速力で車を飛ばし、たどり着く寸前に、同様に飛ばしてきた救急車と正面衝突した……。
 救急車の患者とドライバーは重傷、ミショー自身も両足を複雑骨折し、肋骨を3本折った。折れた肋骨は肺に突き刺さり、危うく心臓まで達するところだった。衝突のショックでミショーは重度の脳震盪を引き起こし、意識不明の重体に陥った。
 彼女の意識が戻ったのは、事故から10日後だった。様態が安定するまでさらに10日……ミショーは両親の生存と救急車の患者の無事を知り、胸をなで下ろした。
 だが、それはすべて嘘だった。両親は事故から3日後に相次いで息を引き取り、救急車の患者は、手術は成功したが、院内感染で2日後に死んだ。医者は、ミショーの回復を待って真実を告げた。愕然とするミショーに追い打ちをかけるように、警察は彼女に過失致死罪を適用した。自責の念にかられたミショーはそれを受け入れ、回復を待ったうえで交通刑務所への収監が決定された。
 ミショーはすべてを失った。両親も、恋人も、財産も……では憎悪は? 両親を殺した憎むべき酔っぱらいはフロントガラスに頭を突っ込み、頸動脈を切って即死していた。彼女にあるのは自責と絶望と、20万ドルという莫大な賠償金の請求だけだった。
 コックスがミショーの前に現れたのはその時だった。彼は軍の入隊と引き替えに賠償金の免除と刑務所からの出所を申し出た。
 だが、幾ら何でも話がうますぎた。
 不審を感じるミショーに、コックスは、彼女がROTC───予備役幹部要請コースを受講していたことを思いださせた。彼女の成績は素晴らしかった。空前の好景気故、深刻な募集難に陥っていたUNFは、彼女の存在に目を付けたのだ。
 この女はダイヤモンドの原石だ。特にパイロットとしての適性は産まれながらのものだ。借金と刑期の免除? いいだろう、精算してやれ。パイロット一人を育てるのに、幾らかかると思う? 900万ドルだぞ。そのくせ、一人前になったと思ったら、どいつもこいつも民間に乗り換える。
 ニコラ・ミショーは最高のパイロットになる素質がある。釈放と引き替えに、UNFに永久入隊させるんだ!
 かくしてミショーは、刑務所から軍隊へと身柄を移され、そのまま訓練スクールへと放り込まれた。
 ある意味で、ミショーは囚人だった。弱みを握られ、軍から永遠に離れることを許されない囚人だ……彼女がここを出るときは棺に入るときだけだ。その時ですら、彼女の墓石の前には軍関係者が居並ぶだろう。
 ミショーはその点は不満ではなかった。なぜなら、これは罰だからだ。過失とはいえ、一人の人間を死に追いやった責任を彼女は自覚していた。ハードな訓練は自分に架せられた罰だった。コックスに命じてミショーを引っ張った人物は、その点まで彼女の性格を完璧に見抜いていた。
 ミショーはその期待に見事に応えた。入隊から3年後、ニコラ・ミショーは少尉に進級し、ウイングマークを手に飛行学校をトップの成績で卒業したのだ。
 任官しても、彼女の力は抜きんでていた。アナポリスをトップクラスの成績で卒業した男たちが彼女に戦いを挑んだが、全員があっさりと玉砕した。そのあまりの不甲斐なさにミショーは幻滅し……やがて、エリートたちを軽蔑するようになった。望んで軍に入ったわけではない自分に対して、彼等は進んで軍に入り、自分より劣った力しか出せない……そのことが潔癖な彼女には許せなかったのだ。
 ミショーが気を許せる者は、一部のパイロットだけとなった。その中の一人がラングだ。普段のラングは酒乱で粗暴なだけの男だが、戦闘機を操るときはまるで別人だった。努力と鍛錬と集中力が彼にはある。だが、お嬢さん育ちが未だに抜け切らぬカレンとは、どうにも肌が合わなかった……。もっとも、カレンの技量を厳しく見てしまうのは、ミショーが気づかぬ別の理由もあったのだが……。
 ミショーの想いを遮るように、全く別の電子音が響いた。
「コウション。ニューターゲット、ブラックウィドゥ」
「クソ! ロックオンされた!」
 ラングの罵声が響いた。
「全機、回避機動! 渓谷から出ろ!」
 ミショーがコールした瞬間、編隊が分散した。アフターバーナーの咆哮が峡谷に反響し、ストレガの翼端から発生する水蒸気───ベーパーが大気を切り裂く。
 ミショーたちは一斉に上昇を始めた。ブラドギーならともかく、ブラックウィドゥに対して峡谷にとどまる事は自殺行為だからだ。アリスのコールが響いた。
「ブラドギー、ミサイル発射。弾数7。タイプ判明。オーロラ」
 ラングは怒鳴った。
「ターゲットは誰だ!」
「イッツ・ユー」
「クソ!」
 ラングは罵声をあげた。接近して来るミサイルは最悪の存在だった。その上ターゲットは自分……彼が罵るのは当然だった。
 オーロラがなぜパイロットに嫌われているのか? それは、このミサイルが空中ロックオン・システムを採用したハイマニューバータイプだからだ。
 空中ロックオン・システムとは、ミサイルが飛行中に自発的にターゲットを補足する方式だった。事前の探知の必要さえなかった。敵がいるだいたいの方位に向けて発射さえすれば、あとはミサイルが勝手にターゲットを捉える。文字通りのオートシュート、オートキルを目的に開発されたミサイルだ。
 無論、複数が発射された場合は相互にリンクして最適の攻撃パターンを選び、追尾する目標がダブらないよう攻撃する。しかもオーロラは、フィンとロケットモーターが従来のものより改良され、高い機動性も備えている。このミサイルの欠点といえば、誤って味方を攻撃する可能性がある点だった。逆に言えば、全周が敵の場合は最高に使いでのあるミサイルということになる。このミサイルから逃れる方法はただ一つだ。
 ラングはヘッド・アップ・ディスプレイを見た。敵ミサイルの位置を示す目標コンテナの四角い表示が、刻一刻と下に下がってくる。自機に向けて接近していた。相対速度はすでにマッハ5を超えている。
 ラングはフレアとチャフのリリースボタンを押しつつ、ストレガを急旋回させた。古典的だが、この方法でしかオーロラがかわせないことをラングは知っていた。オーロラには、ターゲットがベクターノズルで急減速をかけたときに備え、特殊なプログラムが組み込まれている。
 彼の機体は急上昇をかけつつ急旋回を行っていた。こんな芸当は、怪物的なエンジンパワーを持つストレガ以外では不可能だ。だからこそストレガは数あるエア・コンバットを勝ち抜いてこられた。なぜなら空中戦の基本は、高度と速度で敵より優位に立つことだからだ。そうすれば位置エネルギーは運動エネルギーに、運動エネルギーは位置エネルギーに転換できる。エネルギーの高維持───物理法則が戦闘を決定づける。
 ラングは基本に忠実にストレガを操った。それは彼にとって拷問そのものだった。急旋回と共に視界が暗くなり、視野が急速に狭まる。頭を下にしてストレガは旋回していた。強烈なGが身体をシートに押しつける。Gスーツが作動し、足に向けて降りていく血液の流れをくい止めようと下肢と下腹を猛然と締め付ける。
 機体は上昇から降下に転じ、Gはさらに強さを増した……ラングの視界から色彩が失われていった。グレイアウトだ。Gスーツの作動にも関わらず、脳に向かう血液は足に降り続けている。さらに過度のGは脳そのものを万力のように締め付け、神経シナプスを痛めつけていた。眼球の奥から飛ぶ不思議な色彩と火花はその発端だった。
 このままでは失神かバーディゴだ……ラングは微かにそう思った。
 だが、オーロラは依然としてラングのストレガを追尾していた。ミサイルの接近警報音のピッチが急速に高まる。オーロラがミサイルの信管を作動させるまで、あとほんの数秒なのが、ラングには判った。
 死んでたまるか……ラングは強烈なGと戦いながら、スティックをさらに傾け、同時にベクターノズルを一瞬作動させた。
 機体に強烈な横Gがかかると共に、ストレガは急角度で左に横滑りした。ラングは減速ではなく横滑りにベクターノズルを使った。この判断が彼の命を救った。
 オーロラに進路を修正する時間はなかった。ミサイルは直撃コースを外れ、ラング機を追い抜いた。
 だが、ゼロコンマ2秒後、7発のオーロラはプログラムに従い、一斉に信管を作動させた。
 オーロラの先端に充填されている4キログラムのGコンポ炸薬は、その破壊力をプラネット220上空で解放した。7発で合計28キログラムのGコンポは、100年ほど前の1000ポンド爆弾と同様の爆発力があった……。
「大尉!」
 ラングの恋人───カレン・レイノックス中尉は絶叫した。爆発に包まれたラングのストレガは、バランスを失っていた。
 ブラドギーから発射された7発のオーロラミサイルは、なぜかラングのストレガのみを追尾した。本来の機能から言えば、それぞれ別のストレガを狙うはずなのだが……その解明は結局できなかった。また、今の局面ではソンな事に気を回す余裕は誰にもなかった。なぜなら、オーロラミサイル7発の至近集中爆発を喰らっては、いくらストレガが頑丈でも、そしてラングが名パイロットでも、無傷で済むわけがないからだ……。
 再びカレンは絶叫した。
「大尉、目を覚まして!」
 衝撃の中でラングの意識は朦朧としていた。暗い……暗いな……ここはいったいどこだ……なんてエンジン音だ……エンジン音……エンジン音だと?
 それがキーワードとなった。彼は覚醒した。脳波は最低の活動レベルから一気にピークに達し、肉体のコントロールを取り戻した。
 ラングは目を見開いた。最初に飛び込んできたのは、恐るべきスピードで迫るディープ・グリーンの壁面だった。続いて警報音と共にカレンの叫び声が耳に突き刺さる。
 彼は右のラダーペダルを踏み込むと同時にスティックを引いた。凄まじいGが機体に、そして肉体にかかる。ヘッド・アップ・ディスプレイのGメーターが瞬時に跳ね上がる。
 地上激突寸前に、ラング機は辛くもリカバーした。その時の地面とストレガの空間は、20フィートもなかった。だが、激突は免れた。彼はリカバーしたのだ。
 恐るべき慣性と重力にストレガは辛くもうち勝ち、ラング機は上昇を開始した。プラスGが肉体を締め付けたが、彼は懸命に耐えた。
 やがて、高度の回復を確認したラングは、機体を水平にゆっくりと戻していった。急激にやれば分解の恐れがある。それほど手荒いリカバーだった。
 Gの低下と共に機体はゆっくりと姿勢を取り戻し、水平線が視界に戻ってきた……。
 ラングはため息と共に側面を見た。カレンのストレガが並んで飛んでいた。
 だが、彼等が息つく暇はなかった。脅威ナンバーワンを示す特殊な警報が全機に鳴り響いたのだ。
「IRSTコンタクト・ターゲット、ツー・オ・クロック。シティ防衛用ドギーハウス」
「ドギーハウス!」
 ミショーの愕然とした声が響いた。ドギーハウスは、「動くトーチカ」ともいうべき無人の空中機動防衛機だ。
 その最大の特徴は、徹底した重装甲と強力な火力にあった。普通のミサイルでは歯が立たない相手だ。
 アリスの報告に続き、岩の影からドギーハウスが姿を現した。その姿は、鶏の卵に似ていた。マグネティック・フィールドによって浮遊するその姿は、空力的に揚力を発生して飛ぶ飛行機とは全く異質なものだ。
 ドギーハウスは4機……わずか1機でも防空大隊クラスの火力を誇るドギーハウスの出現は、一同のアドレナリンを一気に分泌させた。
「大尉、離脱しましょう!」
 チャーリーフライトのハント中尉が叫んだ。ストレガ6機で戦える相手ではない。
「逃げたら自動追尾で殺られるだけだ」
「ラングの言う通りよ!やるしかない!」
 ミショーは叫ぶやウェポンベイを開いた。怒号とうなり声と戦術コードが錯綜した。誰もがハイになっていた。編隊の中でクールなのはアリスだけだった。


他章



2010/03/03 21:05 | Comments(0) | TrackBack() | ゲーム
EC-CUBE 汎用ログインページ

前回の設定を行った場合、ブックマークなどから直通やってくるとサイトトップに移動します。
これだとわかりにくいし不便なのでログインページを表示することにしましょう。

さて、ログインページは何処にあるかというと/html/mypage/login.phpです。
しかしこれ、アドレスからしてマイページ専用であり、ログイン後は勝手にマイページに遷移してしまいます。
汎用的に使えるログインページはありません。
無ければ作りましょう。

まず/html/mypage/login.php/html/mypage/login_check.phpをそれぞれ/html/login.php/html/login_check.phpにコピペ。
中にある
  require_once("../require.php");
を、
  require_once("./require.php");
に書き換えます。

次は……実はこれだけでログインページが完成します。
テンプレートのフォームがaction="./login_check.php"、ログイン後のリダイレクトが$this->getLocation("./index.php")と、どちらも相対リンクになっているので、パスを書き換えたりしなくともたまたまログイン後はサイトトップに飛ぶようになっています。
あとは前回のリダイレクト先をログインページにすれば完了です。

どうでもいいのですがログインしていない状態で/html/mypage/に行こうとすると不正アクセスとか言われます。
ログイン状態で/html/mypage/login.phpに行こうとするときちんと/html/mypage/index.phpに飛ぶのに片手落ちだろ。
 

EC-CUBEの記事



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

先週はうっかりエアプレイで批判を行ってしまった。今は反省している。
このまま底辺動画評論家に成り下がってしまうつもりはないので右のゲーマータグでも見てもらえれば幸い。
Wiiには似たような仕組みがないので残念。無いよね?


斬撃のREGINLEIV(レギンレイヴ)

ようやく買えた。
例によってどこかの馬鹿塵のような妄言を撒き散らしていますが、一回でもプレイしてみれば如何に価値の皆無な駄文かわかります。
EDFの血脈を確かに受け継いでいるバカゲーにして名作です。
ナレーションとかそのまんま過ぎて吹いた。

だいたいゲームなんて面白ければいいんだよ。
そして面白さに関する限りこのゲームは一級品。
そもそもEDFって画質上げるくらいならその分敵を出すぜ!というゲームだしな。
本作の問題点はSDがどうこう等といった些末なことではなく、一旦出陣したら続けて次の面に行けずに一旦戻らないと行けないとか、キャンセルはBで楽なのに決定ボタンにショートカットがないので毎回きちんとポインタを合わせなければならず面倒とか、武器一覧画面でポインタ合わせただけでは詳細が出ないのでいちいち決定して確認しなければならない、といったインターフェイス部分にあるのに誰もそこら辺に言及していないのが以下略。
それにしてもEXAPONの人は先生酷いことをしたよね。


エスプガルーダ2BL限定版

とりあえずフェイスプレートを差し替えた。
人には見せられない本体になってしまった。
それ以前に人には見せられない部屋だからまあいいか。
あとDVDドライブが残念なことになってるのでどうにかならないかなあ。

システムがちょっと複雑でまだ理解しきれていませんがノーコンティニュー程度は行っておきたいところ。


のーふぇいと! ~only the power of will~ バリバリ悠峰パック

とりあえずタイトルの意味がわかりません。
ポエミィな冊子が付いてきたのでうっかり一話読んでしまったんだがネタバレだったのか。死。
ていうか地球人ですらなかったのか。
ていうか、そんな知識レベルでいきなり限定版購入するのがどうなのかという。


真三國無双MULTIRAID Special

さくらやで投げ売りしてたのでなんとなく。
無双は年に一回くらい無性にやりたくなるけど、やったらやったで「無双はもう当分いいや」となってしまう麻疹みたいなゲームだ。

本作は他のシリーズと違ってかなり破天荒です。
ジャンプ→斬り*6→二段ジャンプ→斬り*6→三段ジャンプ→斬り*6→空中ダッシュ→斬り*6→空中ダッシュ→斬り*6→空中ダッシュ→斬り*6とかなんだよそれ。
かなりスピーディスタイリッシュアクションになってます。
敵も空中に浮いてたり巨大兵器が炎を吐いてきたりと出鱈目もいいところ。
地味に雑魚敵が強いのであんまり無双という感じはしませんがこれはこれで楽しい。


マグナカルタ2

なんか横浜ヨドバシで投げ売りしてたから中身を全く知らないのだが買ってみた。
全然関係ないがヨドバシ横浜行ったときはほぼ必ず地下のXi'anで酸辣麺を食べている。
何故だかよくわからんのだがどうしても他の店も他のメニューも選ばないんだよな。
ブラックカレー的な何かがあったりするのだろうか。
とりあえず真剣を握れないというトラウマがあったんだが開始一時間で克服。
その設定なんか意味あったのか?



2010/02/28 21:00 | Comments(0) | TrackBack() | 買ったもの

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