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

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

MyDC.ru _ VerliHub _ Помогите реализовать скрипт с PtokaX для Verlihub

Автор: Herurg 9.8.2010, 19:17

Собственно скрипт выводит инфу о топике и айпи адресе подключаегося...

Пример:

[23:04:50] <БОТ> Тема: 'ТУТ МЫ ПИШИМ ТЕМУ', установил Я (22:06:25 / 31.07.10)
[23:04:50] <БОТ> Привет Herurg, добро пожаловать на ХАБ. Ваш IP: 189.157.12.11

 WelcomMsg.lua ( 1.94 килобайт ) : 24
 

Автор: Net_Strannik 11.8.2010, 14:12

Привет, может помогу - в зависимости от того, что у тебя за хаб ?

Автор: Nickolya 11.8.2010, 17:04

Net_Strannik, прочитай название темы, ее раздел и содержание внимательно

Автор: Accelerator 11.8.2010, 18:53

Попробуй, но не знаю будет ли работать скрипт. С API верли не особо знаком, скрипт переделывал по мануалу к верли.

 WelcomMsg.lua ( 1.73 килобайт ) : 20
 

Автор: Herurg 11.8.2010, 19:29

На удивление работает но дело в том что вторая строчка про айпи адрес пишит ошибку...

[ Lua ERROR ] /etc/verlihub/scripts/WelcomMsg.lua:19: attempt to concatenate global 'sIP' (a boolean value)


Автор: Accelerator 11.8.2010, 19:39

Замени

Код
  sIP = VH:GetUserIP(user)
на
Код
sIP = GetIP(user) or ""

Автор: Herurg 11.8.2010, 19:44

Код
Lua ERROR ] /etc/verlihub/scripts/WelcomMsg.lua:18: attempt to call global 'GetIP' (a nil value)

Автор: Nickolya 11.8.2010, 23:56

Вернее будет так:

Код
  local _,sIP = VH:GetUserIP(user)
Верли еще возвращает переменную результата выполнения запроса, которая нам обычно не нужна и ее можно опустить пустым значением. + не забываем делать переменные локальными big_smile.gif Плюс в верли есть такая штука, почти все вызываемые функции имеют обратимость, но для этого не как в птоке надо сделать return true, а вернуть отличное от 1 значение, если мы не хотим останавливать выполнение функции, то необходимо вернуть 1, http://mydc.ru/r/?http://www.verlihub-project.org/doku.php?id=event_handler_functions помечены как Discardable. Потом необходимо добавлять | в конец отправляемых команд, так сделан верли... Так что выходит что пара функций у нас становится такими:
Код
function VH_OnUserLogin(user)
    VH:SendDataToUser("<"..Bot.."> Тема: '"..tTopic.Topic.."', установил "..tTopic.SetUser.." ("..tTopic.sDate..")|", user)
    local _,sIP = VH:GetUserIP(user)
    VH:SendDataToUser("<"..Bot.."> Привет "..user..", добро пожаловать на Дом.ru P2P сервис. Ваш IP: "..sIP.."|", user)
    return 1
end

function VH_OnParsedMsgChat(user,data)
    local cmd = data:match"%b<>%s+(%S+)"
    if cmd and cmd == "!topic" then
        local sMsg = data:match"%b<>%s+%S+%s+(.*)"
        if not sMsg then
            VH:SendDataToUser("<"..Bot.."> Вы не ввели текст топика|", user)
            return 0
        end
        tTopic = {
            sDate = os.date"%H:%M:%S / %d.%m.%y",
            SetUser = user,
            Topic = sMsg
        }
        SaveToFile(filename, tTopic, "tTopic")
    end
    return 1
end