EpicNet.Ru - Форум IRC Чата

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Auto set channel limit (+l)

Сообщений 11 страница 11 из 11

1

Does anyone help me to write a code "Auto Set Channel limit" (+l) for me:

1) Join: if there are 4 nicknames joins, then Bot calc all nicknames in that channel and set mode plus +5;
2) Quit: if there are 4 nicknames quits, then Bot calc all nicknames in that channel and plus +5;
3) Part: if there are 4 parts then Bot calc all nickname in channel then set mode +5; 
4) Kick: if there are 4 kicks in channel then Bot calc all nicknames in channel then set mode +5;

- use timer 1 15 for JOIN and QUIT; timer 1 3 for PART and KICK
- and set mode +l for all channels Bot have access @

Thanks all for help and hop receive the code snippet soon!!!

11

Я немного подкорректировал этот скрипт и внёс небольшие изменения:

  • Настройки скрипта в диалоговом окне были разделены на несколько вкладок для удобного управления.

  • Во вкладке "Settings" вы можете настроить все необходимые параметры с числовыми значениями, которые будут срабатывать на разные события.

  • Во вкладке "Networks" вы можете Добавить/Редактировать/Удалить в списке все необходимые названия IRC сетей, в которых может работать скрипт.

  • Скрипт запоминает последнюю открытую вкладку, чтобы при новом открытии диалогового окна была открыта именно эта вкладка.

      https://i.ibb.co/vLGgYdv/auto-limit-user1.png      https://i.ibb.co/86J81LS/auto-limit-user2.png

Код:
#####################################################################
#  Name: Auto Limit Users v1.3
#  Author: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code)
#  Description: Auto sets the limit mode (+l) for the maximum allowed number of users on the channel.
#####################################################################

