Или нам на оборот нужно сделать какие то действия только с ботами, для упрощения нашей жизни и решения подобных проблем есть функция is_user_bot.
Инфо из amxxmodx.inc:
/* Returns 1 or 0. */
native is_user_bot(index);
Синтаксис:
is_user_bot ( index )
- index - id игрока
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Is User Bot"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /bots-online","check_bot")
}
public check_bot(id){
new MaxPlayers
MaxPlayers = get_maxplayers()
new bot_count,name[32]
new message[1024],len=0
len = format(message,charsmax(message),"Bots online: ")
for (new i=1; i<=MaxPlayers; i++){
if(is_user_bot(i)){
get_user_name(i,name,31)
bot_count++
len +=format(message[len],charsmax(message)-len,"%s,",name)
}
}
len--
len += format(message[len],charsmax(message)-len," Bots total: %d",bot_count)
client_print(0,print_chat,message)
}
Описание:
Функция предельно проста, по этому пример немного усложнен.
Зарегистрированная команды вызывает функцию, внутри которой мы получаем максимальное количество игроков на сервере и в цикле проверяем каждого игрока, бот он или нет.
Если выводить в цикле сообщение бот или нет, то будет сообщений столько же, сколько и ботов на сервере,а это не красиво.
Для решения данной проблемы нам помогла функция format.
До цикла мы записали начало сообщения, в самом цикле мы дописывали в это сообщение имена ботов и записывали в переменную их количество.
После цикла стоит
len--- это мы удаляем последнюю не нужную нам запятую после подстановки имени %s,
len +=format(message[len],charsmax(message)-len,"%s,",name).
И наконец добавляем в наше сообщение информацию о количесве ботов на сервере, после чего благополучно выводим сообщение всем присутствующим на сервере.