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

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

MyDC.ru _ Kорзина _ Мелоч В Скрипте(полосочка)

Автор: eL50ff 18.12.2008, 1:28

http://mydc.ru/r/?http://ipicture.ru/



полосочку ПОД КНОПКОЙ ПОКАЗАТЬ 100 ЛУЧШИХ на которою я указал не могу не как убрать! кто поможет? знаете мелоч канеш но не приятно! знаю достал... но чтож я поделаю... я только учусь!



CODE
tProfiles = {
 [0] = "Администратор",
 [1] = "Оператор",
 [2] = "Специальный пользователь",
 [3] = "Зарегистрированный пользователь",
 [-1] = "Незарегистрированный пользователь",
}

iRunkNumberToDoVip = 0 -- Номер ранга, с которого зарегеный юзер получит VIP

iProfileToMakeFromVip = 0 -- профиль с которого повышается до випа
iProfileToMakeToVip = 0 -- профиль випа

iTimeToSave = 10 -- время в минутах на сохранение таблицы с рангами (на всякий)

bWelcomeMsg = 0 -- Отправлять ли сообщение о ранге юзера при входе (если есть хоть 1 сообщение)

sBot = "Rank" -- Имя бота

MaxShowed = 100 -- Максимально выводимое кол-во участников ранжирования

bMenu = "Лучшие сообщения" -- Название меню
UserCommands = 1 -- Включить менюшку 1=да/0=нет

RankFile = "LZ_Rank 1.0 Data Base.tbl" -- Файл, в котором будут сохраняться участники ранжирования
RankNamesFile = "LZ_Rank 1.0 Title.tbl" -- Файл с вариантами рангов (новый!)

RankMembersName = "LaMBDaZ" -- Выберите стандартный тип рангов (можно в tRanks.tbl создать свою группу рангов)

-- Выберете, кто будет учавствовать в рангах:
tSetProfile = {
 [0] = 1,
 [1] = 1,
 [2] = 1,
 [3] = 1,
 [-1] = 0,
}
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
tCommands = {}
tFunctions = {}
tRankingTable = {}
tRankCounts = {}
tRankNumbers = {}

Main = function()
 assert(nil, "Эта версия скрипта пердназначена для API 2")
end

OnStartup = function()
 sScriptsPath = Core.GetPtokaXPath():gsub("/", "\\").."scripts\\"
 iTimeToSave = iTimeToSave * 60
 if loadfile(sScriptsPath..RankFile) then
  dofile(sScriptsPath..RankFile)
 end
 dofile(sScriptsPath..RankNamesFile)
 tRankMembers = tRanks[RankMembersName]
 tRanks = nil
 for i,v in pairs(tRankMembers) do
  tRankCounts[v[1]] = i
 end
 for i,v in pairs(tRankingTable) do
  local sRankName, iRankNumber = tFunctions.GetRankName(v)
  tRankNumbers[i] = iRankNumber
 end
 TmrMan.AddTimer((iTimeToSave * 60 * 1000), "SaveScriptData")
 TmrMan.AddTimer(1000, "RemoveTrash")
end

ABD = function() -- add bot data
 return "<"..sBot.."> "
end

SFBTU = function(tUser, sData) -- send from bot to user
 local sData = ABD()..sData
 Core.SendToUser(tUser, sData)
end

RemoveTrash = function()
 collectgarbage("collect")
end

SaveScriptData = function()
 OnExit()
end

OnExit = function()
saveTableToFile(sScriptsPath..RankFile, tRankingTable, "tRankingTable")
end

