Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
20.3.2009, 13:06
Сообщение
#261
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
1)
Цитата Сначала отсылаем то, что можно быстро отослать Фактически если смотреть мониторинг сервера то данные могут приходить с запозданием в секунду и причем SendToAll тот который написан(он фактически у мну пишется 2 раза т.к. забито 2 айпи) но всеравно все 2 раза приходят в чат скопом после ВСЕГО мониторинга а не его части 2)под птоха 3.6.0 ну вообще нивкакую function ChatArrival(tUser,sData) Unban("172.25.188.23") end Должна работать? |
|
|
20.3.2009, 13:49
Сообщение
#262
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Ну я же говорю, что данное сообщение ставится в "глобальную очередь", и оно не будет отсылаться, пока не бетед отослана вся "локальная очередь". Что тут не понятно? Не нравится, - я предложил альтернативный вариант.
|
|
|
20.3.2009, 14:56
Сообщение
#263
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
|
|
|
20.3.2009, 15:30
Сообщение
#264
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
|
|
|
31.3.2009, 13:00
Сообщение
#265
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Core.GetUserData(tUser, nValueId) - Добавляет или обновляет данные с указанным идентификатором в таблице пользователя. Возвращает nil в случае неудачи (пользователь оффлайн) или true в случае успеха.
Подскажите, как добавить то? Вообщем нужно следущее: При подключении изера идет проверка Core.GetUserValue(tUser,5). Если проверку не проходит, то надо чтобы эта строка (строка Email) у него отображалась пустой на хабе. Как это сделать? |
|
|
31.3.2009, 13:25
Сообщение
#266
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
В том-то и дело, что никак.
Функция GetUserData добавляет в таблицу tUser поле, которому отвечает идентификатор nValueId, если это поле не добавлялось ранее в эту таблицу. Если поле было добавлено ранее, то данная функция обновляет данные в этом поле. Внесение изменений самому в это поле невозможно. Единственный выход - это установка отправки полной строки MyINFO по таймеру. То, что ты хочешь реализовать легко реализуется в скриптах HexHub, так как там можно заблокировать действие любой команды со стороны клиента, в том числе и команды $MyINFO. Это можно было бы реализовать в PtokaX, если бы получаемые данные MyINFO от пользователя можно было бы блокировать в функции MyINFOArrival, допустим путём возвращения этой функцией значения true (как это делает, например, функция ChatArrival). К сожалению функционал ptokax не столь разнообразен, и это явный недостаток. |
|
|
31.3.2009, 13:39
Сообщение
#267
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Суть ,как ты наверное догадалася уже, была в том чтобы скрывать поля nValueId (к примеру если там реклама какая-нибудь), т.е. все что можно сделать это только отключать (ну и т.д.) юзеров, которые не прошли проверку?
Цитата Единственный выход - это установка отправки полной строки MyINFO по таймеру. Вот это не понял, поясни пожалуйста! З.Ы.: Есть хаб dchub://exclusive.maryno.net он на Птоке 0.4.1.1 на нем это как-то реализовано. Чем бы я не заполнял поля Description , на хабе оно пустое отображается (и так у всех) |
|
|
31.3.2009, 14:04
Сообщение
#268
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Нет. Я же сказал, что реализовать можно, но только по средствам таймера отсылки.
То есть смысл вот в чём. Описание, email, шара, тэг и тд. - все эти параметры хаб получает от пользователя через отправку на хаб пользователем команды $MyINFO. В PtokaX есть функция, которая перехватывает эту команду. Это функция MyINFOArrival. Эта функция выполняется каждый раз, когда пользователь отсылает на хаб команду $MyINFO. Команда $MyINFO отсылается клиентом пользователя на хаб автоматически, например, после обновления шары или после установки режима away, или после обновления любого другого параметра, который входит в команду $MyINFO. После отправки пользователем на хаб этой команды, команда поступает в функцию MyINFOArrival, но так как эта функция не блокирует эту команду, то после выполнения этой функции (MyINFOArrival), эта команда будет транслирована хабом всем пользователям хаба. Ну так вот, например, пользователь Вася отправляет эту команду: Код $MyINFO $ALL Вася Описание<StrgDC++ V:2.22,M:A,H:1/2/0,S:5>$ $Modem$email$26937284354$| Команда поступает в функцию MyINFOArrival в качестве параметра sData: Код $MyINFO $ALL Вася Описание<StrgDC++ V:2.22,M:A,H:1/2/0,S:5>$ $Modem$email$26937284354$| В этой функции мы пытаемся отправить всем пользователям другие данные, например, заменив email на 123: Код function MyINFOArrival(tUser, sData) sData = sData:gsub(sData:match"%$(.-)%$.-%$|$", "123") Core.SendToAll(sData) end Но после окончания выполнения этой функции, так как функция не блокирует пересылку этой команды всем пользователям, всем пользователям отправятся те самые данные, которые мы так тщательно пытались заменить. Поэтому выход из этой ситуации таков: переждать пока функция MyINFOArrival перешлёт эту команду всем пользователям и только после этого отсылать свои подкорректированные данные: Код local tTimers = {} local iInterval = ??? function MyINFOArrival(tUser, sData) local iIdTimer = TmrMan.AddTimer(iInterval, "Timer") tTimers[iIdTimer] = sData end function Timer() for i,w in pairs(tTimers) do Core.SendToAll(w:gsub(w:match"%$(.-)%$.-%$|$", "123")) tTimers[i] = nil TmrMan.RemoveTimer(i) end end При всём сказанном, колоссальное значение имеет выбор параметра iInterval, так как при большом количестве народа за это время (iInterval), если оно мало, данные команды $MyINFO могут ещё не быть разостланы всем пользователям. Поэтому данный параметр должен подстраиваться под количество народу на хабе и под производительность сервера. Поэтому реализовать можно, но сложно и геморно. |
|
|
31.3.2009, 14:11
Сообщение
#269
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Я там изменил свое сообщение, не поглядишь тот хаб который я указал, думаешь у них именно так реализовано?
Спасибо за ответ!!!! |
|
|
31.3.2009, 14:19
Сообщение
#270
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Ну это просто сделать: входишь в настройки -> Моя информация -> убираешь галочку со строки описания.
Убрать полностью - это не значит заменить |
|
|
31.3.2009, 14:39
Сообщение
#271
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
не не не! Как раз информацию то я вводил, как и многие другие там....но на хабе поля эти пустые когда подключаюсь)
Т.е. перед подключением я заполняю поле у себя Description, подключаюсь на хаб...а оно отображается пустым там. Вот именно так нужно...т.е. чтобы ни писали юзеры у себя в описании и в емайле...на хабе оно отображается пустым, как у них. |
|
|
31.3.2009, 14:59
Сообщение
#272
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Ну да. Это в настройках хаба ставиться. Именно там, где я и сказал. И чтобы ты не написал - оно отображаться ни для кого не будет.
|
|
|
31.3.2009, 15:07
Сообщение
#273
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Еще 1 вопрос:
При определенном событии (условии) нику посылается сообщение. К примеру Core.SendPmToNick(tUser.sNick, "Тест PM", "<"..tUser.sNick.."> "..whoTo..": "..chat.."" ) Ника такого, конечно не существует. Когда юзер отвечает ему в (в PM ессно) то его отключает от хаба. Не подскажите почему такое может происходить? Ну да. Это в настройках хаба ставиться. Именно там, где я и сказал. И чтобы ты не написал - оно отображаться ни для кого не будет. Спасибо, вот это я нуб!))) |
|
|
31.3.2009, 15:34
Сообщение
#274
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
С личкой шутки плохи))
Все операции с личными сообщениями пользователей не нужно производить! |
|
|
31.3.2009, 15:47
Сообщение
#275
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Я знаю что здесь запрещенны скрипты в которых это может быть использовано, однако скрипт я уже написал, выкладывать ессно не буду. Да и у себя не использую, но суть не в этом...я хочу понять почему при ответе этому не существующему нику, юзера отключает. Если например от ССкрипта написать - то при ответе не отключит, а здесь отключает...хочу понять почему, чисто для себя, ибо мне и не нужно впринципе чтобы туда кто-нить отвечал!!! Но понять хочется.
|
|
|
31.3.2009, 19:22
Сообщение
#276
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Цитата К примеру Core.SendPmToNick(tUser.sNick, "Тест PM", "<"..tUser.sNick.."> "..whoTo..": "..chat.."" ) Ник юзера не может содержать пробелов - это нарушение протокола NMDC. А отключает, видимо, за неизвестную команду. |
|
|
3.4.2009, 18:11
Сообщение
#277
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
из-за чего могут вылетать все скрипты с ошибкой "No space left on device"? помогает включить их обратно тока перезагрузка хаба
|
|
|
3.4.2009, 18:59
Сообщение
#278
|
|
Продвинутый участник Группа: Пользователи Сообщений: 173 Регистрация: 26.1.2009 Из: Saratov Пользователь №: 1 965 Спасибо сказали: 7 раз |
Подскажите как из string - число получить.
Суть в следующем. к примеру - временный бан. Меню - временно забанить. Щелкаем - вводим ник, время, причину. Время у нас получается string и поэтому когда я захватываю его и использую в BanMan.Ban мне ессно выдается ошибка. Как правильно делать? Заранее пасиба за ответ!. Вот необходимые части кода чтобы понять в чем проблема: Код Core.SendToUser(tUser, ""..hMenu.."\Временно забанить юзера$<%[mynick]> !ptban %[line:Введите ник] %[line:Введите время бана в минутах] %[line:Введите причину]|")
function ChatArrival(tUser, sData) sData = string.sub(sData,1,-2) local _,_,data = string.find(sData, "%b<>(.*)") local _,_,cmd = string.find(sData, "%b<>%s+(%S+)") if cmd == "!ptban" then local _,_,nick,sTime,sReason = string.find(sData, "%b<>%s+%S+%s+(%S+)%s+(%S+)%s+(.*)") local nick = Core.GetUser(nick) BanMan.TempBan(nick,sTime,sReason,sBot,false) return true end end |
|
|
3.4.2009, 19:20
Сообщение
#279
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
|
|
|
3.4.2009, 19:22
Сообщение
#280
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Код if cmd == "!ptban" then
local nick,sTime,sReason = sData:match"%b<>%s+%S+%s+(%S+)%s+(%d+)%s+(.*)" if nick then local nick = Core.GetUser(nick) BanMan.TempBan(nick,tonumber(sTime),sReason,sBot,false) return true end end |
|
|
Похожие темы
|
Сейчас: 26.11.2024, 23:25 |