2013-04-25 42 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