对 mSL 来说是全新的,只是在尝试制作一个机器人。因此,我正在尝试做一些事情,当用户说出某个单词时,他们会得到 +1 以计入他们的名字。但是他们不能再把这个词再说一遍,以进一步增加他们的计数无限次,他们必须找到一个新词。
为了确保这些词不能被多次使用,我将这些词写入文件,然后我需要加载这些词并检查它是否已经说过或没有与用户刚刚所说的内容相矛盾,并采取适当的行动
on *:TEXT:&:#:{
var %msg
if ($1 == text1) { %msg = msg1 }
elseif ($1 == text2) { %msg = msg2 }
elseif ($1 == text3) { %msg = msg3 }
else { return }
msg # %msg
var %keyword = $readini(keyword.ini,#,$nick)
if (%keyword == $1) {
msg # you already have this keyword! :(
}
else {
var %count = $readini(cookies.ini,#,$nick)
inc %count
writeini cookies.ini # $nick %count
writeini keyword.ini # $nick %keyword $+ , $+ $1
}
}
关键字.ini 文件如下所示:
nickname=text1,text2
在 mSL 中是否有我可以获取列表(已经在上面的代码中完成)然后使用类似于 .split(,) 的东西来划分单词以通过 for/next 运行?
提前致谢
编辑: 我尝试了以下方法,尽管它确实有效!然后我删除了该文件以对其进行测试,尽管使用了 writeini,但它从未重新制作过该文件。我什至在脚本的开头添加了 writeini keyword.ini 以确保在写入任何文本之前文件存在,但仍然没有成功。
on *:TEXT:&:#:{
var %msg
if ($1 == text1) { %msg = msg1 }
elseif ($1 == text2) { %msg = msg2 }
elseif ($1 == text3) { %msg = msg3 }
else { return }
msg # %msg
var %i = 1, %keyword = $readini(keyword.ini,n,$chan,$nick), %cookie = $readini(cookies.ini,n,#,$nick)
while (%i <= $numtok(%keyword, 44)) {
if ($istok(%keyword, $1, 44)) {
msg # you already have this keyword! :(
}
else {
inc %cookie
writeini cookies.ini $chan $nick %cookie
msg # congrats! you found a keywords
writeini keyword.ini $chan $nick $addtok(%keyword, $1, 44)
}
inc %i
}