myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему

> Announcements, API2 | Объявления

Рейтинг 5 V
Теги
Нет тегов для показа
Accelerator
сообщение 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. Удаление объявлений по номеру.
Прикрепленные файлы
Прикрепленный файл  announcements.rar ( 1.83 килобайт ) Кол-во скачиваний: 469
 
Go to the top of the page
+Quote Post
Drakula
сообщение 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
Go to the top of the page
+Quote Post
intlive
сообщение 1.7.2009, 20:17
Сообщение #3


Продвинутый участник
****

Группа: Пользователи
Сообщений: 134
Регистрация: 18.6.2008
Из: подземелье
Пользователь №: 41
Спасибо сказали: 7 раз




Цитата(Drakula @ 2.7.2009, 0:20) *
Скрипт классный, вот если бы ещё добавить: удаление объявления, было бы очень замечательно, а то надоедает заходить в папку и удалять: dats.dat

+1 Не хватает данной функции


Спасибо сказали:
Go to the top of the page
+Quote Post
Accelerator
сообщение 3.7.2009, 8:45
Сообщение #4


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Из: Челябинск
Пользователь №: 1 075
Спасибо сказали: 244 раза




Считаю, что удаление объявления, имхо, не нужно! Т.к. после публикации нового объявления, старое стирается само.
Go to the top of the page
+Quote Post
Drakula
сообщение 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 раза




Цитата(STRELOK @ 3.7.2009, 8:45) *
Считаю, что удаление объявления, имхо, не нужно! Т.к. после публикации нового объявления, старое стирается само.


Вот прикинь ты обьявил о празднике..... и эта объява будет висеть гдето 2 месяца а то и больше...... помоему лучше сделать с удалением. secret_smile.gif
Go to the top of the page
+Quote Post
denis
сообщение 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)

в чём проблема?
Go to the top of the page
+Quote Post
Wariner
сообщение 15.12.2009, 22:32
Сообщение #7


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




либо в путях либо в отсутствии файла который использует скрипт!


Спасибо сказали:
Go to the top of the page
+Quote Post
denis
сообщение 15.12.2009, 22:57
Сообщение #8


Активный участник
***

Группа: Пользователи
Сообщений: 50
Регистрация: 23.11.2008
Пользователь №: 1 182
Спасибо сказали: 2 раза




Цитата(Wariner @ 15.12.2009, 22:32) *
либо в путях либо в отсутствии файла который использует скрипт!

спасибо разобрался
Go to the top of the page
+Quote Post
Accelerator
сообщение 9.1.2010, 16:13
Сообщение #9


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Из: Челябинск
Пользователь №: 1 075
Спасибо сказали: 244 раза




Цитата(Drakula @ 1.7.2009, 21:20) *
Скрипт классный, вот если бы ещё добавить: удаление объявления, было бы очень замечательно, а то надоедает заходить в папку и удалять: 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)


Думаю с менюшкой сами разберётесь как сделать big_smile.gif

** Пошёл делать новую версию скрипта. Попробую сделать так, чтобы можно было добавлять хоть сколько объявлений и делать удаление по номеру объявления. **

Сделал 2.0. версию. Изменения в первом посту.


Спасибо сказали:
Go to the top of the page
+Quote Post
dimajak
сообщение 26.1.2010, 13:17
Сообщение #10


Продвинутый участник
****

Группа: Пользователи
Сообщений: 157
Регистрация: 19.1.2010
Из: Волгоград
Пользователь №: 5 756
Спасибо сказали: 77 раз




Цитата(STRELOK @ 9.1.2010, 16:13) *
Сделал 2.0. версию. Изменения в первом посту.
немного доработал - отключил вывод "Последние 5 сообщений администрации" при отсутствии объявлений.
Прикрепленный файл  announcements.rar ( 1.94 килобайт ) Кол-во скачиваний: 55


