Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Служебные скрипты [PtokaX] _ Onesend

Автор: Setuper 13.1.2009, 18:57

Название: OneSend
Версия: 1.0
Версия API: API1, API2 (универсальный)
Автор: Setuper
Описание: Отсылает PM сообщение 1 раз при входе пользователя. При последующих входах сообщение отсылаться не будет.
Скрипт перенесён из раздела "Запросы скриптов".

 OneSend.lua ( 1.87 килобайт ) : 166

Автор: zerokl 9.5.2009, 22:31

У меня скрипт работает но когда ктонить заходить на хаб выдает ошибку Синтаксис D:\PtokaX\scripts\OneSend.lua:58: attempt to index local 'hFile' (a nil value)

Автор: Setuper 9.5.2009, 23:00

Исправил и перезалил big_smile.gif

Автор: zerokl 10.5.2009, 7:29

Спасибо теперь отлично работает )

Автор: li4nost 14.5.2009, 18:02

Setuper, спасибо! отличный скрипт!

хочу сделать правила хаба с помощью этого скрипта.
можно ли сделать подобное:
в самом конце моего сообщения пишется "Вы ознакомились в текстом данного сообщения?"
если ответят да, то больше не отправлять его пользователю. его ник добавляется в ipbase.dbs
если ничего не напишут или закроют - то повторять при следующем заходе.

Автор: Setuper 14.5.2009, 18:09

Можно, валяй big_smile.gif

Автор: li4nost 14.5.2009, 18:39

Клево, а как? big_smile.gif

Автор: Berkut 14.5.2009, 19:03

Цитата(li4nost @ 14.5.2009, 19:39) *
Клево, а как? big_smile.gif

Подозреваю, что ответ будет: "Ручками" =) Формулируй вопрос корректно.
А по делу, нужно просто прописать удаление пользователя из таблицы рассылки (или добавление - честно говоря, скрипт не смотрел, не знаю, как Setuper реализовал) в случае, если в приват боту или в чат с преффиксом ушло контрольное слово. Фактически - слить выложенный выше скрипт с куском скрипта регистрации, где есть механизм подтверждения согласия с правилами (как вариант посмотреть скрипт защиты от спам-ботов, который выкладывался на этом форуме).

Автор: skonda 1.8.2009, 20:24

Цитата(li4nost @ 14.5.2009, 19:02) *
можно ли сделать подобное:
в самом конце моего сообщения пишется "Вы ознакомились в текстом данного сообщения?"
если ответят да, то больше не отправлять его пользователю. его ник добавляется в ipbase.dbs
если ничего не напишут или закроют - то повторять при следующем заходе.
присоединяюсь к просьбе, кто нибудь может помочь с реализацией под API2?

Автор: Артём 1.8.2009, 20:32

skonda , li4nost Вот держите именно такой у меня валялся,правда под API1,конвектором перегоните в API2
 Confirmer.rar ( 1.1 килобайт ) : 16

Автор: skonda 1.8.2009, 23:00

Цитата(Артём @ 1.8.2009, 21:32) *
skonda , li4nost Вот держите именно такой у меня валялся,правда под API1,конвектором перегоните в API2
 Confirmer.rar ( 1.1 килобайт ) : 16


проблема в том что после перегонки в API2 этот скрипт все равно придется доробатывать что мне не под силу, поэтому может кто нибудь помочь доработать скрипт OneSend из 1 поста?

Нужно вот что : в самом конце сообщения пишется "Вы ознакомились в текстом данного сообщения?"
если ответят да, то больше не отправлять его пользователю. его ник добавляется в ipbase.dbs
если ничего не напишут или закроют - то повторять при следующем заходе.

Автор: Артём 2.8.2009, 0:10

Цитата(skonda @ 1.8.2009, 23:00) *
проблема в том что после перегонки в API2 этот скрипт все равно придется доробатывать что мне не под силу, поэтому может кто нибудь помочь доработать

what.gif ....доробатывать.....Нечего там ненада доделовать,просто папку Rules закинуть нада не в папку с скриптами,а там где .ехе птоки находится....  Confirmer_API2_.rar ( 2.48 килобайт ) : 27
( вот уже сконвектирован под вторую птоку,просто поставь всё на свои места.

Автор: skonda 2.8.2009, 8:46

Цитата(Артём @ 2.8.2009, 1:10) *
Confirmer_API2
а как в нем убрать то что чат блокируеться пока не согласишься с правилами ? т к у меня скрипт будет кидать просто объяву а не правила.

Автор: Артём 2.8.2009, 9:13

skonda Вот закоментировал несколько строк и теперь скрипт выдаёт сообщение при входе...
 Confirmer_API2_.lua ( 1.97 килобайт ) : 38

Автор: skonda 2.8.2009, 9:44

Цитата(Артём @ 2.8.2009, 10:13) *
skonda Вот закоментировал несколько строк и теперь скрипт выдаёт сообщение при входе...
 Confirmer_API2_.lua ( 1.97 килобайт ) : 38
то что нужно, спасибо ;)

