Advanced chat плагин

Topics and talking related to NoX, in Russian language

Moderators: Xandros, wolfik72

Оцените этот плагин (комментарии к Вашему голосу будут весьма кстати)

Превосходно!
1
50%
Хорошо.
1
50%
Так себе.
0
No votes
Плохо.
0
No votes
Бесполезная фигня.
0
No votes
 
Total votes : 2

Advanced chat плагин

Postby Xandros » Wed Aug 27, 2014 7:58 pm

Доброго времени суток, Ноксеры! Данная страница является переводом с оригинальной темы

Сегодня я решил запостить что-нибудь очень полезное и вот вам мой аддон, который позволяет использовать команды игрокам без сисопа при помощи чата.

Advanced chat plugin.

Текущая версия: 2.0

Системные требования:
Nox Unimod или эквивалентная версия с двухаргументной реакцией на принт в консоли (текст,цвет) и версией Lua 5.1

Как узнать, какая версия Lua используется в Вашем клиенте:
  1. Откройте внутриигровую консоль (F1 по-умолчанию)
  2. Напишите
    Code: Select all
    print(_VERSION)
    и нажмите ENTER.
  3. Результат появится в консоли

Ссылка на скачивание (MediaFire. 4.84 KB): http://www.mediafire.com/download/v17otneel58g62r/advchatcmds

Все отчёты об ошибках можете оставлять здесь или пересылать по почте: germanapps@gmail.com


Как установить этот плагин:
Скачайте плагин, перенесите его в папку Nox и загрузите его, добавив эту строчку:
Code: Select all
dofile('advchatcmds')

в ваш autoexec.lua файл.
Настройка плагина:
ВНИМАНИЕ!

Этот lua скрипт разработан как модуль, а не как простой скрипт. Это значит что НЕТ НЕОБХОДИМОСТИ МЕНЯТЬ ЭТОТ СКРИПТ! Этот плагин работает прекрасно без Вашего вмешательства в исходный код!!! Просто ПОЛОЖИТЕ его в папку Nox и ИСПОЛЬЗУЙТЕ!

Как настроить. Вот список команд с подробным объяснением как их использовать:
Image
(скопировал из документации разработчика, ибо здесь нет тега table)

Как пользоваться:
Вам нужно добавить команды в базу данных команд. Используйте эту функцию:
Code: Select all
sv_addchatcmd('/вашакоманда', имя_привязываемой_функции)

чтобы добавить Вашу команду, где "/вашакоманда" есть привязка к привязываемой функции. Учтите, что знак "/" требуется только для того чтобы избежать случайных срабатываний привязанной функции. Вы может заменить знак "/" на "!" или "@", или любой другой не буквеннй и не циферный знак.
ВНИМАНИЕ! Команды чувствительны к регистру! "/Votemap" не то же самое что и "/votemap".
Привязываемая функция получит два аргумента: ник игрока, который вызвал функцию и строку с аргументами чата. Привязываемая функция может иметь 3 или больше аргументов, но только первые два получат данные; остальные n-2 аргумента будут NIL. Если вам не нужна строка аргументов, используйте функцию с одним аргументом. Если вам не нужна никакая информация из Advanced chat, Вы можете использовать функции без аргументов.
Пример:
У нас есть функция:
Code: Select all
function test(u,args)
print('User '..u..' called this function with args |'..args..'|');
end

...и мы сделали привязку
Code: Select all
sv_addchatcmd("/test",test)

Это значит, что если игрок Xandros скажет в чат: "/test" наша функция вернёт имя пользователя и аргументы команды (в нашем случае - пустую строку).
Image
Здесь Xandros говорит "/test <text>" и вот результат
Image

Если Вам не нужна определённая команда, Вы можете её удалить при помощи этой функции:
Code: Select all
sv_removechatcmd("/yourcommand")

Вы можете удалять команды когда захочется - нет необходимости выключать плагин перед удалением привязок.

Если вы обновляете список команд (например, Вы поменяли режим игры), Вы может использовать эту команду чтобы очистить базу данных:
Code: Select all
sv_clearchatcmds()


Следующая функция будет полезна администраторам. Она предоставляет информацию о текущем состоянии плагина и версию плагина.
Чтобы показать информацию о плагине, используйте эту функцию:
Code: Select all
sv_advchatinfo()

Учтите, что информация появится в консоли сервера.

Чтобы получить версию в виде lua строки (которую можно присвоить переменной) используйте:
Code: Select all
sv_advchatversion()

Эта команда будет полезна, если вы сделали мод работающий под определённой версией плагина Advanced chat.

