2013-04-25 85 views
0

我正在寻找一种方法来解决洪水问题。 的理念是:MIRC反洪水脚本

on [lessthanhalfop]:text:*:#chan: { 
    If [timer$nick] !== 0 { 
    set %kickstate$nick +1 
    if %kickstate$nick < 4 { 
     kick $nick #chan [reason:flood] 
     echo > kickedlist.txt 
     delete [timer$nick] 
    delete [timer$nick] 
    makenew timer with 4 seconds 
    } 
    Set timer$nick 5seconds 
} 

谁能帮我这使其可行为每个$尼克独特的计时器,让他们不要在此改变为每个用户。 我希望它能做的就是踢人,通过在特定的时间段内(在这种情况下,2 secons)键入内容来满足聊天。谁能帮我解决这个问题吗?

我正在使用mIRC,但频道是在swiftirc网络中,如果有人想知道。

回答

1

解决方案:
答:我们设置变量和增量(2秒的实时跨度)以下格式“cTxtFlood.USER-ADDRESS”。这使我们能够跟踪我们系统中的每一个新的flooder +它将清除那些说话的人,而不是flooders。

B.如果变量计数器超过X线(5中的例子)

C.如果泛洪,那么我们就禁止和与300秒的禁令跨度踢用户正在检查。

一点信息:

陈 - 你想要的频道,以保护

@ * - 只有当我在信道有运
-u2 =未设置变量在2秒内
禁令 - ku300 =禁止并持续300秒

完整代码(未测试)

on @*:text:*:#chan: { 
    inc -u2 % [ $+ [ $+(cTxtFlood.,$wildsite) ] ] 
    if (% [ $+ [ $+(cTxtFlood.,$wildsite) ] ] == 5) { 
    echo -ag ban -ku300 # $nick 2 Channel Flood Protection (5 lines at 2 sec's) 
    } 
} 
+1

请注意,当使用其他脚本放置在文件中时,此脚本将执行某些操作。如果放置在任何其他'on *:text:...'触发器之上,它将防止其他触发器关闭。原因是mIRC搜索每个文件,直到找到将触发的脚本,然后停止发送该文件。 'on *:text:*:#chan ...'会在某个频道的_any_文本上触发,因此始终匹配。解决方法是将它放在一个单独的文件中,或者至少将它放在文件的底部。其中两个触发器永远不会在同一个文件中。 – melwil 2013-05-03 10:47:08

+0

@melwil,我有点懒得写出来,所以谢谢你:) – 2013-05-03 11:10:33