| 00145 98/12/19 06:08 | RE:00144 チャットルームでハンドル名取得 |
| 投稿者 : かずや | コメントを投稿する |
>問題は解決したのですが、ご意見や、もっと賢いスクリプトがあれば教えてください。 では、お節介ですが、お言葉に甘えてそうします(笑) >ChatKaishi: ;チャット中のメインスクリプト >setchatfilter Filter >sleep 1 >goto ChatKaishi ;チャット中のメインスクリプトここまで ここに SWITCH文などで受信文字列を処理するようにします。 例: switch case "Hi!" wait "^M" ;1行読み込むまで待つ readbuffer 0,#buffer if(part(#buffer,0,8) == "Hi!") ;誤信のための2重チェック ;ここに新しいハンドルを取得したときの処理を記述 endif case "" ;その他、自動挨拶など ・・・ 各処理を記述 endswitch こうすると、ハンドル追加の処理と、ハンドル付加の処理を 別々にできて、管理しやすくなります また、大抵のスクリプトでは、こういう風になっていると 思います(少なくともσ(^-^)のスクリプトでは これ(笑)) それで、filter は送信した場合のみなので 送信に関係することだけを書くようにしてみてはいかがですか? お節介でした m(_ _)m |
| 00146 98/12/19 22:03 | 改題 switch−case文について |
| 投稿者 : となりのニャンコ | コメントを投稿する |
145番のレスです。 switch case "Hi!" wait "^M" ;1行読み込むまで待つ readbuffer 0,#buffer if(part(#buffer,0,8) == "Hi!") ;誤信のための2重チェック ;ここに新しいハンドルを取得したときの処理を記述 endif case "" ;その他、自動挨拶など ・・・ 各処理を記述 endswitch 大変貴重な意見をありがとうございました。 実はですねえ、ニャンコは switch−case文が嫌いというわけでもないのですが、 使うたびに誤動作してしまって、どうも苦手なんですよ。 うちのパソコンが、 switch−case文との相性が悪いのか、 コマンドの使い方が間違っているのかわかりませんが FEO(フェリシモオンライン)スクリプトに使った switch−case文を載せておきます。 Returnkey: ;********************** リターンキーを押して下さい のスクリ プト send "^M" Autoreturn: loopswitch case "リターンキーを押して下さい" send "^M" case "選択して下さい >" breakloop endloop exit ;eeeeeeeeeee Returnkey eeeeeeeeeリターンキーを押して下さい ここまで 上のスクリプトを実行すると、動くときと、動かないときがあるんです。 なぜでしょうか。 これは動かなくても誰も困りませんが 一度、ログイン時のスクリプトに、同様のものを使ったことがあります。 FEOのログインは、「リターンキーを押して下さい」が通常は1回なのですが たまに2回になることがあります。 そこで、従来使っていたものを書き換えて、switch−case文を使ったものに 書き換えて配布しようと思ったことがあります。 幸い、シスオペさんのところで、動作確認が間に合わずに配布されてはい ませんでしたが、私一人でパニックを起こしていました。 通常使っているスクリプトは以下の通りです。 Return: wait "リターンキーを押して下さい" send "^M" timeout 1 wait "選択して下さい >" if( timeout ) goto Return timeout 0 goto Soshin exit ;eeeeeeeeeee Autologin eeeeeeeeeeeeeログインスクリプト ここまで |
| 新規に投稿する |