This page linked from [ CoverPage | RO_GPS.pm | RO_GPS.pmBBS_2002 | RO_GPS.pmBBS_2003Q1 | RO_GPS.pmBBS_2003Q2 | RO_GPS.pmBBS_2003Q3 | RO_GPS.pmBBS_2003Q4 | RO_GPS.pm開発 | __RO_GPS.pmBBS過去ログ一覧 | rotoold ]

RO_GPS.pmBBS

履歴閲覧: 最新 2020/04/21 2009/09/26 2009/09/26 2009/09/26 2009/09/25 2009/09/25 2009/09/25 2009/09/25 2009/09/24 2009/09/24 2009/09/24 2009/09/20 2009/09/19 2009/09/19 2009/09/19 2009/09/18 2009/08/07 2009/08/07 2009/07/29 2009/07/18 2009/06/13 2009/05/14 2009/05/03 2008/01/27 2008/01/27 2007/08/14 2007/03/10 2007/03/10 2007/03/06 2007/03/06 2007/02/04 2007/02/03 2007/01/29 2007/01/22 2007/01/18 2007/01/17 2007/01/14 2007/01/11 2007/01/11 2007/01/06 2007/01/06 2007/01/04 2006/12/29 2006/12/26 2006/12/15 2006/11/14 2006/11/03 2006/11/02 2006/10/13 2006/10/13 2006/10/10 2006/10/10 2006/08/17 2006/08/14 2006/08/12 2006/08/11 2006/08/03 2006/07/30 2006/07/29 2006/07/27 2006/07/26 2006/07/25 2006/06/30 2006/05/29 2006/05/21 2006/05/19 2006/04/28 2006/03/05 2006/03/04 2006/02/21 2006/01/27 {2004/03/09[差分表示]} 2003/10/21 2003/09/16 2003/08/27


過去ログ:2002年,2003年Q1,2003年Q2,2003年Q3,2003年Q4,最新



名前 :

名前 : somebody(2004/03/09 02:27)
らぐぽじへの送信部分ですが、ログインしていないときは
R=0になるんじゃないでしょうか?(仕様わからない・・・)
2.91ではらぐぽじがエラーで落ちちゃいました。


名前 : nomonomo(2004/03/09 00:55)
trial20040308_0版を元に修正してみました。
変更点だけを固めてみました。Win版のdiffが見つからなかったので。

とりあえず、エラーは出ないはずです。

現状の問題点
・らぐぽじプロトコルのサーバーがわからない(サーバー一覧も持たないといけない?)
・らぐぽじ2.9系は未確認(後日確認してみます)

http://www5.airnet.ne.jp/nomonomo/rotoold/rotoold-t-0309.lzh
以上、よろしくお願いします。


名前 : ynakata(2004/03/08 23:22)
trial20040308_0版で、AcoNavi?モジュールからマップ名変換機構を切り離して、共通モジュール化してみました。


名前 : ynakata(2004/03/08 22:38)
とりあえず、AcoNavi?モジュールの奴を外部化してみます。


名前 : nomonomo(2004/03/08 22:01)
下の報告にあったrogpsモジュール内でのエラー原因は、らぐぽじ側で"area"を指定していないからです。

そこで相談なのですが、アコナビモジュール内でマップ変換モジュールを使用していますが、
らぐぽじモジュール内でも使用したいです。
らぐぽじモジュール内で同じロジックを入れても良いと思いますが、
どうせなら共通モジュールの方がよいかなぁ?とか思ったのですが、どうしましょう?


名前 : nomonomo(2004/03/08 20:31)
こっちで動かしてデバッグしてみます。
で、ふと気がついた点が。
・MRGPSVのJOBテーブルが2−2に対応していない。

あと、さぼっていた点が問題になっているので、そこら辺を実装してみます。
# classが"--"がテーブル変換でなんかエラーを出してます。

あと、らぐぽじ2.9系は、出る項目等が増えているので、
もしかするとフォーマットが変わっているのかも?
こっちも調べてみます。


名前 : ynakata(2004/03/08 12:05)
やっぱ真面目にやらんと駄目っぽいですね。むむむ。
#テストできる環境がないのが厳しい。


名前 : somebody(2004/03/08 11:50)
自分もらぐぽじのところ動かそうといろいろ改造してみたんですが、これって
かなり難しくないですかね・・・
・らぐぽじはマップのコードからマップ名を出している
 アコナビ等はマップ名をやりとりしているので、変換等が必要になる。
 マップ名は他のクライアントでいろいろ違うので、変換するのが大変・・・
・らぐぽじはサーバーはIPでやりとりしている
 アコナビ等は名称でやりとりしているので、変換が必要になる。
 こちらは頑張ればなんとかなるかな・・・
