RU/Resource:Irc

From Multi Theft Auto: Wiki

Ресурс "irc" предоставляет вам echobot ("эхо-бот"), который выводит информацию по типу сообщения из чата в irc-канал. Информацию по "irc" или "Internet Relay Chat" вы можете получить на Wikipedia.

Установка

Чтобы этот ресурс заработал на вашем Linux или Windows сервера, выполните следующие шаги:

  • Установите модуль sockets
    • Скачайте модуль: Вы можете скачать модуль на проекте mta-modules. Скачайте файл ml_sockets.dll для Windows или файл ml_sockets.so для Linux
    • Положите подуль в папку MTA: Чтобы MTA подгрузила модуль, он должен лежать в папке mods/deathmatch/modules, если таковой нет, то создайте ее.
    • Добавьте модуль в файл mtaserver.conf: Чтобы MTA подгрузила модуль при старте сервера, добавьте строку <module src="ml_sockets.dll"/> в ваш файл настроек для Windows или <module src="ml_sockets.so"/> в ваш файл настроек для Linux.
  • Установите ресурс IRC
    • Скачайте ресурс: Ресурс IRC можно найти на сайте сообщества, поместите его в папку resources.
    • Измените файл settings.xml: Откройте данный файл и следуйте инструкциям внутри, чтобы настроить IRC бота.
    • Измените файл meta.xml: В этом файле несколько настроек отвечают за запись в лог (log), рекламные уведомления (notice), gui, ничего больше не меняйте! Вы также можете изменить данные настройки в admin-панели, если она включена на сервере.
    • Acl права Ресурсу нужна пара acl-прав для того, чтобы правильно функционировать, в их число входят addBan, kickPlayer & callRemote. Если хоть одно из них отсутствует, ресурс не загрузится и сообщит об этом в консоли.

Теперь вы можете запустить ресурс, а если во время процесса установки сервер уже работал, вам понадобится прописать команды /loadmodule ml_sockets.dll (или /loadmodule ml_sockets.so) и /refreshall перед /start irc

Файл acl.xml

Файл acl.xml внутри ресурса irc отвечает за acl-права для irc-команд.

Синтаксис

<command name="!kick" level="2" echoChannelOnly="true" />
  • name - команда с восклицательным знаком перед ее именем
  • level - минимальный уровень, который нужен irc пользователю, чтобы иметь возможность использовать команду
  • echoChannelOnly - может ли команда быть использована вне echo канала

Элементы

Все пользователи, каналы и сервера узнаются ресурсом irc и представлены элементами.

  • Тип элементов, которыми представлены сервера: 'irc-server'
  • Тип элементов, которыми представлены каналы: 'irc-channel'
  • Тип элементов, которыми представлены пользователи: 'irc-user'

Система уровней

Ресурс irc не пользуется системой режимов irc для своего acl, вместо этого режимы заменили номерами.

  • Owner (~) - уровень 5
  • Super Operator (&) - уровень 4
  • Operator (@) - уровень 3
  • Helper (%) - уровень 2
  • Voice (+) - уровень 1

Все остальные пользователи, которым не установлен режим, имеют уровень 0

События

Во время работы процесса irc срабатывают некоторые события с целью облегчить вам написание расширений к ресурсу irc. Чтобы их задействовать, используйте addEvent("eventName").

Имя Source Параметры
onIRCConnecting server theIRCServer

onIRCConnect server theIRCServer

onIRCFailConnect server theIRCServer
string reason
onIRCUserJoin user theIRCUser
channel theIRCChannel, string vhost
onIRCUserNickChange user theIRCUser
string oldNick, string newNick
onIRCUserPart user theIRCUser
channel theIRCChannel, string theReason

Заметка: 'theReason' может оказаться nil, если 'theUser' вышел без указанной причины.

onIRCUserKick user theIRCUser
channel theIRCChannel, string theReason, user theKicker

Заметка: 'theKicker' может оказаться false, если 'theUser' был кикнут сервисом по типу NickServ.

onIRCPrivateMessage user theIRCUser
string theMessage
onIRCMessage user theIRCUser
channel theIRCChannel, string theMessage
onIRCPrivateNotice user theIRCUser
string theMessage
onIRCNotice user theIRCUser
channel theIRCChannel, string theMessage
onIRCUserMode user theIRCUser
channel theIRCChannel, boolean positive, string theMode, user theSetter

