myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Чат Комнаты, API2 | Возможно создать несколько чат комнат

Теги
Нет тегов для показа
Setuper
сообщение 17.10.2008, 12:38
Сообщение #41


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Название: Чат комнаты
Версия: 1.0
Версия API: 2
Код: открытый
Автор: Setuper
Описание: возможно создать несколько чат комнат. Чат комнаты могут быть "закрытыми", то есть для получения сообщений нужно войти, а могут быть открытыми, то есть сообщения отсылаются всем доступным профилям (как в ОпЧате, вы не входите постоянно в ОпЧат, если вы Оператор, то он вам доступен). При запуске скрипта создаётся файл ChatRoom.dbs, в котором по умолчанию создаются 3 комнаты: комната для операторов, комната для випов и общая закрытая комната. В файле ChatRoom.dbs множество настроек. Опишу их на общей комнате:
Код
["-MembersRoom-"] = { -- название комнаты
    ["sMsgExit"] = "*** Вы покинули комнату.",  -- сообщение, отправляемое пользователю после выхода из комнаты
    ["tAllow"] = { -- профили, которым доступна комната
        [0] = 1,
        [2] = 1,
        [3] = 1,
        [1] = 1,
        [-1] = 0,
    },
    ["sDescription"] = "[БОТ] Чат комната для пользователей", -- описание бота
    ["sAway"] = false, -- режим бота: true - away, false - не away
    ["sEmail"] = "setuper@gmail.com", -- email бота
    ["sClientName"] = "DCBOT", -- название клиента бота
    ["bKey"] = true, -- имеет ли ключик бот: true - имеет, false - не имеет
    ["sTagOption"] = "M:A,H:0/0/1,S:0", -- тэг бота (не трогать, если не знаешь что это)
    ["sMsgEnter"] = "*** Добро пожаловать в чат комнату!", -- сообщение пользователю при входе в чат комнату
    ["bMembers"] = true, -- надо ли входить(выходить) в чат комнату: true - надо, false - не надо
    ["iShareSize"] = 0, -- шара бота чат комнаты
    ["tMembers"] = { -- таблица членов чат комнаты (не изменять)
    },
    ["tVisible"] = { -- профили, которым видна чат комната в списке пользователей
        [0] = 1,
        [2] = 1,
        [3] = 1,
        [1] = 1,
        [-1] = 1,
    },
    ["bReturn"] = true, -- возвращаемое значение чат комнатой
},
добавлю, что если скрипт чат комнаты в списке скриптов стоит до скрипта антирекламы и параметр bReturn=true, то сообщения чат комнаты не будут отслеживаться антирекламой, в противном случае будут.
После первого запуска скрипта в файле настроек по умолчанию создаётся 3 комнаты. Вы можете менять количество комнат по смоему усмотрению.

Конечно возможности программирования на lua не ограничены. Данный код я вырвал из SBot'a и немного преобразовал, но большая часть возможностей чат комнат осталась в SBot'е (чат комната непосредственно в чате, а не в личке, чёрные и белые списки для любого пользователя, установка паролей на чат комнаты, антифлуд, антимат, антикапс, антиреклама в чат комнатах и тд. и тп.). Нету времени.

Для самостоятельного перевода скрипта под версию API 1 следует воспользоваться инструкцией: ИНСТРУКЦИЯ

Юзаем! big_smile.gif
Прикрепленные файлы
Прикрепленный файл  chatrooms.lua ( 10.17 килобайт ) Кол-во скачиваний: 511
 


Спасибо сказали:
Go to the top of the page
+Quote Post
3 страниц V  < 1 2 3  
Начать новую тему
Ответов
Setuper
сообщение 14.9.2010, 13:41
Сообщение #42


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Код
["sMsgEnter"] = [[много
много
очень много
строк]],


Спасибо сказали:
Go to the top of the page
+Quote Post
VNoName
сообщение 14.9.2010, 14:53
Сообщение #43


Участник
**

Группа: Пользователи
Сообщений: 43
Регистрация: 15.3.2009
Пользователь №: 2 605
Спасибо сказали: 11 раз




спасиб)
скажите что не правильно я делаю в функции которая при дисконекте юзера убирает его из списка пользователей в комнате

Код
function UserDisconnected(sNick)
            local zRoom="[R]Games"
            if not zRoom then
                return true
            end
            if tRooms[zRoom]["tMembers"][sNick] then
                tRooms[zRoom]["tMembers"][sNick]=nil
                tSys:Save(tRooms,"zRooms",tSys.sScriptsPath..tSys.hFile)
                if self.bShowEnterExit then self:SendToMembers(sNick,zRoom,"*** Вышел: "..sNick,zRoom) end
            end
    return true
end


