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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Бан система [AMXX]

, IP, ID, NICKNAME
Статус пользователя unnamed7777
сообщение 8.6.2014, 18:24
Сообщение #1


Стаж: 10 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Добрый день ув. форумчане c-s.net.ua. Вот не знал чем заняться, и решил написать бан систему, но вроде все работает, а вот если бан по IP и по SteamID, а ник разбанен, то не выкидает с сервер, какие ошибки я допустил?

Код:
#include <amxmodx>
#include <amxmisc>

new PLUGIN[] = "[AMXX] Data Base Info"
new VERSION[] = "0.2 beta"
new AUTHOR[] = "ServerBy905 Team & Tom"
new CFGFILEIP[] = "addons/amxmodx/data/DataBaseInfo/DataBaseInfo_IP.ini"
new CFGFILEID[] = "addons/amxmodx/data/DataBaseInfo/DataBaseInfo_ID.ini"
new CFGFILENICK[] = "addons/amxmodx/data/DataBaseInfo/DataBaseInfo_NICK.ini"
new name[33], line, text[32], num, CHName[256][32],i
new steamid[35], text1[32], CHSteam[256][34]
new ip[23], text2[32], CHIP[256][22]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("amx_allban", "cmdBan", ADMIN_BAN, "<player> - NickName user")
}

public plugin_cfg() {
set_task(3.0, "CFGNICK", _, _, _, "b")
set_task(3.0, "CFGID", _, _, _, "b")
set_task(3.0, "CFGIP", _, _, _, "b")
}

public CFGNICK() {
if(file_exists(CFGFILENICK)) {
for(line=0;read_file(CFGFILENICK, line, text, sizeof(text) -1, num);line++) {
if(num>0) CHName[line]=text
}
}
return PLUGIN_CONTINUE
}

public CFGID() {
if(file_exists(CFGFILEID)) {
for(line=0;read_file(CFGFILEID, line, text1, sizeof(text1) -1, num);line++) {
if(num>0) CHSteam[line]=text1
}
}
return PLUGIN_CONTINUE
}

public CFGIP() {
if(file_exists(CFGFILEIP)) {
for(line=0;read_file(CFGFILEIP, line, text2, sizeof(text2) -1, num);line++) {
if(num>0) CHSteam[line]=text2
}
}
return PLUGIN_CONTINUE
}

