От: Функции Для Разработчиков, От темы с ID: 334 |
Здравствуйте, гость ( Вход | Регистрация )
От: Функции Для Разработчиков, От темы с ID: 334 |
23.9.2008, 22:48
Сообщение
#1
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Цитата return type(t)=="teble" Это очепятка или я уже забыл как программировать на луа? |
|
|
23.9.2008, 23:08
Сообщение
#2
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Опечатка при переносе на форум. Вырезал функции из скрипта, что иногда проблемно)))
Просто у меня в скриптах немного по-другому. Все lua функции переопределены. Тогда в случае смены синтаксиса функций lua достаточно будет переписать всеголишь 1 файл скрипта, а не лазить по всем файлам огромного скрипта и изменять во всех файлах с не одной тысячью строк))) файл lua.lua: Код function tLua:Table(t) return type(t)=="table" end файл sys.lua: Код function tSys:Table(t) return tLua:Table(t) and t end
|
|
|
9.2.2009, 23:03
Сообщение
#3
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Есть функция, которая выполняется ещё раньше http://mydc.ru/topic915.html
|
|
|
9.2.2009, 23:10
Сообщение
#4
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Ну, тады так:
Код function SupportsArrival(user,data) Core.SendToUser(user, "Здесь пишем наше сообщение") end В этом случае сообщение будет отправлено даже если юзер не смог войти на хаб. PS. Жаль что нету LockArrival(), а то можно было бы ещё раньше. |
|
|
9.2.2009, 23:18
Сообщение
#5
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Разные функции - разное назначение. Функция SupportsArrival выполняется раньше, однако в этой функции определён только ip адрес пользователя, поэтому отправка по нику (Core.SendToNick) не возможна. Оптимально именно в этой функции проверять бан по ip, но к сожалению стандартный бан ptokax проверяется позже, что является недостатком данного хаба.
|
|
|
9.2.2009, 23:22
Сообщение
#6
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Цитата но к сожалению стандартный бан ptokax проверяется позже, что является недостатком данного хаба. А что это меняет? (в плане безопасности) |
|
|
9.2.2009, 23:24
Сообщение
#7
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Что за LockArrival()? Функция SupportsArrival - это первая функция, которая ловит первую команду пришедшую с клиента.
А что это меняет? (в плане безопасности) Это влияет на быстродействие. Зачем получать от клиента другие команды, когда можно "послать" его при первой же команде. |
|
|
9.2.2009, 23:25
Сообщение
#8
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Цитата Что за LockArrival()? Ну дык я и говорю - жаль что такой нету. |
|
|
9.2.2009, 23:29
Сообщение
#9
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
А такой функции и не может быть. Ты имеешь ввиду ловить команду $Lock? Так это бесполезно делать, ведь эта команда отсылается хабом клиенту. Хаб должен получить от клиента команду, тогда он будет уверен, что на другой стороне действительно кто-то есть - это предусматривает случай мгновенного отключения клиента по собственному желанию.
|
|
|
9.2.2009, 23:39
Сообщение
#10
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Цитата Это влияет на быстродействие. Зачем получать от клиента другие команды, когда можно "послать" его при первой же команде. Типа так: Код function SupportsArrival(user,data) if GetBan(user.sIP) then Core.Disconnect(user) end end ? |
|
|
9.2.2009, 23:42
Сообщение
#11
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Но только в функции SupportsArrival
|
|
|
10.2.2009, 0:54
Сообщение
#12
|
|
Активный участник Группа: Заблокированные Сообщений: 87 Регистрация: 16.10.2008 Пользователь №: 805 Спасибо сказали: 35 раз |
А можно подробнее? Я из этого обсуждения не понял, возможно ли проверить бан юзера в ValidateNickArrival.
И второе, возможно ли отправить сообщение юзеру, если он предоставил неверный пароль. Вот такой код почему-то не работает: Код function PasswordArrival(sUser, sData)
local _,_,password = sData:find("^$MyPass%s(%S+)|$") local pass = RegMan.GetReg(sUser.sNick).sPassword local msg="Wrong password for "..sUser.sNick if password ~= pass then Core.SendToOpChat("<"..SetMan.GetString(21).."> "..msg) end end |
|
|
10.2.2009, 1:16
Сообщение
#13
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
В том то и дело, что нельзя - это недостатки ptokax.
|
|
|
10.6.2009, 4:11
Сообщение
#14
|
|
Постоялец Группа: Пользователи Сообщений: 454 Регистрация: 17.10.2008 Из: Новосибирск Пользователь №: 825 Спасибо сказали: 90 раз |
Сравнительно простой способ улучшения сортировки чисел в таблицах, а точнее - числовых выражений IP-адресов и значений os.time. Было замечено, что функция table.sort хорошо сортирует строки, и не очень хорошо - числа. Поэтому на период сортировки к строке, содержащей нуждающийся в сортировке числовой параметр, спереди добавляется через какой-то разделительный символ, например, $, составная строка, содержащая а)букву, соответствующую разрядности сортируемого числа и б)непосредственно буквенное выражение сортируемого числа. После сортировки, для непосредственного показа, эта добавленная строка и разделительный символ - отрезаются.
В приведенном примере разрядность ограничена цифрой 10, этого достаточно для работы с IP-адресами и современными значениями os.time, если потребуется увеличить охват, нужно просто добавить в таблицу соответствующие числа и буквы. Код -- Таблица и функция для улучшенной сортировки чисел в таблицах :
local tNums = { ["0"] = "A", ["1"] = "B", ["2"] = "C", ["3"] = "D", ["4"] = "E", ["5"] = "F", ["6"] = "G", ["7"] = "H", ["8"] = "I", ["9"] = "J", ["10"] = "K",} function NumToLetter(n) local str = tostring(n) local r = tNums[tostring(str:len())] for S in string.gmatch(str, "%S") do r = r..tNums[S] end return r end |
|
|
10.6.2009, 11:58
Сообщение
#15
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Что-то я не понял. Что значит плохо сортирует числа?
Сортировка - это очень медленное место в любой программе, а ты делаешь его ещё медленнее. Вот накатал код. Всё отлично сортируется. Не понимаю какие у тебя проблемы: Код tTbl = {
{ 168460408, "param_1", }, { 168460288, "param_2" }, { 172883967, "param_3" }, { 168460543, "param_4", }, } Core.SendToAll"До сортировки:" for k, v in ipairs(tTbl) do Core.SendToAll(tostring(v[1])..", "..v[2]) end table.sort(tTbl, function(a, b) return a[1] > b[1] end) Core.SendToAll"После сортировки по убыванию:" for k, v in ipairs(tTbl) do Core.SendToAll(tostring(v[1])..", "..v[2]) end |
|
|
10.6.2009, 17:38
Сообщение
#16
|
|
Постоялец Группа: Пользователи Сообщений: 454 Регистрация: 17.10.2008 Из: Новосибирск Пользователь №: 825 Спасибо сказали: 90 раз |
Речь шла о сортировке чисел в строковом виде, как элементов индексированных таблиц, такой вот частный случай. Буду разбираться дальше, а предыдущий мой пост и этот пост прошу удалить.
|
|
|
6.5.2010, 13:30
Сообщение
#17
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
[Тут мышь погрызла часть сообщения...]
Написал ответ, отправил и удалил, чтоб не продолжать эту уже не очень актуальную тему. А то получается оффтопик уже. |
|
|
14.7.2010, 21:32
Сообщение
#18
|
|
AmxModx Scripter Группа: Пользователи Сообщений: 302 Регистрация: 2.12.2008 Из: Королев Пользователь №: 1 283 Спасибо сказали: 127 раз |
Такая тема уже есть в разделе про PtokaX, может быть перенести её в этот раздел, как и похожие темы, например Несколько Слов О Захватах И Регулярных Выражениях, Объектно-Ориентированное Программирование (ООП) в LUA и тд
|
|
|
15.7.2010, 0:44
Сообщение
#19
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Есть тема 1 в 1 с предложенной - Функции Для Разработчиков
Думаю, лучше первое сообщение отсюда перетащить туда, а не плодить темы, чтоб потом не искать там-сям.. |
|
|
22.2.2014, 15:22
Сообщение
#20
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
del
|
|
|
Похожие темы
|
Сейчас: 26.11.2024, 20:57 |