[過去ログ] 【神降臨】TRPG支援ツールを作るスレ【その3】 (983レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
748: 幻月 2005/06/22(水) 00:40:15 ID:??? AAS
>自分自身にも送信できるsendAllのようなものがあった方が良いと思います
うーーん、私としてはちょっと保留ですね。
原理的にはsendUnitを回せばいいんですけどね。
秋茄子さん、急ぎです?
749: 幻月 2005/06/22(水) 00:47:01 ID:??? AAS
多分、カードのクライアントに対して一括で送る際に自分自身にも反応させたいんだと思う
んですが、そうだとすればsendUnitでサーバに過負荷をかける必要性はなくて
jp.Card.Player
あてにもう一回コマンド発行すれば済んでしまうんです。
ただ、秋茄子さんの言いたいことも判らないではないです。
やってもいいです、ただ今回はちょっと時間かかりますよ?
どうします?
750: とり 2005/06/22(水) 05:43:42 ID:??? AAS
モロッコ戦見ながら作業中。あーあ、負けちゃったよ。
>幻月さん
CopyObjyectのテストをしてみました。これいいですね、非常に便利です。
個人的にはメソッド名をCopyObjectにしてほしいところですが(^^;
さておき、これのおかげで現在製作中のプラグインはかなり楽になりそうです。
あと、たけとんぼのプラグインメニューにデーモンユニットを表示しない方法を
教えてほしいです。以前はUnitName=""で行けたんですが出来なくなってるので。
もうひとつ、作業してて目についたんですがjp.common.jplinkって何ですか?
なびGateで見ると、興味深い名前の公開メソッドが並んでいるんですけど・・・
>秋茄子さん
自分自身にも送信できるsendAllですが、個人的には必要ない気がします。
理由としては、sendAllはtaketomboの処理付き変数だというのがひとつ。
また、プラグイン側でどうしてもこれが必要ならば、UnitBaseCtrlのサブクラスに
数行書き加えるだけで実装出来るという事もあります。例えば、こんな感じです。
public static void sendAll(String commandString)(
JpCommandRunning(commandString);
JpCommandRunning(commandString.replaceFirst("^jp","jp.localunit.sendAll"));
}
さすがにこれはいい加減すぎるかもしれませんが、こうした方法で対処が出来るなら
当面これで済ませ、幻月さんには他の部分の充実に力を注いでもらう方が良いのでは?
私のイニシアチブプラグインでは、jp.birdland.initiative.InitiativeCommandの中で
同様の処理を行っているので覗いてみて下さい。
751: 秋茄子 2005/06/22(水) 06:52:40 ID:??? AAS
>幻月さん とりさん
>秋茄子さん、急ぎです?
いえ、全く急ぎません
多層機構を使っていない時では、Javaで直接メソッドを呼び出していましたが多層機構を使った場合の考え方ではどうやって良いかわかりませんでした。
なので、幻月さんととりさんに
> jp.Card.Player
> 私のイニシアチブプラグインでは、jp.birdland.initiative.InitiativeCommandの中で同様の処理を行っている
といったような方法を教えてもらったので問題は全くありません。
よい方法を教えてくださり、ありがとうございます。
この方法を早速使ってみます。
752: 幻月 2005/06/22(水) 09:14:47 ID:??? AAS
>>幻月さん
>CopyObjyectのテストをしてみました。これいいですね、非常に便利です。
>個人的にはメソッド名をCopyObjectにしてほしいところですが(^^;
名前、間違えました(苦笑
次のアップで修正します、二人とも注意してください。
>あと、たけとんぼのプラグインメニューにデーモンユニットを表示しない方法を
>教えてほしいです。以前はUnitName=""で行けたんですが出来なくなってるので。
素直に言ってしまうなら、まだ、作ってないのです。
デーモンなんて早々作らないだろうと後回しにしてたもので…ちょっとまってね。
>もうひとつ、作業してて目についたんですがjp.common.jplinkって何ですか?
>なびGateで見ると、興味深い名前の公開メソッドが並んでいるんですけど・・・
たけとんぼ上での最後の実装機能、直接接続(未完成)です。
IRCを使わないというわけではなくて、「JPコマンドを別のルートで送る」ためのつくりです。
あと、「プラグイン同士でネットワーク通信ができる」というおまけつき。
というか、元々は、テスト用の汎用プラットフォーム目指してましたから
これが本来のネットワークの実装(笑)
ためしに、たけとんぼを起動後、もう一つ別に最新のなびGate(jp.jar)を起動しましょう。
上のメニューのコマンドの送信が使用できるはず…たぶん。
>秋茄子さん
>よい方法を教えてくださり、ありがとうございます。
>この方法を早速使ってみます。
いぇ、それでできるならありがたいかなぁとか(笑
あんまり類似機能増やしたくないだけなんですよ、単純に。
後で混乱しそうで。
753: 幻月 2005/06/22(水) 21:56:01 ID:??? AAS
>個人的にはメソッド名をCopyObjectにしてほしいところですが(^^;
修正しました。最新版で確認してください。
754: 秋茄子 2005/06/23(木) 07:40:45 ID:??? AAS
> 修正しました。最新版で確認してください。
確認しました。
「CopyObjyect」ではJPanelが取得できず、なびGateにも「CopyObjyect」が不正だと言うことが表示されていましたが「CopyObject」だと、正常に動作してJPanelを取得できました。
CopyObjyectはいいですね。
今、3種類のJPanelを返すJpUnitを作ってます。
なびGateを使っていて思ったのですが、なびGateを起動させた直後、なびGateはIRCサーバー接続設定ダイアログに重なってIRCサーバー接続設定ダイアログを隠してしまいます。
IRCサーバー接続設定ダイアログはタクスバーに表示されないので、IRCサーバーに接続するには一端なびGateを動かさないといけません。
なので、なびGateを起動した直後にもIRCサーバー接続設定ダイアログが画面の一番上になるようにしたら便利だと思うのですがどうでしょうか。
755: 幻月 2005/06/23(木) 09:12:22 ID:??? AAS
>CopyObjyectはいいですね。
>今、3種類のJPanelを返すJpUnitを作ってます。
元々、たけとんぼでは実装予定のない機能でしたがやっぱり使いますか(笑
使ってみてしばらく動作確認しててください。
>なびGateを起動した直後にもIRCサーバー接続設定ダイアログが画面の一番上になるようにしたら便利だと思うのですがどうでしょうか。
それはやめときましょう。
私みたいになびGateだけあげてたけとんぼ本体起動しないというのもいますし
アクションタイミングが難しいのです。
なびGateがたけとんぼ専用ならできるんですけどね。
756: 秋茄子 2005/06/23(木) 12:16:32 ID:??? AAS
> 私みたいになびGateだけあげてたけとんぼ本体起動しないというのもいますし
> アクションタイミングが難しいのです。
> なびGateがたけとんぼ専用ならできるんですけどね。
了解です
たけとんぼから使う方法でしか使っていなかったので、たけとんぼなしに使う視点が抜けてました
757: 幻月 2005/06/23(木) 22:38:07 ID:??? AAS
>秋茄子さん
かわりにIRCサーバー接続設定ダイアログをタクスバーにでるようにしてみました。
これでどうです?
758: 秋茄子 2005/06/24(金) 07:15:48 ID:??? AAS
> かわりにIRCサーバー接続設定ダイアログをタクスバーにでるようにしてみました。
以前のバージョンと何度か比較して試してみました。
なびGateに隠れた後に前面に出すとき以外に、IRCサーバー接続設定ダイアログがでている状態でブラウザやソースを見たときにもたけとんぼが起動していることを確認できるのでタクスバーに表示される方がずっと使いやすいと思います。
759: 幻月 2005/06/24(金) 23:49:28 ID:??? AAS
>とりさん、秋茄子さん
バックグラウンド処理の細かいバグを直してました。
最新のたけとんぼ、ja.jarで製作、テストしてください。
760: とり 2005/06/26(日) 03:56:33 ID:??? AAS
>幻月さん
CopyObjectを試していて壁にぶつかったのでアドバイスをお願いします。
トラブルの内容は、親子関係にない別のユニットから自作したクラスのインスタンスをコピーし、
それを元にクラスにキャストしようとするとClassCastExceptionが出るというものです。
↓のサンプルを使って検証してみました。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
検証の手順は以下の通りです。
1)jp.jarをコマンドラインから起動します。
2)なびGateが起動したら「コマンド>フォルダ内のUnitをセットで読み込む」を選択。
3)ダイアログに「plugin」と入力してsampleとtestを読み込みます。
4)なびGateから「jp.sample」というJpScriptを送ってsampleを起動します。
5)なびGateから「jp.test」というJpScriptを送ってtestを起動します。
6)標準出力に以下の様な出力が出ます。
読み込んだパネル:
class jp.birdland.sample.SamplePanel
java.net.URLClassLoader@a23610
SamplePanel:
class jp.birdland.sample.SamplePanel
java.net.URLClassLoader@e8a021
equalsでクラスを比較:false
読み込んだパネルはSamplePanelとしてキャスト出来ません。
#長いので分けます。
761: とり 2005/06/26(日) 04:15:32 ID:??? AAS
#続きです。
見ての通り、読み込んだパネル=sample側のSamplePanelもtest側のSamplePanelも、同じ名前の
jp.birdland.sample.SamplePanel ですが、クラスローダーが異なっているために別のクラスとして
扱われているようです。
このように、別のユニット同士が同じ自作クラスを使いたい場合、どうしたら良いのでしょうか?
そもそもそのような設計をすべきでないのか、リフレクションを使えば何とかなるのか、あるいは
他にもっと簡単な方法があるのか・・・・
幻月さんの意見を聞かせて下さい。
762: 幻月 2005/06/26(日) 04:42:53 ID:??? AAS
>とりさんへ
たぶん、私がやったサンプルみたいにJPanel(親)にキャストすれば動くんじゃないでしょうか。
Javaは型変換にはシビアで同じソースで作ってもパッケージが違うとキャストできなかったりします。
だから、受け渡す際にはSDKの基本クラスにキャストすることを念頭に置いた設計が必要です。
取り合えず、JPanelへのキャストで試してみてくださいな。
763: 幻月 2005/06/26(日) 04:56:25 ID:??? AAS
いまソースの確認してて気が付きました。
ボーダーレイアウト受け渡したいんですね。
これは難しいかな…ちょっと良い方法が浮かばないですね。
出来上がったレイアウトと表示をのは可能だと思うんですけどね。
ボタンのセットはtestでやって(CopyObjectでボタンを渡す)
完成したレイアウトを受け渡すのでは駄目なんでしょうか?
764: 幻月 2005/06/26(日) 05:45:04 ID:??? AAS
連続投稿ですいません。
>とりさん
しばらくいじってましたがやはりうまく抜けないですね。
あと、先ほどのを訂正。
sampleにたいしてCopyObjectしてsampleで設定ですね、やるなら。
しかし、こんな初期で引っかかるとは(苦笑)
あとリフレクションでは多分無理ですね。
クラスローダーに手を入れてもコンパイル後に指定する形だと
返却するときはObject型になるのでまた戻ってしまいます。
ちょっと調べますね。
765: とり 2005/06/26(日) 06:44:15 ID:??? AAS
>幻月さん
えーと、これは問題点を示すためのサンプルであって別にレイアウトを渡したい訳じゃないんです。
たとえば、最近作っていたゲームテーブルなら、GameTableDesktopという自作クラスを他のユニットと
共有したいですし、自作クラスを別ユニットで共有して何かするという構造が使いたい場面は多そうなので。
前回のサンプルで示したのは、SamplePanelというクラスをsampleとtestが共有するというモデルケースで、
sampleから受け取ったSamplePanelを、test側でSamplePanelとして扱う事の出来ない問題を示した物です。
んで、リフレクションと言ったのは、同じクラスを共有する事を諦めて、リフレクションを用いてオブジェクト
からメソッドを直接取得して使用するという方法を考えていましたが、試した結果これは可能でした。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
この方法だと非常に大きなオーバーヘッドが発生し、頻繁に使う機能には使えないという問題点や、
オブジェクトを受け取る側のコーディングが煩雑になるなど問題が少なくないです。
やはり出来れば普通にダウンキャストして使えるというのが理想なんですが・・・・(^^;
766: 幻月 2005/06/26(日) 13:09:37 ID:??? AAS
>えーと、これは問題点を示すためのサンプルであって別にレイアウトを渡したい訳じゃないんです。
了解です。
>この方法だと非常に大きなオーバーヘッドが発生し、頻繁に使う機能には使えないという問題点や、
>オブジェクトを受け取る側のコーディングが煩雑になるなど問題が少なくないです。
>やはり出来れば普通にダウンキャストして使えるというのが理想なんですが・・・・(^^;
ソース見ましたけどね。
リフレクション遅いですからね、私も中で使ってますが。
ダウンキャストは現状とことん抜けませんね。
JpUnitの基本がやってるようにアブストラクトを用いて
メソッド共有するしかないかも知れません。
767: 幻月 2005/06/26(日) 15:25:25 ID:??? AAS
>とりさんへ
さて、先ほどの問題をリフレクションを用いないで私なりに
解決したものを作ってみました。
なお、ダウンキャストについては解決できてないので回避し
ちょっと変わった解決方法を取ってみました。
外部リンク[lzh]:taku_kanban.at.infoseek.co.jp
まぁ、見てみてから、感想ください
768: とり 2005/06/27(月) 03:03:42 ID:??? AAS
>幻月さん
拝見しました、きれいに動作していますね。
ですが、やはりユニットごとの対処で回避しようとすると煩雑になるのは仕方がなさそうですね。
問題の回避はやはり単なる回避でしかなく、根本的な解決にはならないという結論に至りました。
で、jp.jarに手を入れてみました。一応はダウンキャスト出来る様になっていると思います。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
いじったのはjarUnitLoad.javaだけなのでチェックしてみて下さい。
ちなみに、同梱されたsample.jarとtest.jarは31と同じ物なので動作に怪しい部分があります。
769: 幻月 2005/06/27(月) 08:29:33 ID:??? AAS
>とりさん
確認しました。
これは、ちょっと…ね。
クラスローダーのインスタンスに手を入れているのは
判らなくもないけど多層機構で不整合起こしますね、これだと。
770: 幻月 2005/06/27(月) 09:22:39 ID:??? AAS
と、説明が足りないと思うので簡単にだけ補足します。
とりさんが行ったのはjarで読み出すときにURLUnitLoaderを一つにまとめ同じパッケージ名の場合に別のものとして
扱わせないという修正です。
これはある意味スマートな解決方法で、本来「javaは同一パッケージ名を許容しない」というルールからすれば問題ありません。
が…実際問題、製作者のことを考えると同一パッケージの別存在を許容しないといけないのです。
例を挙げます。
たとえば秋茄子さんの作ってきたサンプル、HelloWorld2
これは私が作ったサンプルをベースに拡張したものです。
しかもテスト用であるためパッケージ名、クラス名は変更してありません。
では、とりさんの修正版で元のHelloWortldがある状態で実行するとどうなるか?
元のHelloWortldが読み込まれて、HelloWorld2は読み込まれないんです。
もう一つ例を出します。
とりさんのダイスUnitがありますね。
これを仮に私のプラグイン「マスタースクリーン」で採用したとします。
で、一年位してから、リニューアルした「マスタースクリーンz」というものを出したとしましょう。
もちろん、「マスタースクリーンz」ではダイスUnitは最新のものに変えます。
では動かしてみるとどうなるか…古い方しか呼ばれないんです。
ほかの人のソースを許可もらって組み込むのにわざわざパッケージ名を変える人は少ないというのが私個人の見解です。
で、とりさんの修正を見てちょっと考えてることがあります、のでちょっとまっててくださいな。
771: 幻月 2005/06/27(月) 21:30:28 ID:??? AAS
>とりさんへ
さて、とりさんの案を元に組替えてみました。
外部リンク[lzh]:taku_kanban.at.infoseek.co.jp
無条件にローダーをまとめるのではなく
Jp-Unit-Group: グループ名
をマニュフェストに書くことでまとめられるようにしてあります。
これでどうです?
772: とり 2005/06/28(火) 07:14:06 ID:??? AAS
>幻月さん
確認しました。とりあえず、問題なく動作しているので問題はないと思います。
今回のやり取りで幻月さんと私のユニットの連携に対する認識に若干のずれを感じましたので
認識の擦り合わせのために私の考えを述べておきます。
以下に述べる意見については、いち制作者の意見として参考程度にとどめておいて下さい。
>JpScriptについて
これは親に機能を追加して行くだけのプラグイン機構ではなく、ユニット同士がスクリプトを
介して連携し、ひとつのネットワークを構築するという物だと考えています。
>ユニットの独立性に関して
前述の考えに基づくと、各ユニットは個としての独立性を保つ必要性があり、
私のダイスユニットを例にとるなら、あれは他のユニットのjarに内包される事は考えていません。
そのかわりに、全ての機能はJpScriptを介して利用出来る様になっており、そうする事でユニットの
内包するクラスを一意に保つ事が出来、こうした使い方をする限り幻月さんが770であげた様な状況
は起こりえないと考えています。
秋茄子さんのサンプルのケースについては、あくまでサンプルという特殊なケースであって、本来の
パッケージの命名規則である逆ドメインあるいはそれに準じた方法を用いている限り、起こりえない
ものだと思います。
#ちなみに私はjp.birdland.〜、秋茄子さんはjp.toubousya.〜という識別子を使用しています。
個人的には、ほかの人の既存のユニットをユニットのjarの中に組み込むという使い方はJpSystemの
設計思想を考えると推奨すべきではないと思うのですが・・・。
とはいえ、jp.jarについては現状の仕様で問題ないのでそれでどうこうという類いの意見ではないです。
まあいい機会なので、こうした設計思想の部分やプラグインを作る上でのお約束事などは、擦り合わせを
しておいた方がいいかなとは思いますが(^^;
773: 幻月 2005/06/28(火) 09:26:43 ID:??? AAS
>とりさん
>確認しました。とりあえず、問題なく動作しているので問題はないと思います。
ではこれで固定します。
今晩にでもたけとんぼ、なびGateともにアップしますので最新を取得してください。
>JpScriptについて
基本的にあっています。
>ユニットの独立性に関して
ダイスユニットについては私が誤解してましたね。
了解です。
>特殊なケースであって、本来のパッケージの命名規則である
>逆ドメインあるいはそれに準じた方法を用いている限り、起こりえない
それに関しては、後にJakarta等の外部パッケージ組込形などが登場した場合に
ありえるのではないかと考えています。
まぁ、ある意味杞憂の可能性大なので流してもらってもいいです。
#長いので分けます
774: 幻月 2005/06/28(火) 09:27:17 ID:??? AAS
>個人的には、ほかの人の既存のユニットをユニットのjarの中に組み込むという使い方はJpSystemの
>設計思想を考えると推奨すべきではないと思うのですが・・・。
ちょっと余談をしましょう。
とりさんにプラグインとしての開発を進めていらい私のほうでも
随時必要に応じて少しずつ仕様を変えて拡張してきた面もあります。
とりさんの意識する設計思想は、たぶんに初期に想定した理想のつくりを把握してくれているもので
基本設計者としてはかなりうれしいものがあります。
ですが、卓上の理論系では実際の実装に厳しい。
それを二人とやり取りしてて強く感じるときがあります。
ObjectCopyは近年になってから追加設計した仕様です。
素直に言うならとりさんの行ったような利用までは深く想定していませんでした。
理論と実装、ある意味共存でありながらトレードオフの関係にあると意識しています。
だから、無理に「設計とはこうあるべきだ」と強要するつもりはさらさらありませんし
そこらへんは、ある程度お互いに妥協しながら作っていくものだと思います。
そこまでを前提に既存のユニットを無差別に組み込むと言うのは確かに推奨しませんが、
そのうちやる人はいるだろうし、状況にもよるな、と緩く考えてます。
>まあいい機会なので、こうした設計思想の部分やプラグインを作る上でのお約束事などは、擦り合わせを
>しておいた方がいいかなとは思いますが(^^;
やってもいいですけど、掲示板形式ではちょっとつらいかな、速度的にも。
メールで連絡とってIRCなんかで簡単にやってもいいですね。
775: とり 2005/06/29(水) 07:40:13 ID:??? AAS
おはようございます。かなり早く目が覚めてしまったのでちょっとだけ作業してました。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
ゲームテーブル>カードマップの順で立ち上げて下さい。
>幻月さん
ふむふむ、やっぱり結構認識に違いがあるんですねぇ、面白いです。
あ、>>731でお約束した通り、ゲームテーブルの使用例の様な物を↑にあげておきました。
これもきちんとキャストの出来るCopyObjectがあってこそなんで、ありがたい限りです。
まだ完成度50%以下なんでソースは付けていませんが、触ってみて下さい。
>メールで連絡とってIRCなんかで簡単にやってもいいですね。
秋茄子さんとはIRCでちょくちょく顔合わせるんで、予定を調整してメールしましょうか?
秋茄子さんはだいたいいつも23時頃に落ちるんで、その前の時間帯になると思いますが・・・
幻月さんのご都合の良い日の候補をあげておいて下さい。
おっと、やばい仕事行かなきゃ(^^;
776: 幻月 2005/06/29(水) 08:25:57 ID:??? AAS
確認した感想は後で(笑
>とりさん
>結構認識に違いがあるんですねぇ、面白いです。
まぁ、人間ですからね。
違いも有るかと思います。
多分、最終的にやりたいことに少しずれがあるんでしょう、すりあわせが可能な範囲です(笑)
>幻月さんのご都合の良い日の候補をあげておいて下さい。
いつでもいいですよ。
ただ、私も11時以降はアウトですね。
今日あたりは一段落してのんびりしてるとおもいます。
777: 幻月 2005/06/29(水) 20:56:35 ID:??? AAS
>とりさん
さて、動かしてみました。
いや、面白いです。
多少、重いですけど先々手直しで軽くなると、かなり使える物になりますね。
以前約束したデーモンの設定を使ったプラグインのサンプルを作りました。
外部リンク[lzh]:taku_kanban.at.infoseek.co.jp
コンストラクタで
UnitDetailBean myUdb = getUnitDetail();
myUdb.setDaemon(true);
を設定したUnitはリストにでないようになっています。
早く完成に近づくといいですね。(笑)
778: とり 2005/07/01(金) 23:25:21 ID:??? AAS
>幻月さん
デーモンの設定、確認しました。
これに伴い、ダイスユニットをver1.1.0にバージョンアップして公開しました。
外部リンク[html]:www.geocities.jp
なお、中の人であるためプラグインメニューには現れず、単体では機能しません。
動作のテストは、たけとんぼから起動したなびGateで↓とでも送ってみて下さい。
jp.dice.commandStack('jp.taketombo.setString("println","成否:[rollResult] 結果:[order]=[value]");','3d6+8');
>早く完成に近づくといいですね。(笑)
8月あたま頃までには実際に使えるものを提供したいと思ってはいるんですが・・・
#ところで、メールした件はOKだと思っておいて大丈夫でしょうか?
779: 幻月 2005/07/01(金) 23:40:07 ID:??? AAS
今から動作確認します、感想は後で。
>8月あたま頃までには実際に使えるものを提供したいと思ってはいるんですが・・・
それは堅実なスケジュールですね。
>#ところで、メールした件はOKだと思っておいて大丈夫でしょうか?
はい、OKです。
不都合がおありでしたらご連絡くださいとあったので
ないならいいのかなとか思ってました、すいません(苦笑
780: 幻月 2005/07/02(土) 00:00:56 ID:??? AAS
>とりさんへ
>ダイスユニットをver1.1.0にバージョンアップして公開しました。
動きはばっちりです。
Unit連携での動作もみました。
これでトリさんの所の公開プラグイン二個目が完成ですね。
着実に増えてますね、これにゲームテーブルにRpg2DMapが完成すると
バリエーションが広がりますね、あせらないでは欲しいですが完成が楽しみです。
781: とり 2005/07/03(日) 02:12:24 ID:??? AAS
今日は制作者3人でIRC座談会などやっておりました。
秋茄子さんは途中でお休みになりましたが、幻月さんとはつい先ほどまで話をしていました。
実に有意義で濃い内容で、今後の方針が見えた気がします。
>幻月さん&秋茄子さん
今日はお疲れさまでした。大変楽しく有意義な時間を過ごさせていただきました。
実用に堪えるツールを目指して今後も頑張りましょう。
782: 幻月 2005/07/03(日) 18:31:25 ID:??? AAS
>とりさん
頼まれたキャラクター名追加とキャラクター名削除を装備しました。
最新のたけとんぼの、なびGateでメソッドを見てみてください。
783: とり 2005/07/04(月) 07:02:06 ID:??? AAS
おはようございます。
ゲームテーブルとたけとんぼを結ぶ新プラグイン「フェイスチャット」が近々公開出来そうです。
ちょっと面白いプラグインになっていると思うのでご期待ください。
>幻月さん
キャラクター名追加メソッドなんですが、すでに登録されている名前を追加すると同じ名前が
重複して登録されてしまう様です。すでに登録してある名前は無視してほしいのですが・・・
784: とり 2005/07/04(月) 07:05:18 ID:??? AAS
良く考えたら、ゲームテーブル自体まだ公開してなかったorz
バグだらけ&未実装の機能多数ですがフェイスチャットと一緒に公開します。
785: 秋茄子 2005/07/04(月) 19:22:51 ID:??? AAS
多層機構、実体複写を使用したカードプラグインの作りかけです。
現在実装されている機能は以前、途中で出したのと代わりありませんがその後追加された機能のうち上の二つを使用してあるユニットが他のユニットをimportしないように注意して作り直しました
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
次は、個人の場札を扱う機能を追加しようと思っています。
786: 幻月 2005/07/04(月) 22:06:12 ID:??? AAS
>とりさんへ
キャラクター追加に少し修正しました。
確認してみてください。
>秋茄子さん
おぉ、来ましたね。
後で確認しますね
787: 幻月 2005/07/04(月) 23:14:48 ID:??? AAS
>秋茄子さん
きちんと動いています。
内部構造は増分変わったはずですが、以前と同じ動きをしているっていうのがいいですね。
次は機能の拡張ですね(笑
788: 秋茄子 2005/07/06(水) 17:49:22 ID:??? AAS
カードプラグインの作りかけです。
立ち上げたあとに、ディーラーが新しくプレイヤーを登録するたびにフレームの左側にプラグインを使っている本人以外のプレイヤーの場札を表示するスペースを確保するようになっています。
このスペースにそれぞれのプレイヤーの前に置く場札を表示するのですが、まだ表示するスペースを確保しただけでカードを置く機能は実装していません。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
次は、フレームの右と左を分けるのにスプリットペインを使ってみたいと思います。
789: 幻月 2005/07/08(金) 19:26:58 ID:??? AAS
>カードプラグインの作りかけです。
動きは大丈夫そうです。
とりさんのゲームテーブルでも確認しました。
たけとんぼとなびGate(基本パッケージ)を更新しました。
最新にして置いてください
790: 秋茄子 2005/07/09(土) 17:42:04 ID:??? AAS
> 動きは大丈夫そうです。
無事動いているみたいですね。よかった
スプリットペインを使うのに苦戦すると思っていたのですが、案外簡単にできたのでカードを裏にする機能をつけてみました
裏にする機能の方に時間がかかってしまいましたが
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
場札をダブルクリックするとカードが裏返ります。
手札を裏返すことはできないようにしています。
今度は、場に裏にしたカードを置く機能をつけてみたいと思います
791: 幻月 2005/07/09(土) 18:50:30 ID:??? AAS
>秋茄子さん
>場札をダブルクリックするとカードが裏返ります。
うまくひっくり返りません。
場札、ですよね?
792: 秋茄子 2005/07/10(日) 06:19:04 ID:??? AAS
> うまくひっくり返りません。
> 場札、ですよね?
原因がわかりました。
1.5にしかないメソッドを使用していました。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
これが修正したものです。
今度は裏返すことができると思います。
793: とり 2005/07/10(日) 15:16:04 ID:??? AAS
秋茄子さんが頑張っているようなので、釣られてフライング気味のアップです。
たけとんぼをプラグインとして利用するコンテナユニット「ゲームテーブル」と
発言に顔画像を付けて会話風に表示する「フェイスチャット」のふたつです。
外部リンク[zip]:www.geocities.jp
1)解凍後、ディレクトリ構造をいじらずに@GameTable.jarを起動。
2)標準メニューからたけとんぼを起動して接続後、適当なチャンネルにJoin。
3)プラグインメニューからフェイスチャットを起動。
4)フェイスチャットメニュー>読み込み>facechat.txtを選択。
5)名無し以外の名前を選択して発言してみて下さい。
なお、顔画像はカードワースの規格である74×94の画像が使えます。お試し下さい。
>秋茄子さん
ちょっと触ってみましたが、47はきれいに動いている様です。
794: 幻月 2005/07/10(日) 15:57:24 ID:??? AAS
とりさんの@GameTableを使う時には
今までたけとんぼが動いていたところkら
taketombo.properties
をコピーしてきたほうが楽ですね。
これを解凍したフォルダに入れることで
たけとんぼのすべての設定がコピーされます。
>秋茄子さん
うん、ばっちりです。
場札がちゃんと裏返ってます。
>とりさん
仮公開しましたね、基本的な動きはOKです。
あのね、既存のキャラクターネームがゲームテーブルにはでてこないみたいなので
そこのところのつくりが欲しいですね。
やり方はこの前渡したソースに有るのでそれを見てみてくださいね。
795: 秋茄子 2005/07/10(日) 17:43:12 ID:??? AAS
>とりさん、幻月さん
テスト、ありがとうございます
うまくいったみたいなので次の機能追加をしてみました
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
ディーラーが場に裏にしたカードを配ることができるようにしました
「場に配る」というタイトルがついたボーダーの中の「表」ボタンを押したら表のカードが、「裏」ボタンを押したら裏にしたカードが場に配られます
796: 幻月 2005/07/10(日) 18:08:59 ID:??? AAS
>秋茄子さん
>「場に配る」というタイトルがついたボーダーの中の「表」ボタンを押したら表のカードが、「裏」ボタンを押したら裏にしたカードが場に配られます
確認しました、うん、動いてます。
ネットワーク越しでも大丈夫そうです。
次は手札を裏で出す機能あたりでしょうか。
797: 秋茄子 2005/07/12(火) 18:39:13 ID:??? AAS
> 次は手札を裏で出す機能あたりでしょうか。
はい、その通りです。
手札を裏にして場にだす機能をつけました。
使い方は、山札から場札に出すときと同じです
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
798: 幻月 2005/07/12(火) 20:16:52 ID:??? AAS
>秋茄子さん
早速確認しました。
大丈夫そうです。綺麗に裏で処理できてます。
次は何でしょう(笑
そうそう、テストする際にチャンネルタブので右クリック、
「プラグインの直接接続」を選んでみてください。
799: とり 2005/07/12(火) 20:57:17 ID:??? AAS
>秋茄子さん
確認しました。綺麗に動作しているようです。
>幻月さん
直接接続確認しました。チャンネルタブの右クリックが上手く機能していないようです。
テストでは一時しのぎとして、なびGateからsetJpLink()送って繋いでみましたが、通信自体はきれいに動いているようです。
しかし、ついにここまで来ましたね。
また色々相談したいので、IRCにも顔出して下さいな。
800: 幻月 2005/07/13(水) 00:01:22 ID:??? AAS
>右クリックが上手く機能していないようです
流石に判らないですね。
ファイヤーオールの可能性も捨てきれないし、
ゲームテーブルからの起動だとなびGateが古いので完全動作しないはずです。
>通信自体はきれいに動いているようです。
よかった、これでもうしばらくしたらたけとんぼを暫定固定できそうです。
commonの機能ですからね、ゲームテーブルも良ければそのうち利用考えてみてください
>また色々相談したいので、IRCにも顔出して下さいな。
そのうちよります、基本はこちらに来ますけどね。
801: とり 2005/07/13(水) 01:19:28 ID:??? AAS
>幻月さん
チャンネルタブの右クリックの件ですが、そもそもポップアップメニューが出ないんです。
なびGateからの操作で機能する事から、commonが古い事による弊害とは考えにくく、たけとんぼ
単体で起動した場合にも同様の不具合が生じていることから、マウスイベント取得の問題だと思います。
ゲームテーブルでの直接接続については色々考えたんですが、待ち合わせや、接続のための連絡などの
不便さを考えると、当分はたけとんぼ依存でいいかなと思っています。その点ではIRC優秀ですし(^^;
前回のレスでいただいていたデフォルトネームの読み込みの件ですが、フェイスチャットで顔の付いている
名前とそうでない名前がごっちゃになるのでゲームテーブル側では現状のままにしておこうかと思います。
必要ならば、フェイスチャット用のデフォルト設定ファイルを付属させる方向で対処します。
802: 幻月 2005/07/13(水) 01:38:20 ID:??? AAS
>そもそもポップアップメニューが出ないんです。
それは予測外ですね。
たぶんに機種の差かな、今度余裕があったら出いいので
マックでの右クリックポップアップのサンプルとか探さないと駄目かな?
>現状のままにしておこうかと
そうですか、了解。
803: 幻月 2005/07/13(水) 02:11:37 ID:??? AAS
>とりさん
度忘れしてました。
そう、マックでしたね…今度ポップアップ以外の別ルートも実装しておきます。
804: とり 2005/07/14(木) 00:01:41 ID:??? AAS
>幻月さん
たけとんぼとなびGateを最新版にしたら直接接続が繋がらなくなりましたorz
805: 幻月 2005/07/14(木) 01:27:41 ID:??? AAS
>とりさん
ちょっと確認です。
単体で?ゲームテーブルからで?
806: 幻月 2005/07/14(木) 01:46:33 ID:??? AAS
>とりさん
もう一度アップしなおしてみたので落としなおしてみてください。
なびGateが1.2.0 Systemが3.4.9が最新です。
807(1): とり 2005/07/17(日) 00:50:05 ID:??? AAS
金曜の夜に自宅の通信回線が原因不明の断線に見まわれました。
なんとか復旧させようと色々やってみたものの、どうやら家屋内の問題ではないらしく、復旧できず。
問い合わせようにも週末窓口やってないよorz
そんなわけで早くても月曜以降までネットに繋げそうにありません。
幻月さん&秋茄子さん、動作チェックの最中に落ちちゃってごめん。
808: 秋茄子 2005/07/17(日) 08:07:48 ID:??? AAS
>807
あらら。
やはり、接続できなくなってましたか。
ちょうど間の悪いときだったみたいですね。
で、その間に一つ機能を追加しました。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
山札からプレイヤー毎の手札にカードを置くことができるようになりました。
表、裏どちらでも置くことができます。
プレイヤーAの場札にカードを置くと、他のプレイヤーのプラグインのプレイヤーAの場札を表示する場所にも反映されます。
ただし、まだカードを置くだけです。
おいたカードをひっくり返すこともできませんし、移動させることもできません
なので、次はプレイヤー毎の場札をひっくり返す機能をつけてみたいと思います。
809: 幻月 2005/07/17(日) 14:32:26 ID:??? AAS
>とりさん
>原因不明の断線に見まわれました。
そうですか、ちょっと心配してました。
また繋がったらテストしましょう。
>動作チェックの最中に落ちちゃってごめん。
まぁ、慌てない(笑)
多分、ローカルテストしか出来ないでしょうから、
ゆっくり休息をとってみるのも手では?
>秋茄子さん
早速確認してみます。
着実に機能整えつつありますね。
秋茄子さんの小アルカナ(トランプ)と大アルカナ(通常のタロット)
のプラグインが揃ってNOVAに使える日も近そうですね。
810: 幻月 2005/07/17(日) 14:51:57 ID:??? AAS
>秋茄子さん
動作確認しました。
動きはOKですね。
ただ…大きくなってきたね、画面のサイズが(笑)
私、いま1280×1024にしてるから余裕で見れてるけど
一昔まえのCRTだときついかもしれない、この大きさは。
800×600でテストしたら容赦なく画面からはみ出しました。
(スクロールバーがあるので操作は上は問題なし。)
機能揃ってからでいいのですが、個別の大きさを小さくしてみるとか
ディーラーとかプレイヤーの手札のところとかだけをツールバーで
外だしできるようにするとか、小さい下面サイズ向けの工夫が要るかもしれませんね。
811: 秋茄子 2005/07/18(月) 18:18:17 ID:??? AAS
> 幻月さん
私もたまに解像度を下げて試しているのですが、最初に考えていたのよりずっと大きくなってしまいました。
そのうち、フレームを小さくする工夫はしてみようと思っています。
幻月さんが書かれているもの以外に自分以外のプレイヤーの場札の表示を縮小してみるというのも考えています。
812: 秋茄子 2005/07/19(火) 20:12:37 ID:??? AAS
機能を追加しました。
自分の場札を裏返すことができます。
そのときの裏表は他の参加者のプレイヤー毎の場札を表示する場所にも反映されます。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
次は、手札を自分の場に置く機能を追加したいと思います。
813: 秋茄子 2005/07/19(火) 20:15:07 ID:??? AAS
812のファイルLは間違いです。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
こちらが正しいファイルです
814: 幻月 2005/07/19(火) 21:00:04 ID:??? AAS
>秋茄子さん
確認しました。
大丈夫なようです。前も言いましたが堅実ですね。
815: 秋茄子 2005/07/25(月) 21:20:40 ID:??? AAS
>幻月さん
実際のとこ、堅実と言うよりも一気に作れないから少しずつ作っているだけなんです。
で、また少し作りました。
今回は、手札を自分の場に置く機能をつけました。
自分の場に表に置くことも裏に置くこともできます。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
次は、自分の場のカードを手札にする機能をつけたいと思います。
816: 幻月 2005/07/25(月) 22:35:27 ID:??? AAS
>秋茄子さん
>実際のとこ、堅実と言うよりも一気に作れないから少しずつ作っているだけなんです。
まぁ、作り方は人それぞれですし。
>自分の場に表に置くことも裏に置くこともできます。
動作、確認しました。
初めの頃と比べてずいぶんすすみましたね。
817: 秋茄子 2005/07/26(火) 20:51:01 ID:??? AAS
今回は思ってたよりも早くできました。
自分の場のカードを自分の手札にできます。
使い方は場札を取ると同じです。
「場札を取る」ボタンを押すとアクティブにした場札とアクティブにした自分の場のカードを手札にできます。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
次は自分の場のカードを捨てる機能をつけたいと思います
818: 幻月 2005/07/26(火) 22:51:34 ID:??? AAS
お、今回は連日ですね。
>自分の場のカードを自分の手札にできます。
テストしました。
取れてますね、メンバーの方にもみれています。
819: 秋茄子 2005/07/27(水) 22:21:53 ID:??? AAS
今回も連続です
この3日間に追加した機能は、今までに作った機能をコピペしたり、メソッドをそのまま使ったりしているので比較的簡単にできてます。
以前からついていた、「捨てる」ボタンで自分の場のカードを捨てることができます。
手札と、自分の場のカードを同時に捨てることができるわけです。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
今度は、他のプレイヤーの手札を取る機能をつけたいと思います。
自由にとれてはまずいのでまず相手プレイヤーに許可を取ってから取る、という機能にしてみようと思います。
820: 幻月 2005/07/27(水) 23:09:33 ID:??? AAS
>秋茄子さん
確認しました。
新しい機能はOkですね。
ただ、操作してて思ったのが「自分の場札」を「場」に出す機能が欲しいなと思いました。
それと、「場札を捨てる」ボタン、「捨てる」ボタンで代用できそうな気がします、どうでしょう。
ちょっと違う話ですがJRadioButton、使ったことあります?
表と裏の選択、これでまとめると表示がすっきりするかもしれません。
と、まぁ、いろいろ書いてみましたが自分のペースでゆっくり確実に、楽しみにしてますから。
821: 幻月 2005/07/27(水) 23:21:00 ID:??? AAS
訂正、秋茄子さんメニューで使ってますね、JRadioButton。
今、気がつきました。
822: 秋茄子 2005/07/29(金) 21:05:50 ID:??? AAS
> 幻月さん
> ただ、操作してて思ったのが「自分の場札」を「場」に出す機能が欲しいなと思いました。
> それと、「場札を捨てる」ボタン、「捨てる」ボタンで代用できそうな気がします、どうでしょう。
了解です。
「場を変える」ボタンを付けました。
場のカードを選択して押せば選択したカードが自分の場に移り、
自分の場のカードを選択して押せば選択したカードが場に移ります。
また、場札を捨てるボタンを「捨てる」ボタンにまとめました。
これでソースを整理したところソースの大きさが2K減りました。
> ちょっと違う話ですがJRadioButton、使ったことあります?
> 表と裏の選択、これでまとめると表示がすっきりするかもしれません。
これも1回は考えてみたのですが、表にしたカードを配ってからすぐに裏にしたカードを配って、また表にしたカードを・・・
というような配り方をするカードゲームがあったと思うんです
このようなときには表カードを配る動作、裏カードを配る動作をスムーズに行いたいと考えたんです。
今のように裏ボタンと表ボタンを使った場合は
裏ボタンを押す、マウス移動、表ボタンを押す
という動作になり、
ラジオボタンを使った場合は
ラジオボタンを裏にあわせる、マウス移動、ボタンを押す、マウス移動、ラジオボタンを表にあわせる、マウス移動、ボタンを押す
という動作になるので、ボタンを二つ使った方が操作がスムーズになると思ったので今のようなボタンを二つ使う方法にしたのです。
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
823: 幻月 2005/07/30(土) 00:45:08 ID:??? AAS
>「場を変える」ボタンを付けました。
一通り動作確認しました。
綺麗に動作してます、いい感じですね。
次は、他のプレイヤーの手札を取る機能ですね(笑)
>ボタンを二つ使った方が操作がスムーズになると思ったので今のようなボタンを二つ使う方法にしたのです。
そういう理由なら納得です。
824: 秋茄子 2005/07/31(日) 14:23:03 ID:??? AAS
> 幻月さん
どうしてもわからない不都合が出てきました
外部リンク[zip]:taku_kanban.at.infoseek.co.jp
これをダウンロードして、なびGateも動かしてたけとんぼのプラグインとして起動してください
なびGateのツリーでJpCardMultiLayerのJpCardFieldを選択してJpCardFieldの公開メソッドが表示されるようにします。
この表示されているメソッドの中から引数なしのメソッドをコピペしてJpスクリプトを直接実行してください。
ほとんどのものは、なびGateに[I]つきで表示されて正常に呼び出されていることがわかります
しかし
jp.JpCardMultiLayer.JpCardField.a();
を直接実行しようとすると
[E][class jp.common.JpCommandRunning]メソッド呼び出しに失敗しました:a();
と表示されてしまいます。
公開メソッドであるにもかかわらずJpスクリプトで実行できないのです。
メソッドを正常に呼び出すにはどうしたらいいのでしょうか。
825: 幻月 2005/07/31(日) 17:45:55 ID:??? AAS
>秋茄子さん
調べてみましたがすぐにはわかんないですね。
実際のところ呼び出しはできてるんですよ。
ただ、メソッドの実行でころんでるんです。
同じクラス内のinitialize()は動いているのでちょっとわかんないです。
可能性としてはメソッドの中身でエラーをしている可能性が捨てくれません。
一度、テストで以下の二つをしてみてください。
1. a()の中身を空っぽにすること。
2. a()のメソッド名を変えてみること。
ちょっと試してみてくださいな
826: 秋茄子 2005/07/31(日) 20:46:44 ID:??? AAS
>幻月さん
試してみました
> 可能性としてはメソッドの中身でエラーをしている可能性が捨てくれません。
> 1. a()の中身を空っぽにすること。
> 2. a()のメソッド名を変えてみること。
2ではうまくいきませんでしたが1ではうまくいきました
どうやらメソッドの中身でコンソールに表示されないエラーがあったようです。
ありがとうございました。
827(5): 幻月 2005/08/01(月) 12:32:35 ID:??? AAS
>どうやらメソッドの中身でコンソールに表示されないエラーがあったようです。
>ありがとうございました。
いぇ、全部は表示してませんからね、さすがに(笑
ぱっとみ、見分けつきませんからね。
まかせっきりにするのではなく、自分で必ずtry〜catchする癖を付けると拾えますよ。
828(5): 2005/08/07(日) 20:49:18 ID:7Hw82m9s(1)調 AAS
「オンラインセッションのページについて」スレッドでの話題ですが、
そろそろスレ違いになりそうだったので、こちらにお邪魔させていただきますね。
ちなみに自分は上記スレの659です。
>>オンセスレ665
>かな入力の人だと、日本語ワードの方が楽になるのかな?
自分もローマ字入力なので、かな入力の方の存在をすっかり忘れてました。
なるほど、確かにかな入力派の方々なら日本語コマンドの方が楽かもしれませんね。
>クリティカルとファンブルが@と#
もともと、とある方が作ったダイスボットを参考に、というかクローンを目指していたので
そのボットの仕様をパクった結果、今に至ります。
そういう意味では、少なくとも身内では「最も使い易いキーワード」だったり。
記号そのものを変えるのは容易いですが、英字への変更はちょっと全体を変えないと難しそう。
>>オンセスレ666
ありがとうございます。
でも、現状では、乱数の精度は全く問題になっていません。
例えば65536種類の中で偏りがあるとしても、最終的にはD6〜D100くらいに収束するので、
TRPGで使う分には全く気にならないためです。
実際、誤差は0.1%くらいしかなかったような。
829(1): 幻月 2005/08/07(日) 21:18:38 ID:??? AAS
>828氏(オンセスレ659さん)
作るスレに、ようこそ。
ここでは各自が自分のペースで開発してます。
馬刺さんが用意してくださったここ用のローダー(ログ参照)とかもありますので、
ちょっとしたテスト版などの提示などにご利用ください。
830: 827 2005/08/07(日) 23:39:59 ID:??? AAS
>>829
いえいえ、こちらこそ宜しくお願いします。
……もともとROM住人ですけどね(笑)
現在、1つ詰まっていることがあります。
乱数をうまく取得できないのです。
詳しい方がいらっしゃれば、ヒントでも戴ければ幸いです。
前提条件
・IRCクライアント「LimeChat」用のダイスマクロ(DLL形式)を作るのが目的。
・基本的にはC言語だが、C++でもいいや。
・LimeChatが特定のキーワードを受けると、DLLの中の指定された関数Funcが呼び出される。
・キーワードが呼び出されるたびにDLLがロードされる模様。故に一度関数を抜けると静的変数の値は保持されない。
普通のアプリケーション等であれば
(1) アプリ起動時に 乱数を現在時間で初期化
(2) 関数Funcが呼び出される
(3) 乱数を取得(関数Func内)
というように、初期化は一度しか行われないのではないでしょうか。
ただ、今のプログラムでは、
・関数Funcが呼び出されるたびにロード、静的変数の値が保持されない
・故に関数Func内で、毎回乱数を初期化しなければならない
という条件のため、
(1) 関数Funcが呼び出される
(2) 乱数を初期化(関数Func内)
(3) 乱数を取得(関数Func内)
という手順を取っています。
831(1): 827 2005/08/07(日) 23:56:43 ID:??? AAS
で、現在抱えている問題は、
偶然同じタイミングで複数回キーワードを受け取ってしまったとき、
(1) 同じ現在時刻の値で乱数を初期化する
(2) 同じ値を乱数の値として返す
…という状況が発生するというものです。
再現率は極めて低いのですが、IRCを用いるため、ネットワーク状況(ラグ)などによっては高くなります。
自分でも幾つか対応策を考えてみましたが
・精度の高い擬似乱数アルゴリズムを使用する
→ 初期化の話をしているので今は関係ない
・キーワードの送信者の名前によって、乱数の底を修正する
→ 実装済み。ただし同一人物の複数回発言には対応できない。
・外部ファイルに乱数情報を記録しておく
→ 排他制御などで新たな問題発生。難易度急上昇
・気にしない。無視する。
→ ユーザにつっこまれた
長くなってしまいましたが、おおよそこのような状況です。
…ふと、ここまで来るとスレ違いどころか板違いじゃないのかなと思ってきた。
832: 2005/08/08(月) 00:35:35 ID:??? AAS
マイクロセカンドでとってもダメ?
833: 2005/08/08(月) 00:39:48 ID:??? AAS
あー、マイクロ秒は試してませんでした。
ミリ秒は意味がないっぽかったんですけど。
834: 2005/08/08(月) 01:02:23 ID:??? AAS
マイクロ秒なら擬似乱数の質いるかもよ
質が低いと近い種で危険だったような気がする
後、オンセスレのぞいたが、666のMTはうまくいけばrandよりはやい可能性があったんじゃ?
835: 幻月 2005/08/08(月) 01:06:14 ID:??? AAS
>831
ずいぶんと難しい問題ですね。
私はCは最低限の読み書きくらいしか出来ないので
あんまりたいしたことは言えませんが、どこかに情報をもつか別なキーを拾うぐらいしか思いつかないですね。
あまりスマートな方法じゃないですけど、
ブートトラップファイル、つまり単純にアプリ起動しているかどうかの確認のためだけに
空っぽのファイルを作って制御するという方法を使っているCの人をみたことがあります。
制約された環境下でやる人が多く、また、ウィンドウズだと、
ファイル生成にタイムラグが出ることがあるのでちゃんと動くかどうかは不明ですが
とりあえず、どうしても詰まった時の一考までに。
836: 魔改 [ミッション・フォース] 2005/08/08(月) 01:15:48 ID:??? AAS
同時に受け取るといっても、それぞれのメッセージにはわずかな差があるなら、
シード値のセットは、Ticksでナノ単位でやるとか。
もしくは、関数Funcを呼び出すたびにThread.Sleepさせるとか。
複数回キーワードを受け取ってしまったとき、その複数回分だけ関数Func(およびdll)を同時に呼び出して処理するなら意味ないけど
lockステートメントあたりを使ってもだめなんですよね?
837(2): 827 2005/08/08(月) 01:51:36 ID:??? AAS
勉強のためにダイスマクロを作ったっていう程度の
プログラミングの知識しかないんですよー。
(基本的には文字列操作だけなんで、勉強にはぴったりの素材)
排他制御? はぁ?
スレッド? はぁ?
そんな状況なんで、出来るだけ簡単な方法を取りたいというのが本音。
というか今日は寝る。
838(2): 2005/08/08(月) 03:37:00 ID:??? AAS
BASIC時代の頃の手なんで、今は有効なのかどうか知らないけれども……
1.乱数を発生させて、それを画面に表示
2.何らかのキーが押されているかどうかの確認。押されていれば4へ
3.1に戻る4.そこで乱数を停止させ、最終的なダイス目にする
……では、いけないの? 手元のVisualBasicの本を見る限りにおいては出来そうだけど。
839: 838 2005/08/08(月) 03:38:46 ID:??? AAS
ギャー、リターンキーを押し損ねた。
3.1に戻る
4.そこで乱数を停止させ、最終的なダイス目にする
……と、しておいて下さい。
840: 837 2005/08/08(月) 07:05:45 ID:??? AAS
>>838
言いたいことは分かった。
だが、君は今ここで発言しない方がいい。身のためだ。
…と、ここまで書いておいて、別にプログラム板じゃないしいいやと思ったのでマジレス。
ここで言うダイスボットとは、
(1) 誰かが特定のキーワード、例えば「2D6」などと発言する
(2) ネットワークを通じて、ボットクライアントにそのキーワードが送られる
(3) ボットクライアントは、DLL(今作ってるのはコレ)の中の関数を呼び出す
(4) DLLはボットクライアントにメッセージを返す。例えば「2D6=[3,4]=7」
(5) ボットクライアントは、そのメッセージを発言する
という流れになっている。
実際のチャット上の表示はこんな感じ。
<PL1> 剣を振るぜ!
<PL1> 2d6+3
<Bot> PL1のダイスロール:2d6+3 = [1,1]+3 = 5
つまり、bot側は自動的に値を返さなきゃならない。
乱数を取得する時に、「一定ではないもの」として人間の行動を利用するのはよくあることだけど
今回の場合それが難しいということになる。
841(2): 2005/08/08(月) 09:29:04 ID:??? AAS
一人の人の連続発言でミリ秒変わんないの?
理由がわかってるなら後学のため教えて欲しかったり。
842(1): とり 2005/08/08(月) 09:46:42 ID:??? AAS
なんかいきなり盛り上がってますね。
Cはほとんど使わないので適当ですが、とりあえず私ならrandとMT、種の取得方法などを変えた
数パターンに分けて実装して比較してみるかなぁ。昔は種が近くなるのを嫌って取得した時間の
n乗とかを種にしてたけど最近そんなに気にしてないなぁ。
よくわかってない奴の戯言なんで読み飛ばしといて下さい(^^;
843(4): 2005/08/08(月) 10:09:44 ID:3KD5T/ad(1)調 AAS
>>乱数問題
win起動時からの時間を使うのじゃダメ?
844(1): 魔改 [ミッション・フォース] 2005/08/08(月) 10:14:43 ID:??? AAS
dllに任意の引数が渡せれば楽なんだけどねぇ。
>>841
1.連続発言しても、パケットを送信する回数が1回の場合がある
2.送信側が複数回送信しても、受信側が受信するのは1回でまとめて受信するケースもある。
なんすよ。
具体的には、IRCを送信するデータは
【privmsg #チャンネル名 :メッセージ[crlf]】
の単体情報だけど、
【privmsg #チャンネル名 :メッセージ[crlf]privmsg #チャンネル名 :メッセージ[crlf]privmsg #チャンネル名 :メッセージ[crlf]】
という風に、一度に複数行送信もしくは受信しちゃうと。
で、ミリ単位で秒が変わらないのは
1.マルチスレッドに3つ同時に処理する。
2.複数行にわたるデータ処理だが、処理にミリ単位すらかからない。
3.ミリ単位の差はあるが、そもそも乱数初期化のシード値の設定が悪い。
なんです。
3の場合は乱数の初期化のシード値の設定を変えれば解決
2の場合は、関数内で数秒の待機させれば解決。
1の場合、どこでマルチ処理になっているかによって対処法が変わると思われます。
LimiChatがどういう動きをしているのかわからないのでなんともかんともニンニン。
DLLの中でローカル変数を宣言して、呼び出された関数Funcをカウントして、変数の値を出力。
出力された変数の値で、大体の動き(というかLimiChatの処理)がわかるかも。
845(3): 2005/08/08(月) 10:17:08 ID:??? AAS
時間を使うのは基本だけど、あまりに単純な数値の取り方だと、乱数らしくならないと思うよ。
846(1): 2005/08/08(月) 12:50:53 ID:??? AAS
検証用にミリセカンドやマイクロセカンドを返させてみれば?
847(1): 837 2005/08/08(月) 14:38:04 ID:??? AAS
なんかオオゴトになってしまっていて、初心者な私にはちんぷんかんぷんです。
Cの入門書を卒業するくらいの能力しかないのです。
>>842
そういったところは、Cの問題というより、設計の問題だと思うので。
それに多分私よりお詳しいと思います(笑)
>>843
結局、時間の単位によっては乱数の種が同じ値になっちゃう気がします
>>844
一番の理由は、「(4) 俺が初心者だから」ですよ!
関数内で、ループなりスリープなりさせても、クライアントに影響はしないのでしょうか。
デバッグするにしても、時間がかかりそうで・・・。
それと、この状況で変数を保持する方法が分かりません。(staticはダメだったので・・・)
外部ファイルに吐き出す?
>>845
最終的には、1〜6までの範囲に収束されたりするので、
さくっと調べたところ、よほど値が偏っててもそんなに問題にならないはずです。
>>846
ミリ秒は無駄でした。
マイクロ秒は今やってます。割とよさげ。
848: 845 2005/08/08(月) 14:50:14 ID:??? AAS
イヤ、>>843にあてた文章なのよ、ソレ。誤解させてスマソ。
849(1): 843 2005/08/08(月) 20:19:51 ID:??? AAS
>>845
いや違う違う。
現在時間とWindows起動時間とハンドルネームの3つのパラメタを使ったらどう? ってこと。
単体で使ったら普通にtimeで取るのと変わらないじゃない。
850: とり 2005/08/08(月) 22:41:09 ID:??? AAS
>>849
起動時間とハンドルはどちらもユーザーを識別するためのキーだと思うのでどちらかで良いかと思いますが(^^;
851: 843 2005/08/09(火) 09:47:27 ID:??? AAS
>>とりさん
3つのパラメタにした理由は前の方で同一人物の同時発言について心配していたから。
まあ、実際一人で書いて数マイクロの差もない状況があるかと言えばないだろうけど、心配ならと言うことで。
それに現在時間と起動時間はそれぞれに独立でかつプレイヤに意図的に干渉されない値なのでこの2つを適当な式に放り込んでやれば一次的な変化しかしないtimeよりランダムな種が取れるはず
852: 魔改 [ミッション・フォース] 2005/08/09(火) 10:48:27 ID:??? AAS
>>847(>>830-837)
>>841宛てだったんだけどw
え〜と、>>827って>>828の間違いだよね?(827は幻月さんだし)
ちょっと混乱してきた。
>>ループなりスリープなりさせても、クライアントに影響はしないのでしょうか。
親スレッドで処理してない限りは影響はありません
逆にいえば、親スレッドで処理している場合はスリープ処理の時はフリーズしたような感じになります
さらにいえば、スリープさせなくても重い処理や長い処理をさせた場合、処理が終わるまで同じくフリーズしたよう感じになるかと思われ。
>>変数を保持する方法が分かりません。
クラス内で宣言された変数はローカル扱いになるので保持されません。
宣言されたクラスが破棄された段階で、変数の数値値もまた破棄されます。
ぶっちゃけ、簡単な解決変数地保持の方法として、外部ファイルではなく、レジストリにデータを保存する方法が好ましいでしょう。
853: 2005/08/09(火) 11:56:37 ID:??? AAS
>え〜と、>>827って>>828の間違いだよね?(827は幻月さんだし)
ゴメンナサイゴメンナサイゴメンナサイ
854: 幻月 2005/08/09(火) 12:44:44 ID:??? AAS
>828氏(オンセスレ659さん)
>ゴメンナサイゴメンナサイゴメンナサイ
まぁ、またにあることです。
ここ用の捨てハンでいいので、暫定でハンドル名乗っていただけません?
呼びにくくて(笑)
855: 魔改 [ミッション・フォース] 2005/08/09(火) 17:02:54 ID:??? AAS
>>ぶっちゃけ、簡単な解決変数地保持の方法として、外部ファイルではなく、レジストリにデータを保存する方法が好ましいでしょう。
って日本語めちゃくちゃだ(汗)
下に訂正ってことで。
外部ファイル作るよりも、レジストリに変数を保存した方が楽です。
856(1): 2005/08/09(火) 17:42:53 ID:??? AAS
バックグラウンドで走りっぱのを叩くのは?
857: 魔改 [ミッション・フォース] 2005/08/10(水) 12:34:09 ID:??? AAS
うん? 私に言ってます?>>856
それでもいいんじゃないですか?
VBだと、GetSetting関数とSaveSetting関数があるから、読み書きあわせて二行で済むんで楽なんだけど。
858(1): 2005/08/10(水) 21:40:09 ID:??? AAS
ODtool、8/10版運用してみました所、以下のような不都合?が
・日本語が反応しない。
−LieChatの設定で、ODtoolと日本語、両方有効にしていても、日本語が作動しないです。
#MODE DXで、リザレクト@キャラネーム だけはどうにか動作しましたが、
@キャラネームまで打ち込まないと無反応ですた。(リザレクトやリザレクト@だと無反応)
・モードの初期化が出来ない。 #modeだけだと無反応
・NW(S=F)モードでのクリティカル・ファンブルの登録方法が不明。
こっちの設定方法missでしたら申し訳ないです。
859(1): Nezumi 2005/08/10(水) 23:05:23 ID:??? AAS
お手数かけました、>>828です。
ハンドル使えと言われたので名乗ってみます。
(2chでレス番以外名乗るの初めてだったり。ちょっとガクブル)
内部仕様、特に引数解析周りとかなり変えてしまったので
それに関する不具合が潰しても潰しても止まりません。
>>858さん
>日本語が反応しない。
既に確認済みです。
>モードの初期化が出来ない。 #modeだけだと無反応
これから確認してみます。
>クリティカル・ファンブルの登録方法が不明。
マニュアル書くのが面倒(ry
860(1): 859 2005/08/11(木) 14:00:34 ID:??? AAS
ていうか、このハンドルじゃ他人と被るな・・・。
どうしよう。
861: 幻月 2005/08/11(木) 21:39:52 ID:??? AAS
>860
おつかれさまです、Nezumiさん。
ここのスレでぶつかります?そうでないなら、そこまで気にしなくても、いいんじゃないかと思うのですが。
862: Nezumi 2005/08/11(木) 21:55:33 ID:??? AAS
今もいらっしゃるのかどうかは分かりませんが
千葉鼠さんあたりと被るかなぁ、と思ったりもしてみたわけで。
しかし、とうとうついにオンセスレの方で、ファーストリリース当初から
目を逸らしてきた不具合(バッファオーバーフロー)について改善要望が(笑)
頭が痛いです…。
863(1): 2005/08/11(木) 23:07:15 ID:??? AAS
ああ、それ私もみて自分のボット対策したんだけど、
たけとんぼの解説みると全角220文字までIRCではいけるみたいなんで、
文字数カウントして長すぎる物は棄却でとりあえず良いんじゃなかろか。
対策しなくても落っこちてしまって結果見れないなら、出力棄却してイタズラを
回避した方が良い気がします。
分割送信も考えたんだけど、半角400文字以上の出力って見る方も大変なので、
私は振り足し振り足しで表示が長くなるロールは、長すぎたときには
途中は端折って結果だけ出力するように書き換えました。
864: 幻月 2005/08/12(金) 00:01:40 ID:??? AAS
>Nezumiさん
いや、千葉鼠さんは漢字三文字でハンドルですから、お怒りにはならないと…おもうのですが。
>バッファオーバーフローについて
>Nezumiさん、863さん
参考になるか解りませんが……
実際、IRCの本来の規定だと送信可能文字列は管理文字列を含んで500byteとなっています。
が…この管理文字列というのが曲者でサーバアドレスや相手送信後コマンドの長さの総和のようなんです。
さらに、ニックネームやチャンネル名、サーバによって固有のセパレータのずれ
などから私、個人はIRCの送信限界は大体平均480byte(IRCコマンド含む)と見ています。
たけとんぼではIRCコマンド等を少し多めに差し引き440byte(全角220文字)といっています。
それを超えると飛ぶときは飛ぶし、サーバによっては文字を断ち切られます。
まぁ、それくらいがめどなんだな、位の気持ちで作ったほうが無難でしょうね。
865: Nezumi 2005/08/12(金) 00:30:40 ID:??? AAS
>>863さん
そのへんが妥当のような気もしますね。
異常なダイス数などのときに、最初から弾いてしまうのが楽ではありますが(笑)
>>幻月さん
>ハンドル
じゃあ、このハンドルで様子を見ておきます。
>文字数制限
あくまでも一度に送信できる文字数ということですよね。RFCで見た気がします。
自分の場合は、(自分の環境で)だいたい2〜3行を目安に文字列を送るようにしています。
それでも、キャラメイク機能などが最後の方が切れてしまうことも多いですけど…。
自分はLimeChat用のDLLを作っているのですが、このLimeの仕様に引っかかってしまい困ってます(笑)
一度に複数のコマンドを送ることは可能なのですが、あくまでも一括送信なので長すぎると途中で切れてしまうという。
コマンドの区切りを自動的に判別し、複数回に分けて送信してくれれば最高なんですけど(笑)
866: 幻月 2005/08/15(月) 16:18:56 ID:??? AAS
>Nezumiさん
忙しさでレスが遅れました。
>Limeの仕様
Limeの、じゃなくてIRCのというのが正しいところですね。
>複数回に分けて送信
まぁ、無理でしょう。少なくとも私は自分のツールに実装できませんし
他のクライアントでも見ないですね。
判断がつかないから…だと思います。
867(1): 2005/08/15(月) 19:52:37 ID:??? AAS
ん?LimeのDLLではDLLから送信リクエストを複数回発行できないって意味じゃないのかな?
300byteの文字列が2本どうしてもできるとして、一本目と二本目を連結して
Limeに渡すことは出来るけど、二本に分割して渡せないと言う意味かと思ってた。
これができないと長すぎる文字列を分割して2回に分けて送るとかの実装が大変そう。
868: Nezumi 2005/08/15(月) 21:35:42 ID:??? AAS
>>幻月さん
いえいえお気になさらずに。
……別に誰がホストというわけでもありませんから。
>>867さん
はい、私が言ってるのはその通りです。
現在、$DllString自体を複数回呼び出すことによって無理矢理分割させています。
1〜2つならともかく、種類が増えると大変です…。
869(2): 2005/08/21(日) 12:03:19 ID:nRe9a1RE(1)調 AAS
通りがかりのもんだけど、
スレよく読まずにカキコするが、
IRCでは日本語はJISに変換されてなかったっけ?
JISだと、漢字INやOUTが入るから、
全角だからって、半角の2分の1とは限らないよ。
870: 幻月 2005/08/22(月) 10:06:52 ID:??? AAS
>869
>IRCでは日本語はJISに変換されてなかったっけ
少なくともツール側でもJISに変換してあげて動作させていますので
基本は変換されていると思われます。
>全角だからって、半角の2分の1とは限らないよ。
それは事実なんですけど、そこまで判定していられないのですよ、
重くなりすぎるので。
私あたりだと調べていて面倒になったのでJISに整えてからbyteを数えていたりしてます。
まぁ、経験則から来る、おおよそでいうなら2分の1より少し小さいくらい…でいいんじゃないでしょうか。
アバウトですけど。
871: 2005/08/22(月) 16:10:46 ID:??? AAS
>>869
どっちにしてもギリギリで見積もったり、半角と全角混じりまくるときは気をつけろって事だね
お気遣いありがd
872(1): 162 2005/08/23(火) 04:37:18 ID:??? AAS
すいません、以前此処でGURPS百鬼夜翔のキャラ作成シートを作って
アドバイスを頂いた者です。
かなり、間が開きましたが皆様の意見を参考に修正してみました。
もし宜しければ、見て頂いてアドバイスを頂けますでしょうか?
御願いします
外部リンク[html]:www.geocities.jp
此処においています
873(1): 魔改 [ミッション・フォース] 2005/08/23(火) 11:10:09 ID:??? AAS
>>872
特徴の記入部分ですが、手動入力ではなく、マウスでリストから選択と言う形の方が好ましいかと。
コントロールツールボックスからコンボボックスあたりをチョイスしてやれば可能じゃないかな。
あと、4版対応だと嬉しいかも。
と、無茶な要望を出してみるテストw
最近ガープスから離れているのでうろ覚えですが、
避けの所、ランニングの修正を受けているようですが、修正を受けるのはルナルだけじゃなかったでしたっけ?
874: 2005/08/24(水) 17:11:20 ID:??? AAS
>>873
避けがランニングの修正を受けるのはベーシックにあるルールですよ。
上下前次1-新書関写板覧索設栞歴
あと 109 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.033s