Объявления (Announcements), версия 1.1 |
Здравствуйте, гость ( Вход | Регистрация )
Объявления (Announcements), версия 1.1 |
9.1.2010, 18:40
Сообщение
#1
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Название: Announcements
Версия хаба: RusHub 2.0.5 и выше Версия lua плагина: 1.6 и выше Версия скрипта: 1.1 Автор: STRELOK Описание: Публикация объявления администрацией хаба. Выводит объявления юзеру при подключении к хабу Возможности:
2. Показы даты и времени, когда было установлено объявление 3. Выбор кому будет доступно публиковать сообщения 4. Вывод сообщения о новом объявлении всем 5. Выбор сколько объявлений выводит при подключении пользователя 6. Удаление объявления по номеру.
Прикрепленные файлы
|
|
|
9.1.2010, 19:44
Сообщение
#2
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Код local tUser = Core.GetUser(UID, 2047) local sUser = Core.GetUser(UID, 8) Первая строка уже содержит почти все биты, поэтому вторую строку незачем писать. Цитата 2^0 - ник (sNick) 2^1 - ip (sIP) 2^2 - UID (UID) 2^3 - профиль (iProfile) 2^4 - MyINFO строка (sMyINFO) 2^5 - пользовательские данные (sData) 2^6 - пользователь в оп-лите (bInOpList) 2^7 - пользователь полностью вошёл и добавлен в список пользователей (bInUserList) 2^8 - реальный порт (iPort) 2^9 - порт коннекта (iPortConn) 2^10 - мак адрес (sMacAddress) 2^11 - версия протокола (sVersion) В двоичной системе: 000000000001 - ник (sNick) 000000000010 - ip (sIP) 000000000100 - UID (UID) 000000001000 - профиль (iProfile) 000000010000 - MyINFO строка (sMyINFO) 000000100000 - пользовательские данные (sData) 000001000000 - пользователь в оп-лите (bInOpList) 000010000000 - пользователь полностью вошёл и добавлен в список пользователей (bInUserList) 000100000000 - реальный порт (iPort) 001000000000 - порт коннекта (iPortConn) 010000000000 - мак адрес (sMacAddress) 100000000000 - версия протокола (sVersion) Теперь, как перейти из двоичной системы в десятичную? Всё очень просто: отсчитываем справа позицию, на которой стоит единица и возводим двойку в эту степень (отсчёт позиции происходит с 0, а не с 1). То есть для поля ника нулевая позиция, 2^0 = 1. Код local tUser = Core.GetUser(UID, 1) Для профиля: третья позиция, следовательно для профиля 2^3 = 8 Код local tUser = Core.GetUser(UID, 8) А что если 1 не в одном поле, а в нескольких полях? Пример: 101010101010. Каждая позиция отвечает за добавление какого-то поля. Вот и смотрим по позициям какие поля добавятся. Для этих полей будет число (считаем справа на лева): 0*2^0 + 1*2^1 + 0*2^2 + 1*2^3 + 0*2^4 + 1*2^5 + 0*2^6 + 1*2^7 + 0*2^8 + 1*2^9 + 0*2^10 + 1*2^11 = 2730 То есть для того, чтобы в таблицу tUser поместить поля sIP, iProfile, sData, bInUserList, iPortConn и sVersion (именно на позициях этих полей стоит 1 в нашем бинарном числе), нужно в функции написать число 2730: Код local tUser = Core.GetUser(UID, 2730) Давай те теперь разберёмся чему же отвечает число 2047, которое используется в скрипте? Оно отвечает следующей бинарной строке: 011111111111. То есть это число добавит в таблицу tUser все поля, кроме поля sVersion. Каждому десятичному числу отвечает двоичное число. Например, мы рассматривали двоичное число 101010101010 и выяснили, что ему отвечает десятичное число 2730. А каком двоичному числу отвечает следующее десятичное число 2731? Естественно ему соответствует двоичное число 101010101011, то есть для числа 2731 в таблицу tUser добавятся теже самые поля, что и для числа 2730, но плюс ещё поле sNick. 1 = 000000000001 2 = 000000000010 3 = 000000000011 4 = 000000000100 5 = 000000000101 ... 2730 = 101010101010 2731 = 101010101011 2732 = 101010101100 2733 = 101010101101 2734 = 101010101110 2735 = 101010101111 и тд. Надеюсь, что я понятно объяснил работу с бинарными числами. Функция Core.GetUser достаточно хорошо оптимизирует код, если правильно ею распоряжаться и вносить в таблицу tUser только те поля, которые мы собираемся использовать в данной области видимости. У тебя в функции OnChat используется только 2 поля: поле sNick и поле iProfile, поэтому самый оптимальный код будет выглядеть так: Код local tUser = Core.GetUser(UID, 9) таблица tUser будет содержать только эти 2 поля (sNick и iProfile). В функции OnUserEnter всё оптимально, и там ничего менять не нужно.И ещё раз повторю, что не нужно к каждому скрипту делать свой модуль. Модуль должен быть один для всех скриптов, и называться он должен в соответствии с теми функциями, которые он содержит. |
|
|
9.1.2010, 20:10
Сообщение
#3
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
|
|
|
9.1.2010, 20:20
Сообщение
#4
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Нет ты не совсем понял. будет несколько модулей которые использовать будут все скрипты!
|
|
|
9.1.2010, 21:04
Сообщение
#5
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Ща все сделаем)))
Ну вот совсем другое дело)))) |
|
|
16.6.2010, 7:11
Сообщение
#6
|
|
Участник Группа: Пользователи Сообщений: 32 Регистрация: 10.5.2010 Из: Сергиев Посад Пользователь №: 6 820 Спасибо сказали: 6 раз |
немного кривой скрипт
пример: вот у меня 7 объявлений, я хочу удалить допустим третье 08:04] <Hub-Security> Объявление №3 удалено! [08:04] <Hub-Security> Объявление №3 удалено! [08:04] <Hub-Security> Объявление №3 удалено! [08:04] <Hub-Security> Объявление №3 удалено! 3 удаляется, а с ним ВСЕ следующие, такое уже замечал не один раз.. у всех также? или только у меня одного? |
|
|
16.6.2010, 7:16
Сообщение
#7
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Да, ошибка действительно есть.
Исправил. Скрипт в первом посте, пробуйте. |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
(R)Объявления(R) | 3 | BADam | 6 623 | 14.8.2014, 8:25 Посл. сообщение: BADam | |
Announcements API2 | Объявления |
30 | Accelerator | 33 701 | 28.9.2010, 1:24 Посл. сообщение: Alexey |
|
Сейчас: 23.11.2024, 0:09 |