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

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

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

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

amx_who

, admincmd редактирование
Статус пользователя ncux0Zz
сообщение 29.9.2018, 12:20
Сообщение #1


Стаж: 14 лет

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

Привет всем, хочу переписать плагин admincmd, а точнее команду amx_who.
Давно переписывал, исходник свой же потерял.
Была последовательность изменена и выровнены строки, что-то типа:
Цитата
# Steam ID IP адрес Никнэйм Имм. Сл. Флаги
1 Steam_0:0:32940192 34.234.103.15:27005 Player Да Да abcdefghijklmnoprstu

P.S. пробелы увеличены между столбцами.
Сейчас пытаюсь переписать, выходит криво, а точнее выводит user id, который я убрал из строк, однако почему-то он отображается:
Cкрытый текст

После IP адреса пишет User ID, который я убрал из кода в данной строке.
Вот нынешний код:
Cкрытый текст
Код:
public cmdWho(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new players[MAX_PLAYERS], inum, cl_on_server[64], authid[32], ip[32], name[MAX_NAME_LENGTH], flags, sflags[32], plr // Добавил (ip[32])
new lImm[16], lRes[16], lAccess[16], lYes[16], lNo[16]

formatex(lImm, charsmax(lImm), "%L", id, "IMMU")
formatex(lRes, charsmax(lRes), "%L", id, "RESERV")
formatex(lAccess, charsmax(lAccess), "%L", id, "ACCESS")
formatex(lYes, charsmax(lYes), "%L", id, "YES")
formatex(lNo, charsmax(lNo), "%L", id, "NO")

get_players(players, inum)
format(cl_on_server, charsmax(cl_on_server), "%L", id, "CLIENTS_ON_SERVER")
console_print(id, "^n%s:^n # %-34s %-34s %-34s %-10s %-10s %s", cl_on_server, "Steam ID", "IP адрес", "Никнэйм", lImm, lRes, lAccess)

for (new a = 0; a < inum; ++a)
{
plr = players[a]
get_user_authid(plr, authid, charsmax(authid))
get_user_ip(plr, ip, charsmax(ip)) // Добавил строку под IP
get_user_name(plr, name, charsmax(name))
flags = get_user_flags(plr)
get_flags(flags, sflags, charsmax(sflags))
console_print(id, "%2d %-26s %-26s %-16d %-12s %-12s %s", plr, authid, ip, name, // Дописал (ip)
get_user_userid(plr), (flags&ADMIN_IMMUNITY) ? lYes : lNo, (flags&ADMIN_RESERVATION) ? lYes : lNo, sflags)
}

console_print(id, "%L", id, "TOTAL_NUM", inum)
get_user_authid(id, authid, charsmax(authid))
get_user_name(id, name, charsmax(name))
log_amx("Cmd: ^"%s<%d><%s><>^" ask for players list", name, get_user_userid(id), authid)

return PLUGIN_HANDLED
}


Редактировал строку console_print.
Как убрать User ID и сделать, чтобы после IP адреса отображался Никнэйм сразу, а дальше Имм. Слот. Флаги ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
podbot
сообщение 29.9.2018, 14:38
Сообщение #2
Стаж: 11 лет

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

найди в поиске плагин block_ip, так помоему называется, там делали вроде то, что тебе нужно, глянь код
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ncux0Zz
сообщение 29.9.2018, 16:36
Сообщение #3


Стаж: 14 лет

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

Цитата(podbot @ 29.9.2018, 19:38) *
найди в поиске плагин block_ip, так помоему называется, там делали вроде то, что тебе нужно, глянь код

Я исправил, но вот только влезает теперь "Steam ID", "IP adress" и "Nick". Хотелось бы дописать еще флаги доступа. Текст пропадает.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
podbot
сообщение 29.9.2018, 17:19
Сообщение #4
Стаж: 11 лет

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

ncux0Zz, лимит, через motd если ток делать, но если 32 игрока будет, то и там лимит будет
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Grable
сообщение 29.9.2018, 17:57
Сообщение #5


Стаж: 8 лет 8 месяцев

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

Если лимиты, то сделай страницами
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 30.9.2018, 2:07
Сообщение #6


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

Стаж: 16 лет

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

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

Код
console_print(id, "%2d  %-26s %-26s %-16d %-12s %-12s %s", plr, authid, ip,   name,      // Дописал (ip)
      get_user_userid(plr), (flags&ADMIN_IMMUNITY) ? lYes : lNo, (flags&ADMIN_RESERVATION) ? lYes : lNo, sflags)

это одна длинная строка
get_user_userid(plr) - как раз и выводит userid
так что ни чего не убрал

ну и глупо показывать скрин вывода и код не совпадающими между собой


Код
Текст пропадает

значит буфер или массив переполнены, поэтому текст не влезает в размер и пропадает

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ncux0Zz
сообщение 30.9.2018, 5:38
Сообщение #7


Стаж: 14 лет

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

Legenda, конкретно тот код выше и скрин совпадают.
get_user_userid - удалял строку, тогда ни чего не выводит в консоле совсем, 0 информации.
Сделать сделал, но с текстом, чтобы полностью отображался не получается. Увеличить буфер возможно?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 30.9.2018, 12:47
Сообщение #8


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

Стаж: 16 лет

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

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

советую для начала разобраться в типах данных и переменных
потом создать массив, который будет хранить форматированную строку, по одному подавать значения в форматированную строку и каждый раз проверять что делаете и что получается
Код:
new msg[128]
......
format(msg,127,"%d %s %s", plr, authid, ip)
......
client_print(id,print_console,msg)

постепенно форматировать строку, каждый раз проверяй вывод в консоль
и внимательно следить за форматированной строкой



Код
plr, authid, ip,   name,  get_user_userid(plr), (flags&ADMIN_IMMUNITY) ? lYes : lNo, (flags&ADMIN_RESERVATION) ? lYes : lNo, sflags)

если удалил get_user_userid(plr), надо еще и удалить формат вывода из
Код
"%2d  %-26s %-26s %-16d %-12s %-12s %s"

форматы подстановки
%d - целое числое
%f - дробное число
%s - строка, массив, текст


%2d %-26s %-26s %-16d %-12s %-12s %s - советую для начала удалить все числа и выводить как есть.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 2 гостей читают эту тему: