myDC.ru

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

 
53 страниц V  « < 3 4 5 6 7 > »   
Ответить в данную темуНачать новую тему

> Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы)

Setuper
сообщение 14.10.2008, 22:40
Сообщение #81


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

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




Думаю тут и думать не над чем. Просто невнимательность и описка)))
Скорее всего это часть скрипта автора, поэтому всё уже продумано было)))
Go to the top of the page
+Quote Post
Wariner
сообщение 15.10.2008, 11:18
Сообщение #82


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

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




просто сначала сделал таблицу tUser но из-за Core.GetUserAllData(tUser) в неё заносилось много лишнего, поэтому исправил везде на tUsers. А в том месте не обратил внимание beat_brick.gif
Go to the top of the page
+Quote Post
Wariner
сообщение 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

Так вот при первом коннекте добавляется запись в файл, потом всё впорядке вплоть до перезагрузки скрипта. При этом при перезаходе он опять пишет Запись добавлена ну вообще не понимаю почему так(((

Вопрос снят сам понял свою глупость
Go to the top of the page
+Quote Post
Wariner
сообщение 22.10.2008, 21:40
Сообщение #84


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

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




Вот тут возникла проблема с поисковыми запросами:
Цитата(Setuper @ 23.8.2008, 13:59) *
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? может это стандартная надпись?
Go to the top of the page
+Quote Post
Nickolya
сообщение 22.10.2008, 22:36
Сообщение #85


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Direct Connect Protocol Documentation. Вот, выложил, думаю это поможет. Спрашивай если что, но думаю разберешься. big_smile.gif

ЗЫ: подпись реально не в тему...
ЗЗЫ: используй codebox'ы только когда надо показать много кода, чтобы он не загромождал пространство, при маленьком коде это как-то стремно смотрится (я про бб-код codebox, вместо него пользуй просто code)
Go to the top of the page
+Quote Post
Setuper
сообщение 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
big_smile.gif
Go to the top of the page
+Quote Post
Wariner
сообщение 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)


я понимаю что значит эта ошибка, но не понимаю в какой момент она возникает((( точнее она возникает почти каждую секунду(не влияя на работу скрипта).

ЗЫ опять я где то накасячил
Go to the top of the page
+Quote Post
Setuper
сообщение 24.10.2008, 21:50
Сообщение #88


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

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




хм... странно у меня работает данный код
Go to the top of the page
+Quote Post
Sephiroth_Lukaw
сообщение 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
Go to the top of the page
+Quote Post
Setuper
сообщение 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 отладчик))))))
Go to the top of the page
+Quote Post
Wariner
сообщение 25.10.2008, 11:27
Сообщение #91


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

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




Пардон, чего юзаем? beat_brick.gif
а ещё вот тут была проблема
Цитата
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(.*)")
Go to the top of the page
+Quote Post
Setuper
сообщение 25.10.2008, 14:31
Сообщение #92


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

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




