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

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

MyDC.ru _ Kорзина _ Ищу Скрипт Приветствий

Автор: Рыжий 25.6.2008, 14:29

Выложите у ково есть токой скрипт Который приведствует каждый профель

типо того [Bot]PtokaX ••• Поприветствуем Оператора хаба "Nik"•••

Автор: Jaska 25.6.2008, 15:45

Цитата(Рыжий @ 25.6.2008, 17:29) *
Выложите у ково есть токой скрипт Который приведствует каждый профель

типо того [Bot]PtokaX ••• Поприветствуем Оператора хаба "Nik"•••


Подобного рода скрипт можно и самому написать. Ничего сложного нет. Объясню пошагово как же написать свой первы скрипт (Лучше начинать с приветствий)

Шаг 1.

Задаем имя бота. Допустим
Код
sBot = "Ваше_имя_бота"

либо если хотите чтоб ваш бот имел имя вашего системного бота
Код
sBot = frmHub:GetHubBotName()
frmHub: - обращение к вашему хабу
GetHubBotName - Что именно вам надо (Тем кто хоть чуть знает английский думаю проблем разобраться с API PtokaX не составит проблем)


Шаг 2.

Теперь нужно отыскать нужную нам функцию. Итак лезем в папке с PtokaX.exe и открываем Scripting-Interface.txt находим раздел Functions смотрим дальше. NewUserConnected(tUser) - вот что нам надо. Функция выполняется при коннекте юзера к хабу. Итак записываем
Код
function NewUserConnected(User)
tUser - таблица с информацией о подключившемся пользователе. Имеет вид:
tUser = {
"sNick" = Ник
"sIP" = ip-адрес итп }


Шаг 3.

Итак теперь нам надо разграничить т.е. "кому что отсылать". Обычно различные сообщения отсылаются в зависимотси от профиля зашедшего юзера. Чтож не будем менять традицию =) Создаем таблицу с сообщениями. Каждому профилю присваивается свое сообщение.
Код
sProfMessages = {
[0] = "Приветствую мастер",
[1] = "Приветствую ОПератор",
[2] = "Приветствую ВИП",
}

[0] - индекс, "Приветствую мастер" - его значение. И не забывайте после каждого значения ставить ","


Шаг 4.

Теперь надо чтобы хаб различил какой у вас профиль и отослал соответствующее сообщение. Пишем
Код
sProfMes = sProfMessages[tUser.iProfile]

sProfMes - произвольная переменная
sProfMessages - таблица содержащая сообщения профилей.
tUser.iProfile - ваш профиль.

Допустим вы мастер. Ваш профиль = 0 (по дефолту) Получается запись вида sProfMessages[0] что равно "Приветствую мастер" т.е. по индексу мы присваиваем переменной sProfMes значение индекса [0]

Шаг 5.

Теперь это сообщение надо отправить.
Код
if sProfMes then
tUser:SendData(sBot,""..sProfMes.." "..tUser.sName.."")
SendToAll(sBot,""..sProfMes.." "..tUser.sName.."")
end

tUser:SendData - отправить юзеру в чат (tUser:SendPM - в личку)
SendToAll - Отправить всем


if sProfMes then -- проверяем существует ли сообщение которые мы собираемся отправить юзеру. Если допустим будет подключаться регистр. юзеро профль у которого = 3 (по дефолту) то не имея это проверки бот выдаст ошибку потому что в таблице sProfMessages нет сообщения для профиля = 3

В PtolaX так же есть функция которая срабатывает при подключении оператора (OpConnected). Чем отличается оператор от простого пользователя. Для нас оператор - юзер с полномочиями для хаба оператор - юзер с "ключиком". Он выделяется среди всех прочих (цветом и местоположением в списке юзеров в клиенте DC++) К чем все это? Да к тому что в нынешнем состоянии скрипт будет отправлять сообщение только ВИПам (профиль == 2) потому что они не имеют ключика с функция срабатывает при их подключении. Для того чтобы наш скрипт работал полноценно приравняем
Код
OpConnected = NewUserConnected

Только так и никак иначе. Ибо функция NewUserConnected уже описана и содержит определенные действия. Написав NewUserConnected = OpConnected мы при заходе випа регюзера и гостя будем выполнять функция OpConnecyted которая у нас в скрипте не описана.

в конце концов получаем
Код
sBot = frmHub:GetHubBotName()

sProfMessages = {
[0] = "Приветствую мастер",
[1] = "Приветствую ОПератор",
[2] = "Приветствую ВИП",
}

function NewUserConnected(tUser)
    sProfMes = sProfMessages[tUser.iProfile]
    if sProfMes then
        tUser:SendData(sBot,""..sProfMes.." "..tUser.sName.."")
        SendToAll(sBot,""..sProfMes.." "..tUser.sName.."")
    end
end
OpConnected = NewUserConnected


--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Все описанное выше - результаты моего самообучения Lua. Я не профессионал и не могу утверждать что мои "приемы" идеальны. Я действую в общепринятых рамках. В данном мануале могут содержаться неточности и грубости. Прошу не судите строго я всего лишь хочу поделиться тем что сам понял и знаю.

Автор: Рыжий 25.6.2008, 18:11

Спосиба большое я понел с первого раза))0

Автор: MEXAHuK 4.11.2008, 16:01

Jaska, спасибо!
а можно тоже самое но только под АПИ2?

Автор: district 8.11.2008, 9:43

Есть старый-престарый скрипт Инфо пользователя от Semjon, 2005 года.
Я его немного подредактировал, приветствие у меня выглядит примерно так:

Цитата
[12:04:23]
Baш IP: **.**.**.**
Baш клиeнт: ApexDC++ , вepcия: 1.1.0
Bы нa 1 xaбax и y вac oткpытo 10 cлoтoв
Baшa шapa: 241.38 Gb., Baшe oпиcaниe: ...
Baш пpoфиль: Master
Oбщaя шapa xaбa: 19.327 Tb.
Ceйчac нa xaбe: 64 пoceтитeлeй.
[12:04:23] <БoтПpoщaйMoлoдocть>
Пpивeтcтвyю, [INT]district, paд видeть в дoбpoм
здpaвии! :-)


Дописал строчку по желанию автора топика:
Код
SendToAll(Bot, "Пришел "..v[2].." "..user.sName..", ура, товарищи! :-)")

Изменяйте под свои потребности, хотя по мне, так эта мельтешня с ивещениями в чате совсем ни к чему. (У меня такой строчки нет ) :-)

 Инфо_пользователя_API_1_.lua ( 1.33 килобайт ) : 11