ChatArrival = function(user, data)
 local data = string.sub(data,1,-2)
 local s,e,prefix =string.find(data, "%b<>%s+%p(%S+)")
 local bReturn = 0
 if prefix == "topranks" then
  SFBTU(user, tFunctions.ShowRanks())
  bReturn = 1
 elseif prefix == "top100ranks" then
  SFBTU(user, tFunctions.ShowRanks(1))
  bReturn = 1
 elseif prefix == "getrank" then
  local s,e,name = string.find(data, "%b<>%s+%S+%s+(%S+)")
  if name then
  if tRankingTable[name] then
  if name == user.sNick then
  SFBTU(user, "*** Ты оставил(а) в чате "..tRankingTable[name].." сообщений, ваш ранг №"..tRankNumbers[name]..": "..tRankMembers[tRankNumbers[name]][2].."")
  else
  SFBTU(user, "*** "..name.." оставил в чате "..tRankingTable[name].." сообщений, его ранг №"..tRankNumbers[name]..": "..tRankMembers[tRankNumbers[name]][2].."")
  end
  else
  if name == user.sNick then
  if tSetProfile[user.iProfile] and tSetProfile[user.iProfile] == 1 then
  SFBTU(user, "Вы не оставили в чате ни одного сообщеня!")
  else
  SFBTU(user, "Вы не участвуете в системе ранжирования сообщений чата!")
  end
  else
  SFBTU(user, "Пользователь "..name.." не оставил ни одного сообщения в чате!")
  end
  end
  else
  SFBTU(user, "*** Используйте команду: !getrank <ник>")
  end
  bReturn = 1
 elseif prefix == "ranksinfo" then
  local iRankValue = 1
  local Info = "\n\n\t«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»\r\n\t\tТаблица рангов\r\n"
  Info = Info.."\t«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»\r\n\t\t№:\tСообщений:\tРанг:\r\n"
  for i = 1, table.maxn(tRankMembers) do
  local VipOrNot = ""
  if i == iRunkNumberToDoVip then
  VipOrNot = "\t [VIP]"
  end
  Info = Info.."\t\t "..i.."\t"..string.format("%0.f", iRankValue).."\t\t"..tRankMembers[i][2]..VipOrNot.."\r\n"
  iRankValue = tRankMembers[i][1]
  end
  SFBTU(user, Info)
  bReturn = 1
 elseif prefix == "changerank" then
  if user.iProfile == 0 then
  tFunctions.ChangeRank(user, data)
  else
  SFBTU(user, "У вас нет доступа к этой команде!")
  end
  bReturn = 1
 elseif prefix == "showranksinfo" then
  SFBTU(user, ShowRanksStats())
  bReturn = 1
 end
 if bReturn == 1 then
  return true
 elseif tSetProfile[user.iProfile] and tSetProfile[user.iProfile] == 1 then
  tFunctions.UpdateRanks(user)
 end
end

UserConnected = function(user)
 if tRankingTable[user.sNick] and bWelcomeMsg == 1 then
  SFBTU(user, "(->) Вы оставили в чате "..tRankingTable[user.sNick].." сообщений. Ваш текущий ранг №"..tRankNumbers[user.sNick]..": "..tRankMembers[tRankNumbers[user.sNick]][2].."")
 end
 tFunctions.SendCommands(user)
end
RegConnected = UserConnected
OpConnected = UserConnected

--// Functions ---------------------------------------------------------------------------------------------------------

tFunctions.GetRankName = function(points)
 local iMaxRank = table.maxn(tRankMembers)
 local iRank,iRankValue,iNumber = tRankMembers[iMaxRank][1],1,iMaxRank
 for i = 1, iMaxRank do
  local iStart,iEnd = iRankValue, tRankMembers[i][1]
  if points >= iStart and points <= iEnd then
  iRank = tRankMembers[i][2]
  iNumber = i
  break
  end
  iRankValue = iEnd
 end
 return iRank, iNumber
end

tFunctions.ShowRanks = function(bAll)
 local tTemp = {}
 for i,v in pairs(tRankingTable) do
  table.insert(tTemp,{i,v})
 end
 table.sort(tTemp,function(a,b) return (a[2] > b[2]) end)
 local disp = "\r\n\r\n\t«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»\r\n"
 if bAll then
  disp = disp.."\t\t100 лучших пользователей\r\n"
 else
  disp = disp.."\t\tЛучшие пользователи по количеству набраных сообщений\r\n"
 end
 disp = disp.."\t----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n"
 disp = disp.."\t\tМесто\tНабрал\tРанг\t\t\tПсевдоним\r\n"
 local iFor = MaxShowed
 if bAll then
  iFor = 100
disp = disp.."\t----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\r\n"
 end
 for i = 1, iFor do
  if tTemp[i] then
  disp = disp.."\t\t"..i..".\t"..tTemp[i][2].."\t№"..tRankNumbers[tTemp[i][1]]..": "..tRankMembers[tRankNumbers[tTemp[i][1]]][2].."\t\t"..tTemp[i][1].."\r\n"

  end
 end
