Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
14.10.2008, 22:40
Сообщение
#81
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Думаю тут и думать не над чем. Просто невнимательность и описка)))
Скорее всего это часть скрипта автора, поэтому всё уже продумано было))) |
|
|
15.10.2008, 11:18
Сообщение
#82
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
просто сначала сделал таблицу tUser но из-за Core.GetUserAllData(tUser) в неё заносилось много лишнего, поэтому исправил везде на tUsers. А в том месте не обратил внимание
|
|
|
16.10.2008, 19:41
Сообщение
#83
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
опять же тот же самый код
CODE function OnStartup() sPath = Core.GetPtokaXPath():gsub("/", "\\").."scripts\\Protector\\" sData = sPath.."Data\\" sText = sPath.."Text\\" sUser = sData.."User.tbl" if loadfile(sUser) then dofile(sUser) end tUsers = {} end function UserConnected(tUser) Core.GetUserAllData(tUser) local Shara = tUser.iShareSize or 0 if tUsers[tUser.sIP] == nil then tUsers[tUser.sIP] = {} tUsers[tUser.sIP].Nick = tUser.sNick ... WriteTable(tUsers, "tUsers", sUser) Core.SendToUser(tUser, "Запись добавлена") else Core.SendToUser(tUser, "Ты уже есть в таблице") end end Так вот при первом коннекте добавляется запись в файл, потом всё впорядке вплоть до перезагрузки скрипта. При этом при перезаходе он опять пишет Запись добавлена ну вообще не понимаю почему так((( Вопрос снят сам понял свою глупость
|
|
|
22.10.2008, 21:40
Сообщение
#84
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Вот тут возникла проблема с поисковыми запросами:
1. Клиент отправляет серверу запрос на поиск ("$Search ip:порт строка_поиска|"). а у меня получается Цитата $Search ip:порт фигня строка_поиска вот в одном из поисков фигня равна = F?T?0?1? это код скрипта Код function SearchArrival(tUser, sData) sData = string.sub(sData,1,-2) local _,_,seach = string.find(sData, "$Search %d*%.%d*%.%d*%.%d*:%d*(.*)") Core.SendToUser(tUser, "<"..sBot.."> "..seach) end как мне от этого избавится? проверил на двух хабах 0.4.0.0 и 0.4.1.1 и везде появляется F?T?0?1? может это стандартная надпись? |
|
|
22.10.2008, 22:36
Сообщение
#85
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Direct Connect Protocol Documentation. Вот, выложил, думаю это поможет. Спрашивай если что, но думаю разберешься.
ЗЫ: подпись реально не в тему... ЗЗЫ: используй codebox'ы только когда надо показать много кода, чтобы он не загромождал пространство, при маленьком коде это как-то стремно смотрится (я про бб-код codebox, вместо него пользуй просто code) |
|
|
22.10.2008, 23:42
Сообщение
#86
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Согласно протоколу dc на сегодняшний день существует следующая конфигурация запроса клиента на поиск:
A?B?C?D где A и B могут принимать следующие значения: F или T C и D - это числа. C это размер в байтах, D - это тип файла выражение A?B? может принимать одно из следующих значений: F?T? - поиск точного размера файла (в качестве размера выступает параметр C); T?F? - поиск файла размером не менее, чем параметр C; T?T? - поиск файла размером не более, чем параметр C. параметр D (тип файла) может принимать одно из следующих значений: 1 - любой файл; 2 - аудио файл; 3 - архив; 4 - документ; 5 - испольняемый файл; 6 - картинка; 7 - видео; 8 - папка; 9 - TTH; 10 - CD/DVD образы. Примеры: $Search 10.10.10.10:6789 F?T?0?1?qwerty| - поиск qwerty среди всех файлов любого размера; $Search 10.10.10.10:6789 F?T?0?2?qwerty| - поиск qwerty среди аудио файлов любого размера; $Search 10.10.10.10:6789 F?T?0?9?TTH:ZELTUPSSMY56CSJGYNCVABGTGDKHP6DHCVNXS6| - поиск по хешу TTH файлов любого размера; $Search 10.10.10.10:6789 T?F?4194304?1?qwerty| - поиск qwerty среди всех файлов размером не менее 4 Мб; $Search 10.10.10.10:6789 T?T?1048576?1?qwerty| - поиск qwerty среди всех файлов размером не более 1 Мб; $Search 10.10.10.10:6789 F?T?1048576?8?qwerty| - поиск qwerty среди папок размером в точности 1 Мб. Кстате говоря $Search ip:port - так будет только в случае активного поиска, в случае же пассивного поиска будет немного иначе, а именно $Search Hub:nick |
|
|
24.10.2008, 20:57
Сообщение
#87
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
а что в этом коде не так?
Код function SearchArrival(tUser, sData) sData = string.sub(sData,1,-2) local _,_,seach = string.find(sData, "$Search %d*%.%d*%.%d*%.%d*:%d*%s%u%p%u%p%d%p%d%p(.*)") seach = string.gsub(seach, "%p", " ") seach = tSys:String2Lower(seach) Цитата [21:51] Синтаксис TopSeach.lua:25: bad argument #1 to 'gsub' (string expected, got nil) я понимаю что значит эта ошибка, но не понимаю в какой момент она возникает((( точнее она возникает почти каждую секунду(не влияя на работу скрипта). ЗЫ опять я где то накасячил |
|
|
24.10.2008, 21:50
Сообщение
#88
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
хм... странно у меня работает данный код
|
|
|
25.10.2008, 1:01
Сообщение
#89
|
|
Освоившийся участник Группа: Пользователи Сообщений: 307 Регистрация: 11.7.2008 Пользователь №: 173 Спасибо сказали: 31 раз |
Цитата [03:59] Sephiroth_Lukaw (**.**.**.**) > $Search Hub:Sephiroth_Lukaw F?T?0?1?ж| Пассивный режим - [03:59] Синтаксис D:\Установленное\Test Ptokax\scripts\l.lua:4: bad argument #1 to 'gsub' (string expected, got nil)Цитата [04:00] Sephiroth_Lukaw (**.**.**.**) > $Search **.**.**.**:32128 F?T?0?1?ьь| Активный режим - Нет синтаксических ошибок в файле скрипта l.lua
|
|
|
25.10.2008, 6:46
Сообщение
#90
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Код function SearchArrival(tUser, sData) sData = string.sub(sData,1,-2) local _,_,seach = string.find(sData, "$Search .-%s%u%p%u%p%d%p%d%p(.*)") seach = string.gsub(seach, "%p", " ") seach = tSys:String2Lower(seach) ... end юзаем CMD отладчик)))))) |
|
|
25.10.2008, 11:27
Сообщение
#91
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Пардон, чего юзаем?
а ещё вот тут была проблема Цитата local _,_,seach = string.find(sData, "$Search .-%s%u%p%u%p%d%p%d%p(.*)") изменил на Цитата local _,_,seach = string.find(sData, "$Search .-%s%u%p%u%p%d%p%d+%p(.*)")
|
|
|
25.10.2008, 14:31
Сообщение
#92
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
В любом dc клиенте есть так называемый CMD отладчик. Для просмотра команд, которые отсылает и принимает клиент. Это я к слову о пассивных и активных поисках - как узнать какая команда была отослана на хаб.
|
|
|
26.10.2008, 20:54
Сообщение
#93
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
есть таблица
Код tUsers = { ["10.2.100.240"] = { ["OldNick"] = { [1] = "ыыыы", [2] = "ыыыы2", }, }, } есть код Код for i = 1, table.maxn(tUsers[sIP].OldNick) do local tTable = tUsers[tUser.sIP].OldNick Nicks = tTable[i]..", " end local Niki = Niks or "Пользователь не использовал других ников" msg = msg.."\tСтарые ники: "..Niki.."\r\n".. всегда пишет "Пользователь не использовал других ников" Что то совсем запарился не понимаю как сделать((( после проверки оказалось table.maxn(tUsers[sIP].OldNick) = nil !!! пробовал также через for i,v in pairs(tTable) do тоже не помогло((( |
|
|
26.10.2008, 21:14
Сообщение
#94
|
|
Освоившийся участник Группа: Пользователи Сообщений: 307 Регистрация: 11.7.2008 Пользователь №: 173 Спасибо сказали: 31 раз |
Может так надо?
Код for i = 1, table.maxn(tUsers[tUser.sIP].OldNick) do
|
|
|
26.10.2008, 21:20
Сообщение
#95
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
нет это часть функции выводящей инфу о пользователе IP вводится с чата! поэтому именно sIP
|
|
|
26.10.2008, 21:33
Сообщение
#96
|
|
Освоившийся участник Группа: Пользователи Сообщений: 307 Регистрация: 11.7.2008 Пользователь №: 173 Спасибо сказали: 31 раз |
Значение sIP проверял?
upd. Код >>>Nicks<<< = tTable[i]..", " Код local Niki = >>>Niks<<< or "Пользователь не использовал других ников" Очепятка?-)
|
|
|
26.10.2008, 21:49
Сообщение
#97
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
я бы написал так:
Код msg = msg.."\tСтарые ники: "..(tUsers[tUser.sIP].OldNick and table.concat(tUsers[tUser.sIP].OldNick,", ") or "Пользователь не использовал других ников").."\r\n".. этот код выполняется быстрее.кстате, лучше использовать Код for i,v in pairs(tTable) do чем Код for i = 1, table.maxn(tTable) do
|
|
|
26.10.2008, 21:50
Сообщение
#98
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Очепятка?-) Вот это лажа час с этим капался а опять всё дело в опечатке(((( 2Setuper: можешь объяснить код который ты написал? у меня есть вот такое описание Цитата table.concat (table [, sep [, i [, j]]]) Задан массив в котором все элементы – строки или числа, возвращает table[i]..sep..table[i+1] ··· sep..table[j]. Значение по умолчанию для sep – пустая строка, значение по умолчанию для i – 1, а для j – длина таблицы. Если i больше j, функция возвращает пустую строку. но я его не понял((( |
|
|
26.10.2008, 22:33
Сообщение
#99
|
|
Освоившийся участник Группа: Пользователи Сообщений: 307 Регистрация: 11.7.2008 Пользователь №: 173 Спасибо сказали: 31 раз |
ммм...Возвращает весь массив(table[i+1]) разделяя каждый элементом - sep(separation) - Разделителем
i - С какого элемента начинать(по умолчанию 1) j - До куда(по умолчанию - длина таблицы) Всё, кроме table - не обязательные параметры. Т.к. table[i+1] - то, нельзя, что бы ключи в таблице были не числовые, так же, нельзя, что бы какой-нибудь элемент был опущен, т.е. Код tTable = { [1] = "Слово 1", [3] = "Слово 2" , [4] = "Слово 3", } return table.concat (tTable,">_<") -- Не прокатит, нету индекса с номером 2 return table.concat (tTable,">_<", 3, 4) -- Вернёт: "Слово 2>_<Слово 3" return table.concat (tTable,">_<", 4, 4) -- Вернёт: "Слово 3" table.concat (table [, sep [, i [, j]]]) Код tTable = { "Слово 1", "Слово 2" , "Слово 3", } return table.concat (tTable,">_<") -- Вернёт: "Слово 1>_<Слово 2>_<Слово 3" return table.concat (tTable,">_<", 2) -- Вернёт: "Слово 2>_<Слово 3" return table.concat (tTable,">_<", 2, 2) -- Вернёт: "Слово 2" блин...я плохо объясняю((( |
|
|
26.10.2008, 22:47
Сообщение
#100
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
concat - конкатенация. Переводится как склеивание (сложение) строк.
table.concat - конкатенация элементов таблицы первый параметр - сама таблица (обязательный) второй параметр - разделитель между складываемыми элементами (не обязательный, по умолчанию пустая строка) третий параметр - индекс таблицы начального элемента конкатенации (не обязательный, по умолчанию 1) четвёртый параметр - индекс таблицы элемента конца конкатенации (не обязательный, по умолчанию равен наивысшему индексу таблицы) 2Sephiroth_Lukaw: все хорошо объясняешь)))) |
|
|
Похожие темы
|
Сейчас: 27.11.2024, 3:26 |