いろいろ手を入れてみたんですが、だんだん面倒になって投げちゃいました。
あとらぐぽじ側になんか不振な動きがあったりして、たまに表示が変になって
たんですが、これも理由がわからず・・・

で、下のエラーですが、全部この仕様の違いというかを吸収すればでなくなる
のではないかと思います。(どこいじったかわからなくなった・・・(汗))


名前 : somebody(2004/03/06 09:09)
trial20040303_0版をFedoraCore?1上で試用してみました。
らぐぽじ2.64で接続すると、(1)のエラーが出ます。(接続はできます)
らぐぽじ2.94betaで接続すると、エラーメッセージは出力されませんが、接続できません。

RO-GPSプロトコルで接続しているクライアントがいるところに、らぐぽじプロトコルを用いて接続すると(1)(2)(3)のエラーが出ます。(接続はできます)
なお、RO-GPSプロトコルのみを使用する場合は上記の問題は発生しません。
とりあえずご報告まで。
---
(1)Use of uninitialized value in hash element at ROTool/Ragpos/Client.pm line 120, <TABLE> line 16.
(2)Use of uninitialized value in substitution (s///) at ROTool/RO_GPS/Client.pm line 78, <TABLE> line 16.
(3)Use of uninitialized value in concatenation (.) or string at ROTool/RO_GPS/Client.pm line 80, <TABLE> line 16.


名前 : ynakata(2004/03/03 16:44)
らぐぽじモジュールを取り込んだtrial20040303_0版を出しました。職業対応も一応実装してみましたが、例によってノーテストなのでよろしくお願いします。
とりあえず、MRGPSV.iniの一部分の情報を切り出したファイルを設定ファイルとして試してます。
最終的にはMRGPSV.iniをそのまま流用できるようにするかもしれません。


名前 : somebody(2004/03/03 13:14)
解説ありがとうございます.そう言えば,情報理論か人工知能論あたりでハッシュって習ったような気がします(←覚えてない)
精進します.


名前 : ynakata(2004/03/03 01:55)
map使ってる部分は配列からハッシュに変換するためのテクニックです。foreachで線形検索(=O(n))するよりはハッシュで検索(=O(1))する方がアルゴリズム的に速いので。rotooldの規模だとどちらを使っても大して変わりませんけど、もうちょっと規模が大きくなると有効な考え方ですね。


名前 : somebody(2004/03/03 00:52)
ありがとうございます.許可するIDを羅列したファイルを読み込んで,@ID_ACCEPT_LISTを作成し,$イdとマッチングを行うことで所望の動作が得られました.
示して頂いたソースは,map関数が理解できなかったので,自己流で書いてみました.perl歴は短く,多分に冗長なソースですが晒しておきます.
http://www.green-ice.org/~leona/ROTool.pm.patch


名前 : ynakata(2004/03/02 13:04)
ROTool.pm中の、UA_regist関数が肝になると思います>登録idのみ許可

rotoold本体のaccept_new_client()は、TCP/IPレベルでのacceptを行うだけです。
この時点では、まだクライアントからの通信を受けていないので、接続先クライアントの種別すら分かっていません。当然idもわかっていません。ですので、accept_new_clientの時点ではidによる判別は不可能です。

クライアントの種別が判明して各種情報も解析されると、ROTool.pmのUA_regist()関数が呼ばれます。
標準のUA_regist()ではidの重複拒否判定を行っていますので、登録idのみ許可したい場合には、この部分に手を加えるとよいと思います。

具体的には、以下のpatchのようになると思います(例によって、ノーテストで書いたシロモノです。適用は自己責任でどうぞ)。

diff -u -r1.15 ROTool.pm
--- ROTool.pm   6 Nov 2003 02:42:15 -0000       1.15
+++ ROTool.pm   2 Mar 2004 04:02:58 -0000
@@ -27,8 +27,15 @@
 my %clients;
 my %sock_to_client;
 
+my(@ACCEPT_ID_LIST) = qw( me friend friend2 friendx );
+my(%ACCEPT_ID_LIST) = map { ($_,1) } @ACCEPT_ID_LIST;
+
 sub UA_regist{
     my($id,$client) = @_; 
+    if(not defined $ACCEPT_ID_LIST{$id}){
+       &ROTool::printlog(1," reject not accept UA[id = $id]\n");
+       return 0;
+    }
     if(not exists $UA{$id}){
        $UA{$id} = $client;
        $client->{UA_registed} = 1;


名前 : somebody(2004/03/02 10:52)
FedoraCore?1上でrotoold-20031110_0安定動作しています.
あらかじめ登録されているIDでの接続のみ受け入れるようにしたいのですが,その方法についてご教授下さい.

●ソース中に,$dummy{"id"}="rotoold";なる行が見あたりますが,dummy以外のidはどの変数に入っているのでしょうか.
●実装にあたっては,accept_new_client関数内でIDのマッチングを行い,
&ROTool::client_regist($client);
の行をスキップしてやるだけで良いのでしょうか.


名前 : somebody(2004/02/20 19:08)
ynakataさんへ
ありがとうございます。無事に接続確認できました。
原因は5963 -> anyがうまくでていませんでした(><;汗)
無事起動中です(嬉)ありがとうございました。


名前 : ynakata(2004/02/20 17:35)
念のため、ファイアウォールで5963 -> anyが通るようになってるかを確かめてから、以下の手順を試してみてください。

これが全部通ったら普通はつながるはず。
ダメだったら、ダメだったときのログを送ってください、宛先はwhite@niu.ne.jpで。


名前 : somebody(2004/02/20 17:03)
早速、設定みてみました。
PORTもちゃんとLISTENにはなってるんですけどね^^
tcp 0 0 0.0.0.0:5963 0.0.0.0:* LISTEN
ipchainも
ACCEPT tcp -y---- anywhere anywhere any -> 5963
となってます。でも、やっぱりつながらない。
何が変なのでしょうか。。(><;汗) 入れ直すかな〜


名前 : somebody(2004/02/20 16:19)
早速のお返事ありがとうございます。
ファイアーウォールの設定でしょうか・・うまくつながりません。。
そのあたりの設定をみてみます。


名前 : ynakata(2004/02/20 16:17)
rotooldは、inetdやxinetdとは関係ありません。
単純に起動させれば、httpdやらsshdやらと同様の独立したサーバプロセスとして動作します。

なお、ipchainsやiptables等のファイアウォール設定には注意してください。


名前 : somebody(2004/02/20 16:09)
初めまして。どなたか教えて頂きたいのですが、REDHAT 7.3のxinetd上での設定は
どうすればいいのでしょう?perl版なんですが実行させるだけでよかったのでしょうか?


名前 : ynakata(2004/02/18 09:04)
変換テーブルは、内部的にはハッシュを使った羅列になると思います。
問題は、定義方法ですね。後の互換性のためには、
MRGPSVのdatファイルを流用してしまうのがよいように思います。
そのへんはなんか試してみます。


名前 : nomonomo(2004/02/17 23:45)
ynakataさん
モジュールを配布は問題ないです。
…が、ソースが汚いなぁってだけで(汗)

らぐぽじプロトコルは、職業が数字で管理しているので、らぐぽじモジュール上に
テーブルを持たせたほうが他のモジュールをいじらなくて良いと思いますけどね…

MRGPSVは、datファイルでJobclassとサーバーのIPテーブルを持っていて、
変換しているようですが。
そこら辺の変換をPerlでどうやっていかが良くわからないので…
自分がやると、羅列になるんで


名前 : ynakata(2004/02/17 11:54)
場当たり的に決定しているゲーム情報の名前空間も明確に定義した方がいいのかなあ。


名前 : ynakata(2004/02/17 11:31)
職業/マップの方は、らぐぽじモジュールにマッピングテーブルを持たせればいいのかな?
となるとデータ作成の根性の問題になりますから、私も対処できる状況ではありませんね(非プレイヤー)。

それから、モジュール自体はrotooldの配布パッケージに同梱してしまいたいのですが、許可はいただけるでしょうか?>nomonomoさん


名前 : nomonomo(2004/02/14 00:49)
はじめまして。
らぐぽじプロトコルのrotoold対応モジュールを書いてみました。
Perlの経験が無いので、激しく汚いのですが…

また、実装をサボっていまして、らぐぽじ同士の場合はなんとかなると思いますが、
RO-GPS、アコナビとは上手くいかないと思います。職業や、マップなど…

当方は、らぐぽじ同士で接続できれば良いので、その点を改良する気はあまりありません。
プロトコル解析も適当…

なので、どなたか改良をよろしくお願いします。

ttp://www5.airnet.ne.jp/nomonomo/rotoold/Client.pm

# 何日かの稼動実績はありますが…


名前 : ynakata(2004/02/12 15:50)
メッセージ部分のログを適当に残す実装を(単に文字列処理のコードを書く実験として)追加しようかと考えている今日このごろ。


名前 : kei(2003/12/18 02:19)
あ、なるほど。ログだと.がみにくくて抜けてたみたいです><
変更したらできましたー ありがとうございました


名前 : ynakata(2003/12/18 00:28)

はい。ROTool/Client.pmのis_keep_messageの中の、以下の行を書き換えれば、メッセージキープの条件を変更できます。

    =~ /^(\(|\x81\x69).*?(\)|x81\x6a)$/);

[〜]にする場合は、次のような感じにすればOKだと思います(これだと括弧は半角しか通りませんけど)。

    =~ /^\[.*?\]$/;


名前 : kei(2003/12/17 22:29)
はじめましてーいつもありがたく使わせていただいてます。
MessageKeep?のくくる文字列を"[〜]"にしようとやってるのですがどうしてもうまくいきません><
RoTool?のClient.pmのis_keep_messageのところをかえたらいいんでしょうか?


名前 : honet(2003/11/19 01:07)
こんにちは。rotooldを導入させて頂きました。FreeBSDでの稼働ですが、特に問題なく動いております(嬉。
さて、起動スクリプトもでっちあげて、バックグラウンドで動かしているのですが、クライアント接続時&SIGPIPE時にメッセージがprintされてしまうのがちょっと気になりました。バックグラウンドにて稼働時は(whileループに入ったら)一切printされない方が嬉しいです。(手元ではquick-hackしました)。勝手な提案&「その程度自分でやれっ」って感じですが、次回変更時についでに考えて頂けたら幸いです。それでは。


名前 : ynakata(2003/11/15 01:44)
直しました。ご指摘のとおり、trialが付いていたというミスでした(恥


名前 : mitter(2003/11/15 01:12)
はじめまして
itumorotooldを使わせていただいているものです。
今回新しいVersionが出ていたのでダウンロードさせていただこうとしましたが
zipファイルの方はどうもリンク先が違うようでした
アドレスにtrialがついているためだとは思いますが、気になったのでご報告をば


名前 : ynakata(2003/11/10 11:43)
とりあえず安定しているということなので、テスト版から安定版としてリリースし直しました。
リリースバージョン文字列が違う以外は、全く同一の内容ですので、インストールし直す必要はありません。

状況を考えると、らぐぽじプロトコルでつないで来たときの問題とかなのかもしれませんね。


名前 : Gu(2003/11/09 23:30)
経過を報告いたします
現在プロセスがいきなり落ちるようなことも無く
順調に稼動しております
問題は解決できているようです
ありがとうございました


名前 : Gu(2003/11/07 00:13)
訂正です
RO-GISおよびRO-GISが互換しているversionの
でした

板汚し失礼しました


名前 : Gu(2003/11/07 00:12)
わざわざご丁寧にありがとうございます
RO-GISおよびRO-GISが互換しているクライアントでは問題は再現せず、
らぐぽじクライアントが接続したときに
下記のようなエラーが頻発していました
現在のところstableです
今後丸1日くらい大丈夫であれば問題ないと思います


名前 : ynakata(2003/11/06 23:12)
起こっていたエラーは、ネットワーク層かクライアントが想定外の動きをした際に、エラー処理が行われていなかったことが原因だと思います。
20031106_0版の目標は「SIGPIPEが出ても落ちない」ことです。
当分は様子見だと思いますので、再び再現されたら報告よろしくお願いします。


名前 : Gu(2003/11/06 22:45)
新版の導入を済ませました
今のところ、問題なく動いているようです
ありがとうございました


名前 : Gu(2003/11/06 14:41)
迅速な対応有難うございます
今、出先なものですから、戻り次第試させていただきます


名前 : ynakata(2003/11/06 11:52)
様子見のためのテスト版として、20031106_0版を出しました。これで直ってしまう可能性もありますが、とりあえず試してみて頂けるとありがたいです>Guさん


名前 : Gu(2003/11/06 09:51)
Redhat9@自宅鯖で何の問題もなく動作していたのですが
最近になって、急に落ちるようになりました。
Clientを拾った後に
Caught SIGPIPE. But continue..
と出ているのと
Can't locate object method "set_schedule" via package "ROToold" at /usr/local/games/rotoold/rotoold line 172
と吐いた後に落ちてるらしいのですが、原因、探れますでしょうか?


名前 : ynakata(2003/10/23 11:41)
rotooldのページに「二次配布先」としてdebian packageの情報について追記しました。
必要であれば適宜追記してくださいまし。


名前 : fumi.(2003/10/21 21:07)
再配布始めましたーのお知らせです。
rotoold の debian package を

URL:http://www.monochrome.jp/~katsuwo/debian/

で公開しています。Debian User && RO Player な方はどーぞ。
rotoold, roconf-ragmap パッケージを入れるとそのまま利用できます


名前 : Nasu(2003/10/09 01:54)
はじめまして。
いままでアコナビ一辺倒だったのですが
こう言う便利なツールがあるとは知りませんでした。
これで使わないときは、うるさいWindowsマシンを止めれます(笑

お礼代わりに動作報告
SUN CobaltQube?3 にて
rotoold-20030919_0が
なんの問題も無く動作しております。

まだ自動起動はさせていませんが、このまま問題無ければ
完全に以降しようと思います。