Версия для печати темы
MyDC.ru _ Готовые скрипты для PtokaX _ Гостевая Книга
Автор: Strannik 24.8.2008, 19:28
Гостивая книга под API 2
Возможно оставить новости и отзовы в гостивой книге
Автор: Cjay 27.8.2008, 16:02
http://mydc.ru/topic312.html
кажется я книгу тут брал, так вот в ней полно ошибок...
Автор: Wariner 28.8.2008, 14:07
Вот моя версия этого скрипта(API2). Потестете, если что не так отписывайте поправлю)))
Автор: Cjay 29.8.2008, 8:37
В общем посмотрел версию скрипта гостевой книги Wariner`а и решил доделать ту что у меня была
Вот два скрипта под API2 (Тестировал на птохе 0.4.1.1 работали без ошибок, если что пишите):
1) Гостевая книга
2) Гостевая книга для музыкальных хабов
Автор: 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
2Cjay чем не понравился мой скрипт? Мож какие лаги? отпиши интересно)))
Автор: Cjay 30.8.2008, 8:41
Цитата
А то получается что скрипт создаёт в папке scripts ещё одну папку scripts
Гхым О_о а у меня не создавало, причем более того, не прописываю путь gbfile="scripts/dats/guestbook.dat", оставляю как gbfile=path.."guestbook.dat" и у меня чЮдесным образом в папке scripts возникает файлик datsguestbook.dat
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: добавил что ты просил. Так же можно отключать режим сообщений для ОПов
Автор: NikseR 21.11.2008, 1:52
Цитата(Wariner @ 19.11.2008, 21:59)
2NikseR: добавил что ты просил. Так же можно отключать режим сообщений для ОПов
спасибо, все как надо сделал
работает
Автор: 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)
Просьба поправить
Автор: 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)
тут уже наверно ничего не сделаешь, только очистить базу и сделать поправки в коде(заменить функции)
Спасибо большое! Главное, что теперь все норм
Автор: Socrat 27.6.2009, 16:02
Подскажите пожалуйста как в этом скрипте сделать так, что бы новости выводились в главный чат в MOTD при заходе на хаб. Пробовал уже кучу новостных скриптов, но в них слишком много чего по на втыкали. Заранее благодарен.