AMX MOD X
Пятница, 29.03.2024, 14:06:44



Приветствую Вас Гость | RSS
[ Главная ] [ Amx DC Bot - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 12
  • 1
  • 2
  • 3
  • 11
  • 12
  • »
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Плагины » Готовые плагины » Amx DC Bot (Бот для DC-хабов)
Amx DC Bot
PomanoBДата: Суббота, 22.11.2008, 16:54:15 | Сообщение # 1
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
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
Репутация: 2
Статус: Не в сети
Плагин понравился , спасибо.

НО Есть недочёты:

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
Репутация: 70
Статус: Не в сети
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
Репутация: 16
Статус: Не в сети
Между strlen(Arg)<5 и strlen(Arg)<=4 нету разницы.
 
PomanoBДата: Суббота, 22.11.2008, 20:01:23 | Сообщение # 5
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
F4RR3LL, наверное имел ввиду пробел

http://romanov4400.mybrute.com
 
F4RR3LLДата: Суббота, 22.11.2008, 20:03:03 | Сообщение # 6
Полковник
Группа: Скриптеры
Сообщений: 153
Репутация: 2
Статус: Не в сети
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
Репутация: 70
Статус: Не в сети
Quote (F4RR3LL)
Я не только sizeof заменил , но и static поставил ..
Надо static затем, чтобы arg[100] не создавать всё время.. Снизится нагрузка на сервер ..

Почему бы тогда все переменные в глобал не вынести :D


http://romanov4400.mybrute.com

Сообщение отредактировал PomanoB - Суббота, 22.11.2008, 20:07:37
 
F4RR3LLДата: Суббота, 22.11.2008, 20:06:36 | Сообщение # 8
Полковник
Группа: Скриптеры
Сообщений: 153
Репутация: 2
Статус: Не в сети
Quote (PomanoB)
вообще не понял

Сорри, меня тут отвлекают, и я запутался .. Подредактил :)


=\
 
DaTaДата: Суббота, 22.11.2008, 20:13:09 | Сообщение # 9
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Quote (PomanoB)
Почему бы тогда все переменные в глобал не вынести :D

Получится месиво, трудно будет разобраться.

PS хорошая идея у плагина.

 
F4RR3LLДата: Суббота, 22.11.2008, 20:13:28 | Сообщение # 10
Полковник
Группа: Скриптеры
Сообщений: 153
Репутация: 2
Статус: Не в сети
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
Репутация: 70
Статус: Не в сети
Тоже поправавил
Удаляй свой пост народ не поймёт :D

Добавлено (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
Репутация: 16
Статус: Не в сети
Quote (PomanoB)
Да ладно, сервера на мощных компах стоят можно и создать 200 Байт

Это деградация программистов).
 
PomanoBДата: Суббота, 22.11.2008, 20:27:31 | Сообщение # 13
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Не без этого :)
В следующеё версии будет глобал, сэкономим 2 такта быстродействия :D


http://romanov4400.mybrute.com
 
JokerДата: Суббота, 22.11.2008, 20:51:51 | Сообщение # 14
Генерал-майор
Группа: Пользователи
Сообщений: 375
Репутация: 5
Статус: Не в сети
Идея отличная.

Можно ли сделать так, чтобы бот отвечал только в личку на хабе. Допустим такие действия: пользователь на хабе пишет в личку боту определенную команду и бот выдает инфу о сервере. За флуд на многих хабах банят, особенно если количество людей на хабе мало. А в личку было бы отлично :)


One death is a Tragedy
One million is a Statistic...
 
PomanoBДата: Суббота, 22.11.2008, 21:15:36 | Сообщение # 15
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
В след. версии сделаю

http://romanov4400.mybrute.com
 
AMX Mod X Форум » Плагины » Готовые плагины » Amx DC Bot (Бот для DC-хабов)
  • Страница 1 из 12
  • 1
  • 2
  • 3
  • 11
  • 12
  • »
Поиск:

AMX Mod X Russian Community © 2006-2024