幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: xyz123

[下载]Shooter Maker 95(STG)(シューティングツクール95)+特別講

[复制链接]

29

主题

108

帖子

1485

积分

⑥精研

积分
1485
 楼主| 发表于 2005-1-20 07:34:44 | 显示全部楼层
それ逝け魔女娘さん♪

<HR>



<HR>

動作保証:Win95、Win98、Win2000
限定動作保証:WinMe(音楽が鳴らない場合あり)、WinXp(環境によっては動かない場合あり)

ジャンル:横スクロールSTG

制作ツール:シューティングツクール95

Update:2004-03-17

ダウンロード(Lzh圧縮形式-1Mb)Ver0.82(完成版)


操作方法:

十字キー、テンキー:移動

シフトキー:メインショット

Zキー:サブウェポン

Xキー:ボム

ジョイパッドにもある程度対応しています。


[此贴子已经被作者于2005-1-20 7:38:04编辑过]
回复 支持 反对

使用道具 举报

29

主题

108

帖子

1485

积分

⑥精研

积分
1485
 楼主| 发表于 2005-1-20 07:49:17 | 显示全部楼层
素材集のページ
画像素材   
  • ビットマップ形式の画像素材です。
  • サムネイル画像は素材集の一部分を切り取ったものです。
  • 素材集P6 (2003.10/4)
    <UL>
  • Download : mat06.lzh (86Kb)</UL>素材集P5 (2002.9/14)
    <UL>
  • Download : mat05.lzh (80Kb)</UL>素材集P4 (2002.2/29)
    <UL>
  • Download : mat04.lzh (54Kb)</UL>素材集P3 (2001.5/29)
    <UL>
  • Download : mat03.lzh (30Kb)</UL>素材集P2 (2000年)
    <UL>
  • Download : mat02.lzh (26Kb)</UL>素材集P1 (2000年)
    <UL>
  • Download : mat01.lzh (47Kb)</UL>
  • 回复 支持 反对

    使用道具 举报

    29

    主题

    108

    帖子

    1485

    积分

    ⑥精研

    积分
    1485
     楼主| 发表于 2005-1-20 07:52:21 | 显示全部楼层
    音楽素材MIDI形式の音楽素材です。
    素材集M1 (2001年)<UL>
  • Download : p_mid00.lzh (23Kb)</UL>
  • 回复 支持 反对

    使用道具 举报

    29

    主题

    108

    帖子

    1485

    积分

    ⑥精研

    积分
    1485
     楼主| 发表于 2005-1-20 08:09:29 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    29

    主题

    108

    帖子

    1485

    积分

    ⑥精研

    积分
    1485
     楼主| 发表于 2005-1-20 08:36:13 | 显示全部楼层
    基礎解説
    XY軸
    見てのとおり。左上が原点(0,0)です。
     
      


    角度 
    角度の基礎です。たいしたことは言っていないので、簡潔に。
     
      
    図を見てもらえればわかると思いますが、右方向が0度となっており、そこから時計回り(一般に数学で扱う角度とは逆方向なので注意!)に進んでいきます。
     
    説明書には0~359の範囲内で指定せよ、とありますが、360以上を代入することも可能です。
    つまり高校数学に出てくる 360 x n ですね。
    一応説明しておきますと、360度ごとに角度は一周するので、例えば540度とかいった場合、
    540 = 360 + 180 = 180度と同じ角度を表すことになります。
    600度は240度、1000度なら 360x2+280 ということで 280度と同じです。
    代入する際に少々便利です。
      

    <SMALL>y軸反射</SMALL>
    せっかくなので少し応用も。
    左図のように障害物等で跳ね返るように見せるにはどうしたらいいか。
    これは縦と横どちらに対して跳ね返るかによって2つに分けられます(それ以外の要素は関係ありません)。
    便宜上これをx軸反射、y軸反射と呼び分けることにします。
    y軸反射の場合、反射前の角度を a とすると反射後は 180-a 度 となります。

    <SMALL>x軸反射</SMALL>
    x軸反射の場合は、反射後は -a 度 です。
     
    説明は面倒くさいので、どうしてそうなるのかわからない人は三角関数を勉強してください。

    分岐の基礎 
     
    シューティングツクールでゲームを作る上で、絶対に理解しておかないといけないのが「分岐」であります。
    しかしながらこれは結構難しい。昔BASICをかじった人なら難なくコマンドが組めるのですが、そうでない人なら仕組みすらわからない場合もあるかと。
    そんなわけで、ここでは分岐の基礎を勉強することにしましょう。
     
     
    分岐というのは、「変数の値によって場合分けをし、異なったコマンドを実行させる」といったところでしょうか。
     
    基本的には次の3つの制御コマンドを組み合わせて使います。例外は多々ありますがこれは後ほど説明するということで。
      
    1.どの変数を選ぶかCMP(変数と数値の比較)  
    CPM(変数同士の比較)
    2.変数がどの関係の時分岐するか
    (以下便宜上Jコマンドとします)
    JEQ(等しい時分岐)  
    JNE(等しくない時分岐)  
    JLO(小さい時分岐)  
    JHI(大きい時分岐)
    3.どこに分岐するかBOOK(分岐先登録)
     
    1と2は基本的に接しているほうが良いです。
     
    なお重要なことですが、JHIは「以上(比較した数値を含む)」、JLOは「未満(比較した数値を含まない)」です。
     
      
    例を見てみましょう。  
    0行と1行(青いところ)で分岐条件が設定されています。  
    この場合は「変数54が10より小さい時、ブックマーク1に移動せよ」ということです。  
       
    変数54というのは参照したイベントの耐久力です。  
    つまりこのイベントの耐久力が10未満になった場合はブックマーク1(4行=赤い印の所)にジャンプするわけです。
     
     

    例外上に示した方法以外にも様々な分岐があります。
     

    強制分岐JMPは直前の比較の結果に関わらず、必ず指定したブックマークに分岐します。
     

    一行二役IFW(障害物の判定)、IFP(プレイヤーとの距離判定)は比較、分岐を同時に行います。詳しくは付属ヘルプ参照。


    演算コマンド例えばADDは変数と数値の足し算を行うコマンドですが、足し算の結果が0のとき「等しい」、0以外のとき「等しくない」という分岐条件が発生します。同時に演算結果が0以上のとき「大きい」、0未満のとき「小さい」になります。
    したがって、正負を比較するだけならこの後にCMP等を使わずに直接Jコマンドを用いることが可能です。
     
    同じ性質を持つコマンドは以下のとおり。
     AND (変数と数値のAND演算を行う)
     ADD (変数と数値の足し算を行う)
     ADM (変数同士の足し算)
     SUB (変数と数値の引き算を行う)
     SBM (変数同士の引き算)
     DIV (変数と数値の割り算を行う)
     MOD (変数と数値で割り算した余りを求める)
     MUL (変数と数値の掛け算)
     CLR (変数へ0を代入、、、ということは分岐も何もありませんが)
     
     

    比較フラグ / 大小フラグについてこれら分岐はどういう仕組みで行われているのか、もう少しだけ説明しておきましょう。
    比較や演算コマンドを実行すると、「比較フラグ」「大小フラグ」が同時に発生します。
    比較フラグは等しい / 等しくない大小フラグは大きい / 小さい のどちらかです。
    これらはいったん保存され、Jコマンドはこれらのフラグ情報を引き出すことで分岐先を決めているのです。
    フラグの情報は次に比較 / 演算を行うまでは前のものが保存されることになります。つまり、前の比較条件を使うなら、CMPを2回も3回も使う必要はなく、いきなりJコマンドを使っても構わないわけです。
    逆にフラグをリセットしたい場合はCLRを用います。CLRは参照した変数を0にすると同時に比較フラグを「等しい」、大小フラグを「大きい」(=「以上」)に変更します。

     
     
     

    回复 支持 反对

    使用道具 举报

    29

    主题

    108

    帖子

    1485

    积分

    ⑥精研

    积分
    1485
     楼主| 发表于 2005-1-20 08:39:23 | 显示全部楼层
    各種イベント設定
     
    移動
    各制御コマンドの項目を参照。
     
     
    攻撃基本的には付属ヘルプの「攻撃」の項目を参照してください。
    攻撃方法1は設定さえしておけば勝手に攻撃します。攻撃間隔は「ステージごとの設定」によっても変わります。
    2、3はATK命令を出さないと攻撃しません。   


    ここが少し難しいですかね。
     
    「回転」を選んだ場合、何度ずつ回転するかを入力することになります。
    <SMALL>(数量が1以外だと動作が不安定になるような気がするのだが)</SMALL>
    「固定」の場合は、角度はそのまま撃つ方向。
    「自機」「進行方向」を選んだ場合、角度は各弾間の角を表すことになります。
    どれを選んでも、何も入れなければ(0が入っていれば)自動的に15度になります。
     
    「子として発生する」を選んだ場合、発射されたイベントの動きは親に依存します。子イベントはいくつかの制御コマンドを用いる以外には勝手に位置を変えられなくなります。

    ループ基礎 
    イベントの行動パターンを豊かにするためには、分岐と並んでループの基礎が欠かせません。
    ここではLPT-LPEループについて簡単に触れていきます。  
     
    LPTとLPEでコマンドをはさむと、はさんだ行をあらかじめ指定した回数(場合によっては無限回)繰り返すことが出来ます。これを利用することでイベントの動きに幅を持たせることが可能です。
    気付きにくいけれど絶対に知っておいた方がいいこんな使い方もあります。

    1.ウェイトをかける(時間稼ぎ)ある動作をした後、次の動作に移るまでしばらく時間をおきたい場合、LPT-LPEループを使うのが効果的です。
    左図を見てください。ATKを行った後ふたたび攻撃をするまでに間を持たせたいので、LPT 60 - LPE をはさむことで一定の時間を稼いでいます。
    2.最初に戻るのを防ぐ11-12行は一見何の意味もなさそうですが、これがないと13行のENDコマンドで最初の行に戻されてしまいます。このようにコマンドの順番を調整するのにも有効です。

     
    多重ループところで上の図ですが、0-2行、3-5行、6-8行は全く同じですよね。こういった場合、これらをさらにLPT-LPEでくくることで簡潔にまとめられます。これを「多重ループ」と言います。(入れ子、ネスト構造とも呼ぶ)

    左のプログラムを見てください。この組み方で上の図と全く同じ動きをすることになります。
    左図のように、LPT-LPE内にLPT-LPEがもう1つある場合、それぞれの組み合わせは色で示したようになります。この例でいうと、赤のループによって青色で囲まれた1-3行が3回繰り返されることになります。
    こういったループは4重までなら組み合わせることが出来ます。
      
    非常に重要な仕組みなので、使いこなせるようがんばってください。
     
    やってはいけないことLPT-LPEループは囲まれたコマンドを忠実に繰り返そうとするため、あえてこれに反した動きをさせると動作が不安定になります。
    外部からループ内へ分岐コマンドを使って入ってきたり、逆にループ内から分岐コマンドで外部へジャンプしたりするとエラーが発生します。外部へのジャンプは再びループに戻ってこなければ大丈夫ですが、慣れないうちは避けたほうがいいでしょう。 
     

    繰り返す回数を後から変えたい場合は?
    ここまでLPT-LPEの性質を一通り述べてきたのですが、1つ弱点をあげるとすれば「繰り返す回数を変更できない」ということです。状況によって繰り返す回数が変わるようなプログラムにしたいのならば、変数を利用して分岐コマンドを組むのが良いでしょう。
     
     
    なおループについてはでも触れられています。一度目を通しておくことをおすすめします。
     
    上の設定で実際に撃たせてみるとこんな感じ。
     
    2発以上同時に撃った場合の弾の場所は左図の数字を参考にしてください。
     
    偶数発の場合は進行方向でうまく調整しないと偏ります。
    回复 支持 反对

    使用道具 举报

    29

    主题

    108

    帖子

    1485

    积分

    ⑥精研

    积分
    1485
     楼主| 发表于 2005-1-20 08:40:54 | 显示全部楼层
    SE(効果音)の基礎 
    効果音無しではシューティングゲームはあんましおもしろくありません。
    効果音の設定はそんなに難しくないのですが、ヘルプがわかりにくい上設定ウィンドウも紛らわしいので意外と手間取ることも。
    製作者ももう少し人間工学を勉強していただきたいものです。
     
     
    SEの基本的な設定は「システム全体」という項目で行います。
    「システム全体」を開くと、ウィンドウの中に次のような個所があります。ここで設定を行います。
     

     
    チェックボックスの右側にある番号は対応するイベントの番号を示しています。
    同じ数字のイベントとSEは関連付けられ、例えばSE108に爆発音を設定すればイベント108番(デフォルトで爆発1)が発生したときに自動的にその音が鳴るようになっています。
    ただし、一部例外があります。以下の番号にSEを設定した場合は、鳴る場所があらかじめ決まっています。
     
    イベント番号いつ鳴るか
    000デモでの決定音
    008ため撃ち武器使用時のゲージ充填音
    0141UP時
    015制限時間が10秒以内のとき
    016照準で敵をロックオンした時
    017デモ内での選択音
    034武器選択ゲージで武器を決定した時の音
     
    38~63番や240番以降のイベントは<予約>となっていますが、この番号にSEを設定した場合は制御コマンドによって発音しない限り鳴ることはありません。
    注意すべきなのは、SE設定ウィンドウの左端にチェックボックスがありますが、これは効果音をループさせるかどうかの選択です。特別な場合を除いてチェックを入れてはいけません。
    また同じイベントから複数の効果音を同時に鳴らそうとしても、うまくいかないことが多いです。これは特にソフトウェアMIDI使用時の場合に起こる問題のようです。SE出力チャネル数を大きくしても同じです。
     
     
    詳しいことはヘルプの「システム全体」に書かれてありますので、ぜひ参照してください。
    ゲーム中の操作方法 

    知らないと困る重要操作
    付属ヘルプの「ゲーム中の操作方法」 を見れば大抵のことは書いてあります。
     
    ゲームの一時停止
    F1キー
    強制終了
    ESC / End キー
    スクリーンの切り替え(*)
    F2 / Home キー
      <SMALL>* 付属ヘルプにはスクリーン切り替え時にゲームはプレイ中ステージ開始時に戻るとあるが、実際にはゲーム起動時に戻される</SMALL>
     
     

    隠し仕様?ゲーム動作中にF3キーを押すことで右下に数字が出現します。
    ヘルプにも載っていないようですが、通常動作時に60前後を常に示すことからFPSを表しているものと推測されます。
    回复 支持 反对

    使用道具 举报

    29

    主题

    108

    帖子

    1485

    积分

    ⑥精研

    积分
    1485
     楼主| 发表于 2005-1-20 08:44:40 | 显示全部楼层
    注意すべき機能
    変数 
    3番-現在の得点 ヘルプには「代入不可」とあるが、実際には代入可能。ただしハイスコアと連動しなくなることがある。
     
    6番-現在のステージ番号 実際のステージより1少ない数が入っている。
     つまりステージ1だと変数は0、ステージ2だと1、、、という具合。
     
    48番-参照する度に乱数を発生 最小値はたぶん0、最大は32767。この間でランダムに数が決定される。
     ただし乱数系列が固定されている模様。
     したがって出てくる乱数はゲームを起動する度同じ順番で出てくる。オープニングデモ等で使う場合は要注意。
       

    64番-プレイヤーのコントロール方法65番-スクロール制御方法 ヘルプの変数一覧表には「プレイヤーの座標」と書いてあるが。
     
    73番-制限時間 どうやら100を超える数は代入できないらしい。
     
    87-96番-ボスの耐久力 初期設定では最高で100までしか設定できないが、変数に代入することで32767まで設定することが可能。
     これを利用すれば同パーツを重ねて装甲を厚くする必要はない。
     (昔これを知らなかって、ごまかすのに大変でした。100って絶対少ないし)
     

    97番-同時発射されたイベントの区別 これも0から始まるらしい。


    制御コマンド 
    わかっている項目についてはいずれ補完します、、、が少々お待ちください。
     
    TRNR (ランダム方向へ相対変化)実験の結果やはり偏りがあると思うのだが、どうだろうか。
     
    LPT-LPE (繰り返し)LPT-LPE のルーチンの中から分岐コマンドで脱出して、再び同じ行に戻ってくると Overflow エラーが発生する場合がある。
    また外から LPT-LPE 内に分岐させると不具合が起こることがある。
    ここらへんは昔なつかし BASIC でいうと FOR-NEXT にあたるわけで、プログラミング経験者なら常識かもしれないが。
    フリーメモリーとブックマークを活用すれば代替可能なはず。

    回复 支持 反对

    使用道具 举报

    29

    主题

    108

    帖子

    1485

    积分

    ⑥精研

    积分
    1485
     楼主| 发表于 2005-1-20 08:46:08 | 显示全部楼层
    実験こーなー
    実験01:TRNRコマンドで乱数は正常に働いているのか!?STGツクールでの仕様疑惑を取り上げた場合、文句なしてベスト10にあげられるのではと思うTRNRコマンド。
    普通にコマンドを組んで弾を撃たせてもなぜか飛ぶ方向が偏っているように見える、、、
    今回はその疑惑に迫ってみようと思います。


    今回は360度での検証を行う。
    検証方法は以下のとおり。

    1. 画面中央に配置した敵イベントから32x32、全範囲有効当たり判定の弾拾い敵イベント24体を射出する。
      
    2. ランダムシード等の原因を防ぐため、一定時間TRNRコマンドを使う。<SMALL>(毎回呼び出し回数を変える。結局全然意味がなかったが)</SMALL>
     
    3. 中央のキャラからバシバシ弾を撃つ。
    周囲の弾拾いイベントは被弾数に応じて下のように色が変わる。

    <SMALL>(左端は被弾数0。100被弾するごとに色が変化する)</SMALL>
     
    3. どれか1つが赤色になってから約10秒で弾撃ち終了。
    中央キャラの弾の撃ち方は以下の6通りを試す。
     A TRNRに360を代入し続ける。
     B TRNRに32767を代入し続ける。
     C 毎回キャラの方向を一度0度に修正した後、TRNRに360を代入して弾を射出。
     D TRNRに360を代入した後TRNRに45を代入。
     E TRNRに360を代入した後TRNRに90を代入。
     F TRNRに360を代入した後TRNRに360を代入。

    今回の実験では乱数呼び出しが10000回程度(大雑把に考えて)行われるので、かなり正確なデータが得られるはずである。
    しかし、次の点で問題があることに注意する。
     
    1. 弾拾いキャラの当たり判定は丸ではなく四角であるため、弾の拾いやすさに差が出る<SMALL>(理論上45,135,225,315度に位置するキャラは0,90,180,270度に位置するキャラのルート2(1.414)倍弾を拾いやすいことになる)</SMALL>。仮に中央のキャラが完全に均等に弾を飛ばした場合は左図のようになるはず。
     
    2. 各キャラ間に隙間があるため、こぼれ弾はカウントされない。(この量がけっこう多かった)
     

    結果

    A結果。<SMALL>なんだこれはと思わず口に出してしまう偏り具合。もしやプレイヤーの位置によって補正がかかっているのではと思い何度か位置を変えて試してみたが、全く同じ結果になった。</SMALL>

    B結果。<SMALL>TRNRは32767まで代入可能なので試しにやってみたが、Aとほとんど変わらんかった。
    (ちなみに32767=360*91+7なので0度方向のキャラに弾が飛ぶ確率がちびっとだけ上がる)</SMALL>

    C結果。<SMALL>Aが前回射出の方向からランダムで位置を変えるのに対して、このやり方だと毎回0度方向からTRNRが行われる。何か意味があるかなぁと思ってやってみたが全く意味がなかった。</SMALL>

    D結果。<SMALL>まだ多少左側に弾が偏るが、これまでの結果と比べると見事に均等である。上で示した予想図と比べるとむしろ気持ち悪いほどである。こんな子供だましのような方法でなぜここまで補正されるのかよくわからない。</SMALL>

    E結果。<SMALL>上で示した四角による偏りの問題を考えると、これが最も理論値に近いのではないだろうか。これなら360-180度のパターンも試せばよかったと少し後悔。それでも右側が薄くなる。おそらくAで上下が薄かったのが2回TRNRを行うことで右側に移動したものと思われる。</SMALL>

    F結果。<SMALL>D、EがAに比べて乱数呼び出しが倍であるために結果の違いを引き起こしたかどうか確かめるために行った、、、が結局Aとほとんど同じ。</SMALL>
     

    考察1. おそらく偏っているのは間違いない D、E以外の結果は見事に偏っている。今回の検証では全範囲(360度)での実験であったが、乱数呼び出しの回数の多さを考えるとTRNRコマンドに何か問題がある、という疑惑はいっそう深まった。ただし「なぜ偏るのか」については全くわからない。

    2. コマンドを2回実行することで偏りは緩和される すでに多くの製作者によって感覚的に使われてきた技だが、今回その実効性が証明された。
     緩和のためには1回目よりも2回目に代入する数値のほうが小さくなければならない。
     ただ、どの角度を代入するのが最も適しているかは今回の検証ではわからない。さらにTRNRを45度の範囲内で行う、とかいった場合にこの方法がどの程度有効なのかは別に検証する必要がある。あんまりするつもりもないけど。
     

    回复 支持 反对

    使用道具 举报

    29

    主题

    108

    帖子

    1485

    积分

    ⑥精研

    积分
    1485
     楼主| 发表于 2005-1-20 08:48:35 | 显示全部楼层
    実験02:イベントはいくつまで登場可能なのか?STGツクールでは、何も考えずに敵の攻撃を設定すると、すぐに弾切れを起こしてしまう。
    いったい弾はどれだけ撃てるのか? なんとなくわかっているようで知らない人も多い仕様の解明に挑戦。
    今回は文字ばっかりですが、がんばって読んでください。
    結果
    敵弾
    60
    通常の敵
    最大出現数による
    中ボス
    10
    ボス
    1
    プレイヤー武器
    +爆風
    79
    (自機を含めて80)
     
    敵数はステージ設定の最大出現数と同じだけ出現可能。
    ヘビ型、鎖型は胴体の長さに関係なく1体として数える。
     
    中ボス、ボスは上記の出現数とは別にカウントされる。
    中ボスはパーツ数に関係なく10体同時に出現できるが、ボスは1体のみ。
     
    敵弾は設定に関係なく最大数は60。
     
    プレイヤーの武器と爆発イベントは、全て合わせて最大数は79である。
     
    これらが全て同時に出現可能。 
     

    次なる疑惑と検証
    ここまで調べて、1つの仮説が浮かんだ<SMALL>(自分で考えたように書いてますが同じことを考えた人は他にもたくさんいます)</SMALL>。
    STGツクール作品において最も深刻なバグ、「特定の状況下で自機が被弾すると消えてしまう」という現象は、このイベント出現数に起因しているのではなかろうか。
     
    そこで、自弾や爆発イベントを79個登場させてから自爆する、という実験を行った。
    (プレイヤーの復活方法が「その場」の場合)
    結果、何度やってもプレイヤーが見事に消失した。
    つまり上記の「プレイヤー武器+爆風」という項目にはプレイヤー自身も含まれている、ということである。



    考察1. プレイヤーイベントの地位は保証されていない 第2の実験結果についてもう少し補足しておこう。
     自弾や爆発イベントが79個登場した時点で自爆すると、自機が復活する前にまず「プレイヤー爆発」イベントが先に生成される。通常ならこの後自機が点滅状態で復活するが、プレイヤー爆発イベントが80番目の自機関連イベントになってしまうため、81番目となる自機はキャラオーバーとなり登場できない。
     ボス爆発時に被弾した場合この現象が見られることが多いのはそのためである。
     考えてみれば、ボスキャラが別枠で1イベントを保証されているのに、肝心のプレイヤーイベントが他のイベントと同列に扱われているのは非常に痛い仕様である。
     これを防ぐためには様々な方法が考えられるが、最も確実な方法は残機数を完全にイベントで管理してしまうことであろう。

    2. コマンドの組み方によっては見た目の敵弾数は増やせる 自機関連、敵弾、敵の最大数はそれぞれ独立して扱われている。そのため個々の最大出現量は限られているが、これら3つを足せば240にもなる。
     うまくコマンドを組めば、爆発イベントや敵イベントを敵弾に見せ、200近い弾を撃つことも可能だろう。具体的な方法については後日あらためて実験を行うことにする。

     
     

    副産物なお今回の実験によって、イベントの表示優先順位(どのイベントが手前に表示されるか)に関するデータが得られたので付記しておく。
     
    同じ階層に存在するイベントの表示優先順位は、出現の順番に関係なく

      プレイヤー > 爆発 > プレイヤー武器 > 敵弾 > 敵である。(左側が手前)

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|幻想森林

    GMT+8, 2024-5-20 20:17 , Processed in 0.026780 second(s), 18 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表