zkn_encount_make.plの使い方


■概要
図鑑分布図で使用する下記データを生成する。
・分布データ(area_monsno)(MONSNOごとにあり、更にそれぞれホワイト版、ブラック版あり)
・分布データのファイルリスト(area_file_list)(ホワイト版、ブラック版あり)
・ゾーン番号変換テーブル(area_zone_group)(ホワイト版、ブラック版あり)


■場所
resource\zukan_data\zkn_encount_make.pl


■必要な入力ファイル
(1) encount_wb.csv
ShiftJIS
引数で渡す。
FileMakerから出力したファイル。

(2) monsno_hash.rb
ShiftJIS
引数で渡す。
おそらくpersonal_wb.csvから作成されたファイル。

(3) townmap_data.xls
/resource/townmap/data/townmap_data.xls
タウンマップ

(4) zonetable.xls
/resource/fldmapdata/zonetable/zonetable.xls
ゾーン

(5) zone_id.h
ShiftJIS
/resource/fldmapdata/zonetable/zone_id.h
ゾーンID


■必要なツール
(1) ExcelSeetConv.exe
/tools/exceltool/ExcelSeetConv.exe
Excelコンバータ


■使い方
perl zkn_encount_make.pl encount_wb.csv monsno_hash.rb


■出力ファイル
(1) zkn_area_版_monsno_番号.dat

版はwかb
番号は1<= <=MONSNO_END(ゲノセクト649)

zkn_area_w_monsno_506.dat
ホワイト版ヨーテリー(MONSNOが506)の分布データ
出力フォーマットは「AREA_DATA」。

zkn_area_b_monsno_506.dat
ブラック版ヨーテリー(MONSNOが506)の分布データ
出力フォーマットは「AREA_DATA」。


(2) zkn_area_版_file_list.lst
zkn_area_版_monsno_番号.datを
narcに固める際に利用する。

zkn_area_w_file_list.lst
ホワイト版分布データのファイルリスト
zkn_area_w_monsno_番号.datを列挙したファイル
[例]
"zkn_area_w_monsno_001.dat"
...
"zkn_area_w_monsno_649.dat"

zkn_area_b_file_list.lst
ブラック版分布データのファイルリスト
zkn_area_b_monsno_番号.datを列挙したファイル
[例]
"zkn_area_b_monsno_001.dat"
...
"zkn_area_b_monsno_649.dat"

(3) zkn_area_版_zone_group.cdat
インクルードして使う。

zkn_area_w_zone_group.cdat
ホワイト版ゾーン番号変換テーブル
[例]
#define ZKN_AREA_ZONE_GROUP_MAX (61)
static const u16 zkn_area_zone_group[ZKN_AREA_ZONE_GROUP_MAX] =
{
  ZONE_ID_T01,  // 389
...
  ZONE_ID_H05,  // 263
};

zkn_area_b_zone_group.cdat
ブラック版ゾーン番号変換テーブル
[例]
#define ZKN_AREA_ZONE_GROUP_MAX (61)
static const u16 zkn_area_zone_group[ZKN_AREA_ZONE_GROUP_MAX] =
{
  ZONE_ID_T01,  // 389
...
  ZONE_ID_H05,  // 263
};


■出力フォーマット
・AREA_DATA

//-------------------------------------
/// 分布データ(ポケモン1匹分)
//=====================================
enum
{
  PLACE_BITFLAG_NONE         = 0,
  PLACE_BITFLAG_GROUND_L     = 1<< 0,
  PLACE_BITFLAG_GROUND_H     = 1<< 1, 
  PLACE_BITFLAG_GROUND_SP    = 1<< 2,
  PLACE_BITFLAG_WATER        = 1<< 3,
  PLACE_BITFLAG_WATER_SP     = 1<< 4,
  PLACE_BITFLAG_FISHING      = 1<< 5,
  PLACE_BITFLAG_FISHING_SP   = 1<< 6,

  PLACE_BITFLAG_GROUND_ALL   = ( PLACE_BITFLAG_GROUND_L | PLACE_BITFLAG_GROUND_H | PLACE_BITFLAG_GROUND_SP ),
  PLACE_BITFLAG_WATER_ALL    = ( PLACE_BITFLAG_WATER | PLACE_BITFLAG_WATER_SP ),
  PLACE_BITFLAG_FISHING_ALL  = ( PLACE_BITFLAG_FISHING | PLACE_BITFLAG_FISHING_SP ),
};
typedef struct
{
  u8    unknown;  // 0のとき不明でない、1のとき不明
  u8    place_bitflag[TOWNMAP_DATA_MAX];  // TOWNMAP_DATAのインデックスを配列添え字に使えるように並べてある
}
AREA_SEASON_DATA;
typedef struct
{
  u8                 year;  // 0のとき一年中同じでない、1のとき一年中同じ(なので春のデータだけ見ればよい)
  AREA_SEASON_DATA   season_data[PMSEASON_TOTAL];  // PMSEASON_SPRING PMSEASON_SUMMER PMSEASON_AUTUMN PMSEASON_WINTER
}
AREA_DATA;


■改善の必要がある点
(1) 他のコンバータの出力ファイルを使っているものは、それを使わないようにして依存しないようにしたほうがいい
「必要な入力ファイル」の
monsno_hash.rb
zone_id.h
は、他のコンバータが出力しているので、
それらの処理が終わってから本コンバートを行う、という順番でないと
最新の入力ファイルになっていないことがあるので注意が必要。

(2) 見た目全く同じであるのに、「季節で違いがある」という判定をしてしまっているポケモンがいる
例えば、春夏秋にground_lに出現し冬にground_hに出現するポケモンの場合、
図鑑分布図では春夏秋冬全く同じ表示になるのに、「季節で違いがある」と判定してしまっている。

# 見た目ground(ground_l, ground_h, ground_spが見た目同じ場所)
# 見た目water(water, water_sp)
# 見た目fishing(fishing, fishing_sp)

・ホワイト版でそのような判定をしてしまっているポケモン
クリムガン
マッギョ

・ブラック版でそのような判定をしてしまっているポケモン
クリムガン
マッギョ

「改善版zkn_encount_make.pl」がこれを修正した「zkn_encount_make.pl」であるが、
プランナより「修正の必要はない、現状のままでよい」と言われているので、
「改善版zkn_encount_make.pl」が採用されることはない。


以上。
