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

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

MyDC.ru _ Готовые скрипты для PtokaX _ InfoMenu

Автор: Saymon 21.5.2010, 15:09

Название: InfoMenu
Версия API API2
Автор: Saymon

Описание: Скрипт показывает информацию о хабе и о юзере в меню.

Скрин:


 InfoMenu_by_Saymon.lua ( 8.14 килобайт ) : 310


PS. Скрипт писал для себя решил выложить, авось кому понадобится big_smile.gif
PPS. На скрине есть пункт "Прислать дополнительное меню". В данном скрипте этого нет. Это из другова скрипта.

Автор: sania 21.5.2010, 15:56

меню на хабе не появилось, в опчат пишит
[16:49:42] <OpChat> ... Files\PtokaX 0.4.1.2\scripts\InfoMenu_by_Saymon.lua:127: attempt to concatenate field '?' (a nil value)

У мя птока 0,4,1,2

Автор: Saymon 21.5.2010, 16:30

Исправил big_smile.gif
Скрипт перезалит в первом посте.

Автор: sania 21.5.2010, 17:42

Меню также неробит на хабе с грейлинка(профиль админский)
Меню робит с флайлинка(профиль незарегенный)

Выводит сообщение, теперь уже в птоке, такое:

[18:37] Синтаксис ... Files\PtokaX 0.4.1.2\scripts\InfoMenu_by_Saymon.lua:127: attempt to concatenate field '?' (a nil value)

В опчате тож выводит сообщение:

[18:40:03] <OpChat> ... Files\PtokaX 0.4.1.2\scripts\InfoMenu_by_Saymon.lua:127: attempt to concatenate field '?' (a nil value)

Автор: Saymon 22.5.2010, 18:17

Не знаю что там у тебя, а у меня

[19:15] Нет синтаксических ошибок в файле скрипта InfoMenu_by_Saymon.lua
[19:15] Скрипт запущен.

Вот скрипт прямо из моей птоки  InfoMenu_by_Saymon.lua ( 8.14 килобайт ) : 67

Проверял на 0.4.1.2 и на 0.4.1.1
Ошибок нет.

Автор: sania 22.5.2010, 19:15

Ну хз, хз!
Пробую - в опчат сёрано сообщения пишит!
Так шо хз где там да чё!
А еси за птокой после установки скрипта последить то увидишь похожие сообщеньица:
[20:14] Синтаксис ... Files\PtokaX 0.4.1.2\scripts\InfoMenu_by_Saymon.lua:132: attempt to concatenate a nil value
Так что гдето чтото там спрятоно still_dreaming.gif

Автор: Saymon 22.5.2010, 20:05

Цитата(sania @ 22.5.2010, 20:18) *
[-1] = "Unregistered User",
[0] = "Master",
[1] = "Админ",
[2] = "Moderator",
[3] = "Operator",
[4] = "VIP",
[5] = "Registered User",


Это в твоей птоке профили такие?

Автор: sania 22.5.2010, 20:19

ога, а чё?

Автор: Saymon 22.5.2010, 20:29

А теперь, ради интереса

тыкай
найти:
Код
"$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Ваш профиль на хабе:\t"..tProfileName[tUser.iProfile].."$<%[mynick]> ||"..

заменить на:
Код
--"$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Ваш профиль на хабе:\t"..tProfileName[tUser.iProfile].."$<%[mynick]> ||"..

найти:
Код
         if tProfiles[tUser.iProfile] == 1 then
     Core.SendToUser(tUser, InformMenu)
        end


заменить на:
Код
         --if tProfiles[tUser.iProfile] == 1 then
     Core.SendToUser(tUser, InformMenu)
        --end

Автор: sania 22.5.2010, 21:10

Сделал, вроде так норма всё

Автор: Ksan 22.5.2010, 22:56

Избавься ты от этих левых профилей! Иначе у тебя на каждом новом скрипте постоянно будут подобные проблемы и люди будут тратить половину своего времени на решение твоих профильных проблем.
Насоздавал их зачем-то...Ты сначала напучись работать со скриптами, а потом уж делай что хочешь со всем остальным.

Автор: Saymon 23.5.2010, 13:31

sania, У тебя есть 3 варианта сейчас.
1) Делай как тебе сказал Ksan.

2) Допили профили под себя. (тыкай)

