半手動(?)オペレータ権限配りスクリプト
GMとしてセッション開始して早数回(※1シナリオ終わってません)。
「こんなのがあったらいいな」と思うものがあったので、合間に作っときました。
『チャンネルのオペレータ権限を持ってる参加者が離席してても、合言葉を言えばオペレータ権限を自動的に配ってくれるスクリプト』です。
……LimeChatの『自動オペレータの設定』が使いこなせなかったのは内緒。
スクリプト
//任意の人にだけ、「@@@@」と発言があったらオペレータ権限を配るスクリプト。 function event::onChannelText(prefix, channel, text) { if (text.match(/@@@@/)) { if ( (prefix.nick.match(/pc1/)) || (prefix.nick.match(/pc2/)) || (prefix.nick.match(/pc3/)) || (prefix.nick.match(/pc4/)) || (prefix.nick.match(/pc5/)) ) { var channelObject = findChannel(channel); if (channelObject){ var channelMemberObject = channelObject.findMember(prefix.nick); if (channelMemberObject && !channelMemberObject.op){ mode(channel, '+o ' + prefix.nick); } } } } }
解説(?)
チャンネル参加後、オペレータ権限を持ってない参加者が「@@@@@」と発言すると、その人のニックが参加者のものであると判断できた場合のみオペレータ権限をもらえる、という仕組みです。
ほんとは各々のドメインも同時にチェックし、両方が合致した場合のみとかにした方がいいんだろうなと思いつつ、……やってません。
変更するとしたらの疑問点
もし「各々のドメインも同時にチェックし、両方が合致した場合のみ」動作するよう変えるとすると、andとorが複雑に入り混じる、というか、
・ドメインAでかつニックA
または
・ドメインBでかつニックB
または
・ドメインCでかつニックC
または
…
というよく分からないif文書くんですよね?
これって、できるんでしょうか?
自動オペレータの設定について追記(2008-12-03)
に、自動オペレータの設定方法について詳しく書かれてました。
http://www.geocities.jp/aildragoon/chop.htmlの方はちょっと画面が古いLimeChatぽいですが、分かりやすいです。