Заметка: 'theSetter' может оказаться false, если режим 'theUser' был изменен сервисом по типу NickServ.

onIRCChannelMode channel theIRCChannel
boolean positive, string theMode, user theSetter

Заметка: 'theSetter' может оказаться false, если режим был установлен сервисом по типу NickServ.

onIRCLevelChange user theIRCUser
channel theIRCChannel, number oldlevel, number newlevel
onIRCUserQuit user theIRCUser
string theReason

Экспортированные функции

Эти функции могут быть вызваны из другого ресурса, чтобы помочь вам в написании расширения для ресурса irc. Используйте таблицу exports или call для их вызова

Образец 1:

[Lua]
	exports.irc:ircConnect("irc.gtanet.com","bot",6667)

Образец 2:

[Lua]
	call(getResourceFromName("irc"),"ircConnect","irc.gtanet.com","bot",6667)


returns
имя функции параметры
boolean
ircHop
server theIRCServer, (string theReason)
boolean
ircSay
channel theIRCChannel/user theIRCUser, string theMessage
boolean
ircRaw
server theIRCServer, string theRaw
boolean
ircPart
channel theIRCChannel, (string theReason)
boolean
ircJoin
server theIRCServer, string theChannelName, (string theChannelPassword)
boolean
ircAction
channel theIRCChannel/user theIRCUser, string theMessage
boolean
ircNotice
channel theIRCChannel/user theUserChannel, string theMessage
boolean
outputIRC
string theMessage
boolean
ircConnect
string serverHost/IP, string nickname, (number serverPort), (string serverPassword), (boolean secure)

Заметка: Безопасные соединения пока что недоступны, так как модуль еще не поддерживает SSL.

boolean
ircIdentify
server theIRCServer, string thePassword
boolean
ircReconnect
server theIRCServer
boolean
ircDisconnect
server theIRCServer, string theReason
boolean
ircChangeNick
server theIRCServer, string newNick
table
ircGetServers

string
ircGetServerName
server theIRCServer
string
ircGetServerHost
server theIRCServer
number
ircGetServerPort
server theIRCServer
string
ircGetServerPass
server theIRCServer
string
ircGetServerNick
server theIRCServer
boolean
ircIsServerSecure
server theIRCServer
table
ircGetServerChannels
server theIRCServer
userdata
ircGetChannelServer
channel theIRCChannel
table
ircGetChannels
(server theIRCServer)
boolean
ircSetChannelMode
channel theIRCChannel, string theMode
string
ircGetChannelName
channel theIRCChannel
string
ircGetChannelMode
channel theIRCChannel
table
ircGetChannelUsers
channel theIRCChannel
string
ircGetChannelTopic
channel theIRCChannel
userdata
ircGetChannelFromName
string theChannelName
bool
ircIsEchoChannel
channel theIRCChannel
boolean
ircSetUserMode
user theIRCUser, string theMode
string
ircGetUserMode
user theIRCUser
string
ircGetUserNick
user theIRCUser
number
ircGetUserLevel
user theIRCUser
table
ircGetUsers
(server theIRCServer)
userdata
ircGetUserServer
user theIRCUser
number
ircGetUserLevel
user theIRCUser, channel theIRCChannel
string
ircGetUserVhost
user theIRCUser
userdata
ircGetUserFromNick
string theNickname
bool
addIRCCommandHandler
string theCommandName, function theFunctionToCall/string functionName, (number minimumLevel), (boolean echoChannelOnly)

Заметка: Используйте строковое значение с именем функции в качестве второго аргумента, если вы вызываете эту функцию из другого ресурса, также убедитесь, что функция эксопртирована.

table
ircGetCommands

number
ircGetCommandLevel
string theCommand
boolean
ircIsCommandEchoChannelOnly
string theCommand

Заметка: Все параметры, указанные между скобок - опциональны, см. опциональные аргументы

Изменение

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

Контакты

С автором (MCvarial) можно связаться по IRC (#mta,#mta.dutch) Или по email (MCvarial@gmail.com)