[Xoops] XCLに没頭~姑息的手段を思いついた

 コメントで教えてもらった方法でダンプすると、ちゃんと user_age は吐かれている様子で。

[“user_age”]=> array(7) { [“value”]=> int(30) [“required”]=> bool(false) [“data_type”]=> int(3) [“maxlength”]=> int(2) [“changed”]=> bool(true) [“options”]=> string(0) “” [“not_gpc”]=> bool(true) }

 でもデータベースに反映されてない。
 試しに同じ項目を、プロフィール編集から叩いてみると、問題なく出来る。
 ? おっかしーなーと悩みつつ、ふとしたことに気が付いた。


 これまでユーザ登録時にキャラクターデータまで入力させようとしてたわけだけど、そうすっとキャラクターが死んだら登録しなおしってコトになるわけで、考えてみればこれは都合が悪い。これまでの発言履歴が、キャラクターのものだけでなくプレイヤーのものまでオジャンになっちゃうのは困る。
 いっそのこと、ユーザ登録後にキャラクターを登録させるモジュール作った方がよいのでは?
 処理の流れとしては、ユーザ登録時にキャラクター作成権 1トークン発行。登録するとトークンが 0になって、死亡すると再びトークンが補充される……とかにするのがベストか。どうせトークンが 2以上になることはないから判定は True / False でいいんだけど……まあ Int でいいや。
 更にちゃんと管理することを考えると、キャラクターの投稿回数とプレイヤーの投稿回数を分けないとユーザのランクが……あ、XCLは投稿回数とランク関係ないっけ? まあどっちにせよ、この案は後回しにしよう。ゲーム内容には直接影響しないし。

 いや待てよ? そもそもモジュール作らないでも、ユーザ登録時に初期値 1でトークン発行(新規フィールドを初期値 1で与えることは今のスキルでも可能)して、編集画面でトークンが 1のとき xoops_input を表示(Smartyで条件分岐させれば出来ると思う)して、編集登録後トークンを 0に。トークンが 0のときは xoops_input を使わず smarty で文字列を呼び出すだけとかにしておけば大丈夫?
 通常の編集が必要なフィールドは、トークンに関わらず編集できるようにしておけば(Smartyで条件分岐させなければ)問題ないだろうし。
 うん、これならとりあえず今持ってるスキルだけで出来そうだ。

 根本的な解決ではなく、姑息的手段でしかないのが僕の性分を良く表している。
 それも Cubson のインストールを終えた直後というのが、なんとも顕著ではないか。
(Cubson は別のモジュール作りに使うから、無駄にはならないんだけど)

 最終的にはやはり別モジュールで管理する方式をとった方が、色々と好都合である。
 まずもっていちいち user モジュールとテンプレートを Hack する危険を冒さなくても済ませられるなら、それに越したことは無い。{prefix}_user テーブルなんて、極力いじりたくないし。恐いから。
 それにモジュール化出来れば、今設計しているもの以外のゲームにも、応用が利くようになる……と思う。(ルナル・ライフワークスの戦略シミュレータ用データベースも作りたいし)
 そう考えると、やっぱりモジュール化にはチャレンジするべきなんだろうな。
 アー。勉強しないとダメかー。
 しかし俺は PG でも SE でもない一介のヘタレ物書きでガガッガー。