|
> その後に『RC D』(会議室に来たときの既読数に戻す)を実行したいです。
MREコマンドを送っている場所は、NIF.HSCの1172行目付近です。
こんな風になってます。
send "MRE ROOM:" + #room + "^M"
wait postidle(1) "^M^J>"
それを、
send "MRE ROOM:" + #room + "^M"
wait postidle(1) "^M^J>"
send "RC D^M"
wait postidle(1) "^M^J>"
っとすれば、たぶんうまくいくと思います。(RC Dコマンドを知らないのでなんで
すが…)
> また、秀ネットで上記と同じ事をするにはどうすればいいのでしょうか。
秀ネットにはRC Dコマンドに相当するコマンドが残念ながらありません。しいてや
るとすれば、各会議室ごとの未読数を何らかの方法で記憶して、Aコマンド実行後に
各会議室ごとに「R -n」(nは未読数)コマンドで未読ポインターを元に戻すやり方
になると思います。
って訳で、さっそくそのようなスクリプトを作ってみました。
まずは、以下のサブルーチンをhidenet.hscの最後付近にでも入れておきます。
GetPointers:
readbuffer 3, #line
@@CouncilCount = value(part(#line, 0, 1))
if( @@CouncilCount == 0 )
return;
endif
##i = 3
##iCouncil = @@CouncilCount;
while( ##iCouncil > 0 )
readbuffer ##i, #line
@@UnreadCount[##iCouncil] = value(part(#line, 11, 5))
##i = ##i + 1
##iCouncil = ##iCouncil - 1
endwhile
return
RestorePointers:
##iCouncil = 1
while( ##iCouncil <= @@CouncilCount )
if( @@UnreadCount[##iCouncil] != 0 )
send ##iCouncil + "^M"
wait ">"
send "R -" + @@UnreadCount[##iCouncil] + "^M"
wait ">"
send "E^M"
wait ">"
endif
##iCouncil = ##iCouncil + 1
endwhile
return
んでもって、hidenet.hscの100行目付近に
send "A^M"
wait postidle(1) "^M^J>"
って処理があるんですが、ここを、
wait postidle(1) "^M^J>"
call GetPointers
send "A^M"
wait postidle(1) "^M^J>"
call RestorePointers
に変更すれば、未読ポインターを元に戻してくれます。
お試しください。
|
|