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ログインスクリプト ここまで


新規に投稿する