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

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

MyDC.ru _ Запросы скриптов для PtokaX _ ! Часто Задаваемые Вопросы !

Автор: Setuper 18.1.2009, 13:36

В данной теме будут описываться часто задаваемые вопросы. Прежде чем писать очередной пост, посмотрите нету ли решения вашей проблему в этой теме!!!

Итак, поехали...

Где скачать хаб PtokaX?
Как сделать отсылку сообщения пользователю при входе на хаб?
Как прописать абсолютные пути?
Что такое MOTD или как установить сообщение при входе?
Как по команде сделать показ сообщения (например правил хаба)?
Как сделать контекстное меню для команды?
Как запретить скачивать и искать на хабе незарегистрированным?
Как запретить пользоваться чатом и личкой на хабе незарегистрированным?
Как написать функцию оповещения об ошибках скрипта?
Как запретить символы в нике для определённых профилей?
Как изменить выводимые в чат ники пользователей?
Как сделать действие по команде?
Как сделать приветствие с указанием времени суток?
Есть ли скрипт статистики скачивания на хабе?
Как сделать оповещение в ОпЧат о слишком большой шаре пользователя?
Как сделать ограничения действий или добавить исключения по профилям?
Как сделать ограничения действий или добавить исключения по никам пользователей?
Как установить/удалить/запустить PtokaX как службу?
Как сделать сообщение, которое будет выдаваться при входе на хаб(Перед надписями "Этот хаб работает ...")?

Автор: Setuper 18.1.2009, 13:38

Где скачать хаб PtokaX?

Читаем внимательно тут: http://mydc.ru/topic19.html

Автор: Setuper 18.1.2009, 13:49

Как сделать отсылку сообщения пользователю при входе на хаб?

Простейший код реализации отсылки сообщения в чат пользователю при входе:

API 2:

Код
local sMsg=[[
Ваше сообщение
(можно даже в несколько строк!)
]]

function UserConnected(tUser)
  Core.SendToUser(tUser,sMsg)
end
RegConnected=UserConnected
OpConnected=UserConnected


API 1:
Код
local sMsg=[[
Ваше сообщение
(можно даже в несколько строк!)
]]

function NewUserConnected(tUser)
  tUser:SendData(sMsg)
end
OpConnected=NewUserConnected


Простейший код реализации отсылки сообщения в приват пользователю при входе:

API 2:
Код
local sMsg=[[
Ваше сообщение
(можно даже в несколько строк!)
]]

function UserConnected(tUser)
  Core.SendPmToUser(tUser,"Бот",sMsg)
end
RegConnected=UserConnected
OpConnected=UserConnected


API 1:
Код
local sMsg=[[
Ваше сообщение
(можно даже в несколько строк!)
]]

function NewUserConnected(tUser)
  tUser:SendPM("Бот",sMsg)
end
OpConnected=NewUserConnected

Автор: Wariner 18.1.2009, 13:53

Как прописать абсолютные пути?

Для API 2:

Код
sFile = Core.GetPtokaXPath().."scripts/папка/файл"


Для API 1:
Код
sFile = frmHub:GetPtokaXLocation().."scripts/папка/файл"

Автор: Setuper 18.1.2009, 14:14

Что такое MOTD или как установить сообщение при входе?

MOTD - это сокращение от Message Of The Day. Переводится как "Сообщение дня". Показывается при входе на хаб. Для старых версий PtokaX устанавливается на первой вкладке. Для новых версий устанавливается в настройках. Для отсылки данного сообщения в приват нужно установить галочку: "Отправлять сообщение дня в приват".

Автор: Setuper 18.1.2009, 14:29

Как по команде сделать показ сообщения (например правил хаба)?

1. Открываем папку, где располагается файл PtokaX.exe, и заходим в папку texts.
2. Создаём в этой папке текстовый файл.
3. Переименовываем этот файл (например в имя rules.txt)
4. Открываем его, и пишем сообщение (например правила хаба)
5. Ищем в настройках хаба настройку: "Включить текстовые файлы" (В старых версиях настройка находится во вкладке "Настройки" справа. В новых версиях в "основных настройках" - "Больше настроек"). Там же можно (если необходимо) установить отправку этого сообщения в приват.
6. Для старых версий там же в настройках нужно перезагрузить текстовые файлы (или просто воспользоваться командой в чат !reloadtxt).

