myDC.ru

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

 
 
Ответить в данную темуНачать новую тему

> Объявления (Announcements), версия 1.1

Теги
Accelerator
сообщение 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
Описание: Публикация объявления администрацией хаба. Выводит объявления юзеру при подключении к хабу
Возможности:
    1. Показ объявления перед входом юзера
    2. Показы даты и времени, когда было установлено объявление
    3. Выбор кому будет доступно публиковать сообщения
    4. Вывод сообщения о новом объявлении всем
    5. Выбор сколько объявлений выводит при подключении пользователя
    6. Удаление объявления по номеру.
Для работы скрипта необходимо скачать модуль files здесь
Прикрепленные файлы
Прикрепленный файл  announcements.rar ( 1.5 килобайт ) Кол-во скачиваний: 94
 


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 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 всё оптимально, и там ничего менять не нужно.



И ещё раз повторю, что не нужно к каждому скрипту делать свой модуль. Модуль должен быть один для всех скриптов, и называться он должен в соответствии с теми функциями, которые он содержит.


Спасибо сказали:
Go to the top of the page
+Quote Post
Accelerator
сообщение 9.1.2010, 20:10
Сообщение #3


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Из: Челябинск
Пользователь №: 1 075
Спасибо сказали: 244 раза




Цитата(Setuper @ 9.1.2010, 21:44) *
И ещё раз повторю, что не нужно к каждому скрипту делать свой модуль. Модуль должен быть один для всех скриптов, и называться он должен в соответствии с теми функциями, которые он содержит.

Хорошо. Напишу единый модуль для всех своих скриптов big_smile.gif
Go to the top of the page
+Quote Post
Wariner
сообщение 9.1.2010, 20:20
Сообщение #4


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




Нет ты не совсем понял. будет несколько модулей которые использовать будут все скрипты!
Go to the top of the page
+Quote Post
Setuper
сообщение 9.1.2010, 21:04
Сообщение #5


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

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




Ща все сделаем)))

Ну вот совсем другое дело))))
Go to the top of the page
+Quote Post
-=FugeN=- 2
сообщение 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 удаляется, а с ним ВСЕ следующие, такое уже замечал не один раз..

у всех также? или только у меня одного?
Go to the top of the page
+Quote Post
Accelerator
сообщение 16.6.2010, 7:16
Сообщение #7


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Из: Челябинск
Пользователь №: 1 075
Спасибо сказали: 244 раза




Да, ошибка действительно есть.

Исправил. Скрипт в первом посте, пробуйте.
Go to the top of the page
+Quote Post

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

Collapse

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

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts (R)Объявления(R)
3 BADam 3 573 14.8.2014, 8:25 Посл. сообщение: BADam
No new Topic has attachmentsAnnouncements
API2 | Объявления
30 Accelerator 21 517 28.9.2010, 1:24 Посл. сообщение: Alexey

 



RSS Сейчас: 28.5.2020, 9:37