public client_authorized(id) {
get_user_name(id, name, 32)
get_user_authid(id, steamid, 34)
get_user_ip(id, ip, 22, 1)
for(i=0;i<line+1;i++) {
if(containi(name, CHName[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))

if(containi(steamid, CHSteam[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))

if(containi(ip, CHIP[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))
}
}

public cmdBan(id, level, cid) {
if(!cmd_access(id, level, cid, 2)) {
return PLUGIN_HANDLED
}

new arg[32]
read_argv(1, arg, 31)

new player = cmd_target(id, arg, 9)

if(!player)
return PLUGIN_HANDLED

new zName[33], zSteam[36], zIP[23]
new sName[64], sSteam[64], sIP[64]

get_user_name(player, zName, 32)
get_user_authid(player, zSteam, 35)
get_user_ip(player, zIP, 23, 1)

formatex(sName, 63, "%s", zName)
formatex(sSteam, 63, "%s", zSteam)
formatex(sIP, 63, "%s", zIP)

write_file(CFGFILENICK, sName, -1)
write_file(CFGFILEID, sSteam, -1)
write_file(CFGFILEIP, sIP, -1)

server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(player))

return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Nixon
сообщение 8.6.2014, 18:43
Сообщение #2


Стаж: 10 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Код:
public client_authorized(id) {
get_user_name(id, name, 32)
get_user_authid(id, steamid, 34)
get_user_ip(id, ip, 22, 1)
for(i=0;i<line+1;i++) {
if(containi(name, CHName[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))

if(containi(steamid, CHSteam[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))

if(containi(ip, CHIP[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))
}
}


Попробуй вместо трёх IF сделать один, if((containi(name, CHName[i])!=-1) || (containi(steamid, CHSteam[i])!=-1) || (containi(ip, CHIP[i])!=-1))

Отредактировал: Nixon, - 8.6.2014, 18:45
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 8.6.2014, 18:47
Сообщение #3


Стаж: 10 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(Nixon @ 8.6.2014, 18:43) *
Код:
public client_authorized(id) {
get_user_name(id, name, 32)
get_user_authid(id, steamid, 34)
get_user_ip(id, ip, 22, 1)
for(i=0;i<line+1;i++) {
if(containi(name, CHName[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))

if(containi(steamid, CHSteam[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))

if(containi(ip, CHIP[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))
}
}


Попробуй вместо трёх IF сделать один, if((containi(name, CHName[i])!=-1) || (containi(steamid, CHSteam[i])!=-1) || (containi(ip, CHIP[i])!=-1))

Делал, но так вообще даже по нику не банит :D
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 8.6.2014, 19:02
Сообщение #4


Иконка группы

Стаж: 13 лет

Сообщений: 7566
Благодарностей: 5436
Полезность: 1305

надо смотреть читается ли там вообще что-нибудь
if(containi(name, CHName[i])!=-1)
у вас при бане ника "a" будет кикать всех, у кого есть в нике a или A


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nixon
сообщение 8.6.2014, 19:04
Сообщение #5


Стаж: 10 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Почему бы просто не сделать через trie? array? Мне кажется легче будет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 8.6.2014, 19:20
Сообщение #6


Стаж: 10 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(mazdan @ 8.6.2014, 19:02) *
надо смотреть читается ли там вообще что-нибудь
if(containi(name, CHName[i])!=-1)
у вас при бане ника "a" будет кикать всех, у кого есть в нике a или A

Точно!

Отредактировал: tom94ok, - 8.6.2014, 19:22
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 8.6.2014, 23:16
Сообщение #7


Стаж: 10 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(tom94ok @ 8.6.2014, 18:24) *
Добрый день ув. форумчане c-s.net.ua. Вот не знал чем заняться, и решил написать бан систему, но вроде все работает, а вот если бан по IP и по SteamID, а ник разбанен, то не выкидает с сервер, какие ошибки я допустил?

Код:
#include <amxmodx>
#include <amxmisc>

new PLUGIN[] = "[AMXX] Data Base Info"
new VERSION[] = "0.2 beta"
new AUTHOR[] = "ServerBy905 Team & Tom"
new CFGFILEIP[] = "addons/amxmodx/data/DataBaseInfo/DataBaseInfo_IP.ini"
new CFGFILEID[] = "addons/amxmodx/data/DataBaseInfo/DataBaseInfo_ID.ini"
new CFGFILENICK[] = "addons/amxmodx/data/DataBaseInfo/DataBaseInfo_NICK.ini"
new name[33], line, text[32], num, CHName[256][32],i
new steamid[35], text1[32], CHSteam[256][34]
new ip[23], text2[32], CHIP[256][22]

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("amx_allban", "cmdBan", ADMIN_BAN, "<player> - NickName user")
}

public plugin_cfg() {
set_task(3.0, "CFGNICK", _, _, _, "b")
set_task(3.0, "CFGID", _, _, _, "b")
set_task(3.0, "CFGIP", _, _, _, "b")
}

public CFGNICK() {
if(file_exists(CFGFILENICK)) {
for(line=0;read_file(CFGFILENICK, line, text, sizeof(text) -1, num);line++) {
if(num>0) CHName[line]=text
}
}
return PLUGIN_CONTINUE
}

public CFGID() {
if(file_exists(CFGFILEID)) {
for(line=0;read_file(CFGFILEID, line, text1, sizeof(text1) -1, num);line++) {
if(num>0) CHSteam[line]=text1
}
}
return PLUGIN_CONTINUE
}

public CFGIP() {
if(file_exists(CFGFILEIP)) {
for(line=0;read_file(CFGFILEIP, line, text2, sizeof(text2) -1, num);line++) {
if(num>0) CHSteam[line]=text2
}
}
return PLUGIN_CONTINUE
}

public client_authorized(id) {
get_user_name(id, name, 32)
get_user_authid(id, steamid, 34)
get_user_ip(id, ip, 22, 1)
for(i=0;i<line+1;i++) {
if(containi(name, CHName[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))

if(containi(steamid, CHSteam[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))

if(containi(ip, CHIP[i])!=-1)
server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(id))
}
}

public cmdBan(id, level, cid) {
if(!cmd_access(id, level, cid, 2)) {
return PLUGIN_HANDLED
}

new arg[32]
read_argv(1, arg, 31)

new player = cmd_target(id, arg, 9)

if(!player)
return PLUGIN_HANDLED

new zName[33], zSteam[36], zIP[23]
new sName[64], sSteam[64], sIP[64]

get_user_name(player, zName, 32)
get_user_authid(player, zSteam, 35)
get_user_ip(player, zIP, 23, 1)

formatex(sName, 63, "%s", zName)
formatex(sSteam, 63, "%s", zSteam)
formatex(sIP, 63, "%s", zIP)

write_file(CFGFILENICK, sName, -1)
write_file(CFGFILEID, sSteam, -1)
write_file(CFGFILEIP, sIP, -1)

server_cmd("kick #%d ^"Вы были забанены. Продолж: Навсегда^"", get_user_userid(player))

return PLUGIN_HANDLED
}


Могбы кто написать такое же, только как вы говорили на Array и Trie

Отредактировал: tom94ok, - 8.6.2014, 23:16
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя RedL1ne
сообщение 8.6.2014, 23:36
Сообщение #8


Стаж: 13 лет

Сообщений: 3828
Благодарностей: 1854
Полезность: 876

tom94ok,
Хм, а зачем писать примитивный велосипед, если не для саморазвития? =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя unnamed7777
сообщение 9.6.2014, 9:22
Сообщение #9


Стаж: 10 лет

Сообщений: 54
Благодарностей: 7
Полезность: 17

Цитата(RedL1ne @ 8.6.2014, 23:36) *
tom94ok,
Хм, а зачем писать примитивный велосипед, если не для саморазвития? =)


Просто реально, если я хочу забанить ник "a", то пишет, что есть больше одной подходящей цели. Забанить хочу "а", а игрок с ником "Kar", тоже будет в бане, как это править?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 9.6.2014, 9:29
Сообщение #10


Иконка группы

Стаж: 14 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

кик и бан по нику - это смешно...
а использовать нужно
http://amxxmodx.ru/core/stringinc/68-equal...ast-stroki.html
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: