Версия для печати темы
MyDC.ru _ Помощь по скриптам для PtokaX _ ПОМОГИТЕ
Автор: probest 17.1.2015, 22:54
Как дать определенному нику права администратора в любом скрипте ?
напишите код как можно реализовать это? например в этом коде скрипта управления.
Код
--###################################################################################
-- HubMenuPro v.1 by ZVER
-- API2 (PtokaX 0.4.x.x)
--###################################################################################
Menu = "Меню хаба\\"
UserMenu = "Юзер\\"
AdminMenu = "Управление\\"
ScriptEasy = false --Упрощенное меню управления скриптами
Prefix = "!"
--###################################################################################
function OnStartup()
local tTmp = SetMan.GetHubBot()
bot = tTmp.sNick
end
function UserConnected(user)
local t = ProfMan.GetProfilePermissions(user.iProfile)
--Глобальные команды
Core.SendToUser(user,"$UserCommand 1 3 "..Menu.."Помощь$<%[mynick]> "..Prefix.."help|")
Core.SendToUser(user,"$UserCommand 1 3 "..Menu.."Показать ваш IP адрес$<%[mynick]> "..Prefix.."myip|")
if t then
if t.bGetInfo then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Показать информацию$<%[mynick]> "..Prefix.."getinfo %[nick]|")
if t.bDrop or t.bKick or t.bTempBan or t.bBan or t.bMassMsg then
Core.SendToUser(user,"$UserCommand 0 2")
end
end
if t.bMassMsg then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Сообщение от имени бота$<%[mynick]> "..Prefix.."frombot %[nick] %[line:Введите текст сообщения]|")
if t.bDrop or t.bKick or t.bTempBan or t.bBan then
Core.SendToUser(user,"$UserCommand 0 2")
end
end
if t.bDrop then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Отключить$<%[mynick]> "..Prefix.."disconnect %[nick]|")
end
if t.bKick then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Кикнуть$<%[mynick]> "..Prefix.."drop %[nick] %[line:Причина]|")
end
if t.bTempBan then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Бан 1 час$<%[mynick]> "..Prefix.."tempban %[nick] 1h %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Бан 24 часа$<%[mynick]> "..Prefix.."tempban %[nick] 1d %[line:Причина]|")
end
if t.bBan then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Постоянный бан$<%[mynick]> "..Prefix.."ban %[nick] %[line:Причина]|")
end
--Управление хабом
if t.bTopic then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Топик\\Установить топик$<%[mynick]> "..Prefix.."topic %[line:Введите текст]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Топик\\Очистить топик$<%[mynick]> "..Prefix.."topic off|")
end
if t.bRefreshTxt then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Текстовые файлы\\Перезап. текст. файлы$<%[mynick]> "..Prefix.."reloadtxt|")
end
if t.bMassMsg then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Рассылка сообщений\\Массовая рассылка$<%[mynick]> "..Prefix.."massmsg %[line:Введите текст сообщения]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Рассылка сообщений\\Рассылка ОПам$<%[mynick]> "..Prefix.."opmassmsg %[line:Введите текст сообщения]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Сообщение от имени бота$<%[mynick]> "..Prefix.."frombot %[line:Ник] %[line:Введите текст сообщения]|")
end
--Списки банов
if t.bGetBans then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Список банов$<%[mynick]> "..Prefix.."getbans|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Список временных банов$<%[mynick]> "..Prefix.."gettempbans|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Список постоянных банов$<%[mynick]> "..Prefix.."getpermbans|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Временные баны
if t.bTempBan then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Временный бан$<%[mynick]> "..Prefix.."nicktempban %[line:Ник] %[line:Время (m = минут, h = часов, d = дней, w = недель)] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Временный бан IP$<%[mynick]> "..Prefix.."tempbanip %[line:Укажите IP] %[line:Время (m = минут, h = часов, d = дней, w = недель)] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Временный бан IP (полный)$<%[mynick]> "..Prefix.."fulltempbanip %[line:Укажите IP] %[line:Время (m = минут, h = часов, d = дней, w = недель)] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
if t.bTempUnban then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Снять временный бан$<%[mynick]> "..Prefix.."tempunban %[line:IP или ник]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Постоянные баны
if t.bBan then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Бан$<%[mynick]> "..Prefix.."nickban %[line:Ник] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Бан IP$<%[mynick]> "..Prefix.."banip %[line:Укажите IP] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Бан IP (полный)$<%[mynick]> "..Prefix.."fullbanip %[line:Укажите IP] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
if t.bUnban then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Снять бан$<%[mynick]> "..Prefix.."unban %[line:Ник или IP]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Списки диапазонов банов
if t.bGetRangeBans then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Список диапазонов банов $<%[mynick]> "..Prefix.."getrangebans|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Список временных банов диапазонов$<%[mynick]> "..Prefix.."getrangetempbans|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Список постоянных банов диапазонов$<%[mynick]> "..Prefix.."getrangepermbans|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Временные баны диапазонов
if t.bRangeTempBan then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Временный бан диапазона$<%[mynick]> "..Prefix.."rangetempban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона] %[line:Время (m = минут, h = часов, d = дней, w = недель)] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Временный бан диапазона (полный)$<%[mynick]> "..Prefix.."fullrangetempban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона] %[line:Время (m = минут, h = часов, d = дней, w = недель)] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
if t.bRangeTempUnban then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Снять временный бан диапазона$<%[mynick]> "..Prefix.."tempunban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Постоянные баны диапазонов
if t.bRangeBan then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Бан диапазона$<%[mynick]> "..Prefix.."rangeban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Бан диапазона (полный)$<%[mynick]> "..Prefix.."fullrangeban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
if t.bRangeUnban then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Снять бан диапазона$<%[mynick]> "..Prefix.."rangepermunban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Управление пользователями
if t.bAddRegUser then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Управление пользователями\\Зарегистрировать пользователя$<%[mynick]> "..Prefix.."addreguser %[line:Ник] %[line:Пароль] %[line:Имя профиля]|")
end
if t.bDelRegUser then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Управление пользователями\\Удалить регистрацию$<%[mynick]> "..Prefix.."delreguser %[line:Ник]|")
end
--Управление скриптами
if t.bRestartScripts then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Посмотреть список$<%[mynick]> "..Prefix.."getscripts|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Перезапустить скрипты$<%[mynick]> "..Prefix.."restartscripts|")
Core.SendToUser(user,"$UserCommand 0 3")
if ScriptEasy then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Перезапуск$<%[mynick]> "..Prefix.."restartscript %[line:Имя файла]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Старт$<%[mynick]> "..Prefix.."startscript %[line:Имя файла]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Стоп$<%[mynick]> "..Prefix.."stopscript %[line:Имя файла]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Сдвинуть вверх$<%[mynick]> "..Prefix.."scriptmoveup %[line:Имя файла]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Сдвинуть вниз$<%[mynick]> "..Prefix.."scriptmovedown %[line:Имя файла]|")
else
tScripts = ScriptMan.GetScripts()
for script in pairs(tScripts) do
local CurScript = tScripts[script].sName
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\"..CurScript.."\\Перезапуск$<%[mynick]> "..Prefix.."restartscript "..CurScript.."|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\"..CurScript.."\\Старт$<%[mynick]> "..Prefix.."startscript "..CurScript.."|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\"..CurScript.."\\Стоп$<%[mynick]> "..Prefix.."stopscript "..CurScript.."|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\"..CurScript.."\\Сдвинуть вверх$<%[mynick]> "..Prefix.."scriptmoveup "..CurScript.."|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\"..CurScript.."\\Сдвинуть вниз$<%[mynick]> "..Prefix.."scriptmovedown "..CurScript.."|")
end
end
end
end
end
OpConnected = UserConnected
RegConnected = UserConnected
function ChatArrival(user,data)
data = string.sub(data,1,string.len(data)-1)
local t = ProfMan.GetProfilePermissions(user.iProfile)
local s,e,pre,cmd = string.find(data, "^%b<>%s+(%p)(%S+)")
local s,e,param = string.find(data, "^%b<>%s+%p%S+%s+(.+)")
if pre == Prefix then
if t then
if t.bRestartScripts then
if cmd and cmd == "scriptmoveup" then
if param then
result = ScriptMan.MoveUp(param)
if result then
ToOps(user.sNick..": Скрипт "..param.." перемещён вверх на одну позицию.")
else
ToUser(user,"Ошибка: скрипт "..param.." переместить не удалось.")
end
else
ToUser(user,"<"..bot.."> Ошибка. Вы должны указать имя файла.")
end
return true
elseif cmd and cmd == "scriptmovedown" then
if param then
result = ScriptMan.MoveDown(param)
if result then
ToOps(user.sNick..": Скрипт "..param.." перемещён вниз на одну позицию.")
else
ToUser(user,"Ошибка: скрипт "..param.." переместить не удалось.")
end
else
ToUser(user,"<"..bot.."> Ошибка. Вы должны указать имя файла.")
end
return true
end
end
if t.bDrop then
if cmd and cmd == "disconnect" then
if param then
local CurUser = Core.GetUser(param)
if CurUser then
Core.Disconnect(CurUser)
else
ToUser(user,"Ошибка: юзер "..param.." не найден на хабе")
end
else
ToUser(user,"Ошибка: Вы должны указать ник.")
end
return true
end
end
if t.bMassMsg then
if cmd and cmd == "frombot" then
local s,e,nick,msg = string.find(param, "^(%S+)%s+(.+)$")
if nick and msg then
local CurUser = Core.GetUser(nick)
if CurUser then
FromBot(CurUser,msg)
ToUser(user,"Сообщение отправлено")
ToOps(user.sNick.." отправил сообщение от имени бота юзеру "..nick.." :"..msg)
else
ToUser(user,"Ошибка: юзер "..nick.." не найден на хабе")
end
else
ToUser(user,"Ошибка синтаксиса. Синтаксис: "..Prefix.."frombot <ник> <текст сообщения>")
end
return true
end
end
end
end
end
function ToUser(user,msg)
Core.SendToUser(user,"<"..bot.."> "..msg)
end
function ToOps(msg)
Core.SendToOps("<"..bot.."> "..msg)
end
function FromBot(user,msg)
Core.SendPmToUser(user,bot,msg)
end
Автор: dimetro 17.1.2015, 23:07
Не совсем понятный вопрос, но ответ скорей всего тут
Автор: probest 17.1.2015, 23:15
Цитата(dimetro @ 17.1.2015, 23:07)
Не совсем понятный вопрос, но ответ скорей всего
тутнужен простой код чтоб при добавление его в скрипт нику ( который я указал ) довались права администратора. Есть такая возможность?
то есть допустим я администратор и пока запушен данный скрипт (в который я добавил этот код) у меня будут права администратора
Автор: dimetro 17.1.2015, 23:17
Цитата(probest @ 17.1.2015, 22:12)
нужен простой код чтоб при добавление его в скрипт нику ( который я указал ) довались права администратора. Есть такая возможность?
По этому поводу как раз ссылка выше на код.
А не проще зарегистрировать ник этот с правами Оператора? И получит достук к командам\меню скриптов Админских).
Автор: probest 17.1.2015, 23:26
Цитата(dimetro @ 17.1.2015, 23:17)
По этому поводу как раз ссылка выше на код.
А не проще зарегистрировать ник этот с правами Оператора? И получит достук к командам\меню скриптов Админских).
я кажется понял в той ссылке что вы указали сейчас попробую уважаемый спасибо
А по поводу вашего замечания, нет. В том то и дело мне нужно что в скриптах было это прописано
что то не выходит
Автор: dimetro 17.1.2015, 23:28
Только учтите, что это не даст права доступа к стандартным командам(баны,кик и т.д.) Опов/Админов.
Автор: alex82 17.1.2015, 23:31
В том скрипте, что выложен в первом посте, это нельзя сделать, поскольку он лишь отсылает меню, а за обработку команд в данномслучае отвечает PtokaX. В других скриптах сделать это можно, но код будет разный для каждого скрипта. Т.е. простого и универсально кода тут нет и быть не может.
Автор: probest 17.1.2015, 23:37
Цитата(alex82 @ 17.1.2015, 23:31)
В том скрипте, что выложен в первом посте, это нельзя сделать, поскольку он лишь отсылает меню, а за обработку команд в данномслучае отвечает PtokaX. В других скриптах сделать это можно, но код будет разный для каждого скрипта. Т.е. простого и универсально кода тут нет и быть не может.
А есть ли отдельный скрипт что давал полный доступ? Простой скрипт чтоб давались права нику. Либо внедрить в этот скрипт чтоб нику давались права регистрации пользователей с любым рангом
Цитата(dimetro @ 17.1.2015, 23:28)
Только учтите, что это не даст права доступа к стандартным командам(баны,кик и т.д.) Опов/Админов.
как же сделать тогда чтоб давались права. Хотя бы чтоб я свободно мог регистрировать пользователя с правами администратора
Автор: alex82 17.1.2015, 23:44
Цитата
как же сделать тогда чтоб давались права. Хотя бы чтоб я свободно мог регистрировать пользователя с правами администратора
Насколько часто Вы регистрируете пользователей с такими правами? Думаю, достаточно редко. В таком случае можно вручную добавить аккаунт в RegisteredUsers.xml.
Автор: probest 17.1.2015, 23:46
Цитата(alex82 @ 17.1.2015, 23:44)
Насколько часто Вы регистрируете пользователей с такими правами? Думаю, достаточно редко. В таком случае можно вручную добавить аккаунт в RegisteredUsers.xml.
вы понимаете сервер находиться не у меня. Мне нужен доступ даже в случае того что права пропадут. Либо если другие администраторы удалят их.
Так как доступ у меня я хотел бы как то обезопасить свои права
Автор: alex82 17.1.2015, 23:48
probest, а Вы понимаете, что в таком случае любой, кто зайдет на хаб с Вашим ником, будет иметь такие права?
Автор: probest 17.1.2015, 23:51
Цитата(alex82 @ 17.1.2015, 23:48)
probest, а Вы понимаете, что в таком случае любой, кто зайдет на хаб с Вашим ником, будет иметь такие права?
Но ведь если я его зарегистрирую он не сможет зайти через этот ник. Да и нужно угадать будет ему что за это ник. я же могу поставить любой набор букв. Мне не обезательно иметь ключик админа. Мне хотя бы нужно иметь полный доступ к команде регистрации пользователей
Цитата(probest @ 17.1.2015, 23:50)
Но ведь если я его зарегистрирую он не сможет зайти через этот ник. Да и нужно угадать будет ему что за это ник. я же могу поставить любой набор букв. Мне не обезательно иметь ключик админа. Мне хотя бы нужно иметь полный доступ к команде регистрации пользователей
Если не трудно помогите
Автор: dimetro 17.1.2015, 23:52
Цитата(probest @ 17.1.2015, 22:46)
вы понимаете сервер находиться не у меня. Мне нужен доступ даже в случае того что права пропадут. Либо если другие администраторы удалят их.
Так как доступ у меня я хотел бы как то обезопасить свои права
Тогда как Вы добавляете-удаляете-редактируете скрипты? Есть на форуме скрипт и программа удаленного управления -
PXControl by Alex82
Автор: probest 17.1.2015, 23:54
Цитата(dimetro @ 17.1.2015, 23:52)
Тогда как Вы добавляете-удаляете-редактируете скрипты? Есть на форуме скрипт и программа удаленного управления -
PXControl by Alex82
как раз таки я ею и пользуюсь
дело в том что если мои права удалят я не смогу ею пользоваться.
Автор: alex82 17.1.2015, 23:55
probest, покажите тот скрипт, что используется на хабе для регистрации пользователей. Если скрипта нет, и регистрация производится при помощи встроенных команд, то его придется поставить.
Автор: probest 17.1.2015, 23:57
Цитата(alex82 @ 17.1.2015, 23:55)
dimetro, покажите тот скрипт, что используется на хабе для регистрации пользователей. Если скрипта нет, и регистрация производится при помощи встроенных команд, то его придется поставить.
CODE
--[[
Команды:
!regme <pass> - зарегистрироваться
!passwd <new_pass> - изменить пароль (встроенная команда)
!unreg - удалить регистрацию
]]--
----------------------------------------------------- Конфигурация -----------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
ShowInfo = 1 -- показывать дополнительную информацию о том, как можно избежать повторных вводов пароля при входе на хаб
ShowToAll = 0 -- показывать всем пользователям, что на хабе новый зарегистрированный участник
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
bot = SetMan.GetString(21)
function UserConnected(tUser) --- юзер заявился
UserMenu(tUser) --- и заполучил меню (а сама функция отправки меню ниже)
end
OpConnected = UserConnected --- ОПы тоже люди
RegConnected = UserConnected --- и РЕГи тоже
function ChatArrival(tUser, sData) --- изучаем всё, что отправляется в чат
Core.GetUserAllData(tUser) --- выбиваем из юзера всю информацию (на всякий случай)
local sData = sData:sub(1,-2) --- захват видимой части сообщения, включая и ник отправителя
local _,_,cmd = sData:find("%b<>%s+(%S+)") --- захват первого слова после ника отправителя и первого пробела
if cmd == "!regme" then --- если это команда регистрации
if not(tUser.bRegistered) and RegMan.GetReg(tUser.sNick) == nil then --- если юзер не зареген и если данного ника нет в списке зарегистрированных
local s,e,pass = string.find(sData, "%b<>%s+%S+%s+(%S+)") --- то проверяем наличие пароля в команде
if (pass == nil) then --- если нет пароля
Core.SendToUser(tUser, "<"..bot.."> Вы забыли ввести пароль!") --- от ворот поворот, пусть пишет по новой
return true --- но команду всё же скрываем от остальных
end --- проходим дальше, если пароль есть
RegMan.AddReg(tUser.sNick, pass, 3) --- и регистрируем его
Core.SendToUser(tUser, "<"..bot.."> Вы теперь зарегистрированы на хабе. Ваш ник:"..tUser.sNick.." Пароль: "..pass..". Сохраните пароль и не забудьте перезайти на хаб!") --- и юзер получает такое сообщение со своим паролем, чтоб мог скопировать и сохранить
if (ShowInfo == 1) then --- если чтоит галочка "показывать доп. информацию с советом"
Core.SendToUser(tUser, "<"..bot.."> Теперь для входа на хаб под вашим ником необходимо знать пароль. Вы можете вводить его каждый раз вручную, либо прописать пароль в настройках клиента. Для этого найдите в списке избранных хабов этот хаб, зайдите в его свойства и пропишите в строках Nick и Password ваши ник и пароль.") --- то получает его
end --- хэппи энд - 1
if (ShowToAll == 1) then --- если стоит галочка "известить всех о новом зарегенном юзере"
Core.SendToAll("<"..bot.."> Поприветствуем нового зарегистрировавшегося участника - "..tUser.sNick.." !!!") --- радостно представляем остальному обществу новичка
end --- хэппи энд - 2
else --- этот ник уже зареген, оказывается
Core.SendToUser(tUser, "<"..bot.."> Вы уже зарегистрированы!") --- и он получает отказ
end --- трагический финал
return true --- тоже скрываем команду от других
end --- конец истории о регистрации
if cmd == "!unreg" then --- если же команда - "удалить регистрацию"
if (tUser.iProfile > -1) then --- и если юзер в самом деле зареген
RegMan.DelReg(tUser.sNick) --- хозяин-барин, удовлетворяем желание клиента
Core.SendToUser(tUser, "<"..bot.."> Ваш аккаунт теперь удален.") --- и отправляем ему открытку с нашими сожалениями.
else --- если же юзер не зареген
Core.SendToUser(tUser, "<"..bot.."> Команда доступна только для зарегистрированных пользователей!") --- теперь он тоже об этом знает
end ---
return true --- скрываем команду
end --- покончили с удалением регистрации
if cmd == "!reghelp" then --- если команда - о помощи
local msg = "\r\n\r\n".. --- собираем всё что может помочь юзеру
"\t"..string.rep("=", 50).."\r\n"..
"\t\tПомощь по регистрации\r\n"..
"\t"..string.rep("-", 100).."\r\n\r\n"..
"\t!reghelp\t\t - Этот файл помощи\r\n"..
"\t!regme <пасс>\t - Зарегистрироваться (можно не указывать пасс)\r\n"..
"\t!passwd <пасс>\t - Сменить пароль (встроенная команда хаба)\r\n"..
"\t!unreg\t\t - Удалить аккаунт\r\n\r\n"..
"\tТакже все команды доступны в меню хаба:\r\n"..
"\tНажмите правой кнопкой мыши на любого пользователя\r\n"..
"\tи выберите подменю 'Регистрация'\r\n"
Core.SendPmToNick(tUser.sNick, bot, msg) --- и отправлем ему в приват, на полчаса чтивом он обеспечен
return true --- тоже скрываем команду
end --- конец этапа помощи
end --- и вообще, хватит читать чат
ToArrival = ChatArrival --- если вышеуказанные команды напишут в привате, результат будет такой же (не очень верится, но допускаю)
function UserMenu(tUser) --- обещанная функция об отправке меню юзеру при входе
if (tUser.iProfile == -1) then --- это меню получит незарегенный юзер
Core.SendToUser(tUser, "$UserCommand 0 3")
Core.SendToUser(tUser, "$UserCommand 1 3 Регистрация\\Зарегистрироваться$<%[mynick]> !regme %[line:Введите пароль]|")
Core.SendToUser(tUser, "$UserCommand 1 3 Регистрация\\Помощь при регистрацию$<%[mynick]> !reghelp|")
else --- а все зарегенные получат это меню
Core.SendToUser(tUser, "$UserCommand 0 3")
Core.SendToUser(tUser, "$UserCommand 1 3 Регистрация\\Сменить пароль$<%[mynick]> !passwd %[line:Введите новый пароль]|")
Core.SendToUser(tUser, "$UserCommand 1 3 Регистрация\\Удалить регистрацию$<%[mynick]> !unreg|")
Core.SendToUser(tUser, "$UserCommand 1 3 Регистрация\\Помощь при регистрации$<%[mynick]> !reghelp|")
end ---
end --- отправили
--- эта функция - для отправления в опчат сообщений об ошибке скрипта, если скрипт падает в процессе эксплуатации
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
Автор: alex82 18.1.2015, 0:06
probest, это скрипт саморегистрации, а Вам нужен тот, что позволяет регистрировать других юзеров.
Если Вы так боитесь удаления своей регистрации, то можно поступить проще - написать скрипт, который будет через определенные промежутки времени проверять регистрацию, и при необходимости восстанавливать ее.
Автор: probest 18.1.2015, 0:14
Цитата(alex82 @ 18.1.2015, 0:06)
probest, это скрипт саморегистрации, а Вам нужен тот, что позволяет регистрировать других юзеров.
Если Вы так боитесь удаления своей регистрации, то можно поступить проще - написать скрипт, который будет через определенные промежутки времени проверять регистрацию, и при необходимости восстанавливать ее.
ну вот в самом начале скрипт управление то что я отправил как раз таки выполняет регистрацию других пользователей.
там есть строки регистрации и её удаления
Цитата(alex82 @ 18.1.2015, 0:06)
probest, это скрипт саморегистрации, а Вам нужен тот, что позволяет регистрировать других юзеров.
Если Вы так боитесь удаления своей регистрации, то можно поступить проще - написать скрипт, который будет через определенные промежутки времени проверять регистрацию, и при необходимости восстанавливать ее.
долго ли писать такой скрипт? можно как бонус тоже поставить
и я нашёл интересную функцию вот
function ChatArrival(tUser, sData)
local cmd = sData:match"%b<>%s+(%S+).*|"
if cmd == "!команда" then
-- здесь вписываем то, что должно происходить по команде!
return true
end
end
могу ли я её вставлять во все скрипты что при вводе команды к примеру !зарегать происходила регистрация администратора?
и если не сложно напишите что сюда нужно дописать чтоб это происходило
Автор: alex82 18.1.2015, 0:21
Цитата(probest @ 17.1.2015, 23:14)
долго ли писать такой скрипт? можно как бонус тоже поставить
Код
nick = "test"
pass = "123456"
profile = 0
time = 10 -- секунд
function OnStartup()
OnTimer()
TmrMan.AddTimer(1000*time)
end
function OnTimer()
local reg = RegMan.GetReg(nick)
if not reg then
RegMan.AddReg(nick, pass, profile)
elseif reg.iProfile ~= profile or reg.sPassword ~= pass then
RegMan.ChangeReg(nick, pass, profile)
end
end
Проверяет наличие указанного аккаунта и соответствие пароля и профиля, и при необходимости восстанавливает его.
Автор: probest 18.1.2015, 0:30
а вот по поводу этой функции она же проще? можно же просто её дописать в любой скрипт и будет функционировать
function ChatArrival(tUser, sData)
local cmd = sData:match"%b<>%s+(%S+).*|"
if cmd == "!команда" then
-- здесь вписываем то, что должно происходить по команде!
return true
end
end
спасибо за скрипт его тоже добавлю. Время которое написано 10 секунд я так понял это время проверки. Его тоже над будет внедрить.
Но мне стала интересна можно ли добавить регистрацию по команде. вон в той функции
Автор: alex82 18.1.2015, 0:31
Цитата(probest @ 17.1.2015, 23:26)
а вот по поводу этой функции она же проще? можно же просто её дописать в любой скрипт и будет функционировать
Нельзя просто взять и запихнуть произвольный кусок кода в любой скрипт. Обработка команд, как правило, отличается в каждом скрипте. Следовательно, и код для каждого скрипта будет свой.
Автор: probest 18.1.2015, 0:49
Цитата(alex82 @ 18.1.2015, 0:31)
Нельзя просто взять и запихнуть произвольный кусок кода в любой скрипт. Обработка команд, как правило, отличается в каждом скрипте. Следовательно, и код для каждого скрипта будет свой.
ну вот эту функцию можно ли в самый первый код скрипта управления который яя скинул. чтоб в нем эта функция там была
CODE
--###################################################################################
-- HubMenuPro v.1 by ZVER
-- API2 (PtokaX 0.4.x.x)
--###################################################################################
Menu = "Меню хаба\\"
UserMenu = "Юзер\\"
AdminMenu = "Управление\\"
ScriptEasy = false --Упрощенное меню управления скриптами
Prefix = "!"
--###################################################################################
function OnStartup()
local tTmp = SetMan.GetHubBot()
bot = tTmp.sNick
end
function UserConnected(user)
local t = ProfMan.GetProfilePermissions(user.iProfile)
--Глобальные команды
Core.SendToUser(user,"$UserCommand 1 3 "..Menu.."Помощь$<%[mynick]> "..Prefix.."help|")
Core.SendToUser(user,"$UserCommand 1 3 "..Menu.."Показать ваш IP адрес$<%[mynick]> "..Prefix.."myip|")
if t then
if t.bGetInfo then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Показать информацию$<%[mynick]> "..Prefix.."getinfo %[nick]|")
if t.bDrop or t.bKick or t.bTempBan or t.bBan or t.bMassMsg then
Core.SendToUser(user,"$UserCommand 0 2")
end
end
if t.bMassMsg then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Сообщение от имени бота$<%[mynick]> "..Prefix.."frombot %[nick] %[line:Введите текст сообщения]|")
if t.bDrop or t.bKick or t.bTempBan or t.bBan then
Core.SendToUser(user,"$UserCommand 0 2")
end
end
if t.bDrop then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Отключить$<%[mynick]> "..Prefix.."disconnect %[nick]|")
end
if t.bKick then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Кикнуть$<%[mynick]> "..Prefix.."drop %[nick] %[line:Причина]|")
end
if t.bTempBan then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Бан 1 час$<%[mynick]> "..Prefix.."tempban %[nick] 1h %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Бан 24 часа$<%[mynick]> "..Prefix.."tempban %[nick] 1d %[line:Причина]|")
end
if t.bBan then
Core.SendToUser(user,"$UserCommand 1 2 "..UserMenu.."Постоянный бан$<%[mynick]> "..Prefix.."ban %[nick] %[line:Причина]|")
end
--Управление хабом
if t.bTopic then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Топик\\Установить топик$<%[mynick]> "..Prefix.."topic %[line:Введите текст]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Топик\\Очистить топик$<%[mynick]> "..Prefix.."topic off|")
end
if t.bRefreshTxt then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Текстовые файлы\\Перезап. текст. файлы$<%[mynick]> "..Prefix.."reloadtxt|")
end
if t.bMassMsg then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Рассылка сообщений\\Массовая рассылка$<%[mynick]> "..Prefix.."massmsg %[line:Введите текст сообщения]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Рассылка сообщений\\Рассылка ОПам$<%[mynick]> "..Prefix.."opmassmsg %[line:Введите текст сообщения]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Сообщение от имени бота$<%[mynick]> "..Prefix.."frombot %[line:Ник] %[line:Введите текст сообщения]|")
end
--Списки банов
if t.bGetBans then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Список банов$<%[mynick]> "..Prefix.."getbans|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Список временных банов$<%[mynick]> "..Prefix.."gettempbans|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Список постоянных банов$<%[mynick]> "..Prefix.."getpermbans|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Временные баны
if t.bTempBan then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Временный бан$<%[mynick]> "..Prefix.."nicktempban %[line:Ник] %[line:Время (m = минут, h = часов, d = дней, w = недель)] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Временный бан IP$<%[mynick]> "..Prefix.."tempbanip %[line:Укажите IP] %[line:Время (m = минут, h = часов, d = дней, w = недель)] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Временный бан IP (полный)$<%[mynick]> "..Prefix.."fulltempbanip %[line:Укажите IP] %[line:Время (m = минут, h = часов, d = дней, w = недель)] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
if t.bTempUnban then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Снять временный бан$<%[mynick]> "..Prefix.."tempunban %[line:IP или ник]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Постоянные баны
if t.bBan then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Бан$<%[mynick]> "..Prefix.."nickban %[line:Ник] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Бан IP$<%[mynick]> "..Prefix.."banip %[line:Укажите IP] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Бан IP (полный)$<%[mynick]> "..Prefix.."fullbanip %[line:Укажите IP] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
if t.bUnban then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны\\Снять бан$<%[mynick]> "..Prefix.."unban %[line:Ник или IP]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Списки диапазонов банов
if t.bGetRangeBans then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Список диапазонов банов $<%[mynick]> "..Prefix.."getrangebans|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Список временных банов диапазонов$<%[mynick]> "..Prefix.."getrangetempbans|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Список постоянных банов диапазонов$<%[mynick]> "..Prefix.."getrangepermbans|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Временные баны диапазонов
if t.bRangeTempBan then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Временный бан диапазона$<%[mynick]> "..Prefix.."rangetempban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона] %[line:Время (m = минут, h = часов, d = дней, w = недель)] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Временный бан диапазона (полный)$<%[mynick]> "..Prefix.."fullrangetempban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона] %[line:Время (m = минут, h = часов, d = дней, w = недель)] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
if t.bRangeTempUnban then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Снять временный бан диапазона$<%[mynick]> "..Prefix.."tempunban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Постоянные баны диапазонов
if t.bRangeBan then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Бан диапазона$<%[mynick]> "..Prefix.."rangeban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Бан диапазона (полный)$<%[mynick]> "..Prefix.."fullrangeban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона] %[line:Причина]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
if t.bRangeUnban then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Баны диапазонов\\Снять бан диапазона$<%[mynick]> "..Prefix.."rangepermunban %[line:Начальный IP диапазона] %[line:Конечный IP диапазона]|")
Core.SendToUser(user,"$UserCommand 0 3")
end
--Управление пользователями
if t.bAddRegUser then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Управление пользователями\\Зарегистрировать пользователя$<%[mynick]> "..Prefix.."addreguser %[line:Ник] %[line:Пароль] %[line:Имя профиля]|")
end
if t.bDelRegUser then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Управление пользователями\\Удалить регистрацию$<%[mynick]> "..Prefix.."delreguser %[line:Ник]|")
end
--Управление скриптами
if t.bRestartScripts then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Посмотреть список$<%[mynick]> "..Prefix.."getscripts|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Перезапустить скрипты$<%[mynick]> "..Prefix.."restartscripts|")
Core.SendToUser(user,"$UserCommand 0 3")
if ScriptEasy then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Перезапуск$<%[mynick]> "..Prefix.."restartscript %[line:Имя файла]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Старт$<%[mynick]> "..Prefix.."startscript %[line:Имя файла]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Стоп$<%[mynick]> "..Prefix.."stopscript %[line:Имя файла]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Сдвинуть вверх$<%[mynick]> "..Prefix.."scriptmoveup %[line:Имя файла]|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\Сдвинуть вниз$<%[mynick]> "..Prefix.."scriptmovedown %[line:Имя файла]|")
else
tScripts = ScriptMan.GetScripts()
for script in pairs(tScripts) do
local CurScript = tScripts[script].sName
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\"..CurScript.."\\Перезапуск$<%[mynick]> "..Prefix.."restartscript "..CurScript.."|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\"..CurScript.."\\Старт$<%[mynick]> "..Prefix.."startscript "..CurScript.."|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\"..CurScript.."\\Стоп$<%[mynick]> "..Prefix.."stopscript "..CurScript.."|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\"..CurScript.."\\Сдвинуть вверх$<%[mynick]> "..Prefix.."scriptmoveup "..CurScript.."|")
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Скрипты\\"..CurScript.."\\Сдвинуть вниз$<%[mynick]> "..Prefix.."scriptmovedown "..CurScript.."|")
end
end
end
end
end
OpConnected = UserConnected
RegConnected = UserConnected
function ChatArrival(user,data)
data = string.sub(data,1,string.len(data)-1)
local t = ProfMan.GetProfilePermissions(user.iProfile)
local s,e,pre,cmd = string.find(data, "^%b<>%s+(%p)(%S+)")
local s,e,param = string.find(data, "^%b<>%s+%p%S+%s+(.+)")
if pre == Prefix then
if t then
if t.bRestartScripts then
if cmd and cmd == "scriptmoveup" then
if param then
result = ScriptMan.MoveUp(param)
if result then
ToOps(user.sNick..": Скрипт "..param.." перемещён вверх на одну позицию.")
else
ToUser(user,"Ошибка: скрипт "..param.." переместить не удалось.")
end
else
ToUser(user,"<"..bot.."> Ошибка. Вы должны указать имя файла.")
end
return true
elseif cmd and cmd == "scriptmovedown" then
if param then
result = ScriptMan.MoveDown(param)
if result then
ToOps(user.sNick..": Скрипт "..param.." перемещён вниз на одну позицию.")
else
ToUser(user,"Ошибка: скрипт "..param.." переместить не удалось.")
end
else
ToUser(user,"<"..bot.."> Ошибка. Вы должны указать имя файла.")
end
return true
end
end
if t.bDrop then
if cmd and cmd == "disconnect" then
if param then
local CurUser = Core.GetUser(param)
if CurUser then
Core.Disconnect(CurUser)
else
ToUser(user,"Ошибка: юзер "..param.." не найден на хабе")
end
else
ToUser(user,"Ошибка: Вы должны указать ник.")
end
return true
end
end
if t.bMassMsg then
if cmd and cmd == "frombot" then
local s,e,nick,msg = string.find(param, "^(%S+)%s+(.+)$")
if nick and msg then
local CurUser = Core.GetUser(nick)
if CurUser then
FromBot(CurUser,msg)
ToUser(user,"Сообщение отправлено")
ToOps(user.sNick.." отправил сообщение от имени бота юзеру "..nick.." :"..msg)
else
ToUser(user,"Ошибка: юзер "..nick.." не найден на хабе")
end
else
ToUser(user,"Ошибка синтаксиса. Синтаксис: "..Prefix.."frombot <ник> <текст сообщения>")
end
return true
end
end
end
end
end
function ToUser(user,msg)
Core.SendToUser(user,"<"..bot.."> "..msg)
end
function ToOps(msg)
Core.SendToOps("<"..bot.."> "..msg)
end
function FromBot(user,msg)
Core.SendPmToUser(user,bot,msg)
end
вот сюда
в самый конец. чтоб она выполняла команду регистрации которая как раз таки и есть в этом скрипте. В нем происходит регистрация админов
вот этот кусок из этого скрипта
CODE
--Управление пользователями
if t.bAddRegUser then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Управление пользователями\\Зарегистрировать пользователя$<%[mynick]> "..Prefix.."addreguser %[line:Ник] %[line:Пароль] %[line:Имя профиля]|")
end
if t.bDelRegUser then
Core.SendToUser(user,"$UserCommand 1 3 "..AdminMenu.."Управление пользователями\\Удалить регистрацию$<%[mynick]> "..Prefix.."delreguser %[line:Ник]|")
end
можно ли сделать это?
Автор: alex82 18.1.2015, 0:49
Добавил.
Если будете искать команду в скрипте, то имейте ввиду, что она находится не в конце, поскольку, как я уже 2 раза писал, нельзя просто взять и запихнуть что угодно в любую строку скрипта.
Автор: probest 18.1.2015, 1:14
спасибо добрый человек сейчас попробую разобраться. Очень благодарен. Давно пользуюсь твоей программой очень полезная штука. Ждал всегда её обновлений чтоб поддерживала новые ptokax
я нашёл куда вписано это вроде заменил команду а вот пароль куда вписать?
всё я разобрался. Ты просто слов нет. СПАСИБО!
Автор: alex82 18.1.2015, 1:15
Цитата(probest @ 18.1.2015, 0:01)
я нашёл куда вписано это вроде заменил команду а вот пароль куда вписать?
Пароль указывается в команде при регистрации нового юзера.
Автор: probest 18.1.2015, 1:17
Цитата(alex82 @ 18.1.2015, 1:15)
Пароль указывается в команде при регистрации нового юзера.
Я всё понял всё шикарно работает. Сделано с умом спасибо