|
|
Line 185: |
Line 185: |
| |- | | |- |
| |width="100pt"|<syntaxhighlight lang="lua">returns</syntaxhighlight> | | |width="100pt"|<syntaxhighlight lang="lua">returns</syntaxhighlight> |
| |width="150pt"|'''function name''' | | |width="150pt"|'''имя функции''' |
| |'''Parameters''' | | |'''параметры''' |
| |- | | |- |
| |} | | |} |
Ресурс "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").
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
|
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)
|
Заметка: Используйте строковое значение с именем функции в качестве второго аргумента, если вы вызываете эту функцию из другого ресурса, также убедитесь, что функция эксопртирована.
number
|
ircGetCommandLevel
|
string theCommand
|
boolean
|
ircIsCommandEchoChannelOnly
|
string theCommand
|
Заметка: Все параметры, указанные между скобок - опциональны, см. опциональные аргументы
Изменение
Пожалуйста, не изменяйте ресурс, вы можете его сломать, а это повлечет неисправность или спам ошибками.
Если все же на это решитесь, поддержки в этом вы не получите.
Вместо этого пишите расширения.
Контакты
С автором (MCvarial) можно связаться по IRC (#mta,#mta.dutch)
Или по email ([email protected])