Всё готово и по команде !rules можно будет увидеть правила хаба.

Таким образом можно создать любые текстовые сообщения по команде. Например, можно сделать правила, сайты, хабы сети, информацию для операторов и тд. и тп.

Автор: Setuper 18.1.2009, 14:41

Как сделать контекстное меню для команды?

Допустим, у вас есть команда !rules, по которой показываются правила хаба, команда !hubs, по которой показываются хабы сети и команда !radio, по которой показываются транслируемые через сеть радиостанции. Вы хотите, чтобы эти команды можно было вызывать из контекстного меню хаба.

API 2:

Код
function UserConnected(tUser)
  Core.SendToUser(tUser,"$UserCommand 1 3 Меню хаба\\Правила хаба$<%[mynick]> !rules&#124;|"..
  "$UserCommand 1 3 Меню хаба\\Хабы-друзья$<%[mynick]> !hubs&#124;|"..
  "$UserCommand 1 3 Меню хаба\\Сетевое радио$<%[mynick]> !radio&#124;|")
end
RegConnected,OpConnected=UserConnected,UserConnected


API 1:
Код
function NewUserConnected(tUser)
  tUser:SendData("$UserCommand 1 3 Меню хаба\\Правила хаба$<%[mynick]> !rules&#124;|"..
  "$UserCommand 1 3 Меню хаба\\Хабы-друзья$<%[mynick]> !hubs&#124;|"..
  "$UserCommand 1 3 Меню хаба\\Сетевое радио$<%[mynick]> !radio&#124;|")
end
OpConnected=NewUserConnected

Автор: Setuper 7.2.2009, 21:04

Как запретить скачивать и искать на хабе незарегистрированным?

Код
local sMsg="Вы не зарегистрированы. Пользоваться поиском и скачивать запрещено!"
function ConnectToMeArrival(tUser)
  if tUser.iProfile==-1 then
    if Core then
      Core.SendToUser(tUser,sMsg)
    else
      tUser:SendData(sMsg)
    end
    return true
  end
end
RevConnectToMeArrival,SearchArrival=ConnectToMeArrival,ConnectToMeArrival

Автор: Setuper 8.2.2009, 18:41

Как написать функцию оповещения об ошибках скрипта?

Код
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

Автор: Setuper 28.2.2009, 17:48

Как запретить пользоваться чатом и личкой на хабе незарегистрированным?

API2:

Код
local sMsg=[[Сообщение о недоступности чата и лички незарегистрированному]]
function ChatArrival(tUser)
  if tUser.iProfile == -1 then
    Core.SendToUser(tUser,sMsg)
    return true
  end
end
ToArrival=ChatArrival


API1:
Код
local sMsg=[[Сообщение о недоступности чата и лички незарегистрированному]]
function ChatArrival(tUser)
  if tUser.iProfile == -1 then
    tUser:SendData(sMsg)
    return 1
  end
end
ToArrival=ChatArrival

Автор: Setuper 7.3.2009, 2:41

Как запретить символы в нике для определённых профилей?

Код
tSmbs={
   [0]="",  -- Master
   [1]="",  -- Operator
   [2]="[®™]",  -- Vip
   [3]="[®™]",  -- Reg
   [-1]="[®™]",  --UnReg
}
tBeginSmbs={    -- хотя цифры (одну) можно записать как %d
   [0]="",  -- Master
   [1]="",  -- Operator
   [2]="[1234567890]",  -- Vip
   [3]="[%[%]%!]",  -- Reg    -- запрет []! в самом начале ника (1 символ)
   [-1]="[%.@]",  --UnReg    -- запрет .@
}

function UserConnected(tUser)
    local sSmb=tBeginSmbs[tUser.iProfile]
    if sSmb and string.find(tUser.sNick,"^("..sSmb..")") then
        Core.SendToUser(tUser,"*** Украшения в никах запрещены!")
        Core.Disconnect(tUser)
    end
    sSmb=tSmbs[tUser.iProfile]
    if sSmb and string.find(tUser.sNick,"("..sSmb..")") then
        Core.SendToUser(tUser,"*** Украшения в никах запрещены!")
        Core.Disconnect(tUser)
    end
end
RegConnected=UserConnected
OpConnected=UserConnected

Автор: Setuper 7.3.2009, 2:43

Как изменить выводимые в чат ники пользователей?