В любом dc клиенте есть так называемый CMD отладчик. Для просмотра команд, которые отсылает и принимает клиент. Это я к слову о пассивных и активных поисках - как узнать какая команда была отослана на хаб.
Go to the top of the page
+Quote Post
Wariner
сообщение 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 тоже не помогло(((
Go to the top of the page
+Quote Post
Sephiroth_Lukaw
сообщение 26.10.2008, 21:14
Сообщение #94


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 307
Регистрация: 11.7.2008
Пользователь №: 173
Спасибо сказали: 31 раз




Может так надо?
Код
for i = 1, table.maxn(tUsers[tUser.sIP].OldNick) do
Go to the top of the page
+Quote Post
Wariner
сообщение 26.10.2008, 21:20
Сообщение #95


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

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




нет это часть функции выводящей инфу о пользователе IP вводится с чата! поэтому именно sIP
Go to the top of the page
+Quote Post
Sephiroth_Lukaw
сообщение 26.10.2008, 21:33
Сообщение #96


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 307
Регистрация: 11.7.2008
Пользователь №: 173
Спасибо сказали: 31 раз




Значение sIP проверял?
upd.
Код
>>>Nicks<<< = tTable[i]..", "
Код
local Niki = >>>Niks<<< or "Пользователь не использовал других ников"
Очепятка?-)
Go to the top of the page
+Quote Post
Setuper
сообщение 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
Go to the top of the page
+Quote Post
Wariner
сообщение 26.10.2008, 21:50
Сообщение #98


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

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




Цитата(Sephiroth_Lukaw @ 26.10.2008, 21:33) *
Очепятка?-)

Вот это лажа час с этим капался а опять всё дело в опечатке((((

2Setuper: можешь объяснить код который ты написал?

у меня есть вот такое описание
Цитата
table.concat (table [, sep [, i [, j]]])

Задан массив в котором все элементы – строки или числа, возвращает table[i]..sep..table[i+1] ··· sep..table[j]. Значение по умолчанию для sep – пустая строка, значение по умолчанию для i – 1, а для j – длина таблицы. Если i больше j, функция возвращает пустую строку.

но я его не понял(((
Go to the top of the page
+Quote Post
Sephiroth_Lukaw
сообщение 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"

блин...я плохо объясняю(((
Go to the top of the page
+Quote Post
Setuper
сообщение 26.10.2008, 22:47
Сообщение #100


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

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




concat - конкатенация. Переводится как склеивание (сложение) строк.
table.concat - конкатенация элементов таблицы
первый параметр - сама таблица (обязательный)
второй параметр - разделитель между складываемыми элементами (не обязательный, по умолчанию пустая строка)
третий параметр - индекс таблицы начального элемента конкатенации (не обязательный, по умолчанию 1)
четвёртый параметр - индекс таблицы элемента конца конкатенации (не обязательный, по умолчанию равен наивысшему индексу таблицы)

2Sephiroth_Lukaw: все хорошо объясняешь))))
Go to the top of the page
+Quote Post

53 страниц V  « < 3 4 5 6 7 > » 
Ответить в данную темуНачать новую тему
168 чел. читают эту тему (гостей: 168, скрытых пользователей: 0)
Пользователей: 0

Collapse

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

  Тема Ответов Автор Просмотров Последнее сообщение
No new ВАЖНО: Topic has attachmentsМодули для скриптов RusHub
26 Setuper 45 297 21.3.2017, 17:31 Посл. сообщение: Alexey
No new ВАЖНО: Topic has attachmentsВаши Вопросы И Предложения По Поводу Форума
447 Svyat 320 750 20.10.2015, 19:39 Посл. сообщение: Ksan
No New Posts От: Вопросы Разработчикам Скриптов
От темы с ID: 173
0 MIKHAIL 4 329 23.1.2015, 0:56 Посл. сообщение: MIKHAIL
No new Topic has attachmentsВопросы по протоколу NMDC
Делаю программу
26 Master255 29 668 12.1.2015, 0:38 Посл. сообщение: Master255
No New Posts Вопросы к Phazeus по Экзекутору
Мастер может забанить мастера, как решить в Экзекуторе?
1 AndreiDC 5 359 31.10.2014, 19:20 Посл. сообщение: Ksan
No New Posts От: Установка скриптов
От темы с ID: 5657
0 MIKHAIL 4 795 29.7.2014, 23:37 Посл. сообщение: MIKHAIL
No New Posts Установка скриптов
Нужна помощь по установке
2 _wRz_ 7 307 29.7.2014, 16:11 Посл. сообщение: Артём
No new От: Вопросы Разработчикам Скриптов
От темы с ID: 173
29 Wariner 25 937 28.1.2014, 13:11 Посл. сообщение: Alexey
No new Topic has attachmentsВопросы по RusHub
Технические вопросы
316 Jaska 268 406 19.12.2013, 13:59 Посл. сообщение: mod
No new Topic has attachmentsМелкие вопросы
44 Wariner 50 824 19.9.2013, 12:34 Посл. сообщение: Alexey
No New Posts От: Ваши Вопросы И Предложения По Поводу Форума
От темы с ID: 753
3 anila 9 112 28.3.2013, 16:02 Посл. сообщение: настя
No New Posts Единая платформа для скриптов
Обсуждения вопроса создания единой платформы скриптов
5 Enyby 9 032 18.1.2012, 20:15 Посл. сообщение: Setuper
No new Topic has attachmentsПеределка скриптов
Прошу помощи
47 Fe(one)X 41 281 26.12.2011, 15:04 Посл. сообщение: Ksan
No new Topic has attachmentsВопросы Разработчикам Скриптов с SQL
вопросы по скриптам (мелкие вопросы)
101 Wariner 62 148 6.12.2011, 0:34 Посл. сообщение: Enyby
No New Posts От: Вопросы по RusHub
От темы с ID: 2902
4 Otshelnik-Fm 8 457 19.10.2011, 9:23 Посл. сообщение: Mangust

 



RSS Сейчас: 23.11.2024, 15:18