Перейти к содержимому


Фотография

Ограничение использования скрипта


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 tvrsh

tvrsh

    Активный участник

  • Администратор
  • 389 сообщений
  • Пол:Мужчина
  • Город:Russian Federation, Podolsk
  • Ник в сети:tvrsh
  • Каналы:#egghelp, #3hauka, #bash.org

Отправлено 20 мая 2008 - 13:29

Значит так.

В меню настроек скрипта добавляем
set cmd(delay) 15
в этой переменной время в секундах, через которое возможен повторный запуск.

Далее, в начале процедуры создаем область переменных cmd
variable cmd

Теперь в начале процедуры, например после проверки наличия флагов на канале, проверяем сколько времени прошло с предыдущего запуска, и если прошло меньше, чем $cmd(delay) то сообщаем юзеру сколько ему еще ждать:
if {[info exists cmd(lasttime,$chan)] && [expr $cmd(lasttime,$chan) + $cmd(delay)] > [clock seconds]} {
	  putserv "NOTICE $nick :Запрос не чаще одного раза в $cmd(delay) [lindex {. секунду секунды секунд} [numgrp $cmd(delay)]]."
	  putserv "NOTICE $nick :Подождите [expr $cmd(delay) - [expr [clock seconds] - $cmd(lasttime,$chan)]] [lindex {. секунду секунды секунд} [numgrp [expr $cmd(delay) - [expr [clock seconds] - $cmd(lasttime,$chan)]]]] до следующего запроса."
	  return
}

Если все в порядке, и время предыдущего запуска было позже, чем $cmd(delay), то, после выполнения процедуры сохраняем время когда она выполнилась, чтобы проводить проверку при следующей команде:
set cmd(lasttime,$chan) [clock seconds]

А эта процедура вернет правильные окончания для слов в сообщении о невозможности выполнить скрипт.
proc numgrp {number} { 
	switch -glob -- "$number" { 
		*11 {return 3} 
		*12 {return 3} 
		*13 {return 3} 
		*14 {return 3} 
		*1 {return 1} 
		*2 {return 2} 
		*3 {return 2} 
		*4 {return 2} 
		default {return 3} 
	}
}

Все очень несложно, достаточно внимательно смотреть в чужие скрипты.
Если у кого-то есть другая реализация идеи то не стесняйтесь и поделитесь.
http://ircnet.su/
#egghelp @ IrcNet.Ru




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных