AMX MOD X
Пятница, 26.04.2024, 19:46:48



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » альтернатива amxbans (после бана клиент продолжает видеть сервер)
альтернатива amxbans
X-factorДата: Четверг, 19.02.2009, 01:29:13 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 58
Репутация: 2
Статус: Не в сети
Привет всем!!!
Такой вопрос: как зделать, что бы после бана клиента, он (клиент) продолжал видеть сервер, но когда он на него коннектится, то выбивала табличка с REASON?
Мне пришла идея не использовать команду amx_banip, а просто кикать, но записывать в файл конфига IP забаненого клиента. Потом при конекте поставить проверку на конфиг с ипами и, если есть там ип, то кик и REASON!

Так вот, верна ли моя идея? Можна ли зделать это как то проще? И ещё, я вот уже знаю фрагмент кода на проверку ипа - если ип есть в конфиг файле, то не кикать:

Code
static i, szIP[16]
   get_user_ip(id, szIP, 15, 1)
     
   for(i = 0; i != g_iWhiteIPNum; ++i)
    if(  equal(szIP, g_szWhiteIPs[i])  )
     return

как зделать наоборот, если ип есть, то кикать?

ЗЫ: Я склоняюсь к тому, что моя идея неверна! Так, как что бы конфиг файл обновился требуется смена карты или перезапуск сервера!!!

 
[ViP]PredatorДата: Четверг, 19.02.2009, 13:29:52 | Сообщение # 2
Рядовой
Группа: Пользователи
Сообщений: 17
Репутация: 0
Статус: Не в сети
Quote (X-factor)
как зделать, что бы после бана клиента, он (клиент) продолжал видеть сервер, но когда он на него коннектится, то выбивала табличка с REASON?
Мне пришла идея не использовать команду amx_banip, а просто кикать, но записывать в файл конфига IP забаненого клиента. Потом при конекте поставить проверку на конфиг с ипами и, если есть там ип, то кик и

Идея не нова: используй amx_bans

http://www.amxbans.net/

Сообщение отредактировал [ViP]Predator - Четверг, 19.02.2009, 13:30:21
 
X-factorДата: Четверг, 19.02.2009, 22:47:00 | Сообщение # 3
Лейтенант
Группа: Пользователи
Сообщений: 58
Репутация: 2
Статус: Не в сети
[ViP]Predator
Для amx_bans нужен сайт с мускулом, а у меня его нет!
 
makSuSДата: Четверг, 19.02.2009, 23:03:07 | Сообщение # 4
Подполковник
Группа: Пользователи
Сообщений: 111
Репутация: 0
Статус: Не в сети
мышкой тык
 
X-factorДата: Воскресенье, 22.02.2009, 11:41:17 | Сообщение # 5
Лейтенант
Группа: Пользователи
Сообщений: 58
Репутация: 2
Статус: Не в сети
Этот код отвечает за то, если в конфиге есть ип то не кикать:
Code
static i, szIP[16]  
   get_user_ip(id, szIP, 15, 1)  
     
   for(i = 0; i != g_iWhiteIPNum; ++i)  
    if(  equal(szIP, g_szWhiteIPs[i])  )  
                   return

Как зделать обратное? То есть - если есть в конфиге ип, то кик???

Добавлено (2009-02-22, 11:41 Am)
---------------------------------------------
Ответте пожалуйста, очень нужно!

 
PomanoBДата: Воскресенье, 22.02.2009, 12:08:07 | Сообщение # 6
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
замени return на команду кика
server_cmd("amx_kick #%s %s",get_user_userid(id),"You have ben banned")


http://romanov4400.mybrute.com

Сообщение отредактировал PomanoB - Воскресенье, 22.02.2009, 12:09:59
 
HntДата: Воскресенье, 22.02.2009, 13:11:54 | Сообщение # 7
Сержант
Группа: Пользователи
Сообщений: 24
Репутация: 0
Статус: Не в сети
Раз уш пошла тема о хостинге Поделитесь ссылочками на free hosting для amxbans кто держит на халяву,желательно RU
 
X-factorДата: Воскресенье, 22.02.2009, 14:46:06 | Сообщение # 8
Лейтенант
Группа: Пользователи
Сообщений: 58
Репутация: 2
Статус: Не в сети
PomanoB
Спасиба!!! Помогло!!! Я как всегда ответ искал не там где нада. Еще такой вопрос, поскольку, чтобы сервер читал BAN.ini нужна его перезагрузка, а для бана это неприемлемо, нада что бы сразу даные считывались, как только внес изменения! Неподскажиш, как можно зделать это?
 
