Announcements, API2 | Объявления |
Здравствуйте, гость ( Вход | Регистрация )
Announcements, API2 | Объявления |
27.6.2009, 16:40
Сообщение
#1
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Название: Announcements
Версия API: 2 Версия скрипта: 2.0 Автор: STRELOK Описание: Публикация объявления администрацией хаба. Выводит объявление юзеру при подключении к хабу Возможности: 1. Показ объявления перед входом юзера 2. Показы даты и времени, когда было установлено объявление 3. Выбор кому будет доступно публиковать сообщения 4. Вывод сообщения о новом объявлении всем 5. Выбор сколько объявлений выводит при подключении пользователя и сколько будет хранится в таблице 6. Удаление объявлений по номеру.
Прикрепленные файлы
|
|
|
1.7.2009, 19:20
Сообщение
#2
|
|
PtokaX DC Hub 0.4.1.2 Группа: Пользователи Сообщений: 203 Регистрация: 20.1.2009 Из: Republic of Belarus, Minsk, Uruchie, Avalon. Пользователь №: 1 890 Спасибо сказали: 4 раза |
Скрипт классный, вот если бы ещё добавить: удаление объявления, было бы очень замечательно, а то надоедает заходить в папку и удалять: dats.dat
|
|
|
1.7.2009, 20:17
Сообщение
#3
|
|
Продвинутый участник Группа: Пользователи Сообщений: 134 Регистрация: 18.6.2008 Из: подземелье Пользователь №: 41 Спасибо сказали: 7 раз |
Скрипт классный, вот если бы ещё добавить: удаление объявления, было бы очень замечательно, а то надоедает заходить в папку и удалять: dats.dat +1 Не хватает данной функции |
|
|
3.7.2009, 8:45
Сообщение
#4
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Считаю, что удаление объявления, имхо, не нужно! Т.к. после публикации нового объявления, старое стирается само.
|
|
|
6.7.2009, 19:02
Сообщение
#5
|
|
PtokaX DC Hub 0.4.1.2 Группа: Пользователи Сообщений: 203 Регистрация: 20.1.2009 Из: Republic of Belarus, Minsk, Uruchie, Avalon. Пользователь №: 1 890 Спасибо сказали: 4 раза |
|
|
|
15.12.2009, 22:28
Сообщение
#6
|
|
Активный участник Группа: Пользователи Сообщений: 50 Регистрация: 23.11.2008 Пользователь №: 1 182 Спасибо сказали: 2 раза |
[21:27] Синтаксис G:\Server\scripts\announcements.lua:88: attempt to index local 'handle' (a nil value)
в чём проблема? |
|
|
15.12.2009, 22:32
Сообщение
#7
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
либо в путях либо в отсутствии файла который использует скрипт!
|
|
|
15.12.2009, 22:57
Сообщение
#8
|
|
Активный участник Группа: Пользователи Сообщений: 50 Регистрация: 23.11.2008 Пользователь №: 1 182 Спасибо сказали: 2 раза |
|
|
|
9.1.2010, 16:13
Сообщение
#9
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Скрипт классный, вот если бы ещё добавить: удаление объявления, было бы очень замечательно, а то надоедает заходить в папку и удалять: dats.dat Если кому то нужна функция удаления объявления, то после return true (на 64 строке) нужно добавить на 65 строке: Код elseif cmd == "!delannouncements" then if tProfile[tUser.iProfile] == 1 or tVIP[tUser.sNick] then tDats = { Dats = "Нет объявлений", Date = "unknown" } Core.SendToUser(tUser, ("<%s> Объявление удалено!"):format(Bot)) SaveToFile(filename, tDats, "tDats") else Core.SendToUser(tUser, ("<%s> У вас нет прав для использования этой команды!"):format(Bot)) end return true Теперь после ввода команды !delannouncements будет выводится так: Цитата [17:09:13] <PtokaX> Объявление администрации: Нет объявлений (Установлено: unknown) Думаю с менюшкой сами разберётесь как сделать ** Пошёл делать новую версию скрипта. Попробую сделать так, чтобы можно было добавлять хоть сколько объявлений и делать удаление по номеру объявления. ** Сделал 2.0. версию. Изменения в первом посту. |
|
|
26.1.2010, 13:17
Сообщение
#10
|
|
Продвинутый участник Группа: Пользователи Сообщений: 157 Регистрация: 19.1.2010 Из: Волгоград Пользователь №: 5 756 Спасибо сказали: 77 раз |
Сделал 2.0. версию. Изменения в первом посту. немного доработал - отключил вывод "Последние 5 сообщений администрации" при отсутствии объявлений.announcements.rar ( 1.94 килобайт ) Кол-во скачиваний: 55 |
|
|
23.3.2010, 20:45
Сообщение
#11
|
|
Начинающий Группа: Пользователи Сообщений: 12 Регистрация: 23.3.2010 Пользователь №: 6 430 Спасибо сказали: 0 раз |
Хороший скрипт. Очень актуальный для мнея, по крайней мере, НО было бы очень хорошо, если бы:
1) объявления были написаны жирным шрифтом 2) объявления появлялись в главном чате с определенной периодичностью. Раз в час или два, ну кроме появления при входе |
|
|
23.3.2010, 20:51
Сообщение
#12
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Цитата 1) объявления были написаны жирным шрифтом это уже читы клиента. |
|
|
23.3.2010, 20:52
Сообщение
#13
|
|
Начинающий Группа: Пользователи Сообщений: 12 Регистрация: 23.3.2010 Пользователь №: 6 430 Спасибо сказали: 0 раз |
Ээээ, не понял, что значит читы клиента?
|
|
|
23.3.2010, 21:15
Сообщение
#14
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
В грэй линке есть читы которые и придают всю красоту сообщениям.
Но если у клиента нет поддержки этих самых читов то в чате такой ужас! если хочешь сделай сам это 1) открой скрипт 2) найди текст который нужно выделеть 3) сделай следующие Код [b]текст который нужно выделеть[/b]
|
|
|
23.3.2010, 21:17
Сообщение
#15
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
2) объявления появлялись в главном чате с определенной периодичностью. Раз в час или два, ну кроме появления при входе в функцию OnStartup() добавляем: Код Upd = 3 -- Время, через которое будут посланы объявления в чат всем (в часах) TmrMan.AddTimer(Upd*3600000, "Send") В самый низ: Код function Send()
Core.SendToAll(GetAnnouncements(count)) end |
|
|
23.3.2010, 21:43
Сообщение
#16
|
|
Начинающий Группа: Пользователи Сообщений: 12 Регистрация: 23.3.2010 Пользователь №: 6 430 Спасибо сказали: 0 раз |
А как быть в жирным шрифтом? То что рекомендовал Saymon не вышло. Если добавляю
Код [b] текст который нужно выделеть [/b] пишет ошибку скрипта. Или я не то добавлял.
|
|
|
23.3.2010, 22:05
Сообщение
#17
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
покажи саму ошибку и строку в которой ошибка.
|
|
|
23.3.2010, 22:55
Сообщение
#18
|
|
Начинающий Группа: Пользователи Сообщений: 12 Регистрация: 23.3.2010 Пользователь №: 6 430 Спасибо сказали: 0 раз |
Синтаксис [string "--[[ Название: Announcements..."]:45: unexpected symbol near '['
Скрипт очень большой, я честно сказать понятия не имею куда добавить и чего. Я первый день в этом |
|
|
23.3.2010, 22:56
Сообщение
#19
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
покажи 45 строку
|
|
|
23.3.2010, 23:02
Сообщение
#20
|
|
Начинающий Группа: Пользователи Сообщений: 12 Регистрация: 23.3.2010 Пользователь №: 6 430 Спасибо сказали: 0 раз |
local sMsg = sData:match"%b<>%s+%S+%s+(.*)"
Полностью скрипт выглядит так. И куда чего добавить не понятно Код --[[ Название: Announcements
Версия API: 2 Версия скрипта: 2.0 Автор: STRELOK Описание: Публикация объявления администрацией хаба. Выводит объявление юзеру при подключении к хабу Возможности: 1. Показ объявления перед входом юзера 2. Показы даты и времени, когда было установлено объявление 3. Выбор кому будет доступно публиковать сообщения 4. Вывод сообщения о новом объявлении всем 5. Выбор сколько объявлений выводит при подключении пользователя ]]-- local tProfile = { [0] = 1, [1] = 0, } tVIP = { ["STRELOK"] = 1, } local Bot = SetMan.GetString(21) local filename = Core.GetPtokaXPath().."scripts/announcements/dats.dat" tDats = { Dats = "Нет объявлений", Date = "unknown" } sAll = 1 -- выводить сообщение о публикации нового объявление всем count = 5 -- какое кол-во объявлений выводить при входе и сохранят в таблицу? function OnStartup() Upd = 1 TmrMan.AddTimer(Upd*3600000, "Send") if loadfile(filename) then dofile(filename) end end function ChatArrival(tUser,sData) sData = string.sub(sData,1,-2) local cmd = sData:match"%b<>%s+(%S+)" if cmd == "!postannouncements" then if tProfile[tUser.iProfile] == 1 or tVIP[tUser.sNick] then local sMsg = sData:match"%b<>%s+%S+%s+(.*)" if not sMsg then Core.SendToUser(tUser, "<"..Bot.."> Вы не ввели сообщение") end local Dat = { sMsg, os.date"%d.%m.%y * %H:%M:%S", tUser.sNick, } table.insert(tDats, Dat) if #tDats > count then table.remove(tDats,1) end SaveToFile(filename, tDats, "tDats") Core.SendToUser(tUser, "<"..Bot.."> Объявление '"..sMsg.."' было опубликовано!") if sAll == 1 then Core.SendToAll("<"..Bot.."> Новое объявление: "..sMsg) end else Core.SendToUser(tUser, ("<%s> У вас нет прав для использования этой команды!"):format(Bot)) end return true elseif cmd == "!delannouncements" then if tProfile[tUser.iProfile] == 1 or tVIP[tUser.sNick] then local sNumber = sData:match"%b<>%s+%S+%s+(.*)" for v in ipairs(tDats) do table.remove(tDats, sNumber) Core.SendToUser(tUser, ("<%s> Объявление №%s удалено!"):format(Bot, sNumber)) SaveToFile(filename, tDats, "tDats") end else Core.SendToUser(tUser, ("<%s> У вас нет прав для использования этой команды!"):format(Bot)) end return true end end function GetAnnouncements(lines) local x = lines if lines > #tDats then x,lines = #tDats,#tDats end x = #tDats - x local str = "" for i,v in ipairs(tDats) do if i > x then str = str.."№"..i..": "..v[1].." (Опубликовано: "..v[2].." / Автор: "..v[3]..")\n" end end return str end function UserConnected(tUser) local str = GetAnnouncements(count) if str ~= "" then str = ""..string.rep(" ",0).."Последние "..count.." объявлений администрации:\n"..str Core.SendToUser(tUser, "<"..Bot.."> "..str) end if tProfile[tUser.iProfile] == 1 or tVIP[tUser.sNick] then Core.SendToUser(tUser,"$UserCommand 1 3 Меню админа\\Опубликовать объявление$<%[mynick]> !postannouncements %[line:Введите текст]|") Core.SendToUser(tUser,"$UserCommand 1 3 Меню админа\\Удалить объявление$<%[mynick]> !delannouncements %[line:Введите № объявления]|") end end RegConnected = UserConnected OpConnected = UserConnected function Serialize(tTable, sTableName, sTab) sTab = sTab or ""; sTmp = "" sTmp = sTmp..sTab..sTableName.." = {\n" for key, value in pairs(tTable) do local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key); if(type(value) == "table") then sTmp = sTmp..Serialize(value, sKey, sTab.."\t"); else local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value); sTmp = sTmp..sTab.."\t"..sKey.." = "..sValue end sTmp = sTmp..",\n" end sTmp = sTmp..sTab.."}" return sTmp end function SaveToFile(file , table , tablename) local handle = io.open(file,"w+") handle:write(Serialize(table, tablename)) handle:flush() handle:close() end function Send() Core.SendToAll(GetAnnouncements(count)) end |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
Объявления (Announcements) версия 1.1 |
6 | Accelerator | 11 797 | 16.6.2010, 7:16 Посл. сообщение: Accelerator |
|
Сейчас: 27.11.2024, 2:58 |