Автор: Артём 4.11.2009, 9:40

Цитата(Setuper @ 13.1.2009, 17:57) *
Название: OneSend

проблема в том что IP в таблице ipbase.dbs автоматически не удаляются , тоесть два дня назад поставил этот скрипт перезашёл мне показало инфу и по сей день не показует больше))
Как сделать чтобы раз в день или как-то так чтобы база очищалась сама ?
P.S может таймер в заданное время сделать чтобы очищал таблицу с IP , к примеру в полночь ( 00:00 ) big_smile.gif

Автор: Setuper 4.11.2009, 13:17

Так на то она и одноразовая отсылка, чтобы отправил и забыл))

Автор: Yudeix 5.11.2009, 2:13

Хороший скрипт, но как бы ещё и диапазоны прикрутить, чтобы срабатывало только в определённых диапазонах?
Пробовал это:

local tDiap =
{ "192.168.%d+.%d+", "10.%d+.%d+.%d+" } -- шаблоны диапазонов

но что-то не получается.

Автор: Enyby 5.11.2009, 2:41

Код
local tDiap {
    "^192.168.",
    "^10.",
}

function find(sHaystack, tNeedle)
    for _,n in ipairs(tNeedle) do
        if string.find(sHaystack, n) then
            return true
        end
    end
    return false
end

function UserConnected(user)
    if find(user[SET], tDiap) and Confirm[user[SET]] == nil then
        Core.SendPmToUser(user,BOT, SendConfirm)
    end
end
OpConnected = UserConnected

function ChatArrival(user,data)
    if find(ser[SET], tDiap) and Confirm[user[SET]] == nil then
        Core.SendPmToUser(user,BOT, SendConfirm)
        return true
    end
end

Автор: Артём 5.11.2009, 11:46

удалите плз

Автор: Yudeix 5.11.2009, 21:41

Цитата(Enyby @ 5.11.2009, 1:41) *
Код
local tDiap {
    "^192.168.",
    "^10.",
}

function find(sHaystack, tNeedle)
    for _,n in ipairs(tNeedle) do
        if string.find(sHaystack, n) then
            return true
        end
    end
    return false
end

function UserConnected(user)
    if find(user[SET], tDiap) and Confirm[user[SET]] == nil then
        Core.SendPmToUser(user,BOT, SendConfirm)
    end
end
OpConnected = UserConnected

function ChatArrival(user,data)
    if find(ser[SET], tDiap) and Confirm[user[SET]] == nil then
        Core.SendPmToUser(user,BOT, SendConfirm)
        return true
    end
end