menu menubar,status,channel {
  $+($iif(%alu_work == on,$style(1)),Auto Limit Users,$chr(9)): alu_dialog
}
alias -l alu_dialog { alu_default_set | if ($dialog(alu)) .dialog -x alu | .dialog -m alu alu }
dialog alu {
  title "Auto Limit Users"
  size -1 -1 300 272
  option pixels
  icon $mircexe,22
  ;-------------------------
  tab "Settings", 1, 1 0 300 226
  tab "Networks", 2
  ;-------------------------
  box "Setting numerical values:", 10, 30 51 240 140, tab 1
  text "Join Timer:", 11, 43 80 60 15, right, tab 1
  edit %alu_timer_join, 12, 107 77 30 20, autohs, limit 3, tab 1
  text "Part Timer:", 13, 43 105 60 15, right, tab 1
  edit %alu_timer_part, 14, 107 102 30 20, autohs, limit 3, tab 1
  text "Kick Timer:", 15, 43 130 60 15, right, tab 1
  edit %alu_timer_kick, 16, 107 127 30 20, autohs, limit 3, tab 1
  text "Quit Timer:", 17, 43 155 60 15, right, tab 1
  edit %alu_timer_quit, 18, 107 152 30 20, autohs, limit 3, tab 1
  text "Max Events:", 19, 155 80 60 15, right, tab 1
  edit %alu_max_events, 20, 219 77 30 20, autohs, limit 3, tab 1
  text "Plus Limit:", 21, 140 105 75 15, right, tab 1
  edit %alu_plus_limit, 22, 219 102 30 20, autohs, limit 3, tab 1
  ;-------------------------
  box "List of networks for work:", 50, 30 51 240 140, tab 2
  list 51, 45 76 145 115, tab 2
  button "Add", 52, 201 87 55 21, center flat, tab 2
  button "Edit", 53, 201 113 55 21, center flat, tab 2
  button "Del", 54, 201 139 55 21, center flat, tab 2
  ;-------------------------
  button "Default", 999, 30 236 75 23, center flat
  button "OK", 1000, 195 236 75 23, center flat default ok
}
on *:DIALOG:alu:init:0: alu_default_set | if (%alu_tab == 2) alu_list_networks | .timerALUTAB -m 1 0 alu_tab_focus
on *:DIALOG:alu:sclick:1: %alu_tab = 1 | .did -f alu 1000
on *:DIALOG:alu:sclick:2: %alu_tab = 2 | .did -f alu 1000 | .did -r alu 51 | alu_list_networks
on *:DIALOG:alu:edit:12: %alu_timer_join = $did($did).text
on *:DIALOG:alu:edit:14: %alu_timer_part = $did($did).text
on *:DIALOG:alu:edit:16: %alu_timer_kick = $did($did).text
on *:DIALOG:alu:edit:18: %alu_timer_quit = $did($did).text
on *:DIALOG:alu:edit:20: %alu_max_events = $did($did).text
on *:DIALOG:alu:edit:22: %alu_plus_limit = $did($did).text
on *:DIALOG:alu:sclick:52: var %nw $input(Enter the network name:,eo,Add) | if (%nw) { %alu_networks = $+(%alu_networks,$chr(44),%nw) | .did -a alu 51 %nw }
on *:DIALOG:alu:sclick:53: var %l $did(alu,51).sel, %t $did(alu,51).seltext | if (%t) { var %nw $input(Change the network name:,eo,Edit,%t) | if (%nw) { %alu_networks = $puttok(%alu_networks,%nw,$findtok(%alu_networks,%t,1,44),44) | .did -o alu 51 %l %nw } }
on *:DIALOG:alu:sclick:54: var %l $did(alu,51).sel, %t $did(alu,51).seltext | if (%t) { .did -d alu 51 %l | %alu_networks = $deltok(%alu_networks,$findtok(%alu_networks,%t,1,44),44) }
on *:DIALOG:alu:sclick:999: unset %alu_* | alu_dialog
---------------------------------------------------------------------
on !*:JOIN:#: alu
on *:PART:#: alu
on *:KICK:#: alu
on *:QUIT: alu
alias -l alu {
  if (%alu_networks && !$istok(%alu_networks,$network,44)) { return }
  if ($event == join) {
    .hinc -m $+(alu_,$chan) join 1 | if ($hget($+(alu_,$chan),join) >= %alu_max_events) {
      if ($me isop $chan) .timerALU_ $+ $chan 1 %alu_timer_join mode $chan +l $calc($nick($chan,0) + %alu_plus_limit) | .hdel -sw $+(alu_,$chan) *
    }
  }
  if ($event == part) {
    .hinc -m $+(alu_,$chan) part 1 | if ($hget($+(alu_,$chan),part) >= %alu_max_events) {
      if ($me isop $chan) .timerALU_ $+ $chan 1 %alu_timer_part mode $chan +l $calc($nick($chan,0) + %alu_plus_limit -1) | .hdel -sw $+(alu_,$chan) *
    }
  }
  if ($event == kick) {
    .hinc -m $+(alu_,$chan) kick 1 | if ($hget($+(alu_,$chan),kick) >= %alu_max_events) {
      if ($me isop $chan) .timerALU_ $+ $chan 1 %alu_timer_kick mode $chan +l $calc($nick($chan,0) + %alu_plus_limit -1) | .hdel -sw $+(alu_,$chan) *
    }
  }
  if ($event == quit) {
    var %i 1 | while (%i <= $comchan($nick,0)) {
      var %chan $comchan($nick,%i) | .hinc -m $+(alu_,%chan) quit 1 | if ($hget($+(alu_,%chan),quit) >= %alu_max_events) {
        if ($me isop %chan) .timerALU_ $+ %chan 1 %alu_timer_quit mode %chan +l $calc($nick(%chan,0) + %alu_plus_limit -1) | .hdel -sw $+(alu_,%chan) *
      } | inc %i
    }
  }
}
alias -l alu_tab_focus { .did -fu alu %alu_tab | .did -f alu 1000 }
alias -l alu_list_networks { var %i 1 | while (%i <= $numtok(%alu_networks,44)) { .did -a alu 51 $gettok(%alu_networks,%i,44) | inc %i } }
alias -l alu_default_set {
  if (!%alu_tab) || (%alu_tab == $null) { %alu_tab = 1 }
  if (!%alu_networks) || (%alu_networks == $null) { %alu_networks = EpicNet.Ru,DaVang }
  if (!%alu_timer_join) || (%alu_timer_join == $null) { %alu_timer_join = 10 }
  if (!%alu_timer_part) || (%alu_timer_part == $null) { %alu_timer_part = 5 }
  if (!%alu_timer_kick) || (%alu_timer_kick == $null) { %alu_timer_kick = 5 }
  if (!%alu_timer_quit) || (%alu_timer_quit == $null) { %alu_timer_quit = 5 }
  if (!%alu_max_events) || (%alu_max_events == $null) { %alu_max_events = 3 }
  if (!%alu_plus_limit) || (%alu_plus_limit == $null) { %alu_plus_limit = 5 }
}

[indent=0.8,0.5]
P.S. Если у вас остались дополнительные идеи и вы считаете, что этот скрипт должен уметь делать что-то ещё, то дайте мне знать об этом в новом комментарии к этому посту.

Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="https://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="https://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]