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

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

MyDC.ru _ Готовые скрипты для PtokaX _ Гостевая Книга

Автор: Strannik 24.8.2008, 19:28

Гостивая книга под API 2
Возможно оставить новости и отзовы в гостивой книге

 GuestBook_newapi.rar ( 6.79 килобайт ) : 291
 

Автор: Cjay 27.8.2008, 16:02

http://mydc.ru/topic312.html
кажется я книгу тут брал, так вот в ней полно ошибок...

Автор: Wariner 28.8.2008, 14:07

Вот моя версия этого скрипта(API2). Потестете, если что не так отписывайте поправлю)))

 GuestBook_by_Wariner.lua ( 7.21 килобайт ) : 94
 

Автор: Cjay 29.8.2008, 8:37

В общем посмотрел версию скрипта гостевой книги Wariner`а и решил доделать ту что у меня была big_smile.gif
Вот два скрипта под API2 (Тестировал на птохе 0.4.1.1 работали без ошибок, если что пишите):
1) Гостевая книга
2) Гостевая книга для музыкальных хабов

 GuestBook_newapi.lua ( 9.1 килобайт ) : 163
 MusicGuestBook_newapi.lua ( 11.7 килобайт ) : 54
 

Автор: Wariner 29.8.2008, 21:16

Только думаю вот это:

CODE
path = Core.GetPtokaXPath():gsub("/", "\\").."scripts\\dats\\" -- имя папки
gbfile="scripts/dats/guestbook.dat" --имя файлв
...
nfile="scripts/dats/news.dat" -- директория для файла
...
rfile="scripts/dats/requests.dat" -- директория для файла

должно быть вот так:
CODE
path = "scripts/dats" -- имя папки
gbfile=path.."guestbook.dat" --имя файлв
...
nfile=path.."news.dat" -- директория для файла
...
rfile=path.."requests.dat" -- директория для файла

А то получается что скрипт создаёт в папке scripts ещё одну папку scripts still_dreaming.gif

2Cjay чем не понравился мой скрипт? Мож какие лаги? отпиши интересно)))

Автор: Cjay 30.8.2008, 8:41

Цитата
А то получается что скрипт создаёт в папке scripts ещё одну папку scripts

Гхым О_о а у меня не создавало, причем более того, не прописываю путь gbfile="scripts/dats/guestbook.dat", оставляю как gbfile=path.."guestbook.dat" и у меня чЮдесным образом в папке scripts возникает файлик datsguestbook.dat eyes_droped.gif

2Wariner: скажем так, нашел ошибки в своем скрипте и решил их всё-таки ипсравить =) Твой скрипт на работоспобность не проверял, плюс в нём нет разделения по разделам, кто может добавлять или удалять или не может
Мне просто надо было чтобы, например, отзывы могли писать все, а удалять только админ и в то же время новости могли писать и удалять, к примеру все зарегенные. Твой скрипт перелопачивать не захотелось...

Автор: NikseR 16.11.2008, 14:03

Wariner, спасибо, отличный скрипт. При включении и перезапуске не вызывает командную строку, как это делается во всех остальных выложенных тут версиях и как это было на API1. Так даже лучше. Вот только одна просьба: не мог бы ты его чуточку модернизировать, чтобы при добавлении записи в гостевую книгу (также отзывов и предложений) админам посылалось уведомление? Там всего одна строчка, но я не знаю, как ее переделать под API2. Вот как это выглядело на API1:

Код
                -- // --
                SendPmToOps(Bot,"*** "..user.sName.." добавил запись в гостевую книгу:  "..entry)
                -- // --

Автор: Setuper 16.11.2008, 14:11

Код
Core.SendPmToOps(Bot,"*** "..user.sName.." добавил запись в гостевую книгу:  "..entry)


А что касается путей, то их следует прописывать так:
Код
path = Core.GetPtokaXPath().."scripts/dats/" -- имя папки
gbfile=path.."guestbook.dat" --имя файлв
...
nfile=path.."news.dat" -- директория для файла
...
rfile=path.."requests.dat" -- директория для файла
этот код будет работать на всех версиях с апи2, и даже не будет зависеть от оси (win или unix).

Автор: NikseR 16.11.2008, 14:43

Setuper, пробовал добавить эту строчку - сообщения опам не посылаются и выводит такое сообщение:

Цитата
[14:40] Синтаксис D:\PtokaX 0.4.1.1\scripts\GuestBook_by_Wariner.lua:53: attempt to index global 'user' (a nil value)

Может что еще в скрипте изменить надо?
Код
    if tProfiles[sUser.iProfile]==1 then             -- 53 строка

Автор: Wariner 16.11.2008, 17:15

ищи разницу в моём скрипте sUser Поэтому всё как написал Setuper только sUser.sName

Автор: NikseR 16.11.2008, 17:35

Цитата(Wariner @ 16.11.2008, 17:15) *
ищи разницу в моём скрипте sUser Поэтому всё как написал Setuper только sUser.sName

Пробовал и так. В таком случае пишет вот такую ошибку:
Код
[17:32] Синтаксис D:\PtokaX 0.4.1.1\scripts\GuestBook_by_Wariner.lua:53: attempt to concatenate global 'entry' (a nil value)

Автор: Setuper 16.11.2008, 17:41

ну так разберись, что это за переменная entry, где она вводится, её область действия, и туда ли ты вообще впихиваешь эту строчку

Автор: Wariner 16.11.2008, 17:53

А ещё на API 2 не sName, а sNick

Автор: NikseR 16.11.2008, 17:55

Цитата(Setuper @ 16.11.2008, 17:41) *
ну так разберись, что это за переменная entry, где она вводится, её область действия, и туда ли ты вообще впихиваешь эту строчку

Запихиваю правильно. А вот переменная entry действительно в новом скрипте не обозначена, поэтому и такая ошибка. Боюсь сам я не смогу правильно перенести код из API1 в API2? да и какие именно кусочки не знаю. Может кто подскажет, а лучше зальет уже новый переделанный скрипт с этой функцией. Вот выкладываю места, где она встречается:
Код
function addshit(user,data,container,file,cmdlevel,env)
    if cmdlevel~=0 then
        if CheckUserLevel(user) >= cmdlevel then
            local container=loadshit(file)
            number=number+1
            local _,_,entry=string.find(data,"%b<>%s+%S+%s+(.*)")
            if entry then
                container[number]=os.date("%c").."|"..user.sName.."|"..entry
                saveshit(container,file)
                user:SendData(parseenv(user,env,Bot).."Ваша запись была успешно добавлена.")
                -- // --
                SendPmToOps(Bot,"*** "..user.sName.." добавил запись в гостевую книгу:  "..entry)
                -- // --
            else
                user:SendData(parseenv(user,env,Bot).."Вы забыли ввести текст!")
            end
            container={}
        else
            user:SendData(parseenv(user,env,Bot).."У вас нет соответствующих прав для использования данной команды! |")
        end
    else
        user:SendData(parseenv(user,env,Bot).."Данная команда не доступна.")
    end
end

и чуть ниже в другой функции:
Код
function showshit(user,container,wtf,file,cmdlevel,env)
if cmdlevel~=0 then
if CheckUserLevel(user) >= cmdlevel then
local container=loadshit(file)
local msg="\r\nПеред вами "..wtf..":\r\n\r\n"
if number>0 then
for i=1,number do
s,e,who,when,entry=string.find(container[i], "(.+)|(.+)|(.+)")
msg=msg..i..".\t"..who.." - "..when.." ---> "..entry.."\r\n"
end
else
msg=msg.."Ничего нет!"
end
user:SendPM(Bot,msg)
else
user:SendData(parseenv(user,env,Bot).."У вас нет соответствующих прав для использования данной команды! |")
end
else
user:SendData(parseenv(user,env,Bot).."Данная команда не доступна.")
end
end


Цитата(Wariner @ 16.11.2008, 17:53) *
А ещё на API 2 не sName, а sNick

ага, заменил. осталось, видимо ввести переменную entry в твой скрипт. но какие именно кусочки кода, приведенного выше, и куда вставить я сам не разберусь

Автор: Setuper 16.11.2008, 18:00

user:SendData( заменить на Core.SendToUser(user,

Автор: Wariner 19.11.2008, 21:59

2NikseR: добавил что ты просил. Так же можно отключать режим сообщений для ОПов

 GuestBook.lua ( 7.56 килобайт ) : 104
 

Автор: NikseR 21.11.2008, 1:52

Цитата(Wariner @ 19.11.2008, 21:59) *
2NikseR: добавил что ты просил. Так же можно отключать режим сообщений для ОПов

спасибо, все как надо сделал big_smile.gif работает

Автор: THE STRELOK 18.3.2009, 19:59

Недочёт! При добавлении записи, пустое сообщение записывается, в результате ломается полностью скрипт! Команды просмотра книги не работают

Автор: Wariner 18.3.2009, 20:02

привыкай говорить полную инфу! например о каком скрипте щас идёт речь?

Автор: THE STRELOK 18.3.2009, 20:14

Скачивал это: http://mydc.ru/ipb.html?act=attach&type=post&id=486

Ошибка:

Код
:179:attempt to concatenate global 'entry' (a nil value)

Автор: THE STRELOK 22.3.2009, 15:24

Дак как можно исправить

Цитата
При добавлении записи, пустое сообщение записывается, в результате ломается полностью скрипт! Команды просмотра книги не работают


Код
function addshit(user,data,container,file,cmdlevel,env)
if cmdlevel~=0 then
if CheckUserLevel(user) >= cmdlevel then
local container=loadshit(file)
number=number+1
local _,_,entry=string.find(data,"%b<>%s+%S+%s+(.*)")
if entry then
container[number]=os.date("%c").."|"..user.sNick.."|"..entry
saveshit(container,file)
Core.SendToNick(user.sNick,parseenv(user,env,Bot).." Ваша запись была успешно добавлена.")
else
Core.SendToNick(user.sNick,parseenv(user,env,Bot).." Вы забыли ввести текст!")
end
container={}
else
Core.SendToNick(user.sNick,parseenv(user,env,Bot).." У вас нет соответствующих прав для использования данной команды! |")
end
else
Core.SendToNick(user.sNick,parseenv(user,env,Bot).." Данная команда не доступна.")
end
end

Автор: Setuper 22.3.2009, 18:53

Код
s,e,who,when,entry=string.find(container[i], "(.+)|(.+)|(.+)")
if entry then
  msg=msg..i..".\t"..who.." - "..when.." ---> "..entry.."\r\n"
end
...

Автор: Evgenyx 28.3.2009, 13:58

мля пашет команды тока когда в приват боту пишеш((( почему так?

Автор: NikseR 5.5.2009, 3:35

Юзаю скрипт от Wariner из http://mydc.ru/topic308.html?view=findpost&p=4986 поста. Заметил сегодня такой баг: удалил один из отзывов через менюшку, после чего захожу посмотреть обновленный список отзывов - при этом в чат выскакивает команда и ничего не происходит. Ошибку в птоке пишет такую:

Код
[04:26] Синтаксис ...\PtokaX 0.4.1.1\scripts\GuestBook.lua:135: attempt to concatenate field '?' (a nil value)

Просьба поправить embarrassed.gif

Автор: Wariner 7.5.2009, 18:14

тут уже наверно ничего не сделаешь, только очистить базу и сделать поправки в коде(заменить функции)

Код
function addtofile(sUser, msg, tTable, tablename, file)
    local tDate = os.date("%d.%m.%Y %H:%M:%S")
    table.insert(tTable, tDate.."  "..sUser.sNick.."  "..msg)
    WriteFile(tTable, tablename, file)
end    

function delinfile(msg, tTable, tablename, file)
    msg = tonumber(msg)
    table.remove (tTable, msg)
    WriteFile(tTable, tablename, file)
end

Автор: NikseR 7.5.2009, 20:35

Цитата(Wariner @ 7.5.2009, 19:14) *
тут уже наверно ничего не сделаешь, только очистить базу и сделать поправки в коде(заменить функции)

Спасибо большое! Главное, что теперь все норм black_heart.gif

Автор: Socrat 27.6.2009, 16:02

Подскажите пожалуйста как в этом скрипте сделать так, что бы новости выводились в главный чат в MOTD при заходе на хаб. Пробовал уже кучу новостных скриптов, но в них слишком много чего по на втыкали. unhappy.gif Заранее благодарен.