а именно тут
Код
local tProfiles = { -- Кому будет доступно меню. 1 - Да. 0 - Нет.
    [0] = 1, -- Мастер
    [1] = 1, -- ОПератор
    [2] = 1, -- VIP
    [3] = 1, -- Зарегистрированный пользователь
    [-1] = 1, -- Незарегистрированный юзер
}

и тут

tProfileName = {  -- Названия профилей.
    [0] = "Главный администратор",
    [1] = "Оператор",
    [2] = "VIP-Пользователь",
    [3] = "Зарегистрированый пользователь",
   [-1] = "Незарегистрированный пользователь",
}


После этого убери коментарий в тех строках, что я тебе показал.

3) Юзай данный скрипт без ограничения по профилям и отображения имени профиля.

Автор: sania 23.5.2010, 15:42

Спасибо, Saymon , сделал по пункту 2, все заработало нормально!!!

Автор: sania 26.5.2010, 9:54

А всётаки очень редко, но в опчат выводит сообщение 2 раза в день(с утра и вечером)!
Такая же похожая фигня была 2 раза в день и когда мы убирали отображение профиля, просто я её не сразу заметил
Сообщение такое:
[10:52:16] <OpChat> ... Files\PtokaX 0.4.1.2\scripts\InfoMenu_by_Saymon.lua:83: attempt to perform arithmetic on local 'a' (a nil value)

Исправить можно как-нибудь просто?

Автор: Nickolya 26.5.2010, 10:48

Заменить

Код
a,b,c = tonumber(a),tonumber(b),tonumber(c)
на
Код
a,b,c = tonumber(a or 0),tonumber(b or 0),tonumber(c or 0)

Автор: sania 26.5.2010, 21:00

Спасибо большое baffle.gif

Автор: sania 27.5.2010, 21:20

блин, теперя такую хрень в опчат пишит, также редко:
[22:17:37] <OpChat> ... Files\PtokaX 0.4.1.2\scripts\InfoMenu_by_Saymon.lua:131: attempt to concatenate a nil value

Автор: Nickolya 27.5.2010, 21:46

Приводи сюда свой код в качестве примера, а то у меня эта строка вообще пустая! Надо от тебя лишь строчку, выдающую ошибку.

Автор: belradio 28.5.2010, 11:30

что то ошибку выдает вот такую в личку от опчата:
[11:19:19] <OpChat> C:\Хаб\scripts\InfoMenu_by_Saymon.lua:126: attempt to concatenate field '?' (a nil value)

но при это скрипт пашет нормально.. Вот кусок кода:

Код
125        "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Количество ваших слотов составляет:\t"..Slots(tUser).."$<%[mynick]> ||"..
126          "$UserCommand 0 3|"
127         Core.SendToUser(tUser,"$UserCommand 1 3                <•><•><•><•><•><•><•><•><•><•><•><•>  $<%[mynick]> ||")

Автор: sania 28.5.2010, 21:23

Nickolya

Вот весь мой робящий скрипт с выше описанною проблемой:

Здеся скрипт
Код
--[[::::::::::::::::::: (с) 2010 by Saymon :::::::::::::::::::::::::::::
Название: InfoMenu
Версия API: API2
Автор: Saymon
Описание: Скрипт показывает информацию о хабе и о юзере в меню.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::]]

HubOwner = "Admin" -- Владелец хаба
InetProvayder = "РосИнтел(сайт www.rosintel.ru)" --Интернет провайдер
HubCity = "Новомосковск" -- Город хаба
HubName = SetMan.GetString(0)
sMenu = "Информация для"
YearInitial = "2009" -- Год в котором был открыт хаб
YearFlowing = "2010"
local tProfiles = { -- Кому будет доступно меню. 1 - Да. 0 - Нет.
    [0] = 1, -- NetFounder
    [1] = 1, -- Admin
    [2] = 1, -- Moderator
    [3] = 1, -- Operator
    [4] = 1, -- VIP
    [5] = 1, -- Reg
    [-1] = 1, -- Незарегистрированный юзер
}
--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
tProfileName = {  -- Названия профилей.
    [0] = "Главный администратор",
    [1] = "Admin",
    [2] = "Moderator",
    [3] = "Operator",
    [4] = "VIP",
    [5] = "Зарегистрированный пользователь",
   [-1] = "Незарегистрированный пользователь",
}
--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
function GetNormalShare(s)
  s = tonumber(s) or 0
  if s >= 1125899906842624 then return (math.floor(1000 * s / 1125899906842624) / 1000).." ПБ"
  elseif s >= 1099511627776 then return (math.floor(1000 * s / 1099511627776) / 1000).." TБ"
  elseif s >= 1073741824 then return (math.floor(1000 * s / 1073741824) / 1000).." ГБ"
  elseif s >= 1048576 then return (math.floor(1000 * s / 1048576) / 1000).." МБ"
  elseif s >= 1024 then return (math.floor(1000 * s / 1024) / 1000).." КБ"
  else return s.." Б" end
