« ポリゴンオブジェクトを1フレームごとにobj形式で保存 | トップページ | C4D C.O.F.F.E.E. 変数の宣言と初期化 »

C4D ユーザスクリプト ID と Plugin ID

C4D のコマンドやツール、Plugin、ユーザスクリプトもIDで管理されています。
自らPluginを開発する人は、開発時の為のID1000001~1000010の使用が許されているのを知っていますよね。

Pluginが完成(動作確認も含め)したら、正規のIDをPluginCafeで発行してもらうのだ…

自分の作ったPluginのIDが、他のPluginのIDとの衝突を防ぐ為に…

開発中の確認ならば、10個もあれば十分だろう。が…

でも、もし一度に11個以上を開発する場合はどうだろう…

Pluginを開発している人は、こんな事を考えた事は無いだろうか?

もしかして、ユーザスクリプトのID領域を間借り出来ないだろうか?
ユーザスクリプトの為に、C4Dが自動でIDを割り振りしているなら…
IDが衝突しないよう既に振られたIDを確認しつつ、新たなIDを割り振っているんじゃないか?って…

大量にPluginを開発して、チェックするのにユーザスクリプトID領域を使用。
トコトン使って動作確認が完了したPluginから順番に、PluginCafeでIDを取得していけば良いのだ…

まぁ、11個以上の開発/動作確認を同時進行するには、自分の能力では無理なので…
しかも、ユーザスクリプトで十分間に合うし…
実際に、こんな事をする必要は無いのだけど…

でも、とりあえず…やってみる。
やってみると言っても、Pluginを11個もいきなり開発は出来ませんので…

ダミーPluginで、チェックしてみます。

/*
ダミープラグ
2009.7.23

これは、ユーザスクリプトではありません。
テキストエディタで保存して、拡張子をcofに変更してください。
C4DのPluginフォルダへ。
*/


var PluginID = 1000001;

class DummyMenuPlugin : MenuPlugin
{
  public:
  DummyMenuPlugin();
  GetID();
  GetName();
  GetHelp();
  GetState();
  Execute(doc);
}

DummyMenuPlugin::DummyMenuPlugin(){super();}
DummyMenuPlugin::GetID(){return PluginID;}
DummyMenuPlugin::GetName(){return "dummy01";}
DummyMenuPlugin::GetHelp(){return "dummy01";}
DummyMenuPlugin::GetState(){return CMD_ENABLED;}
DummyMenuPlugin::Execute(doc){return;}


main()
{
  Register(DummyMenuPlugin);
}

ダミープラグ「Dummy.ZIP」です。

一応これで、C4DにはPluginだと認識されます。
緑色の帯の部分は、後ほど修正。

適当に新規でユーザスクリプトを数個作ってみる。

Userscriptid_01

コマンドマネージャで確認します。

Userscriptid_02

追加したユーザスクリプトのIDは?

AA01 600000099
AA02 600000103
AA03 600000105
AA04 600000107
AA05 600000109

最初だけ違いますが、1個飛ばしでIDが振られています。
ユーザスクリプトのIDは、600000000辺りから自動で割り振られるのでしょう。

では、最後に追加した番号から、数個先のIDをダミープラグに割り振って見ます。

1個飛ばしで割り振られるので、dummy01:600000120dummy02:600000121の2個を用意します。

拡張子は、もちろん「.cof」。

先ほどのダミーPluginの緑色の帯の部分を変更して、C4Dのプラグインフォルダに配置し、C4Dを再起動します。

再起動直後は、まだエラーは起きていないので、大丈夫なのでしょう…

もう一度同じように、ユーザスクリプトを新規で追加していきますと…

The plugin ID '600000121' in file: '
collides with the same ID in file: 'Dummy_02.cof'
You have to use a unique ID for registering your plugin!
You can get a personal number for free from PluginCafe at www.plugincafe.com
If You already obtain a valid personal number from PluginCafe
then please contact the author of the wrong plugin not to use your personal number!

コンソールに、こんなメッセージが表示されましたが…

英語が苦手なので、適当に訳してみました。

ファイル:' のPlugin ID '600000121'が
ファイル:'Dummy_02.cof'の同じIDと衝突しています。
あなたのPluginを組み込む為に唯一のIDを使う必要がある!

www.plugincafe.comのPluginCafeから無料で、パーソナル番号を取得する事が出来ます。
既にPluginCafeから有効なパーソナル番号を取得しているならば、
あなたのパーソナル番号を使わないよう、間違ったPlugin著作者に連絡してください!

なるほど、有効なIDをPluginCafeから取得しているのに、他のPluginIDと衝突している場合は…
衝突しているPluginの開発者に直に連絡するのか…

プルルルル…ガチャッ「ヘロゥ~」…英会話ができないから自分には無理だ…
って、今時は普通、メールだよ!

これは、ユーザスクリプトIDとPlugin IDの衝突に限ったメッセージでは無く、全てのIDの衝突に出されるメッセージのようですね。

やはり使わない方が、良いのだ。

ところで、ユーザスクリプトは何個まで作れるのだろうか?
やってみる?

もし100や200ではなく、10000とか100000だとしたら、確認が大変だからやめときます。
Pluginのメニューの項目として登録される限界とか…
1個のフォルダのファイル数の限界とかが、絡んできそうですが…

もし、今回のユーザスクリプトIDとの衝突をダミープラグで実際に確認した人は、確認後は忘れずにダミープラグを削除してください。
間違っても、他のファイルを消さないように…
責任取れませんからぁ…

|

« ポリゴンオブジェクトを1フレームごとにobj形式で保存 | トップページ | C4D C.O.F.F.E.E. 変数の宣言と初期化 »