結合時の不具合について

公式に質問した後に見つけてしまいましたw
結論から言うと難しい問題みたいです。
とりあえず、トラブルシューティング的なものが載ってたので、訳して載せてみます。
英文を訳すのってなんか、エキサイト翻訳みたいになっちゃいますね。読みにくいかと思います、申し訳ございません。

原文
How to merge multiple data files
This is a complete nightmare, and you should avoid merging data at all cost. Whenever you have newly created data in more than one file and want to merge the two, things go absolutely haywire, and you won't even always notice it right away. There seems to be a bug in the Merge function that doesn't properly reassign IDs to newly created objects in the second file, so you end up with duplicate unique IDs for different objects, causing teams, players, stadiums, etc to outright disappear. So again, simply don't do it is by far your best option. However if you must, and you're into masochism, there's a way to salvage hard work when it's split up in multiple files.

Again this involves editing the XML files manually, by using a text editor. The idea is to give all newly created objects in the second file new IDs, and getting rid of all duplicate data, such as competitions that are created in both files. To find the duplicate data, I recommend using winmerge, a freeware utility that allows you to see differences in two files side by side. Delete all the duplicate data in the second file. There will be some minor differences because the editor tends to change datatypes from "unsigned" to "string" for no particular reason, but you can ignore those. It will work fine regardless of datatype.

After you've weeded out the duplicates, it's time to reassign IDs. I can't get into great detail here because this would be a novel, but if you figure out how new objects are stored in the XML, you can identify its unique ID and then do a "replace all" to replace it with something that's larger than the highest ID in the original file. Do that for each object, be it a club, person, competition, city or stadium. When you merge the modified data the editor will properly reassign all IDs to be in sequence.

Hopefully SI will fix this in the next patch, but for now maybe this saves some people from having to throw away a lot of work they've put in.

訳文
これはかなり難しい問題であり、出来るだけデータを結合するのは避けるべきだと思います。データを結合する際、物事がぐちゃぐちゃになり、あなたはそれを知ることが出来ないことが多いでしょう。バグがあるらしく、1つのデータをもうひとつのデータに入れる際、かぶったIDを新しいIDにアサインすることが出来ないようです。ということで、IDがダブり選手、スタッフ、クラブ、スタジアム等IDを持つすべてのものが消えたりする可能性があります。なので、やらないことが一番ベストな選択でありますが、どうしてもやらなければいけない場合、かなり難しくてめんどくさい方法ですがやり方があります。

これはxmlファイルを手動で直すことが絡んでおり、それにはテキストエディターなどが必要になってきます。感覚としては、結合する2つ目のデータにすべて新しいIDを割り振り、ダブってるデータをすべて削除することです。(ダブってるデータとはこの場合作られた同じコンペティションですが、今回は心配ないかと)ダブってるデータにはwinmergeというソフトを使います。これでダブってるデータをすべて消します。

データをすべて消してから、IDの割り振りに移ります。これについて語るのは本のようになってしまいますので、割愛しますが、あなたがxmlファイルの構造を知ればユニークIDの割り振り方もご存知であり、それをオリジナルファイルの一番高い番号より高い番号で割り振れば問題が解決するかも知れません。ユニークIDはIDがあるすべてのオブジェクト(選手、スタッフ、市、クラブ、コンペティション等)で行ってください。




これが問題なのかは分かりませんが、もしかしたらと思います。
とりあえずエディターを使わない作業らしいので、あとでそのソフトをダウンロードしてみたり、テキストファイルでxmlファイルを覗いてみたりします。

原因かもしれないもの

とりあえずこんなものを見つけましたので一応うpしておきます。
winmergeという2つのファイルの相違点を見つけるソフトでgobohさんがうpされた17チームのxmlとgobohさんが出来なかったとおっしゃっていた、Makozさんの千葉のxmlファイルを比べた結果です。
iderror.jpeg

左が17クラブファイル、右が千葉のファイルです。
ご覧の通りIDが被ってます。もしかしたらこれが原因かもしれません。

結合できないファイルはIDを新たに与える必要があるようです。

Unique IDの編集方法?

被っているとエラーになるらしいユニークID、今回はそれをRead-onlyから編集できるようになるらしい設定方法が載ってたので転載します。
テキスト編集ソフトを(個人的には「Terapad」をオススメします。)用意してください。

原文は若干長いので割愛。

まず、テキストエディタにてC:\Program Files\Sports Interactive\Football Manager 2010\tools\editor\data\format\database ui
のなかにあるclub ui.xmlを開いてください。
そうすると最初の何行かが
  <!-- fields for the clubs table -->
   <record id="clrs">
       <list id="fields">
           <record db_field="club,Csnm" width="-2"/>        <!-- name -->
           <record db_field="club,Cnti" width="-2"/>        <!-- nation -->
           <record db_field="club,Cdvi" width="-2"/>        <!-- division -->
           <record db_field="club,Crep"/>                <!-- reputation -->
       </list>
   </record>

こうなってるはずなので

<record db_field="club,duni" width="75"/> <!-- unique ID --> の一文を追記して、
以下のように編集してください



 <!-- fields for the clubs table -->
   <record id="clrs">
       <list id="fields">
           <record db_field="club,Csnm" width="-2"/>        <!-- name -->
           <record db_field="club,Cnti" width="-2"/>        <!-- nation -->
           <record db_field="club,Cdvi" width="-2"/>        <!-- division -->
           <record db_field="club,duni" width="75"/>        <!-- unique ID -->
           <record db_field="club,Crep"/>                <!-- reputation -->
       </list>
   </record>


多分、これでできると思います。

  • 最終更新:2009-11-20 12:42:58

このWIKIを編集するにはパスワード入力が必要です

認証パスワード