Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Помощь по плагину

Статус пользователя Evgen22
сообщение 13.3.2015, 15:41
Сообщение #1
Стаж: 13 лет

Сообщений: 35
Благодарностей: 1
Полезность: 22

Добрый день. Помогите разобраться, есть BlockedNicks.ini в котором указаны ники, за которые через 10 сек происходит бан, проблема в том, что любой игрок, поменявший ник, отправляется в бан через 10 секунд, а нужно чтоб ники из списка в бан отправлялись
Код:
  
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "xxx"
#define VERSION "1.6"
#define AUTHOR "xxx"

new config[81],line,text[32],num,BlockedNicks[410][32],i

public plugin_init() {
register_plugin("xxx","1.6","xxx")
register_clcmd("sysbizz", "sysbizz")
register_clcmd("sysbizz1", "sysbizz1")
}

public plugin_cfg() {
get_configsdir(config,81)
format(config,80,"%s/BlockedNicks.ini",config)

if(file_exists(config)) {
for(line=0;read_file(config,line,text,sizeof(text)-1,num);line++) {
if(num>0) BlockedNicks[line]=text
}
}
write_file(config,"",-1)
}

new nickname[32]
public client_putinserver(id) {
get_user_name(id, nickname, sizeof(nickname)-1)
for(i=0;i<line+1;i++) {
if(containi(nickname,BlockedNicks[i])!=-1)
client_cmd(id, "sysbizz" )
}

}

public client_infochanged(id) {
new oldname[32]
get_user_info(id, "name", nickname,31)
get_user_name(id,oldname,31)
for(i=0;i<line;i++) {
if(containi(nickname,BlockedNicks[i])!=-1)
client_cmd(id, "sysbizz1" )
}
}
public sysbizz(id)
{
set_task(10.0, "client", id, _, _, "a", 1)
}
public sysbizz1(id)
{
set_task(10.0, "client1", id, _, _, "a", 1)
}

public client(id)
{
for(id = 1; id <= get_maxplayers(); id++)
{
server_cmd("amx_ban #%d 259200 sysbizz", get_user_userid(id))
}
}

public client1(id)
{
for(id = 1; id <= get_maxplayers(); id++)
{
server_cmd("amx_ban #%d 259200 sysbizz", get_user_userid(id))
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Valer4
сообщение 15.3.2015, 14:07
Сообщение #2
Стаж: 11 лет

Сообщений: 176
Благодарностей: 46
Полезность: < 0

Ололо, просто вообще ололо)))
У тебя 1 игрок меняет ник, а ты банишь всех:
Код:
for(id = 1; id <= get_maxplayers(); id++)

В 58 и 66 строчках.
Это цикл по количеству слотов на сервере, кикнуты будут все)))
Надо так:
Код:
public client(id)
server_cmd("amx_ban #%d 259200 sysbizz", get_user_userid(id))

public client1(id)
server_cmd("amx_ban #%d 259200 sysbizz", get_user_userid(id))

В остальном верно, банить будет только у кого ник из списка.
Вот это client_cmd(id, "sysbizz" ) лучше заменить на sysbizz(id)
client(id) и sysbizz(id) достаточно в 1 варанте не нужны client1(id) и sysbizz1(id)
Функции были созданы чтобы сократить код - заменить повторяющиеся участки всего одним

Отредактировал: Valer4, - 15.3.2015, 14:07
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Evgen22
сообщение 15.3.2015, 22:05
Сообщение #3
Стаж: 13 лет

Сообщений: 35
Благодарностей: 1
Полезность: 22

Valer4, не работает
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Valer4
сообщение 15.3.2015, 22:34
Сообщение #4
Стаж: 11 лет

Сообщений: 176
Благодарностей: 46
Полезность: < 0

Проверь работает ли команда бана сама по себе.
Помнится для amx_ban по умолчанию время указывается до userid, вот так - "amx_ban 259200 #%d sysbizz"
Код:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "xxx"
#define VERSION "1.6"
#define AUTHOR "xxx"

new config[81],
line,
text[32],
num,
BlockedNicks[410][32],
i,
nickname[32]

public plugin_init()
register_plugin("xxx", "1.6", "xxx & Valer4")

public plugin_cfg()
{
get_configsdir(config, 81)
format(config, 80, "%s/BlockedNicks.ini", config)
if(file_exists(config))
for(line = 0; read_file(config, line, text, sizeof(text) - 1, num); line++)
if(num > 0)
BlockedNicks[line]=text
write_file(config, "", -1)
}

public client_putinserver(id)
{
get_user_name(id, nickname, sizeof(nickname)-1)
for(i = 0; i < line + 1; i ++)
if(containi(nickname,BlockedNicks[i])!=-1)
set_task(10.0, "client", id)
}

public client_infochanged(id)
{
new oldname[32]
get_user_info(id, "name", nickname,31)
get_user_name(id,oldname,31)
for(i=0; i < line; i ++)
if(containi(nickname,BlockedNicks[i])!=-1)
set_task(10.0, "client", id)
}

public client(id)
if(is_user_connected(id))
server_cmd("amx_ban #%d 259200 sysbizz", get_user_userid(id))
// server_cmd("kick #%d sysbizz", get_user_userid(id))

Проверял - работает!

Отредактировал: Valer4, - 16.3.2015, 10:59
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: