Название на орегинале: User.Profile.Bot.v1.1..LUA5x.RUS.
Поддержка Lua 5.0 / 5.1
Описание.
Итак, что умеет этот скрипт?- при входе на хаб, если у юзера еще нет анкеты, то он может быть уведомлен о создании новой- можно сколько угодно раз редактировать пункты своей анкеты- можно смотреть список юзеров, у кого есть анкеты- можно смотреть анкету конкретного юзера- команда удаления своей анкеты имеет функцию подтверждения (повторный ввод команды с долнительным словом)- админ может удалить любую анкету или очистить любой пункт любой анкеты
+ полноценное меню. Не нужно даже перезаходить, чтобы начать редактировать свою анкету с помощью меню.
Саму менюшку с редактированием пукнтов анкеты я вынес в конфигуратор вместе с конфигуратором самой анкеты.Еще сделал поддержку LUA 5.1.1, поправил проверку прав доступа к командам, немного все переоформил..
В общем, смотрим).
============================================================
Я же добавлю лишь то, что данный скрипт проверен на моём сообственном хабе под PtokaX 0.3.6.0 Работает нормально.
Будут проблемы пишите в аську 473-243-811 Я конечно не смагу вам точно испарвить скрипт но магу дать вам проверенную птоках.
============================================================
А скачать Данный скрипт можно пока на маём фтп сервере.
Адрес ftp://91.146.48.45/Programs/Scripts/
Ссылка на фтп сервер проверена 100%
============================================================
Cовременем возможно будут новости и о других полезных скриптах, а пока же я советую всем кто создаёт хабы, создавать их на PtokaX v 0.3.6.0 Так как все крипты в будующем которые будут прописаны здесь будут проверяны на данной машине.
Если конечно вы можете переделывать скрипты и если у вас есть на это время то пожалуйста качайте и переделывайте.
============================================================
Содиржание скрипта!
============================================================
-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\
--||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
--||||| Русскую версию ||||||||||| |||||||| b.y: S.t.0.n.e d.b | |
--||||| подготовил: NRJ ||||||||||| А.Н.К.Е.Т.И.Р.О.В.А.Н.И.Е ||||||||||||||||||||||||||||||| |
--||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||| |
--||||||||||||||||||||||||||||||||| v1.1 - LUA 5.x - PtokaX ||||||||||||||||||||||||||||||| |
--||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/
--
--
----[ v1.1 Что же здесь интересненького? ]--------------------------------------------------------------------------------
--
-- Данный скрипт позволит вашим пользователям создавать и управлять своими анкетами на основании вашего шаблона.
--
-- Пункты анкеты:
-- - имя_в_реале
-- - дата_рождения
-- - знак_зодиака
-- - пол
-- - тело
-- - icq
-- - где_живешь
-- - учеба_работа
-- - о_себе
-- - семья
-- - о_других
-- - интересы
-- - музыка
-- - фильмы
-- - привычки
--
-- Также есть администраторская команда для редактирования чужих анкет.
-- Управление доступом к командам.
--
-- F.A.Q.
--
-- В. Как добавить или удалить пункт анкеты?
--
-- О. Во-первых, вам нужно внести новый пункт анкеты или отредактировать старый в таблице
-- tUserProfiles[curUser], которая вынесена в конфигуратор.
-- Во-вторых, необходимо отредактировать вывод анкет в чат. Данный пункт находится в
-- функции showProfile(curUser,type) - там увидете.
-- В-третьих, не забудьте поменять команды меню, которые также вынесены в конфигуратор - MenuProfile(user)
--
-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\
--|• Настройки •||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/
tVar = {
sPrefix = "!", -- Префикс команд
sBot = "Profiles", -- Имя бота
sFolder = "AHKETbI", -- Папка скрипта
sFile = "profiles.dat", -- Название БД
sRCEnable = "on", -- Посылать менюшку? <on=да, off=нет>
sEdited = "on", -- Прятать анкеты, которые еще не редактировались? <on=да, off=нет>
sSpam = "on", -- Если у юзера еще нет анкеты, то предлагать ему создать ее при входе?
sMsgtoUsers = "Теперь можно создать свою анкету! Напиши !анкета создать", -- Что писать при входе?
sRCName = "Анкеты", -- Название меню
}
-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\
--|• Команды •||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/
tCmd = {
-- Команды пользователей
sHelp = "анхелп", -- Показать помощь
sProfile = "анкета", -- Редактировать свою анкету
sViewPro = "анкеты", -- Посмотреть список анкет юзеров
-- Команды админа
sDelPro = "delpro", -- Удалить анкету юзера или какое-то значение в анкете
}
-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\
--|• Профили •||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/
-- Пользовательский доступ (1=допуск/0=запрет) -- **Профили 1 и 2 созданы для поддержки RoboCop'ом**
pUser = {
[0] = 1, -- =[Master]=
[1] = 1, -- =[OP]=
[2] = 1, -- =[ViP]=
[3] = 1, -- =[Reg]=
[4] = 1, -- =[Custom Profile 1]=
[5] = 1, -- =[Custom Profile 2]=
[-1] = 1, -- =[UnReg]=
}
-- Административный доступ (1=допуск/0=запрет)
pAdmin = {
[0] = 1, -- =[Master]=
[1] = 0, -- =[OP]=
[2] = 0, -- =[ViP]=
[3] = 0, -- =[Reg]=
[4] = 0, -- =[Custom Profile 1]=
[5] = 0, -- =[Custom Profile 2]=
[-1] = 0, -- =[UnReg]=
}
-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\
--|• Пункты анкеты •||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/
-- Пункты анкеты и их значения при создании
-- ["Пункт"] = "Значение по умолчанию"
-- !!! ["edited"] = "0" - НЕ ТРОГАТЬ!
function newProfile(curUser)
tUserProfiles[curUser] = {}
tUserProfiles[curUser] = {
["имя_в_реале"] = "",
["дата_рождения"] = "",
["знак_зодиака"] = "",
["пол"] = "",
["тело"] = "",
["icq"] = "",
["где_живешь"] = "",
["учеба_работа"] = "",
["о_себе"] = "",
["семья"] = "",
["о_других"] = "",
["интересы"] = "",
["музыка"] = "",
["фильмы"] = "",
["привычки"] = "",
["edited"] = "0",
}
saveProfile();
end
-- Меню для редактирования пунктов своей анкеты. Специально вынес отдельно (NRJ)
function MenuProfile(user)
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Посмотреть$<%[mynick]> !"..tCmd.sProfile.."|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Настоящее имя$<%[mynick]> !"..tCmd.sProfile.." добавить имя_в_реале %[line:Твое настоящее имя?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Дата рождения$<%[mynick]> !"..tCmd.sProfile.." добавить дата_рождения %[line:Дата рождения?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Знак Зодиака$<%[mynick]> !"..tCmd.sProfile.." добавить знак_зодиака %[line:Знак Зодиака?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Пол$<%[mynick]> !"..tCmd.sProfile.." добавить пол %[line:ж) или м)?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Телосложение$<%[mynick]> !"..tCmd.sProfile.." добавить тело %[line:Рост, вес, общее впечатление?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\ICQ$<%[mynick]> !"..tCmd.sProfile.." добавить icq %[line:Твоя аська?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Где живешь$<%[mynick]> !"..tCmd.sProfile.." добавить где_живешь %[line:Где ты живешь?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Учеба и работа$<%[mynick]> !"..tCmd.sProfile.." добавить учеба_работа %[line:Где учишься и/или работаешь?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\О себе$<%[mynick]> !"..tCmd.sProfile.." добавить о_себе %[line:Немного о себе..]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\О семье$<%[mynick]> !"..tCmd.sProfile.." добавить семья %[line:Парень, девушка, муж, жена, дети?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Цели знакомства$<%[mynick]> !"..tCmd.sProfile.." добавить о_других %[line:С кем бы хотелось познакомиться?..]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Интересы$<%[mynick]> !"..tCmd.sProfile.." добавить интересы %[line:Твои интересы?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Музыка$<%[mynick]> !"..tCmd.sProfile.." добавить музыка %[line:Любимая музыка?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Фильмы$<%[mynick]> !"..tCmd.sProfile.." добавить фильмы %[line:Любимые фильмы?]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Редактировать\\Вредные привычки$<%[mynick]> !"..tCmd.sProfile.." добавить привычки %[line:Курение, водка, КС?]|")
end
-- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\
--|• Основной код •|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
-- \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/
function Main()
frmHub:RegBot(tVar.sBot);
loadProfile();
end
function ChatArrival(user,data)
local data = string.sub(data,1,-2)
local s,e,sTrig,sCmd = string.find(data,"%b<>%s*(%S)(%S+)")
if sTrig == tVar.sPrefix then
local tScriptCmds = {
[tCmd.sHelp] = function(user,data)
local msgGreeting = "\r\n"
if (pUser[user.iProfile] == 1) then
msgGreeting = msgGreeting..tab.."::: ::: ::: Команды управления анкетами ::: ::: ::: \r\n\r\n"
..tab.."Помощь по командам - "..tVar.sPrefix..tCmd.sHelp.."\r\n"
..tab.."Моя анкета - "..tVar.sPrefix..tCmd.sProfile.."\r\n"
..tab.."Все анкеты - "..tVar.sPrefix..tCmd.sViewPro.."\r\n"
elseif (pAdmin[user.iProfile] == 1) then
msgGreeting = msgGreeting.."\r\n\r\n"..tab.."::: ::: ::: Администраторские команды ::: ::: :::\r\n\r\n"
..tab.."Удалить анкету/значение в анкете - "..tVar.sPrefix..tCmd.sDelPro.."\r\n"
end
user:SendPM(tVar.sBot,msgGreeting);
return 1;
end,
[tCmd.sProfile] =
function(user,data)
if not (pUser[user.iProfile] == 1) then return 1; end
local curUser = user.sName;
local _,_,Cmd1 = string.find(data,"%b<>%s+%S+%s+(%S+)");
if Cmd1 then
local _,_,Cmd2 = string.find(data,"%b<>%s+%S+%s+%S+%s+(%S+)");
if string.lower(Cmd1) == "создать" and not tUserProfiles[curUser] then
newProfile(curUser); user:SendPM(tVar.sBot,"*** Создана новая анкета! Чтобы отредактировать ее, воспользуйтесь меню или внапиши в чате: "..tVar.sPrefix..tCmd.sProfile); sendRightClick(user,"update");
elseif string.lower(Cmd1) == "добавить" then
if Cmd2 then
if tUserProfiles[curUser][string.lower(Cmd2)] then
local _,_,Cmd3 = string.find(data,"%b<>%s+%S+%s+%S+%s+%S+%s+(.*)");
if Cmd3 == "*" then
editProfile(curUser,string.lower(Cmd2)," "); user:SendPM(tVar.sBot,"*** Твоя анкета изменена: "..Cmd2.." - ");
elseif Cmd3 then
editProfile(curUser,string.lower(Cmd2),Cmd3); user:SendPM(tVar.sBot,"*** Твоя анкета изменена: "..Cmd2.." - "..Cmd3);
else
user:SendPM(tVar.sBot,"*** Ошибка! Ты забыл указать значение: "..tVar.sPrefix..tCmd.sProfile.." добавить "..Cmd2.." <текст>");
end
else
user:SendPM(tVar.sBot,showProfile(curUser,"profilecmds").."\r\n"..tab.."*** Ошибка! Чтобы отредактировать пункт анкеты воспользуйтесь командой "..tVar.sPrefix..tCmd.sProfile.." добавить <пункт> <текст>, * = пустое значение.");
end
else
user:SendPM(tVar.sBot,showProfile(curUser,"user").."\r\n"..tab.."Выбери пункт анкеты, который хочешь\r\n"..tab.."отредактировать и укажи его значение:\r\n"..tab.." "..tVar.sPrefix..tCmd.sProfile.." добавить <пункт> <текст>\r\n"..tab.."* = пустое значение.");
end
elseif string.lower(Cmd1) == "удалить" then
if Cmd2 then
if string.lower(Cmd2) == "полностью" then
delProfile(curUser); user:SendPM(tVar.sBot,"*** Твоя анкета была удалена!");
else
user:SendPM(tVar.sBot,"*** ВНИМАНИЕ!! Это команда полностью удалит твою анкету! Для подтверждения введи: "..tVar.sPrefix..tCmd.sProfile.." удалить полностью");
end
else
user:SendPM(tVar.sBot,"*** ВНИМАНИЕ!! Это команда полностью удалит твою анкету! Для подтверждения введи: "..tVar.sPrefix..tCmd.sProfile.." удалить полностью");
end
else
user:SendPM(tVar.sBot,"*** Ошибка! Для редактирования или удаления свой анкеты введи: "..tVar.sPrefix..tCmd.sProfile.." <добавить/удалить>");
end
else
if not tUserProfiles[curUser] then
user:SendPM(tVar.sBot,"*** У тебя еще нет анкеты! Чтобы создать анкету напиши: "..tVar.sPrefix..tCmd.sProfile.." создать"); return 1;
else
user:SendPM(tVar.sBot,showProfile(curUser,"user").."\r\n"..tab.."Для редактирования или удаления\r\n"..tab.."свой анкеты введи: "..tVar.sPrefix..tCmd.sProfile.." <добавить/удалить>");
end
end
return 1;
end,
[tCmd.sViewPro] =
function(user,data)
if not (pUser[user.iProfile] == 1) then return 1; end
local _,_,Cmd1 = string.find(data,"%b<>%s+%S+%s+(%S+)");
if GetItemByName(Cmd1) then
user:SendPM(tVar.sBot,showProfile(Cmd1,"user"));
else
user:SendPM(tVar.sBot,showProfile(user,"allusers").."\r\n"..tab.."*** "..tVar.sPrefix..tCmd.sViewPro.." <ник> для просмотра анкеты. ***");
end
return 1;
end,
[tCmd.sDelPro] =
function(user,data)
if not (pAdmin[user.iProfile] == 1) then return 1; end
local _,_,Cmd1 = string.find(data,"%b<>%s+%S+%s+(%S+)");
if Cmd1 and GetItemByName(Cmd1) then
local _,_,Cmd2 = string.find(data,"%b<>%s+%S+%s+%S+%s+(%S+)");
if Cmd2 then
if string.lower(Cmd2) == "удалить" then
delProfile(Cmd1); user:SendPM(tVar.sBot,"*** Анкета юзера "..Cmd1.." была удалена.");
elseif tUserProfiles[Cmd1][string.lower(Cmd2)] then
editProfile(Cmd1,string.lower(Cmd2)," "); user:SendPM(tVar.sBot,"*** Пункт анкеты "..Cmd2.." юзера "..Cmd1.." был очищен.");
else
user:SendPM(tVar.sBot,"*** Ошибка! Ты забыл указать, что мы будем делать - удалять или редактировать анкету: "..tVar.sPrefix..tCmd.sDelPro.." "..Cmd1.." <пункт/удалить>");
end
else
user:SendPM(tVar.sBot,showProfile(Cmd1,"user").."\r\n"..tab.."*** Укажите пункт для удаления или воспользуйтесь\r\n"..tab.."командой 'удалить', чтобы стереть всю анкету:\r\n"..tab..tVar.sPrefix..tCmd.sDelPro.." <ник> <пункт/удалить>");
end
else
user:SendPM(tVar.sBot,"*** Чтобы удалить анкету юзера или пукнт чьей-либо анкеты воспользуйтесь командой: "..tVar.sPrefix..tCmd.sDelPro.." <ник>");
end
return 1;
end,
}
if tScriptCmds[sCmd] then
return tScriptCmds[sCmd](user,data);
end
end
end
ToArrival = ChatArrival
function NewUserConnected(user)
sendRightClick(user,"new");
if string.lower(tVar.sSpam) == "on" and not tUserProfiles[user.sName] then
user:SendPM(tVar.sBot, "*** "..tVar.sMsgtoUsers)
end
end
function OnExit()
saveProfile();
end
function sendRightClick(user,type)
if type == "new" then
if user.bUserCommand then
if (pUser[user.iProfile] == 1) and string.lower(tVar.sRCEnable) == "on" then
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Помощь$<%[mynick]> !"..tCmd.sHelp.."|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Просмотр\\Все анкеты$<%[mynick]> !"..tCmd.sViewPro.."|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Просмотр\\Анкета этого юзера$<%[mynick]> !"..tCmd.sViewPro.." %[nick]|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Просмотр\\Анкета юзера..$<%[mynick]> !"..tCmd.sViewPro.." %[line:Ник юзера?]|")
if tUserProfiles[user.sName] then
MenuProfile(user)
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Удалить\\Свою анкету$<%[mynick]> !"..tCmd.sProfile.." удалить|")
else
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Создать анкету$<%[mynick]> !"..tCmd.sProfile.." создать|")
end
end
if (pAdmin[user.iProfile] == 1) and string.lower(tVar.sRCEnable) == "on" then
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Админ\\Удалить анкету юзера$<%[mynick]> !"..tCmd.sDelPro.." %[line:Ник юзера?] удалить|")
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Админ\\Удалить пункт анкеты юзера$<%[mynick]> !"..tCmd.sDelPro.." %[line:Ник юзера?] %[line:Пункт анкеты?]|")
end
end
elseif type == "update" then
--user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Посмотреть$<%[mynick]> !"..tCmd.sProfile.."|")
MenuProfile(user)
user:SendData("$UserCommand 1 3 "..tVar.sRCName.."\\Мой профиль\\Удалить\\Свою анкету$<%[mynick]> !"..tCmd.sProfile.." удалить|")
end
end
function showProfile(curUser,type)
local sMsg = "\r\n\r\n"..tab;
if type == "user" then sMsg = sMsg.."-= Анкета "..curUser.." =-\r\n\r\n";
elseif type == "profilecmds" then sMsg = sMsg.."-= Анкета "..curUser.." - Показ команд =-\r\n\r\n";
elseif type == "all" or type == "allusers" then sMsg = sMsg.."-= Анкеты всех юзеров =-\r\n\r\n"; end
if type == "user" then
if tUserProfiles[curUser] then
sMsg = sMsg..tab..string.rep("«»",19).."\r\n"
sMsg = sMsg..tab.."имя_в_реале\t - "..tUserProfiles[curUser]["имя_в_реале"].."\r\n";
sMsg = sMsg..tab.."дата_рождения\t - "..tUserProfiles[curUser]["дата_рождения"].."\r\n";
sMsg = sMsg..tab.."пол\t\t - "..tUserProfiles[curUser]["пол"].."\r\n";
sMsg = sMsg..tab.."тело\t\t - "..tUserProfiles[curUser]["тело"].."\r\n";
sMsg = sMsg..tab.."icq\t\t - "..tUserProfiles[curUser]["icq"].."\r\n";
sMsg = sMsg..tab.."где_живешь\t - "..tUserProfiles[curUser]["где_живешь"].."\r\n";
sMsg = sMsg..tab.."учеба_работа\t - "..tUserProfiles[curUser]["учеба_работа"].."\r\n";
sMsg = sMsg..tab.."о_себе\t\t - "..tUserProfiles[curUser]["о_себе"].."\r\n";
sMsg = sMsg..tab.."семья\t\t - "..tUserProfiles[curUser]["семья"].."\r\n";
sMsg = sMsg..tab.."о_других\t - "..tUserProfiles[curUser]["о_других"].."\r\n";
sMsg = sMsg..tab.."интересы\t - "..tUserProfiles[curUser]["интересы"].."\r\n";
sMsg = sMsg..tab.."музыка\t - "..tUserProfiles[curUser]["музыка"].."\r\n";
sMsg = sMsg..tab.."фильмы\t - "..tUserProfiles[curUser]["фильмы"].."\r\n";
sMsg = sMsg..tab.."привычки\t - "..tUserProfiles[curUser]["привычки"].."\r\n";
sMsg = sMsg..tab..string.rep("«»",19).."\r\n\r\n"
end
elseif type == "profilecmds" then
if tUserProfiles[curUser] then
sMsg = sMsg..tab..string.rep("«»",19).."\r\n"
for sItem in pairs(tUserProfiles[curUser]) do
if sItem ~= "edited" then
sMsg = sMsg.."\t "..tVar.sPrefix..tCmd.sProfile.." добавить "..sItem.." \t- "..tUserProfiles[curUser][sItem].."\r\n";
end
end
sMsg = sMsg..tab..string.rep("«»",19).."\r\n\r\n"
end
elseif type == "allusers" then
if tUserProfiles ~= nil then
sMsg = sMsg..tab..string.rep("«»",19).."\r\n"
for sUser in pairs(tUserProfiles) do
if string.lower(tVar.sEdited) == "on" then
for sItem in pairs(tUserProfiles[sUser]) do
if sItem == "edited" and tUserProfiles[sUser][sItem] ~= "0" then
sMsg = sMsg.."\t •"..sUser.."\r\n";
end
end
else
sMsg = sMsg.."\t •"..sUser.."\r\n";
end
end
sMsg = sMsg..tab..string.rep("«»",19).."\r\n\r\n"
end
end
return sMsg;
end
function editProfile(curUser,sItem,sValue)
if tUserProfiles[curUser] then
tUserProfiles[curUser][sItem] = sValue;
if tUserProfiles[curUser]["edited"] == "0" then tUserProfiles[curUser]["edited"] = "1"; end
saveProfile();
else
newProfile(curUser); saveProfile(); editProfile(curUser,sItem,sValue)
end
end
function delProfile(curUser)
tUserProfiles[curUser] = nil;
saveProfile();
end
function saveProfile()
for sUser in pairs(tUserProfiles) do
ProfileData[sUser] = {}
for sItem in pairs(tUserProfiles[sUser]) do
ProfileData[sUser][sItem] = tUserProfiles[sUser][sItem];
end
end
SaveToFile(tVar.sFolder.."/"..tVar.sFile,ProfileData,"ProfileData")
ProfileData = {};
end
function loadProfile()
local file = nil; local sText = nil; tUserProfiles = {};
if loadfile(tVar.sFolder.."/"..tVar.sFile) then dofile(tVar.sFolder.."/"..tVar.sFile);
else
sText = "ProfileData = {\r\n}";
io.output(tVar.sFolder.."/"..tVar.sFile);
file = io.open(tVar.sFolder.."/"..tVar.sFile,"w+");
file:write( sText );
file:close();
dofile(tVar.sFolder.."/"..tVar.sFile);
end
if ProfileData ~= nil then
for sUser in pairs(ProfileData) do
tUserProfiles[sUser] = {}
for sItem in pairs(ProfileData[sUser]) do
tUserProfiles[sUser][sItem] = ProfileData[sUser][sItem];
end
end
end
ProfileData = {};
end
Serialize = function(tTable,sTableName,hFile,sTab)
sTab = sTab or "";
hFile:write(sTab..sTableName.." = {\n");
for key,value in pairs(tTable) do
if (type(value) ~= "function") then
local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key);
if(type(value) == "table") then
Serialize(value,sKey,hFile,sTab.."\t");
else
local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value);
hFile:write(sTab.."\t"..sKey.." = "..sValue);
end
hFile:write(",\n");
end
end
hFile:write(sTab.."}");
end
SaveToFile = function(file,table,tablename)
local hFile = io.open(file,"w+") Serialize(table,tablename,hFile); hFile:close();
end
Settings = {
sChar = { "-", " ", "i", "l", "r", "t", "I", "y", "o", },
}
tab = " "..string.rep(" ",string.len(tVar.sBot));
tUserProfiles = {}
OpDisconnected=UserDisconnected
OpConnected=NewUserConnected
===========================================================
Ну вот вроде и всё, что я хотел сказать по поводу этого скрипта.
Удачи всем админам хабов.