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

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

MyDC.ru _ Kорзина _ Whisper

Автор: district 17.11.2008, 3:51

Ребята.. ноги стер в поиске, где тут были выложены эти скрипты под старый и новый АПИ.
А может, и не здесь брал (?). Поэтому пришлось создать новый топик. Пусть администрация поправит, если что.

Поюзал тот, что для старого АПИ, нашел серьезнейший косяк.

Если юзер, кому отправляется сообщение, оффлайн, то отправляется репорт: такой-то юзер (в оригинале - "..who..") оффлайн.
Загадочный параметр who в строке репорта приводил в этом случае к ошибке, скрипт вылетал.
Пробовал так и сяк, плюнул, убрал это "ху" из репорта. Может, кто допишет, как правильно должно быть, чтобы и имя этого "оффлайн-юзера" отображалось тоже.
Вот рабочий вариант под API1.

 Whisper___API_1___.lua ( 1.47 килобайт ) : 5
 

Автор: Sephiroth_Lukaw 17.11.2008, 4:44

Цитата("district")
где тут были выложены эти скрипты под старый и новый АПИ
http://mydc.ru/topic108.html
А ошибки у меня не вылетают, хотя, проверки на nil там нет. И скрипт бъёт ошибку, лишь только, если скрипт используется без параметров или если перед ником поставить пробел.
У меня вот на что исправлено:
Код
    local _,_,cmd,sNext = data:find("^%b<> %p(whisper)(.*)")
        if cmd then
            local _,_,who,msg = string.find(sNext, "%s+(.-)%s+(.*)|")
            if msg == nil then
               user:SendData("<"..Bot.."> Вы не ввели текст сообщения")
            return 1
            end
            who = who or ""
за место
Код
        local _,_,cmd = data:find("^%b<> %p(whisper)")
        if cmd then
            local _,_,who,msg = string.find(data, "%b<> [%p][%a]+ ([^ ]+) ([^|]+)|")
мб, мой вариант чем-то плох.