Код
tNames = {
  ["Вася"] = "Барабас",
  ["Петя"] = "Гондурас",
}
    
function ChatArrival(tUser, sData)
  if tNames[tUser.sNick] then
    Core.SendToAll("<"..tNames[tUser.sNick].."> "..sData:sub(tUser.sNick:len()+4, -2))
    return true
  end
end

Автор: Wariner 9.3.2009, 10:46

Как сделать действие по команде?

Код
function ChatArrival(tUser, sData)
  local cmd = sData:match"%b<>%s+(%S+).*|"
  if cmd == "!команда" then
    -- здесь вписываем то, что должно происходить по команде!
    return true
  end    
end

Код одинаков для обих API единственное различие что в конце команды под API 2 надо писать return true, а под API 1 - return 1

Автор: Setuper 19.3.2009, 14:35

Как сделать приветствие с указанием времени суток?

Код
function UserConnected(tUser)
  local iHour, sMsg = tonumber(os.date"%H"), tUser.sNick..". Добро пожаловать на хаб!"
  if iHour >= 5 and iHour < 12 then
    Core.SendToUser(tUser, ("Доброе утро %s"):format(sMsg))
  elseif iHour >= 12 and iHour < 18 then
    Core.SendToUser(tUser, ("Добрый день %s"):format(sMsg))
  elseif iHour >= 18 and iHour <= 23 then
    Core.SendToUser(tUser, ("Добрый вечер %s"):format(sMsg))
  else
    Core.SendToUser(tUser, ("Доброй ночи %s"):format(sMsg))
  end
end
RegConnected, OpConnected = UserConnected, UserConnected

Автор: Wariner 27.5.2009, 8:49

Есть ли скрипт статистики скачивания на хабе?

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

Автор: Setuper 9.8.2009, 13:30

Как сделать оповещение в ОпЧат о слишком большой шаре пользователя?

Код
local iShareLimit = 15 * 0x100000 * 0x100000 -- 15 ТБ
local sReport = "Подозрительно большая шара у пользователя: "

function MyINFOArrival(tUser, sData)
  Core.GetUserData(tUser, 16)
  if tUser.iShareSize >= iShareLimit then
    Core.SendToOpChat(sReport..tUser.sNick.." ["..tUser.sIP.."]. Шара: "..tUser.iShareSize)
  end
end

Автор: Wariner 1.11.2009, 10:21

Как сделать ограничения действий или добавить исключения по профилям?

в начале помещаем таблицу

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

затем в куске кода который надо ограничить пишем
Код
if tProfiles[tUser.iProfile] == 1 then
     -- кусок кода
end


Кусок кода будет выполнятся только для того профиля для которого в таблице tProfiles стоит еденичка!

Автор: Accelerator 8.6.2010, 18:47

Как сделать ограничения действий или добавить исключения по никам пользователей?

Создаём таблицу с никами

Код
local tNicks = {
    ["Вася"] = 1, -- Васе доступно использование команды (т.к. значение = 1)
    ["Петя"] = 0, -- Пете использование команды не доступно (т.к. значение = 0)
}

затем в куске кода который надо ограничить пишем
Код
if tNicks[tUser.sNick] == 1 then
     -- код
else
Core.SendToUser(tUser, "<"..SetMan.GetString(21).."> Использование команды для вас не доступно!")
end

Автор: alex82 24.7.2010, 12:23

Как установить/удалить/запустить PtokaX как службу?

Консольная версия PtokaX прекрасно умеет устанавливать себя как системную службу.



Примеры:

Конфигурирование директории и установка сервиса:
Код
"C:\Program Files\PtokaX\PtokaX.exe" -c "C:\PtokaX\" -i "PtokaX"

Удаление сервиса:
Код
"C:\Program Files\PtokaX\PtokaX.exe" -u "PtokaX"


Для запуска и остановки службы можно также использовать консольную программу NET, входящую в состав Windows. Команда запуска службы:
Код
NET START PtokaX

Команда остановки:
Код
NET STOP PtokaX

Автор: Accelerator 10.6.2011, 16:28

Как сделать сообщение, которое будет выдаваться при входе на хаб(Перед надписями "Этот хаб работает ...")?

Код
local sMsg = "Пожалуйста, подождите, идёт загрузка хаба..." -- сообщение, выдаваемое при входе на хаб

function ValidateNickArrival(tUser, sData)
       Core.SendToUser(tUser, sMsg)
end