end
function GetUserReg(sNick)
    local tRegUser = RegMan.GetReg(sNick)
    if user then
        return "Ваш пароль: "..tUser.sPassword..""
    end
    return "n/a"
end  
function GetNormalTime(s) -- форматирование времени
    s=tonumber(s) or 0
    local r=""
    if s>=31104000 then r=math.floor(s/31104000).." г. " s=math.fmod(s,31104000) end
    if s>=2592000 then r=r..math.floor(s/2592000).." мес. " s=math.fmod(s,2592000) end
    if s>=86400 then r=r..math.floor(s/86400).." д. " s=math.fmod(s,86400) end
    if s>=3600 then r=r..math.floor(s/3600).." ч. " s=math.fmod(s,3600) end
    if s>=60 then r=r..math.floor(s/60).." мин. " s=math.fmod(s,60) end
    return r..s.." сек."
end
function ModeRec(tUser)
    if Core.GetUserValue(tUser,10) then
        return "Активный"
    elseif Core.GetUserValue(tUser,0) == "P" then
        return "Пассивный"
    else
        return "Proxy"
    end
end
function Client(tUser)
    if not Core.GetUserValue(tUser,6) or not Core.GetUser(tUser.sNick,true).sClientVersion then
        return "n/a"
    else
        return Core.GetUserValue(tUser,6)
    end
end
function Hubs(tUser)
    if not Core.GetUserValue(tUser,17) or Core.GetUserValue(tUser,17) == 0 then
        if not Core.GetUserValue(tUser,1):find("H%d+,S") then
            local a,b,c = Core.GetUserValue(tUser,1):match("H:(%d+)/(%d+)/(%d+)")
            a,b,c = tonumber(a or 0),tonumber(b or 0),tonumber(c or 0)
            --local
            hubs = a+b+c
        else
            hubs = Core.GetUserValue(tUser,1):match("H(%d+),S")
        end    
        return hubs
    else
        return Core.GetUserValue(tUser,17)
    end        
end    
function Slots(tUser)
    if not Core.GetUserValue(tUser,21) or Core.GetUserValue(tUser,21) == 0 then
        local slots = Core.GetUserValue(tUser,1):match("S:(%d+)")
        return tonumber(slots)
    else
        return Core.GetUserValue(tUser,21)
    end
end    
function UserConnected(tUser)

local InformMenu = "$UserCommand 0 3|"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Добро пожаловать, "..tUser.sNick.."$<%[mynick]> ||"..
         "$UserCommand 0 3|"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\        Информация о хабе$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Название хаба:\t"..HubName.." $<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Описание хаба:\t"..(SetMan.GetString(5) or "n/a").."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Топик:\t"..(SetMan.GetString(10) or "n/a").."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Владелец:\t"..HubOwner.."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Город хаба:\t"..HubCity.."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Интернет провайдер:\t"..InetProvayder.."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Сейчас на хабе:\t"..Core.GetUsersCount().." пользователей онлайн$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Из них администрации:\t"..#Core.GetOnlineOps().." представителей онлайн $<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Общая шара хаба составляет:\t"..GetNormalShare(Core.GetCurrentSharedSize()).."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Время непрерывной работы хаба:\t"..GetNormalTime(Core.GetUpTime()).."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Время и дата на сервере:\t"..os.date("%H:%M / %d %b %Y").."$<%[mynick]> ||"..
         "$UserCommand 0 3|"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\       Информация о вас$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Ваш ник:\t"..tUser.sNick.."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Ваш пароль:\t"..(tUser.iProfile ~= -1 and RegMan.GetReg(tUser.sNick).sPassword or "-").."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\IP / Страна:\t"..tUser.sIP.." / "..tostring(IP2Country.GetCountryName(tUser)).."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Ваше описание:\t"..(Core.GetUser(tUser.sNick,true).sDescription or "n/a").."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Ваша шара:\t"..GetNormalShare(Core.GetUserValue(tUser,16)).."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Ваш E-Mail:\t"..(Core.GetUser(tUser.sNick,true).sEmail or "n/a").."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Ваш профиль на хабе:\t"..tProfileName[tUser.iProfile].."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Ваш режим подключения:\t"..ModeRec(tUser).."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Ваш клиент:\t"..Client(tUser).." "..(Core.GetUser(tUser.sNick,true).sClientVersion or "n/a").."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\DC тег:\t"..(Core.GetUser(tUser.sNick,true).sTag or "n/a").."$<%[mynick]> ||"..
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Вы на:\t"..Hubs(tUser).." хабах$<%[mynick]> ||"..  
         "$UserCommand 1 3 "..sMenu.." "..tUser.sNick.."\\Инфо о вас и о хабе\\Количество ваших слотов составляет:\t"..Slots(tUser).."$<%[mynick]> ||"..
         "$UserCommand 0 3|"
         Core.SendToUser(tUser,"$UserCommand 1 3  <•><•><•><•><•><•><•><•><•>  $<%[mynick]> ||")
         Core.SendToUser(tUser,"$UserCommand 1 3  «¤•°"..HubName.."°•¤» © "..YearInitial.." - "..YearFlowing.."$<%[mynick]> ||")
         Core.SendToUser(tUser,"$UserCommand 1 3  <•><•> Меню пользователя <•><•>  $<%[mynick]> ||")
        
         if tProfiles[tUser.iProfile] == 1 then
     Core.SendToUser(tUser, InformMenu)
        end
   end
OpConnected = UserConnected
RegConnected = UserConnected

function OnError(s)
  local h=io.open("errors.log","a+")
  if h then
    h:write(os.date()..": "..s.."\r\n")
    h:close()
  end
  if Core then
    Core.SendToOpChat(s)
  else
    SendToOpChat(s)
  end
end

Автор: Ksan 28.5.2010, 23:03

Советую код скрипта срочно спрятать под спойлер, пока тебя модеры не накрошили в лапшу.. big_smile.gif
Слишком длинный для открытого нахождения в теме.

Автор: sania 28.5.2010, 23:48

отредактил своё сообщение

Автор: Ksan 29.5.2010, 1:37

А почему в спойлер не засунул код?

Автор: sania 29.5.2010, 11:17

Saymon

Так я ж сказал, раза 2 за день в опчат хабасообщение вылазит, а не в птоке

Ksan

Спойлер пробовал, непомогло укоротить кучу надписей

Автор: Nickolya 29.5.2010, 12:29

sania, сначала ты привел код совсем не тот, не знаю как ты считал строки. У тебя в самом начале скрипта все профили прописаны???

Автор: sania 29.5.2010, 22:34

Nickolya
Ну блин как это нетот, если я со сваего скрипта всё скопировал! А профили правил под себя как мне Saymon сказал в пункте 2 этого сообщения:

Он гварил
Цитата(Saymon @ 23.5.2010, 14:31) *
sania, У тебя есть 3 варианта сейчас.
1) Делай как тебе сказал Ksan.

2) Допили профили под себя. (тыкай)

а именно тут
Код
local tProfiles = { -- Кому будет доступно меню. 1 - Да. 0 - Нет.
    [0] = 1, -- Мастер
    [1] = 1, -- ОПератор
    [2] = 1, -- VIP
    [3] = 1, -- Зарегистрированный пользователь
    [-1] = 1, -- Незарегистрированный юзер
}

и тут

tProfileName = {  -- Названия профилей.
    [0] = "Главный администратор",
    [1] = "Оператор",
    [2] = "VIP-Пользователь",
    [3] = "Зарегистрированый пользователь",
   [-1] = "Незарегистрированный пользователь",
}


После этого убери коментарий в тех строках, что я тебе показал.

3) Юзай данный скрипт без ограничения по профилям и отображения имени профиля.



а вот теперь это пишит в опчат:
[21:53:14] <OpChat> ... Files\PtokaX 0.4.1.2\scripts\InfoMenu_by_Saymon.lua:131: attempt to concatenate a nil value