При появлении нового ника, ему отправляется заготовленный текст |
Здравствуйте, гость ( Вход | Регистрация )
При появлении нового ника, ему отправляется заготовленный текст |
7.10.2009, 22:28
Сообщение
#1
|
|
Активный участник Группа: Пользователи Сообщений: 89 Регистрация: 9.6.2008 Из: Крым Пользователь №: 23 Спасибо сказали: 5 раз |
Нужен скрипт (или подскажите как сделать).
При появлении нового ника определённого IP-диапазона ему в приват отправляется заготовленный текст. |
|
|
12.10.2009, 14:34
Сообщение
#2
|
|
[n00b] Группа: Пользователи Сообщений: 291 Регистрация: 10.7.2008 Из: Россия,Пенза Пользователь №: 168 Спасибо сказали: 24 раза |
Прям-таки определенного диапазона? А то тут где-то лежал скрипт, который отсылает собщения новому нику-не важно какого диапазона...
|
|
|
12.10.2009, 15:50
Сообщение
#3
|
|
Активный участник Группа: Пользователи Сообщений: 89 Регистрация: 9.6.2008 Из: Крым Пользователь №: 23 Спасибо сказали: 5 раз |
В данной ситуации важны пользователи местной сети. И к тому же нужен скрипт не приветствий, а который бы отправлял сообщение именно в приват.
|
|
|
13.10.2009, 12:23
Сообщение
#4
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 9 Регистрация: 11.10.2009 Пользователь №: 4 695 Спасибо сказали: 0 раз |
Тоже необходимо подобное.
|
|
|
13.10.2009, 12:37
Сообщение
#5
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Держи:
Раскрывающийся текст Код local sDiap = "10.31.%d+.%d+" -- шаблон диапазона local sBot = nil -- ник бота или nil для использования ника главного бота local sMsg = [[ Здесь пишем текст сообщения, отсылаемый в приват пользователям из диапазона ]] function OnStartup() if not sBot then sBot = SetMan.GetString(21) end end function UserConnected(tUser) if tUser.sIP:find(sDiap) then Core.SendPmToUser(tUser, sBot, sMsg) end end RegConnected = UserConnected OpConnected = UserConnected Если это не то или не совсем то - нужно чётче формулировать пожелания. |
|
|
13.10.2009, 12:53
Сообщение
#6
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 9 Регистрация: 11.10.2009 Пользователь №: 4 695 Спасибо сказали: 0 раз |
Alexey Огромное спасибо заработало просто идеально и какраз то что нужно!!!
|
|
|
13.10.2009, 12:56
Сообщение
#7
|
|
Активный участник Группа: Пользователи Сообщений: 89 Регистрация: 9.6.2008 Из: Крым Пользователь №: 23 Спасибо сказали: 5 раз |
Спасибо, работает.
Но как бы сделать, чтобы текст отправлялся новому пользователю только 1 раз. Такой скрипт был бы идеальным. |
|
|
13.10.2009, 13:10
Сообщение
#8
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Так?
Раскрывающийся текст Код local sDiap = "10.31.%d+.%d+" -- шаблон диапазона local sBot = nil -- ник бота или nil для использования ника главного бота local tSeen = {} local sMsg = [[ Здесь пишем текст сообщения, отсылаемый в приват пользователям из диапазона ]] function OnStartup() if not sBot then sBot = SetMan.GetString(21) end end function UserConnected(tUser) if tUser.sIP:find(sDiap) then if not IsPresent(tUser.sNick) then table.insert(tSeen, tUser.sNick) Core.SendPmToUser(tUser, sBot, sMsg) end end end RegConnected = UserConnected OpConnected = UserConnected function IsPresent(sNick) for key, vNick in pairs(tSeen) do if sNick == vNick then return true end end return false end |
|
|
13.10.2009, 13:20
Сообщение
#9
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 9 Регистрация: 11.10.2009 Пользователь №: 4 695 Спасибо сказали: 0 раз |
А что в данном скрипте доработано, а то чтото не разобрался?
local tSeen = {} я так понял запоминает кому отправлялось, а где это хранится? |
|
|
13.10.2009, 13:24
Сообщение
#10
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Добавлен запрошенный функционал.
В памяти, при выключении скрипта никуда не сохраняется. |
|
|
13.10.2009, 13:33
Сообщение
#11
|
|
Активный участник Группа: Пользователи Сообщений: 89 Регистрация: 9.6.2008 Из: Крым Пользователь №: 23 Спасибо сказали: 5 раз |
Alexey:
Меня вполне устраивает этот скрипт, то, что нужно! Но, добавь пожалуйста возможность действовать в нескольких диапазонах. |
|
|
13.10.2009, 13:50
Сообщение
#12
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 9 Регистрация: 11.10.2009 Пользователь №: 4 695 Спасибо сказали: 0 раз |
Ещё раз спасибо за скрипт!
|
|
|
13.10.2009, 14:07
Сообщение
#13
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Ещё раз спасибо за скрипт! Пожалуйста! Perspect: Третья редакция: a_diapPM3.lua ( 902 байт ) Кол-во скачиваний: 25 |
|
|
13.10.2009, 14:51
Сообщение
#14
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
мне кажется оптимальнее было бы так:
Код function UserConnected(tUser) if InDiap(tUser.sIP) then if not tSeen[tUser.sNick] then tSeen[tUser.sNick] = 1 Core.SendPmToUser(tUser, sBot, sMsg) end end end RegConnected = UserConnected OpConnected = UserConnected и выкинуть функцию IsPresent(sNick) |
|
|
13.10.2009, 15:36
Сообщение
#15
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Пожалуй, соглашусь... изврат какой-то набыдлокодил.
Исправление принято, спасибо. a_diapPM4.lua ( 782 байт ) Кол-во скачиваний: 18 |
|
|
13.10.2009, 17:00
Сообщение
#16
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Кстати да... При каждом вызове функции, она запихивается в стек вызовов, кроме этого, под параметры функции также создаётся стек. Поэтому при многочисленных вызовах различных функций в скором времени можно задуматься о затратах на вызовы функций. К сожалению, в отличии от с++, в lua отсутствует понятие встраиваемой функции, поэтому задумываться о лишних вызовах стоит!
|
|
|
14.10.2009, 20:33
Сообщение
#17
|
|
Активный участник Группа: Пользователи Сообщений: 89 Регистрация: 9.6.2008 Из: Крым Пользователь №: 23 Спасибо сказали: 5 раз |
Кто подскажет?
После перегрузки скрипта или компа сообщения снова будут отправляться пользователям. Что можно сделать, чтобы избежать этого. Мало-ли сколько раз придётся перегружаться. Может скопировать, а потом снова закинуть информацию в стек о пользователях, которые уже получали сообщение? |
|
|
14.10.2009, 20:47
Сообщение
#18
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
ну про стек это конечно же лихо))) простое сохранение в таблицу)))
|
|
|
14.10.2009, 20:57
Сообщение
#19
|
|
Активный участник Группа: Пользователи Сообщений: 89 Регистрация: 9.6.2008 Из: Крым Пользователь №: 23 Спасибо сказали: 5 раз |
ну про стек это конечно же лихо))) простое сохранение в таблицу))) Как бы это сделать? Вообще, возможно-ли это? Может есть альтернативы? Этот скрипт использую для привлечения голосов в пользу хаба. Не хотелось бы доставать пользователей однообразной информацией, которая уже для многих не актуальна. |
|
|
15.10.2009, 7:21
Сообщение
#20
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
найди любой скрипт который работает с таблицами в файле и посмотри как там сделано!
|
|
|
Похожие темы
|
Сейчас: 26.11.2024, 22:55 |