|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Amx DC Bot
|
|
PomanoB | Дата: Суббота, 22.11.2008, 16:54:15 | Сообщение # 1 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Amx DC Bot v 0.1.8 Плагин подключается к хабу и выводит в чат информацию о текущем положении дел на сервере, также позволяет игрокам из игры отправлять сообщения отдельным юзерам, админу, или в чат Если в личку бота на хабе или в чат набрать csinfo, бот отправит личку с информацией набравшему (1-3 секунды) Команды в игре Code say /dc <CHAT|ADMIN|username> <message> - отправить message в чат (CHAT), админу (ADMIN); или юзеру на хабе Команда сервера Code amx_dc_bot_reconnect - Реконнект на хаб dc <user|chat|admin> <message> Отправить сообщение amx_dc_bot_send_info Отправитиь инф. на хаб Команды на хабе Code csinfo - Вывести инф. о сервере csplayers - Игроки на сервере sendto <nick|#id> <message> показать игроку в игре nick сообщение message CVAR Code amx_dc_bot_host - адрес хаба (127.0.0.1); amx_dc_bot_port - порт хаба (411); amx_dc_bot_user - ник бота ([AMXX]DCBot) Не должен содержать $|<>:?*"/\; и <space> amx_dc_bot_password - пароль (Надо обязательно зарегистрировать бота) amx_dc_active 1/0 - активен бот или нет amx_dc_allow_chat 1/0 - Разрешить игрокам писать на хаб amx_dc_bot_info_messages 1/0 - Показывать инф. сообщения или нет amx_dc_bot_info_messages_time - Время в минутах между показом инф. сообщения amx_dc_bot_admin_nick - Ник на который будут отсылаться сообщения если игрок наберёт say /dc admin amx_dc_bot_recv_chat - Прослушивать чат хаба или нет (доступно csinfo или нет) Code #define INFO1, #define INFO2 Сообщения, чередуещиеся по времени #define CSINFO Сообщение по csinfo в чат
#define RECONNECT_INTERVAL 5 - Интервал попыток коннекта к серверу если не удалось подключится Если бот не подключается к хабу, смотрите файл logs/recv.txt API: forward amx_dc_bot_chat(user[],message[],is_pm); Вызывается когда приходит сообщение в общий чат или в личку бота (в случае лички is_pm==1) forward amx_dc_bot_cmd(cmd[]); Вызывается в случае прихода любой другой команды от хаба native dc_send_to_chat(message[]); Отправить сообщение в чат native dc_send_to_user(user[],message[]); Отрпавить ПМ юзеру native dc_send_command(cmd[]); Отправить произвольную команду на хаб. Внимание! Если послать хабу команду, которой на самом деле нету его хаб его кикнет! Дополнения к плагину: amx_dc_rcon.sma Демонстрация работы с API Code rcon <команда> выполнить команду в консоле сервера Писать в дц в чат или личку бота (не рекомендуется писать в чат в целях безопасности) CVar Code amx_dc_rcon_admins_nick - ники админов в дц которые могут использовать команду rcon, разделённые пробелами Code #define MAX_ADMINS 16 - максимальное число этих админов ranksystem.sma Исправленный мной плагин RankSystem, который теперь корректно работает с PsychoStats 3.1, корректно работает с первого же запуска сервера, выводит топ15 в дц по команде top15 в дц, всем кто в топе даётся флаг ADMIN_VOTE. Инструкция по установке 1. Установить как обычный плагин 2. В server.cfg добавить Code amx_dc_bot_host "127.0.0.1" amx_dc_bot_port "411" amx_dc_bot_user "[AMXX]DCBot" amx_dc_bot_password "dcbotpassword" При этом предполагается что на хабе по адресу 127.0.0.1:411 зарегистрирован пользователь [AMXX]DCBot с паролем dcbotpassword История версий v 0.1.1 Добавлено прослушивание чата хаба Автоматический механизм определения зарегистриррован бот на хабе или нет Исправдена ошибка с символом | в сообщении Не учитывается регистр ADMIN/CHAT v 0.1.2 Добавлены команды csplayers и sendto Исправлена ошибка с символом | в нике игрока Корректная работа механизма автоопределения регистрации с VerliHub v 0.1.3 Исправдена ошибка с символом | в никах игроков Определения банов Два чередующихся сообщения v 0.1.4 Исправлены баги v 0.1.5 Исправлены баги Реконнект v 0.1.6 2 Новых серверных команды Команды воспринимаются в любом месте сообщения (кроме sendto) Новая выводимая информация v 0.1.7 Таймер сообщений независим от рестартов и смены карты v 0.1.8 Написан с нуля код прослушивание чата Изменён формат вывода команды сервера dc API Дополнительные плагины Корректная работа на Linux (То что Windows переносила нормально (закрытие не открытого сокета), Linux не переносит, исправлено в этой версии) Скачать
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Вторник, 09.06.2009, 11:44:53 |
|
| |
F4RR3LL | Дата: Суббота, 22.11.2008, 19:13:14 | Сообщение # 2 |
Полковник
Группа: Скриптеры
Сообщений: 153
Статус: Не в сети
| Плагин понравился , спасибо. НО Есть недочёты: Code new Arg[100] read_argv(1, Arg, 99); а надо: Code static Arg[191] read_argv(1,Arg,sizeof Arg -1) также: Code if (!equal("/dc ",Arg,4) || strlen(Arg)<5) замени на это: Code if (!equal("/dc",Arg,3) || strlen(Arg)<=4) вместо Code new str[200]; formatex(str,299,"<%s> Сейчас на %s^n==================================^n>>>>>>>> Игроков: %d^n>>>>>>>> Карта: %s^n==================================|",g_user,hostname,get_playersnum(),map); socket_send(g_socket,str,0); надо Code new str[300]; formatex(str,299,"<%s> Сейчас на %s^n==================================^n>>>>>>>> Игроков: %d^n>>>>>>>> Карта: %s^n==================================|",g_user,hostname,get_playersnum(),map); socket_send(g_socket,str,0); Вроде усё
=\
Сообщение отредактировал F4RR3LL - Суббота, 22.11.2008, 19:21:23 |
|
| |
PomanoB | Дата: Суббота, 22.11.2008, 19:30:07 | Сообщение # 3 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Quote (F4RR3LL) new Arg[100] read_argv(1, Arg, 99); Это зависит от привычек, я например пишу не sizeof а цифры, потому как сразу видно какой длинны строка Quote (F4RR3LL) if (!equal("/dc",Arg,3) || strlen(Arg)<=4) Надо чтобы был пробел и имя, мой вариант это гарантирует, твой нет Quote (F4RR3LL) new str[200]; formatex(str,299,"<%s> Сейчас на %s^n==================================^n>>>>>>>> Игроков: %d^n>>>>>>>> Карта: %s^n==================================|",g_user,hostname,get_playersnum(),map); socket_send(g_socket,str,0); Это забыл исправить точно, спасибо, перезалил
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Суббота, 22.11.2008, 19:36:02 |
|
| |
DaTa | Дата: Суббота, 22.11.2008, 20:00:33 | Сообщение # 4 |
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Между strlen(Arg)<5 и strlen(Arg)<=4 нету разницы.
|
|
| |
PomanoB | Дата: Суббота, 22.11.2008, 20:01:23 | Сообщение # 5 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| F4RR3LL, наверное имел ввиду пробел
http://romanov4400.mybrute.com
|
|
| |
F4RR3LL | Дата: Суббота, 22.11.2008, 20:03:03 | Сообщение # 6 |
Полковник
Группа: Скриптеры
Сообщений: 153
Статус: Не в сети
| Quote (PomanoB) Это зависит от привычек, я например пишу не sizeof а цифры, потому как сразу видно какой длинны строка Я не только sizeof заменил , но и static поставил .. Надо static затем, чтобы arg[100] не создавать всё время.. Снизится нагрузка на сервер .. Есле не хочешь static - то внеси её вообще в глобальную чтобы её снова не создавать .. Например: Code new Arg[191]
public sayHook(id) { read_argv(1, Arg, sizeof Arg -1); ......
=\
Сообщение отредактировал F4RR3LL - Суббота, 22.11.2008, 20:05:29 |
|
| |
PomanoB | Дата: Суббота, 22.11.2008, 20:05:53 | Сообщение # 7 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Quote (F4RR3LL) Я не только sizeof заменил , но и static поставил .. Надо static затем, чтобы arg[100] не создавать всё время.. Снизится нагрузка на сервер .. Почему бы тогда все переменные в глобал не вынести
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Суббота, 22.11.2008, 20:07:37 |
|
| |
F4RR3LL | Дата: Суббота, 22.11.2008, 20:06:36 | Сообщение # 8 |
Полковник
Группа: Скриптеры
Сообщений: 153
Статус: Не в сети
| Quote (PomanoB) вообще не понял Сорри, меня тут отвлекают, и я запутался .. Подредактил
=\
|
|
| |
DaTa | Дата: Суббота, 22.11.2008, 20:13:09 | Сообщение # 9 |
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Quote (PomanoB) Почему бы тогда все переменные в глобал не вынести :D Получится месиво, трудно будет разобраться. PS хорошая идея у плагина.
|
|
| |
F4RR3LL | Дата: Суббота, 22.11.2008, 20:13:28 | Сообщение # 10 |
Полковник
Группа: Скриптеры
Сообщений: 153
Статус: Не в сети
| Quote (PomanoB) Почему бы тогда все переменные в глобал не вынести :D Потому-что say набирается очень много раз за день, и чтобы новую переменную размером в 190 не создавать, достаточно создать 1 раз или приписать к ней static - это оптимизация .. Quote (F4RR3LL) PS хорошая идея у плагина. Угу ..
=\
Сообщение отредактировал F4RR3LL - Суббота, 22.11.2008, 20:14:07 |
|
| |
PomanoB | Дата: Суббота, 22.11.2008, 20:18:32 | Сообщение # 11 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Тоже поправавил Удаляй свой пост народ не поймёт Добавлено (2008-11-22, 8:18 Pm) --------------------------------------------- Да ладно, сервера на мощных компах стоят можно и создать 200 Байт У меня где-то валялся бот на C++, он ещё читатал чат и по команде выводил инфу, только затерялся где-то, теперь вот под AmxModX сделал
http://romanov4400.mybrute.com
Сообщение отредактировал PomanoB - Суббота, 22.11.2008, 20:20:56 |
|
| |
DaTa | Дата: Суббота, 22.11.2008, 20:24:03 | Сообщение # 12 |
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Quote (PomanoB) Да ладно, сервера на мощных компах стоят можно и создать 200 Байт Это деградация программистов).
|
|
| |
PomanoB | Дата: Суббота, 22.11.2008, 20:27:31 | Сообщение # 13 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Не без этого В следующеё версии будет глобал, сэкономим 2 такта быстродействия
http://romanov4400.mybrute.com
|
|
| |
Joker | Дата: Суббота, 22.11.2008, 20:51:51 | Сообщение # 14 |
Генерал-майор
Группа: Пользователи
Сообщений: 375
Статус: Не в сети
| Идея отличная. Можно ли сделать так, чтобы бот отвечал только в личку на хабе. Допустим такие действия: пользователь на хабе пишет в личку боту определенную команду и бот выдает инфу о сервере. За флуд на многих хабах банят, особенно если количество людей на хабе мало. А в личку было бы отлично
One death is a Tragedy One million is a Statistic...
|
|
| |
PomanoB | Дата: Суббота, 22.11.2008, 21:15:36 | Сообщение # 15 |
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| В след. версии сделаю
http://romanov4400.mybrute.com
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |