ROみたいなカウンター Ver4

FLASHとCGIを使ったアクセスカウンターです。
設置する為にはユーザ設置CGIが使えることが前提条件になります

【2005/02/19更新】HPのトップで実験中
・フレームレートを30から50へ上げてみる
・パラメータ reduce upspeed fadeout を
必須パラメータから拡張パラメータに変更
//なんで今までやらなかったんだろ?(^^;;
→txcount.cgi内の項目を削除・基本設置が簡単に
・カタールルーチンを多段Hitルーチンにアップグレード
フレーム中に何度でも打撃が可能に
ROC_attack.swfにて攻撃するフレーム毎にダメージを%で指定
攻撃しないフレームは0を指定する
これによりランダム要素を組み込むことが可能になり
アサシンの二刀流DAも再現可能に
多段Hitルーチンの副作用としてMissが出るように
(まあ今までも極まれに0が出ることがありましたけどね)

【2005/02/13】ROC.swfおよび制作キットを更新
・frame=0とした場合に攻撃モーションの扱い方を変更
 →攻撃モーションにムービーを使った時に音の再生が可能に
・総合ダメージとダメージを描画する座標を指定するパラメータ
 alldam_x alldam_y dam_x dam_y を追加
 指定が無い場合はデフォ値が適用されます
・再攻撃するためのクリック場所が右半分だったのを全体にしてみる
・一回のダメージを算出する方法の見直し
 →Dex=0時にほぼHit回数で攻撃が終わるように
【2005/02/03】
・キャラクターランダム表示機能追加
・パラメータ chara chara_x chara_y を追加
 →ROC.swf txcount.cgi更新。 ROC.lzh 作成キット差し替え
これ以前の更新履歴

 

設置方法

カウント処理とパラメータ受け渡し用のCGIに
KentWebさんのTEXT COUNTERを改造して使わせて頂きました。
のでKentWebさんのCGIスクリプト利用規定に同意して頂く必要があります。
利用規約に同意してもらいましたら
以下のファイルをダウンロードして展開してください
ダウンロード:ROC.lzh
展開すると
ROC.swf カウンター本体ファイル
ROC_attack.swf 攻撃アニメーションファイル
ROC_wait.swf 待機アニメーションファイル
タグ.txt SWF呼び出しタグのサンプル
countフォルダ カウント及びパラメータ渡し用CGI
となっていると思います。
ディレクトリ構成例を txcount.cgi 内に書いておきますのでそれを参考に
ROC.swf ROC_attack.swf ROC_wait.swf は カウンターを設置するHTMLと同じフォルダへ
countフォルダ は cgi-bin等CGIの動作が可能な場所へ適度に移動してください

CGIを動かす時にCGI専用URLを指定する必要がある場合は
ROC.swfをCGI鯖のほうに設置する必要があります。
詳細はQ&Aを読んでください


countフォルダ の場所が決まったら
txcount.cgi をテキストエディターで開いてCGI動作設定を行います
1行目
#!/usr/local/bin/perl
   プロバイダ等から告知されているperlへのパスを書いてください
45行目
#ロックファイル機構
$lockkey = 1;
   使用するとカウント数が飛びづらくなりますが
   この機構を使えない時もあります。
   後のCGI動作チェックでロック形式でNGが出た場合はここを適度にいじってください

カウンターを設置するHTMLにswf呼び出しのタグを記述します。
タグのサンプルを タグ.txt に記述してありますので
カウンターを設置したい場所に貼り付けます。
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="170" HEIGHT="110" id="ROC" ALIGN="">
<PARAM NAME=movie VALUE="ROC.swf?
cginame=cgi-bin/count/txcount.cgi">
<PARAM NAME=quality VALUE=autohigh>
<PARAM NAME=wmode VALUE=transparent>
<PARAM NAME=bgcolor VALUE=#FFFFFF>
<EMBED src="ROC.swf?
cginame=cgi-bin/count/txcount.cgi" quality=autohigh wmode=transparent bgcolor=#FFFFFF WIDTH="170" HEIGHT="110" NAME="ROC" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>
</OBJECT>
次に赤字で書かれたCGIの場所を指定するパラメータを
カウンターを設置するHTMLから見て何処にCGIが置いてあるかを指定します。
相対パス・もしくはhttp://からの絶対パスでも構いません