и еще помогите исправить такую вещь:
когда отправляеш сообщение то тебе отображается нормально но собиседнику приходит с доп пробелом с переди,
если в tSys:SendToUser удалить пробел
Код
      
  if type(User)=="table" then
            Core.SendToUser(User,"$To: sNick From: "..Sender.." $<"..Nick.."> "..sMsg)
        else
            Core.SendToNick(User,"$To: sNick From: "..Sender.." $<"..Nick..">"..sMsg)   -- вот тут после >
        end

то сообщения от бота приходят с потеряным первым символом(
Go to the top of the page
+Quote Post
Nickolya
сообщение 15.9.2010, 9:15
Сообщение #44


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Код
function UserDisconnected(tUser)
    for sRoom, t in pairs(tRooms) do
        local sNick = tUser.sNick
        if tRooms[sRoom]["tMembers"][sNick] then
            tRooms[sRoom]["tMembers"][sNick]=nil
            tSys:Save(tRooms,"tRooms",tSys.sScriptsPath..tSys.hFile)
            tSys:SendToUser(sNick,tRooms[sRoom].sMsgExit,sRoom,sRoom)
            if tSys.bShowEnterExit then tSys:SendToMembers(sNick,sRoom,"*** Вышел: "..sNick,sRoom) end
        end
    end
end


Чтобы не было лишнего пробела замени
Код
    local _,_,sArg1,sArg2,sArg3=string.find(sData,"%$To:%s+(%S+)%s+From:%s+(%S+)%s+%$%b<>(.*)")
на
Код
    local _,_,sArg1,sArg2,sArg3=string.find(sData,"%$To:%s+(%S+)%s+From:%s+(%S+)%s+%$%b<>%s(.*)")


Спасибо сказали:
Go to the top of the page
+Quote Post
VNoName
сообщение 16.9.2010, 14:13
Сообщение #45


Участник
**

Группа: Пользователи
Сообщений: 43
Регистрация: 15.3.2009
Пользователь №: 2 605
Спасибо сказали: 11 раз




спасиб, щас заметил что юзеры видят команды которые отправили(

вот еще два вопроса:
1) юзер посылает сообщение в чат комнату, я сделал что всем кто в комнате это фраза приходит от другова ника
в функции tSys:SendToUser добавил:
Код
if tRooms[Sender]["nMembers"][Nick] then Nick=tRooms[Sender]["nMembers"][Nick] end

и все какбы работает, но отправителю сообщение возвращается с егоже ником собственно вопрос как отправителю прислать с изм ником?
2) сложно написать как надо поэтому приведу пример:
пользователь посылает комнду в чат комнату +command text
как поймать этот текст в условии или как переписать условие чтоб ловил?
Код
elseif self:String2Lower(sCmd)==self:String2Lower(self.sCmdName) then
            sRoom=self:CheckRoom(sA,sNick,sRoom)
            if tRooms[sRoom]["tMembers"][sNick] then
Go to the top of the page
+Quote Post
Nickolya
сообщение 21.9.2010, 17:29
Сообщение #46


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




VOVKT, то, что юзер отправляет кому-то в приват, он всегда видит в неизменном виде, в отличие от общего чата, так что отправлять ему его же текст не имеет смысла. И все команды и прочее, что идет в привате всегда будут видны "как есть". Что касается захвата, то в функции tSys:DoCmd идущие за командой даты ловятся как
Код
sA


Спасибо сказали:
Go to the top of the page
+Quote Post

3 страниц V  < 1 2 3
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new Topic has attachmentsКомнаты (чатрумы) Rooms
API1, API2 | Создание чат-комнат для Verlihub и PtokaX
61 Phazeus 79 152 3.4.2014, 2:07 Посл. сообщение: Inkvizitor_ks
No New Posts Расширенные комнаты
1 ShadoWx 6 438 7.2.2012, 13:13 Посл. сообщение: Артём
Closed Topic has attachmentsНужно сделать дроп юзеров с комнаты!
Помогайте
1 X-Sky 6 331 26.9.2009, 16:45 Посл. сообщение: Wariner
No New Posts Чат комнаты для стран
скрипт для Ptokax 4.1.1
12 apelsin 15 437 5.8.2009, 18:31 Посл. сообщение: apelsin
No New Posts От: Комнаты (чатрумы) Rooms
От темы с ID: 1443
2 Tarantul13 6 976 19.6.2009, 21:45 Посл. сообщение: Tarantul13
No New Posts От: Комнаты (чатрумы) Rooms
От темы с ID: 1443
0 Артём 4 947 27.5.2009, 20:40 Посл. сообщение: Артём
No New Posts От: Чат Комнаты
От темы с ID: 438
1 Tarantul13 6 095 18.4.2009, 16:16 Посл. сообщение: Setuper
No New Posts От: Чат Комнаты
От темы с ID: 438
1 Артём 4 252 26.1.2009, 15:18 Посл. сообщение: D'aspid
No New Posts От: Кроссплатформенный Скрипт Комнаты (чатрумы) Rooms
От темы с ID: 1443
-1 -- 5 411 -- Посл. сообщение: --

 



RSS Сейчас: 29.3.2024, 1:19