Было бы глупо для каждого из вывода делать громоздкие функции , вернее их форматирование, да и код смотрится как то невежественно. Но бывают случаи, когда нужно отредактировать сообщение, подготовить запрос к баз данных и многие другие, где на все случаи жизни не подготовить строки. И для этого в инклюде strinc.inc есть функция format, которая и позволяет нам редактировать строки и записывать их в массив.
Инфо из strinc.inc:
/* Fills string with given format and parameters.
* Function returns number of copied chars.
* Example: format(dest,"Hello %s. You are %d years old","Tom",17).
* If any of your input buffers overlap with the destination buffer,
* format() falls back to a "copy-back" version as of 1.65. This is
* slower, so you should using a source string that is the same as
* the destination.
*/
native format(output[] ,len ,const format[] , any:...);
Синтаксис:
format ( output[], len, const format[], ... )
- output[] - Массив куда помещаем наше сообщение (строку)
- len - Размер массива
- const format[] - Сообщения с подстановкой массивов
- ... - Массивы для подстановки.
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Message Format"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /msg","format_msg")
}
public format_msg(id){
new message[128]
new name[32]
get_user_name(id,name,31)
new hostname[32]
get_cvar_string("hostname",hostname,31)
format(message, 127, "Hello %s!! You in %s server", name, hostname)
client_print(id,print_chat,message)
client_print(id,print_console,message)
client_print(id,print_center,message)
/*
//А могло бы быть так:
client_print(id,print_center,"Hello %s!! You in %s server", name, hostname)
client_print(id,print_console,"Hello %s!! You in %s server", name, hostname)
client_print(id,print_center,"Hello %s!! You in %s server", name, hostname)
*/
}
Описание:
Для начала мы зарегистрировали массив message,и парочку других массивов для имени игрока и сервера.
Получив все нужные данные, принимаемся за форматирование:
format(message, 127, "Hello %s!! You in %s server", name, hostname)
После того как массив записан нашими данными, мы просто вставляем наш массив функцию client_print 3 раза подряд, но с разными типами вывода (в чат,в консоль,по центру экрана).
В данном примере явно видно, как упрощает жизнь данная функция если нужно вывести одно и тоже сообщения разными способами.
Оценить данную функцию вы сможете как только начнете составлять запросы к базе данных или выводить сложные сообщения, например составляя одно сообщение из нескольких циклов.