Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ DC-клиенты _ Greylink API userinfo

Автор: Lamo 16.5.2012, 21:14

Доброе время сутак)
В dc-клиенте Greylink есть такая шляпа - GetUserInfo(uid) -- что то вроде апи
в скриптах часто вижу userinfo.ME, userinfo.NI
собственно, что означает ME, NI? и почему нельзя выполнить такую конструкцию, чтобы узнать что она возвращает

Код
userinfo = DC():GetUserInfo(cid)
DC(): SendPublicMessage(adres, userinfo)


привел к tostring эту переменную userinfo, вернула nil
видимо что то надо писать в этом параметре (cid) и что он означает вообще?

Автор: Setuper 17.5.2012, 9:39

Думаю для начала следовало бы прочитать вот это: http://mydc.ru/r/?http://greylink.freewebspace.com/lua.html

ME - это признак тебя (если этот юзер ты, то равно "1", иначе nil).
NI - это ник юзера.

Функция DC():GetUserInfo(uid) возвращает объект "юзер" по его uid.
uid можно получить из аргумента функции-события:

Код
dcpp = {}
function dcpp.OnPublicMessage(uid, data)
  local user = DC():GetUserInfo(uid)
  DC():SendPublicMessage(user.HL, "test")
end

Автор: Enyby 17.5.2012, 9:46

1. http://mydc.ru/r/?http://inethub.olvi.net.ua/greylink/lua.html
2.

Код
local hub_name = dc_huburl -- "127.0.0.1"
local users = DC():GetUsers(hub_name)
local user = DC():GetUserInfo(users[math.random(1,#users)])
DC():SendPublicMessage(hub_name, '---------------------------')
for k,i in pairs(user) do
    DC():SendPublicMessage(hub_name, k..' = '..i)
end
DC():SendPublicMessage(hub_name, '---------------------------')


3.
ME - флаг того, что этот юзер - ты.
NI - ник юзера.
DE - описание
VE - версия клиента
TAG - тэг клиента
SSshort - краткое название шары
SS - шара в байтах
LOC - строка месторасположения
I4 - IPv4 адрес
HL - адрес хаба
OP - флаг оператора
EM - e-mail
SL - слоты

4. Вот еще описание этих значений:
http://mydc.ru/index.html?showtopic=1983&view=findpost&p=15998


UPD:
Долго писал. Setuper обскакал. big_smile.gif

Автор: Lamo 19.5.2012, 12:00

Цитата(Setuper @ 17.5.2012, 10:39) *
Код
dcpp = {}
function dcpp.OnPublicMessage(uid, data)
  local user = DC():GetUserInfo(uid)
  DC():SendPublicMessage(user.HL, "test")
end


еще вопрос такой, как эту функцию завершить? она выполняется я так понял бесконечное число раз(выводит строку test)
а как сделать так чтобы она выполнила только одну итерацию(один вывод test) и завершилась?

Автор: Enyby 20.5.2012, 7:08

Код
dcpp = {}
function dcpp.OnPublicMessage(uid, data)
  local user = DC():GetUserInfo(uid)
  DC():SendPublicMessage(user.HL, "test")
  dcpp = {}
end


или
Код
dcpp = {}
flag = true
function dcpp.OnPublicMessage(uid, data)
  if flag then
    local user = DC():GetUserInfo(uid)
    DC():SendPublicMessage(user.HL, "test")
    flag = false
  end
end