現在、建姫の情報を募集しております。
この Wiki に載っていない建姫を入手した人、または載っていない情報を提供できる人は、ぜひご協力をお願いします。
このゲーム Wiki では、Pukiwiki に標準装備されている『comment』などの機能は使用できませんが、代わりに『thread』プラグインが用意されています。
#thread([スレッドID],[最大メッセージ数],[見出しレベル])
例: #thread(1) #thread(2,50,3) #thread() #thread(-1,50,3)
例:
#thread_recent() #thread_recent(20)
ガチャシミュレータを設置するには、ガチャのデータを載せたページ、設置するページの 2 つのページが必要になります。
#gacha([ガチャページ名])
例: #gacha(..ガチャデータ/プレミアムガチャ/2016-12-26)
* 設定 |ガチャ名|プレミアム召喚 (2016-12-01~2016-12-08)| |ランク名|レアリティ| |消費資源名|神聖結晶| |資源価格|66.66| |消費資源個数|5| |N連|10| |N連還元|5| |N連確定方式|least| |確率アップ重み|2| * 確率 |~レアリティ|~確率| |黒|0.03| |白|0.1| |金|0.37| |銀|0.5| * アイテム |~レアリティ|~名前|~クラス| |黒|*アンジェリーネ|プリンセス| |黒|帝国剣士ジークリンデ|ソードマスター| |黒|帝国重装砲兵エルミラ|重装砲兵| |白|帝国狙撃兵ラルフ|モンスタースレイヤー| |白|[[*帝国遊撃兵ローザ>ユニット/帝国遊撃兵ローザ]]|レンジャー| |白|帝国騎士ヴィオラ|インペリアルナイト| |金|帝国水兵フレイ|セーラー| |金|帝国重装砲兵ゲオルグ|重装砲兵| |金|帝国竜人サーベイン|中級竜兵| |銀|帝国重装歩兵ドワイト|ヘビーアーマー| |銀|帝国遊撃兵エリック|レンジャー| |銀|帝国天馬騎士クラーラ|ペガサスライダー| |銀|帝国付与魔術師ヒース|エンチャンター| |銀|帝国騎士ルークス|インペリアルナイト| * テンプレート |~回数|~レアリティ|~名前|~クラス| |RIGHT:{{回数}}|CENTER:{{レアリティ}}|{{名前}}|{{クラス}}|
ステージの周回でドロップするアイテムのドロップ率と期待値を計算することができます。
#drop(データページ名)
例: #drop(..ドロップ率調査/武器商人と呪いの武器/呪いの弾丸)
データページの例
- 呪いの武器 - ジョヴァンニ - 白金の聖霊
設置したページから『ドロップ情報を投稿する』でデータを追加していきますが、誤ったデータを追加してしまったり、真偽が疑わしいデータが追加されたことにより、過去のデータを修正・削除したい場合があります。
これをデータのリビルドと呼び、次のような手順で行います。
『データのサイズが一致しません。』というエラーメッセージが表示され、リビルドに失敗することがあります。これは、データページに定義されたアイテム数と、過去ログページに記録された列数が異なる場合に発生します。設置した後に、アイテム数を変更したことが原因ですから、データページか過去ログページのどちらかを修正してください。
データベース機能を使うことで、キャラクター・装備・ステージのような大量データを効率的に管理することができます。
データベースを利用するには、データを表形式で記述する『テーブルページ』と、データをどのように表示するかを示す『テンプレートページ』の 2 つを作成する必要があります。
テーブルページの記述例(画像の URL は省略しています)
|int|line|line|select(遠,近)|int|int|int|int|int|int|rel(..db/スキル,スキルID,スキル名)|str|t |~ID|~ユニット名|~クラス|~遠近|~HP|~攻撃力|~防御力|~魔法耐性|~ブロック|~コスト|~スキルID|~画像| |1|ケイティ|ソルジャー|近|799|152|123|0|2|7|1|http://~| |2|ベルニス|ヘビーアーマー|近|1131|133|227|0|3|16|2|http://~| |3|キャリー|ワルキューレ|近|765|242|170|10|1|7|3|http://~| |4|クレア|アーチャー|遠|616|130|58|0|0|8|3|http://~| #dbrel(スキル,スキルID,ID,..db/スキル)
|~ID|~スキル名|~効果|~WT|~CT| |1|援軍要請III|出撃コストが15回復|17.5|35| |2|防御力強化III|X秒防御力がY倍に上昇|12.5|25| |3|攻撃力強化III|X秒攻撃力がY倍に上昇|12.5|25|
#dbrel() については後述します。
#dbconfig(type) を使用することで、それぞれの列の型を指定することができます。次のように、列ごとに改行で区切って指定します。
#dbconfig(type){{ int line select(,A,B,C) }}
指定できる型:
テーブルデータのヘッダ部に |t で終了する行を記述する方法もありますが、GUI での編集時に型データが壊れてしまうため非推奨です。
#dbconfig(pseudo-field) をテーブルページに記述することで、仮想的なフィールド(列)を作成することができる。
型が int または float の列にのみ指定することができる。
書式:
#dbconfig(pseudo-field,[フィールド名],[仮想フィールドの種類],[追加引数...])
仮想フィールドの種類は以下のものがある。
種類 | 意味 | 追加引数 |
---|---|---|
stat.mean | 平均値 | 既存の列名, 算出条件 |
stat.var | 分散 | 既存の列名, 算出条件 |
stat.std | 標準偏差 | 既存の列名, 算出条件 |
stat.z-score | Z-スコア | 既存の列名, 算出条件 |
stat.t-score | T-スコア(偏差値) | 既存の列名, 算出条件 |
stat.radar | レーダーチャート用の値 | 既存の列名, 算出条件 |
記述例:
// HP の T-スコア(偏差値)を算出し、x['HPスコア'] でアクセス可能に #dbconfig(pseudo-field,HPスコア,state.t-score,HP) // レア度が SSR の行からのみ T-スコアを算出する。 #dbconfig(pseudo-field,HPスコア,stat.t-score,HP,x.レア=SSR)
テンプレートページの例
|~ユニット名|~クラス|~HP|~攻撃力|~防御力|~魔法耐性|~ブロック|~コスト|~スキル| {% for x in xs %} |CENTER:&ref({{x['画像']}});&br;{{x['ユニット名']}}|{{x['クラス']}}|{{x['HP']}}|{{x['攻撃力']}}|{{x['防御力']}}|{{x['魔法耐性']}}|{{x['ブロック']}}|{{x['コスト']}}|{{x['スキル']['スキル名']}}| {% endfor %}
例えば、ユニットテーブルとスキルテーブルを別に作成したと仮定します。
表示するユニットの情報にスキルも一緒に表示したい場合、テーブル同士の関係を定義することで可能になります。
具体的には次のようにします。
#dbrel() の文法は次のとおりです。
#dbrel([使用したい列名],[現在のテーブルの列名],[対象テーブル側の列名],[対象テーブル名],[複数指定])
例えば、次のように記述した場合、
#dbrel(スキル,スキルID,ID,..db/スキル)
ということを意味します。
[複数指定] に true を指定すると複数のターゲットを指定できるようになり、x['...'][0] などのように配列としてアクセスできるようになります。省略した場合には、false が指定されたものとします。
通常は 1:n の関係のときに 1 → n の方向で参照しますが、逆向きの n → 1 方向でアクセスしたい場合もあります。
例えば、スキルとユニットテーブルが存在するとき、次のような参照があります。
この場合、次のように指定することで、逆方向参照を実現できます。(実際には 1 行で)
#dbrel([使用したい列名], [対象テーブルが現在のテーブルの参照に使用している列名], [現在のテーブルの ID 列名], [対象テーブル名], [複数指定], true)
例えば、スキルテーブルからユニットテーブルへの参照は次のように定義できます。
#dbrel(ユニット,スキルID,ID,..db/ユニット,true,true)
テンプレートを表示したい場所に #db() を記述します。
#db([テンプレートページ名],[テーブルページ名],[ID],[引数...])
下のようにすると、『..db/ユニット』ページに記述した ID=1 のレコードが表示されます。
#db(..tmpl/ユニットステータス,..db/ユニット,1)
arg[...]=... という形式の引数で、テンプレート側に任意のデータを渡すことができます。
#db(..tmpl/ユニットステータス,..db/ユニット,1,arg[a]=1,arg[b]=2)
テンプレート側からは、args['a'] のように参照できます。
すべてのレコード、または条件に合致したレコードを表示するには #dbquery() を使用します。全ユニットの一覧ページを作ったり、『ソルジャー』クラスの一覧を作ったり、攻撃力が高いトップ 10 を表示する場合などに便利です。
レコードを表示したい箇所に #dbquery() を記述します。
#dbquery([テンプレートページ名],[テーブルページ名],[条件文...],[引数...])
条件に使用できるのは以下のとおりです。条件文の指定に順序はありません。
例えば、次のように記述した場合、
#dbquery(..tmpl/ユニット一覧,..db/ユニット,x.クラス=ソルジャー,sort[x.攻撃力],desc,limit[3])
を意味します。
#dbform([テンプレートページ名],[テーブルページ名])
#dbform() を記述することで、任意の条件で検索できるフォームを設置できます。各コラムの入力コントロールは、テーブルページで指定した『列の型指定』によって決められます。
重複したデータを含むレコードの追加を禁止する場合などには、#dbconfig(unique,...) を使用します。
例えば、以下は同じ『名前』を持つレコードの追加を禁止します。
#dbconfig(unique,名前)
コラム名は複数指定することができ、以下の例では『レア』と『名前』の両方が一致したレコードのみ禁止対象とします。
#dbconfig(unique,レア,名前)
#dbconfig(field-desc) を使用することで、レコード編集ページにレコードごとのヘルプ文を追加することができます。
#dbconfig(field-desc,[フィールド名],[説明文])
『説明文』が複数行にわたる場合には、次のように記述します。任意の Wiki 記法を使用可能です。
#dbconfig(field-desc,レア){{ このように&br; 複数行を&br; 記述できます。 }}
#dbconfig(field-template) を使用することで、レコード編集ページにフィールドごとの定型文を指定することができます。#dbconfig を複数記述することで 1 つのフィールドにつき複数の定型文を指定することも可能です。
ドロップアイテムやクリア報酬のように、定型文を入力する機会が多いフィールドに使用すると便利です。
#dbconfig(field-template,[フィールド名],[定型文])
例えば、次の指定では『ドロップアイテム』フィールドに 3 つの定型文を指定しています。
#dbconfig(field-template,ドロップアイテム,コイン) #dbconfig(field-template,ドロップアイテム,カチャコイン) #dbconfig(field-template,ドロップアイテム,Nカード)
#dbconfig(field-template) は、line 型または str 型のフィールドにのみ指定可能です。
レコードを新規追加した場合、通常は『このレコードを基にページを新規作成する』から手動でページを作成する必要があるが、#dbconfig(page-rule) を使用することで、レコード追加時に対応するページを自動生成させることができる。
#dbconfig(page-rule,[ページ内コンテンツのテンプレートページ名]){{{ [生成するページ名のテンプレート文字列] }}}
例えば、以下のように指定し、『SSR/アリス』というレコードを追加すると、『..テンプレート/ユニット』ページを使用してページ内コンテンツを生成し、『ユニット/アリス』というページを生成する。
#dbconfig(page-rule,..テンプレート/ユニット){{{ ユニット/{{x['名前']}} }}}
関連テーブルの内容を表示するドロップダウンリストには通常 ID 昇順にソートされた状態でアイテムが表示されるが、#dbconfig(select-order) を使用することでソート順を変更することができる。
#dbconfig(select-order,[ソートに使用するキー],[逆順?])
例えば、『名前』列をソートに使用する場合は、次のように記述する。
// 『名前』の昇順 #dbconfig(select-order,名前) // 『名前』の降順(逆順) #dbconfig(select-order,名前,true)
TODO と呼ばれる機能を使用することで、「このページのここを編集して欲しい」という要求を Wiki の読者に伝えることができます。
編集を希望する箇所に #todo ~ #todoend で要求を記述します。
#todo([要求のタイトル]) [要求の本文] #todoend
『要求のタイトル』は要求の概要を示す文字列で、ページ名とともに TODO リストに表示されます。そのため、ページ名とタイトルだけで「どのような要求なのか?」を読者が推測できるように設定しましょう。例えば、『○○の完凸画像募集』『○○のステータス情報募集』などです。
『要求の本文』には任意の Wiki を記述できます。どのような編集を希望しているかを、簡潔かつ具体的に記述しましょう。
TODO の記述例:
#todo(ユニット画像を募集) - 完凸希望ですが、完凸じゃなくてもいいです #todoend
TODO 一覧を表示したい場所に以下のコードを記述します。
#todolist
通常は、トップページの見やすい位置に設置するといいでしょう。
すべてのページの本文の前後に定型文を表示させることができます。
基本的には、重要なお知らせを通知する時に使用します。特に、DB やページ構造の変更のように、一時的に他の利用者に編集されたくないような場合の通知に適しています。
『..BeforePost』『..AfterPost』というページに記述した内容が、それぞれページの前と後に表示されます。
特に重要な警告文を掲載する時には、#div プラグインに class="warn" を指定すると、赤字に白の目立つデザインで簡単に通知できます。
ソースページの例:
|~名前|~種別|~URI|~補足| |千年戦争アイギスWiki|rss|http://aigis.gcwiki.info/?cmd=rss|| |Pinkbbs スレ|bbs|2ch|kw=アイギス| |政務官アンナ / 千年戦争アイギス運営|twitter|@aigis1000|| |Twitter検索: アイギス|twitter|アイギス||
フレンド募集やマルチ募集などのように招待コードを書き込み・管理できる機能です。通常の掲示板と異なり、募集期限や募集人数を設定できるため、効率的に募集の管理ができます。
適当なページを作成し、募集機能を設置したい箇所に #invite() を記述します。
#invite(名前,最大日数,最大人数)
例えば次のように記述することで、『フレンド募集』という名前、最大日数 7 日間、募集最大人数 3 人の募集機能を設置できます。
#invite(フレンド募集,7,3)
最大日数は、フレンド募集で 3 ~ 7 日間、マルチ募集で 1 ~ 3 日程度にするといいでしょう。
また、本機能を設置したページは凍結しておくことをおすすめします。
ページにタグをつける機能です。
ページ内の #tag(...) を記述することで、ページにタグをつけることができます。
#tag(タグ1,タグ2,タグ3,...);
#taglist(タグ名); を記述することで、そのタグがついているページの一覧を表示します。
#taglist([タグ名],[basename])
basename を指定すると、スラッシュ以前の部分(いわゆるフォルダ名)が削除され、ファイル名部分のみが表示されます。例えば、キャラクター/SSR/アリス というページは アリス と表示されます。
#fusion_config(target,[種別名],[EXP 定義テーブル名]) #fusion_config(mode,no-cands) #fusion
例:
#fusion_config(target,プレイヤー,..db/プレイヤー経験値) #fusion_config(mode,no-cands) #fusion
#fusion_config(target,[種別名],[EXP 定義テーブル名]) #fusion_config(combination,[合成素材名],[獲得 EXP],[デフォルトでこの素材を使用するか?]) #fusion_config(mode,cands) #fusion
例:
#fusion_config(target,R,..db/R経験値テーブル) #fusion_config(target,SR,..db/SR経験値テーブル) #fusion_config(combination,EXP用素材R,1000,true) #fusion_config(combination,EXP用素材SR,4000,false) #fusion_config(mode,cands) #fusion
例:
|int|int|int|t |~Lv|~Exp|~資金| |1|42|800| |2|43|960| |3|45|1120| |4|46|1280| |5|48|1440| ... |99|0|0|
Wiki 記法中に Twig テンプレートエンジンを使用することができます。
この機能により、例えば以下のような処理が簡潔に記述できるようになります。
本機能は凍結しているページでしか動作しないように制限をかけてあります。凍結・凍結解除には非公開パスワードが必要であるため、本機能が必要な場合には、Wiki の管理者か運営者に『編集者用掲示板』などから依頼してください。
ページ内の一部のみで本機能を使用したい場合、ページソースに直接記述すると、すべての部分を通常ユーザーが編集できなくなってしまいます。そのため、本機能を使用したい箇所を .. から始まる別ページとして作成し、それを #include() する形にするといいでしょう。
Twig 文法は #twig{{{...}}} のみで有効で、典型的な用法は次のようになります。
// 例: 1 ~ 10 までの数値を箇条書きで表示する #twig{{{ {% for i in range(1, 10) %} -{{i}} {% endfor %} }}}
以下では、ZWiki 独自に定義された関数について解説します。Twig の基本的な関数や制御構造については、Documentation - Twig を参照してください。
ページ名から、スラッシュで区切られた一番右側の部分を取得します。
例えば、twig.basename('キャラクター検索/レア/SSR') は 'SSR' を返します。
例:
// ..db/ から始まる全ページを検索し、"..db/" の右側の部分のみをリスト表示する #twig{{{ {% for x in twig.findPages({pat: '..db/.*'}) %} -{{twig.basename(x)}} {% endfor %} }}}
指定された条件に合致するページ名の一覧を取得します。
条件はマップ(連想配列)で指定し、次のような意味を持ちます。
キー | 意味 | デフォルト値 | 例 |
---|---|---|---|
pat | 検索するファイル名の正規表現 | .* | ^\\.\\.db/.*$ |
sort | ソート条件 | なし | ページ名: pagename 最終更新日時: mtime |
order | 表示順 | asc | 小→大: asc 大→小: desc |
例:
// 『ユニット/...』という形の全ページを最終更新日時が新しい順にリスト表示する #twig{{{ {% for x in twig.findPages({pat: '^ユニット/.*', sort: 'mtime', order: 'desc'}) %} -{{twig.basename(x)}} {% endfor %} }}}
指定したページの最終更新日時を取得します。
fmt には strftime 形式での表示形式を指定し、省略時には %Y-%m-%d %H:%M が使用されます。
例:
// 全ページについて、ページ名と最終更新日時をリスト表示する #twig{{{ {% for x in twig.findPages() %} -{{twig.basename(x)}} ({{twig.mtime(x)}}) {% endfor %} }}}
指定した名前(ページ名)のテーブルをロードし、インスタンスを取得する。
Table インスタンスの次のフィールドまたは関数にアクセスできる。
フィールド | 意味 |
---|---|
keys | 列の名前の配列 |
rows | 行 (Row) の配列。詳細は後述 |
types | 列タイプの配列 |
size | 行数 |
getMaxId() | ID の最大値 |
rows フィールドで取得できる Row インスタンスには、アクセス可能な以下のフィールドまたは関数がある。
フィールド | 意味 |
---|---|
at(n) | n 番目の列の値を取得する |
get(key) | key 列の値を取得する |
getReduced(key) | x.スキル.スキル名 の形式で値を取得する |
例:
// ..db/ユニット内の全レコードについて、ユニット名とスキル名をリスト表示する #twig{{{ {% set tbl = twig.table('..db/ユニット') %} {% for row in tbl.rows %} -{{row.get('ユニット名')}} ({{row.get('スキル').get('スキル名')}}) {% endfor %} }}}
Twig が標準でサポートしている関数に加え、以下の PHP の関数が使用できます。
... |