Спасибо сказали:
Go to the top of the page
+Quote Post
GYRY
сообщение 23.3.2010, 20:45
Сообщение #11


Начинающий
*

Группа: Пользователи
Сообщений: 12
Регистрация: 23.3.2010
Пользователь №: 6 430
Спасибо сказали: 0 раз




Хороший скрипт. Очень актуальный для мнея, по крайней мере, НО было бы очень хорошо, если бы:
1) объявления были написаны жирным шрифтом
2) объявления появлялись в главном чате с определенной периодичностью. Раз в час или два, ну кроме появления при входе
Go to the top of the page
+Quote Post
Saymon21
сообщение 23.3.2010, 20:51
Сообщение #12


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 479 раз




Цитата
1) объявления были написаны жирным шрифтом

это уже читы клиента.
Go to the top of the page
+Quote Post
GYRY
сообщение 23.3.2010, 20:52
Сообщение #13


Начинающий
*

Группа: Пользователи
Сообщений: 12
Регистрация: 23.3.2010
Пользователь №: 6 430
Спасибо сказали: 0 раз




Ээээ, не понял, что значит читы клиента?
Go to the top of the page
+Quote Post
Saymon21
сообщение 23.3.2010, 21:15
Сообщение #14


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 479 раз




В грэй линке есть читы которые и придают всю красоту сообщениям.
Но если у клиента нет поддержки этих самых читов то в чате такой ужас!

если хочешь сделай сам это
1) открой скрипт
2) найди текст который нужно выделеть
3) сделай следующие
Код
[b]текст который нужно выделеть[/b]
Go to the top of the page
+Quote Post
Accelerator
сообщение 23.3.2010, 21:17
Сообщение #15


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Из: Челябинск
Пользователь №: 1 075
Спасибо сказали: 244 раза




Цитата(GYRY @ 23.3.2010, 22:45) *
2) объявления появлялись в главном чате с определенной периодичностью. Раз в час или два, ну кроме появления при входе

в функцию OnStartup() добавляем:
Код
Upd = 3 -- Время, через которое будут посланы объявления в чат всем (в часах)
TmrMan.AddTimer(Upd*3600000, "Send")

В самый низ:
Код
function Send()
Core.SendToAll(GetAnnouncements(count))
end
Go to the top of the page
+Quote Post
GYRY
сообщение 23.3.2010, 21:43
Сообщение #16


Начинающий
*

Группа: Пользователи
Сообщений: 12
Регистрация: 23.3.2010
Пользователь №: 6 430
Спасибо сказали: 0 раз




А как быть в жирным шрифтом? То что рекомендовал Saymon не вышло. Если добавляю
Код
[b] текст который нужно выделеть [/b]
пишет ошибку скрипта. Или я не то добавлял.
Go to the top of the page
+Quote Post
Saymon21
сообщение 23.3.2010, 22:05
Сообщение #17


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 479 раз




покажи саму ошибку и строку в которой ошибка.
Go to the top of the page
+Quote Post
GYRY
сообщение 23.3.2010, 22:55
Сообщение #18


Начинающий
*

Группа: Пользователи
Сообщений: 12
Регистрация: 23.3.2010
Пользователь №: 6 430
Спасибо сказали: 0 раз




Синтаксис [string "--[[ Название: Announcements..."]:45: unexpected symbol near '['

Скрипт очень большой, я честно сказать понятия не имею куда добавить и чего. Я первый день в этом
Go to the top of the page
+Quote Post
Saymon21
сообщение 23.3.2010, 22:56
Сообщение #19


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 479 раз




покажи 45 строку
Go to the top of the page
+Quote Post
GYRY
сообщение 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
Go to the top of the page
+Quote Post

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Topic has attachmentsОбъявления (Announcements)
версия 1.1
6 Accelerator 7 611 16.6.2010, 7:16 Посл. сообщение: Accelerator

 



RSS Сейчас: 26.1.2020, 17:32