Следующая функция будет полезна для администраторов, когда они перезапускают серверные скрипты без выключения сервера. Используйте эту команду:
Code: Select all
sv_advchatunload()

чтобы выгрузить все данные плагина. Вообще, эта функция присваивает каждому объекту движка NIL. Учтите, что эта функция не запускает сборщик мусора (garbadge collector).


О реакциях:
Реакции полезны в основном для администраторов - моддеры не получают никакой пользы от использования реакций, за исключением реакции ADVCHAT_ONCOMPLETE.
Реакция - специальная переменная, которая содержит функцию определённого типа. Реакции помогают понять почему "эта чёртова штука не работает правильно" и только одна из них просто перенаправляет внутреннюю реакцию Unimod'а из плагина в указанную Вами функцию, чтобы избежать блокирования дальнейшего использования этой реакции для других функций\модулей (Разрыв реакции).
Чтобы использовать реакции, Вам НЕ НУЖНО МЕНЯТЬ СТАНДАРТНЫЕ РЕАКЦИИ ВНУТРИ ПЛАГИНА! Вам следует использовать возможность lua под названием "переопределение функции".
Чтобы переопределить функцию, Вам нужно объявить новую функцию с тем же именем что и у переопределяемой функции или просто присвоить переопределяемой функции обычную безымянную функцию.
Пример:
MY_FUNC() - функция для переопределения. Мы хотим заменить её другой функцией, которая имеет один аргумент.
Первый способ переопределить функцию:
Code: Select all
function MY_FUNC(arg)
--код новой функции здесь
end

Второй способ переопределить функцию
Code: Select all
MY_FUNC = function(arg)
--код новой функции здесь
end

Я предпочитаю второй способ, так как он понятней.

Использование реакций плагина.
Пример использования ADVCHAT_DISABLED:
Code: Select all
ADVCHAT_DISABLED = function()
print("Advanced chat отключен!")
end

Пример использования ADVCHAT_NOCOMMANDS:
Code: Select all
ADVCHAT_NOCOMMANDS = function()
print('ВНИМАНИЕ: Команд не найдено. Движок команд чата будет выключен');
sv_advchat = 0;
end

Этот пример выключит плагин, если база данных команд пуста.

ADVCHAT_INVALID_ARGS_DATATYPE
Эта реакция вызывается, когда реакция на консольный вывод получила аргументы неправильного типа.
Эта реакция требует 2 аргументов в функции - var, type_s, где var это числовая переменная от 0 до 1 (1-неправильный тип у переменной текста сообщения, 0 неправильный тип у аттрибута "цвет") и type_s - тип данных, вызвавший эту реакцию.
Обычно нет необходимости менять эту реакцию. Оставляйте как есть.

ADVCHAT_INVALID_COMMAND
Эта реакция требует 1 аргумент в функции - text. Переменная text получит сообщение пользователя, в котором нет команды. Эта реакция пустая по-умолчанию.

ADVCHAT_ONCOMPLETE - самая важная реакция для моддеров. Когда вы переопределяете эту реакцию, вы можете использовать реакцию на вывод консоли для своих нужд. Эта реакция требует 2 аргумента в функции - "text" и "color". Как пользоваться реакцией на вывод консоли читайте в документации к Unimod'у.


Этот плагин распространяется "как есть". Автор не несёт ответственности за любой вред, полученный в результате неправильного использования или модификации плагина.

И напоследок - не убирайте информацию об авторе. Не будьте идиотом, как "разработчик" BolgenOS. Спасибо.
Это всё. Если у Вас есть вопросы, предложения или критика, отпишитесь здесь
Nox Unimod scripter.
My plugins:
Advanced chat plugin.
Antiblock system
User avatar
Xandros
Novice
Posts: 134
Joined: Sun Jul 13, 2014 3:45 pm
Location: Russian Federation. Moscow.

Re: Advanced chat плагин

Postby wolfik72 » Fri Aug 29, 2014 1:06 pm

Жалко в опросе нету опции "ВАЩЕ НИШТЯЯК"
-nah man i dont wanna drink today
ends up dropping six vodka shots
User avatar
wolfik72
Initiate
Initiate
Posts: 24
Joined: Tue Jul 08, 2014 3:28 pm

Re: Advanced chat плагин

Postby Xandros » Fri Aug 29, 2014 4:19 pm

Ответь как "превосходно").
Nox Unimod scripter.
My plugins:
Advanced chat plugin.
Antiblock system
User avatar
Xandros
Novice
Posts: 134
Joined: Sun Jul 13, 2014 3:45 pm
Location: Russian Federation. Moscow.


Return to NoX

Who is online

Users browsing this forum: No registered users and 0 guests