disp = disp.."\t«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»\r\n"
 return disp
end

function ShowRanksStats()
 local tTemp = {}
 local iTopRanksCount = 0
 local iMaxRanksCount = 0
 local iAllRanksCount = 0
 for i,v in pairs(tRankingTable) do
  table.insert(tTemp,{i,v})
 end
 table.sort(tTemp,function(a,b) return (a[2] > b[2]) end)
 local disp = "\n\n\t«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»\r\n\t\tТекущая статистика рангов:\r\n"
 local disp = disp.."\t«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»\r\n"
 for i, v in pairs(tTemp) do
  if i <= 10 then
  iTopRanksCount = iTopRanksCount + v[2]
  end
  if i <= 100 then
  iMaxRanksCount = iMaxRanksCount + v[2]
  end
  iAllRanksCount = iAllRanksCount + v[2]
 end
 local disp = disp.."\t\tСообщений оставлено 10 лучшими пользовалетями"..iTopRanksCount.."\r\n"
 local disp = disp.."\t\tСообщений оставлено 100 лучшими пользовалетями"..iMaxRanksCount.."\r\n"
 local disp = disp.."\t\tВсего сообщений оставлено в чате: "..iAllRanksCount.."\r\n"
 local disp = disp.."\t\tСтатус специальный с "..iRunkNumberToDoVip.."-го ранга ("..tRankMembers[iRunkNumberToDoVip][2]..")\r\n"
 local disp = disp.."\t\tКол-во сообщений для достижения: "..tRankMembers[iRunkNumberToDoVip - 1][1].."\r\n"
 return disp
end

tFunctions.UpdateRanks = function(user)
 local iUpdate = tRankingTable[user.sNick]
 if not iUpdate then
  iUpdate = 0
  tRankNumbers[user.sNick] = 0
 end
 iUpdate = iUpdate + 1
 tRankingTable[user.sNick] = iUpdate
 if tRankCounts[iUpdate] then
  tRankNumbers[user.sNick] = tRankNumbers[user.sNick] + 1

  if user.iProfile ~= -1 and tRankNumbers[user.sNick] >= iRunkNumberToDoVip and user.iProfile == iProfileToMakeFromVip then
  local tReg = RegMan.GetReg(user.sNick)
  end
 end
end

tFunctions.SendCommands = function(user)
 if UserCommands == 1 then
  Core.SendToUser(user, "$UserCommand 1 3 "..bMenu.."\\Показать 100 лучших$<%[mynick]> !top100ranks|")
  if user.iProfile == 0 then

  end
 end
end

Serialize = function(tTable, sTableName, hFile)
 hFile:write(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
  Serialize(value,sKey,hFile)
  else
  local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value)
  hFile:write(sKey.." = "..sValue)
  end
  hFile:write(",\n")
 end
 hFile:write("}")
end

saveTableToFile = function(file, table, tablename)
 local handle = io.open(file,"w")
 Serialize(table,tablename,handle)
 handle:close()
end

Автор: Setuper 18.12.2008, 1:43

Разделитель задаётся командой $UserCommand 0

В данном скрипте этой команды нету. Возможно она есть в другом скрипте, например, в следующем за этим в списке твоих скриптов.

Автор: eL50ff 18.12.2008, 1:46

как это нету а как же?

Код
Core.SendToUser(user, "$UserCommand 1 3 "..bMenu.."\\Показать 100 лучших$<%[mynick]> !top100ranks|")


я тут ноль ставил када 0 ставлю ваще исчезает менюшка

напиши примерно код как должно выглядеть мож сюда добавить можна?

Автор: Setuper 18.12.2008, 2:07

Я что непонятно написал? Может ещё раз вдумчиво прочитаешь мой ответ?

Автор: eL50ff 18.12.2008, 2:16

тока не кричи, всмысле нету? типа неотуда появился чтоль разделитель? или другой скрипт виноват?
я пасмарел другие скрипты там везде так же... хотя разделительной полоски нету...

Ааааааа все дошло я правильно понял... оказывается в реге эа команда стояла... убрал ее и все кул... Спасибо =)