И куда это вставить, чтобы заработало? Пока что безуспешно ((
Нужно, чтобы сообщение отправилось только 1 раз в пределах двух диапазонов.

Автор: Alexey 6.11.2009, 8:55

http://mydc.ru/topic2546.html

Автор: Enyby 6.11.2009, 14:14

Цитата(Yudeix @ 5.11.2009, 20:41) *
И куда это вставить, чтобы заработало? Пока что безуспешно ((
Нужно, чтобы сообщение отправилось только 1 раз в пределах двух диапазонов.

В http://mydc.ru/ipb.html?act=attach&type=post&id=2991 замени тем кодом этот:
Код
function UserConnected(user)
    if Confirm[user[SET]] == nil then
        Core.SendPmToUser(user,BOT, SendConfirm)
    end
end
OpConnected = UserConnected

function ChatArrival(user,data)
    if Confirm[user[SET]] == nil then
        Core.SendPmToUser(user,BOT, SendConfirm)
        return true
    end
end


PS Код я на проверял - но все должно работать.

Автор: Yudeix 9.11.2009, 16:13

Цитата(Enyby @ 6.11.2009, 13:14) *
PS Код я на проверял - но все должно работать.

Не работает!


 Does_not_work.rar ( 2.67 килобайт ) : 1
 

Автор: Артём 9.11.2009, 17:48

Yudeix
Вот рабочий !!!
 InformOneSend.lua ( 2.4 килобайт ) : 13

Автор: Yudeix 9.11.2009, 18:42

Цитата(Артём @ 9.11.2009, 16:48) *
Yudeix
Вот рабочий !!!
 InformOneSend.lua ( 2.4 килобайт ) : 13

Спасибо Артём, но это другой скрипт. Он отправляет сообщение всем.
Скрипт должен отправлять сообщение в нужные диапазоны, а не всем и один раз. А этот , после перегрузки PtokaX снова начинает грузить народ сообщениями.

Автор: Артём 9.11.2009, 18:49

Цитата(Yudeix @ 9.11.2009, 17:42) *
Скрипт должен отправлять сообщение в нужные диапазоны...

 ip_d.lua ( 1.33 килобайт ) : 10
сообщения создавай в texts

Автор: Perspect 9.11.2009, 19:51

Цитата(Yudeix @ 9.11.2009, 17:42) *
Спасибо Артём, но это другой скрипт. Он отправляет сообщение всем.
Скрипт должен отправлять сообщение в нужные диапазоны, а не всем и один раз. А этот , после перегрузки PtokaX снова начинает грузить народ сообщениями.
Вот подобный скрипт http://mydc.ru/ipb.html?act=attach&type=post&id=3371 с этой темы: http://mydc.ru/topic2546.html Он отправляет сообщение в нужные диапазоны, но после перегрузки хаба, повторяет отвправления снова и снова.
Мне тоже нужен скриптик, который отправлял-бы сообщение в нужный диапазон 1 раз (в приват или чат), и по IP-адресам записывал-бы инфо в отдельный файл, чтобы после перегрузки хаба отправка не повторялась.
Вроде не сложно, но я не силён в написании скриптов. Где-то подредактировать могу, а вот создать с нуля, или собрать из нескольких - нет.

Автор: MaxFox 3.11.2011, 19:41

Цитата(Perspect @ 9.11.2009, 20:51) *
Вот подобный скрипт http://mydc.ru/ipb.html?act=attach&type=post&id=3371 с этой темы: http://mydc.ru/topic2546.html Он отправляет сообщение в нужные диапазоны, но после перегрузки хаба, повторяет отвправления снова и снова.
Мне тоже нужен скриптик, который отправлял-бы сообщение в нужный диапазон 1 раз (в приват или чат), и по IP-адресам записывал-бы инфо в отдельный файл, чтобы после перегрузки хаба отправка не повторялась.
Вроде не сложно, но я не силён в написании скриптов. Где-то подредактировать могу, а вот создать с нуля, или собрать из нескольких - нет.


Что нужно изменить в скриптею чтобы после каждого его перезапуска он не удалял старый файл, а продолжал писать в него??? А то перезапустил и уже не вансенд... а тусенд... и до тех пор пока не надоелсенд =)

Автор: Ksan 3.11.2011, 20:24

MaxFox, в скрипте в коде сохранения открываешь файл с ключом "w+".
Вот пример:

Код
local f,e = io.open(sGraphFile, "w+")

Автор: MaxFox 3.11.2011, 20:44

Цитата(Ksan @ 3.11.2011, 21:24) *
MaxFox, в скрипте в коде сохранения открываешь файл с ключом "w+".
Вот пример:
Код
local f,e = io.open(sGraphFile, "w+")


то есть должно быть так, верно?
Код
function SaveToFile(tTable, sTableName, sFile)
  local f = io.open(sGraphFile, "w+")
  if f then
    Serialize(tTable, sTableName, f)
    f:flush()
    f:close()
  end
end

Автор: Ksan 3.11.2011, 21:01

MaxFox, да.

Автор: MaxFox 3.11.2011, 21:09

Цитата(Ksan @ 3.11.2011, 22:01) *
MaxFox, да.

тогда вопрос, почему не работает? =) просто перестал записывать в файл...

Автор: Alexey 3.11.2011, 21:47

http://mydc.ru/topic173.html?view=findpost&p=37502

Автор: Ksan 3.11.2011, 21:48

Дъявол в деталях..что-то там не так у тебя в Serialize, может..
У меня пишет.
Короче, почему ты проблему решаешь только тут?
Ищи другие скрипты, которые пишут в файл с добавлением строк и пробоуй как там.

Автор: MaxFox 3.11.2011, 22:07

Цитата(Ksan @ 3.11.2011, 22:48) *
Дъявол в деталях..что-то там не так у тебя в Serialize, может..
У меня пишет.
Короче, почему ты проблему решаешь только тут?
Ищи другие скрипты, которые пишут в файл с добавлением строк и пробоуй как там.

чувак... ну ты отжог... чес слово... я не могу ответить почему я ищу решение проблем с хабом и скриптами под него на форуме, посвященному решению проблем с хабом и скриптами...

Цитата(Alexey @ 3.11.2011, 22:47) *
http://mydc.ru/topic173.html?view=findpost&p=37502

огромное спасибо, я думаю это мне поможет, так как теперь понятно...

UPD: помогло, еще раз огромное спасибо =)

Автор: Ksan 3.11.2011, 22:29

Alexey, точно, я же у себя не добавляю в существующую запись, а считываю, изменяю содержимое и полностью сохраняю по-новой.. big_smile.gif потому и w+
Лопухнулся. Надо было смотреть не первый свой попавшийся скрипт, а подумать. :(