PomanoBДата: Воскресенье, 22.02.2009, 20:52:22 | Сообщение # 9
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Добавляй в массив банов после бана

http://romanov4400.mybrute.com
 
X-factorДата: Среда, 25.02.2009, 02:03:00 | Сообщение # 10
Лейтенант
Группа: Пользователи
Сообщений: 58
Репутация: 2
Статус: Не в сети
PomanoB
Не понял, поподробней пожалуйста.
Вот код записи в файл BAN.ini и кика:
Code
@task_aka_ban(id)        
{  
  static szIP[16], iLine

  get_user_ip(id, szIP, sizeof(szIP)-1, 1)

  write_file("addons/amxmodx/configs/BAN.ini", szIP, iLine++)

  server_cmd("kick #%d %s", get_user_userid(id), KICK_REASON)
}

Кстати с функцией write_file некогда неимел дело, возможно неправильно в скобках зделал, но работает!

Добавлено (2009-02-25, 2:03 Am)
---------------------------------------------
Ответь пожалуйста

 
PomanoBДата: Среда, 25.02.2009, 16:17:12 | Сообщение # 11
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Quote (X-factor)
Ответь пожалуйста

Времени нету просто совсем(
После кика добавляй элемент в массив g_szWhiteIPs
И вообще приложи сюда весь плагин, легче будет


http://romanov4400.mybrute.com
 
X-factorДата: Воскресенье, 01.03.2009, 20:59:59 | Сообщение # 12
Лейтенант
Группа: Пользователи
Сообщений: 58
Репутация: 2
Статус: Не в сети
PomanoB
Та да, щас со временем и у меня неочень конечно( Вот весь плаг со всеми его достоинствами и недостатками:
Code
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#include <file>

#define PLUGIN    "BAN"
#define VERSION    "0.1"
#define AUTHOR    "X-factor"

#define CONFIG_FILE "addons/amxmodx/configs/BAN.ini"
#define MAX_IPS  100
#define MODEL    "models/pingwin/myAC_pingwin.mdl"
#define KICK_MOTD    "/addons/amxmodx/configs/kickmotd.txt"
#define TASK_KICK    32
#define TASK_X_KICK    32
#define KICK_X_REASON     "Bbl 3a6aHeHbl!!! Bo/7PoCbl Ha FoPyMe: http://cs-volia.at.ua "
#define ATTENTION_INTERVAL    4.0
#define KICK_TIME   20.0
#define KICK_REASON       "B /7a/7Ke cstrike ecTb CkpuHLLloT - CkuHTe ero /7o AgPeCy: http://cs-volia.at.ua "

new const g_szModel[] = MODEL
new g_sViewModel
new g_szBanIPs[MAX_IPS][16]
new g_iBanIPNum

static const banurl[] = ""

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_concmd("amx_xban","xban",ADMIN_BAN,"<Ban username time>")
    register_cvar("amx_banurl",banurl)
       
    g_sViewModel = engfunc(EngFunc_AllocString, g_szModel)
    load_settings(CONFIG_FILE)
}

public plugin_precache()
    precache_model(g_szModel)

//Если IP клиента находится в BAN.ini - мгновенный kick
public client_connect(id)
{
    static i, szIP[16]
    get_user_ip(id, szIP, 15, 1)
       
    for(i = 0; i != g_iBanIPNum; ++i)
     if(  equal(szIP, g_szBanIPs[i])  )
       
    set_task(1.0, "@task_xkick", TASK_X_KICK+id)
}

@task_xkick(id)
{
    id -= TASK_KICK
       
    server_cmd("kick #%d %s", get_user_userid(id), KICK_X_REASON)
}

//Функция команды amx_xban
public xban(id,level,cid)
{
    if(!cmd_access(id,level,cid,2))
     return PLUGIN_HANDLED;

    new authid[32], ipadd[32], name[32], CurrentTime[9], hostname[64] ,banurl[64]
    new arg[32], arg2[32], temp[2], admin[32]
       
    read_argv(1,arg,31)
    read_argv(2,arg2,31)
       
    new target = cmd_target(id,arg,1)
       
    if (!target) return PLUGIN_HANDLED
       
    get_user_ip(target,ipadd,31)
    get_cvar_string("hostname",hostname,63)    
    get_user_name(target,name,31)
    g et_user_name(id, admin, 31)
    get_user_authid(target,authid,31)
    get_cvar_string("amx_banurl", banurl,63)
       
    log_to_file("BAN_LOG.txt","    %s | IP: %s | ADMIN: %s^n",name,ipadd,admin)
       
    client_print(target,print_chat, "[Banned] %s",hostname)
    client_print(target,print_chat, "[Banned] %s [Steamid] %s @ IP - %s",name,authid,ipadd)    
       
    get_time("%m/%d/%Y - %H:%M:%S",CurrentTime,31)
       
    client_print(target,print_chat, "[Banned] %s",CurrentTime)
    client_print(target,print_chat, "[Banned] Visit %s to be unbanned",banurl)
       
    console_print(target,"[Banned] %s",hostname)
    console_print(target,"[Banned] %s [Steamid] %s @ IP - %s",name,authid,ipadd)    
    console_print(target,"[Banned] %s",CurrentTime)
    console_print(target,"[Banned] Visit %s to be unbanned",banurl)
       
    client_cmd(target,"wait;wait;snapshot;wait;snapshot")
       
    temp[0] = target
    temp[1] = str_to_num(arg2)

    set_task(ATTENTION_INTERVAL, "@task_attention", target, _, _, "b")
    set_task(KICK_TIME, "@task_aka_ban", target)

    return PLUGIN_CONTINUE
}

@task_attention(id)
{
    show_motd(id, "KICK_MOTD")
       
    if(  !is_user_alive(id)  )
     return
       
    static iWeapons
    iWeapons = pev(id, pev_weapons)
       
    if(  !iWeapons  )//nothink to strip
     return
       
    //c4 drop
    //http://forums.alliedmods.net/showthread.php?t=40164 tnx VEN
    if(  iWeapons& (1<<CSW_C4)  )
     engclient_cmd(id, "drop", "weapon_c4")
       
    fm_strip_user_weapons(id)
    set_pev(id, pev_viewmodel, g_sViewModel)
}

@task_aka_ban(id)        // Неуверен!!!
{    
    static szIP[16], iLine

    get_user_ip(id, szIP, sizeof(szIP)-1, 1)

    write_file("CONFIG_FILE", szIP, iLine++)

    server_cmd("kick #%d %s", get_user_userid(id), KICK_REASON)
}

public client_disconnect(id)
{
    new arg[32]
    read_argv(1,arg,31)
    new target = cmd_target(id,arg,1)

    remove_task(id)
    remove_task(target)
    remove_task(TASK_X_KICK+id)
}

load_settings(const szConfigName[])
{
    if (  !file_exists(szConfigName)  )
     return
       
    new szIP[16], iLine, iLen
    while(  g_iBanIPNum < MAX_IPS && read_file(szConfigName, iLine++, szIP, 15, iLen)  )
    {
     if(  szIP[0] == ';' || !iLen  )
      continue
        
     copy(g_szBanIPs[g_iBanIPNum++], 15, szIP)
    }
}

Добавлено (2009-03-01, 8:59 Pm)
---------------------------------------------
Подскажеш, что не так и как можно?

Сообщение отредактировал X-factor - Суббота, 28.02.2009, 14:54:24
 
PomanoBДата: Воскресенье, 01.03.2009, 21:50:41 | Сообщение # 13
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Quote (X-factor)
Вот весь плаг со всеми его достоинствами и недостатками:

Я думал он уже работает )

Добавлено (2009-03-01, 9:50 Pm)
---------------------------------------------
http://forum.hlds.us/f39/advanced-bans-4779/


http://romanov4400.mybrute.com
 
X-factorДата: Понедельник, 02.03.2009, 22:49:30 | Сообщение # 14
Лейтенант
Группа: Пользователи
Сообщений: 58
Репутация: 2
Статус: Не в сети
PomanoB
Мой плаг то работает, но несразу воспринимает бан, а именно нада что бы сменилась мапа или перезапустить сервер.

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

Заметил одну в нем траблу: при бане на время (допустим 5 мин) он по истечению не удаляется, нада опять же либо смена мапы, либо перезапуск сервера! Хотя при бане в чате пишет срок окончания бана, а именно точное время и дата истекания. В чем же проблема?

 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » альтернатива amxbans (после бана клиент продолжает видеть сервер)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024