CGIを動かす時にCGI専用URLを指定する必要がある場合は
ROC.swfをCGI鯖のほうに設置する必要があります。
詳細はQ&Aを読んでください


設定が一通り済んだらアップロード。
この時countフォルダ内の物にはパーミッションの設定が必要になります
txcount.cgi 内の構成例を参考にパーミッションを設定してください
パーミッション設定まで済んだらまずはCGIの動作テスト。
http://〜〜〜/~ユーザーIDとか/cgi-bin/count/txcount.cgi?check
のようにcheckスイッチを付けてtxcount.cgiを起動。

チェックモードが起動しない時はパーミッション等のCGI動作周りのチェックを
チェック画面でNGと出る項目があるときは該当項目を修正してください
CGI動作テストが完了したら
次はカウンターを設置しているHTMLを開いてください
カウントを開始すれば設置は完了です。
カウントをせずに待機している時は
一つ上の項目 ROC.swf?cginame=cgi-bin/count/txcount.cgi
のパスが間違っている可能性がありますので
パスが間違っていないかどうかチェックしてください 

ほかのキャラはないの?

いくつか用意しています。
攻撃モーション 待機モーション
それぞれを右クリックでダウンロードして上書きしてください
サンプル をクリックすると別窓でサンプルが開きます。
攻撃モーションのフレーム数がキャラによって違いますので
frameを同じ値にしても攻撃速度は変わってしまいます。
キャラ名 サンプル 攻撃モーション 待機モーション
サキュバス
アリス
デビルチ
男プリ
女商人
インキュバス
ドッフルギャンガ
ノービス
ミットマイヤ
女プリのHL
女プリのHLはHLを出すためにROC.swfも差し替えてください
アイミーマンリャン
ガラパゴ
ハイローゾイスト
男アサシン
各キャラのディレクトリにソースファイルのflaを置いておきますので
細かな修正はflaを持って帰って行ってください
要FlashMX以上
ここにない物は自分で作ることになります
自分で作る気合い&知識がある人向けに
私が使っている不親切な作成キットを置いておきます
要FlashMX以上
キャラ作成キット

キャラをランダムで表示したい

2005/02/03版でランダム表示に対応しました
txcount.cgi 内
#-------------------------------------------------
#キャラランダム表示
#ここに登録した文字+_attack.swfと文字+_wait.swfを用意しておくと
#それらをランダムに選択
#@chara=('dop','alice','assa','devi');

この配列にファイル名を登録しておくと
その中からランダムで選択するようになります
デフォではコメントアウトして使用しないようにしてありますので
先頭の#を消して有効にした後に
' ' 内にファイル名を指定します。
@chara=('dop','alice','assa','devi','succu','incu');
とした場合は
 dop_attack.swf と dop_wait.swf
 alice_attack.swf と alice_wait.swf
 assa_attack.swf と assa_wait.swf
 devi_attack.swf と devi_wait.swf
 succu_attack.swf と succu_wait.swf
 incu_attack と incu_wait.swf
のアニメーションファイルよりランダムで選択します。
ディレクトリパスも含むことが出来ますが
呼び出しタグが書かれているHTMLよりの相対パスもしくは絶対パスで指定してください。

ROC.swf仕様書(?)

自分でカウンターCGIを書いたりしたい時に使ってください

呼び出しタグ等に記述されたパラメータを取得
必須パラメータ cginame
 ROC.swf?cginame=cgi-bin/count/txcount.cgi
cginame に書かれたCGIよりパラメータを取得
 この時点で必要なパラメータが揃っているかチェックし
 揃っていない場合はここで待機
待機アニメーションswfを読込・表示座標の取得
攻撃アニメーションswfを読込・表示座標と攻撃フレームの取得
動作開始

 

CGIが出力するパラメータはFlashの仕様に準じます。

MIMEタイプ:
application/x-www-form-urlencoded

実際のデータ:
hit=6&dex=50&cri=15&frame=4&reduce=10&upspeed=2&fadeout=2&count=5760

のように&で複数のパラメータをつなぎ
前後によけいな改行などを入れないようにします

‥‥大したことやってないですね(苦笑

気が付いている人もいると思いますが
HTMLのタグから渡されるパラメータとCGIから渡されるパラメータで
すべてのパラメータが揃っていれば動きます。

言い換えるとHTMLの呼び出しタグからすべてのパラメータを渡すことも可能です
(この時cginameはdummy.txtなどの0バイトの空のファイルを用意しておいてこれを指定すればOK)
キャラのランダム表示処理をJavaScriptに行わせたりすることも出来ます

パラメータがHTMLの呼び出しタグとCGIからの両方から渡された場合は
CGIからのパラメータが優先されますので
CGIのパラメータ書き出し部分を適度に改造してください

カウンター表示タグのHEIGHTを400ぐらいにすると
現在の状態およびパラメータ取得時に下のほうにパラメータ一覧が出ます
(カウントが始まると消えます)
動作しなかったり思わぬ動作をした時は一度試してみてください

 

ROみたいなカウンター 動作パラメータ仕様書
パラメーター 説明
hit 攻撃回数(自然数)

dex・criで前後してしまいますのであくまで基本ということで。
dex ダメージのばらつきを%で指定(0から190ぐらいまで)

一回のダメージは
 ave=訪問者数/hit
 bara_max=ave/100*dex
 bara=乱数発生(0〜bara_max-1)
 とした場合
ave-(bara_max/2)+bara
となります。(端数は最後に四捨五入)

最後に出るダメージは端数合わせのため小さい値になります
cri クリティカルが出る割合を%で指定(0〜100の整数)

クリティカルダメージは
ave+bara_max
です。
つまりdexが大きいほどクリティカルダメージは大きくなります。

特例として
criを0とした場合は
 すべてのダメージが通常ダメージになります
criを100とした場合は
 ダメージは通常通りの計算のままクリティカル表示にします
 Dexを少なくすることで過剰精錬クリティカルが再現できます
frame 攻撃速度を指定(自然数)

値が小さいほど攻撃が早くなります。

詳細を書くと
攻撃モーション1コマに何フレームのウエイトを入れるかとなります。
サキュバスの攻撃モーションは5フレームを使っていて
このSWFは30フレームで動かしていますので
30/5*frame秒で攻撃をサイクルする計算になります。


例外的に0とした場合は
1コマずつ止めていた動作を
攻撃サイクル開始時に再生命令を送るだけにします
これでムービーなどの音を出すことが出来ます
reduce ダメージが出て見た目が小さくなるまでの速度を指定(1〜100の間で小数点可)

値を大きくすると、ダメージが小さくなるのが早くなります。

詳細を書くと
ダメージを与えた直後は200%に拡大して表示して
時間とともに100%まで縮小していますが
1フレーム毎にこの値%分縮小しています。
upspeed ダメージが上に上がっていく速度を指定(小数可)

ダメージは1フレーム毎にこの値ドット分上に上昇します。
fadeout ダメージが薄く消えていく速度を指定(0より大きな数字で小数点可)

この値%ずつ透明になっていきます。
count 総合カウント数を指定します。
これはCGIで処理を行っているので
CGI内の設定項目一覧には存在しません
以下拡張パラメータ。無くても動きます
chara 攻撃モーション・待機モーションファイル名を指定
この値+_attack.swf
この値+_wait.swfを読みに行きます
chara_x
chara_y
この値分キャラの表示位置をずらします
alldam_x
alldam_y
総合ダメージ(カウント数)の表示場所を指定出来ます
省略された時はデフォ値の
alldam_x=55 alldam_y=45
となります
dam_x
dam_y
ダメージの表示場所を指定出来ます
省略された時はデフォ値の
dam_x=55 dam_y=85
となります
カウントが終わったあと
待機しているキャラをクリックすると再び攻撃を開始しますが
カウンタープログラムを読みに行きませんので
カウント数が無駄に増えてしまうなんてことはありません

最後に‥‥

製作に当たって
すでに出回っているカウンターのソースを流用しようと考えていましたが
構造がよく判らないんで1からソースを書いています。
(特にflaは解析がめんどいんですよ奥さん)
カウント処理とパラメータ受け渡し用のCGIに
KentWebさんのTEXT COUNTERを改造して使わせて頂きました。
とても見やすいソースをありがとうございます