- Код: Выделить всё
stock ColorChat(const id, const Msg[], any:...) // id = ид игрока , Msg[] = наше сообщение , any:... = означает что ChatColor может содержать мултиязычность и получения разных кваров и т.д.
{
new msg[192] // наш массив который будет содержать сообщение
vformat(msg, 191, Msg, 3) // форматируем сообщение
replace_all(msg, sizeof(msg), "!g", "^4") // Зеленый цвет
replace_all(msg, sizeof(msg), "!t", "^3") // Цвет команды
replace_all(msg, sizeof(msg), "!y", "^1") // Дефолтный цвет (желтый)
new index, MsgType // index = массив который будет содержать ид игрока или индексы всех игроков, MsgType = будет содержать тип сообщения
if(id) // Будем проверять кому отправляется сообщение
{
MsgType = MSG_ONE // Будем отправлять сообщение одному игрока
index = id
}else{ // Если отправляем всех игроков
MsgType = MSG_ALL // Будем отправлять сообщение всем игрокам
index = FindPlayer()
}
message_begin(MsgType, get_user_msgid("SayText"), _, index)
write_byte(index)
write_string(msg)
message_end()
}
FindPlayer() // Будет получать всех игроков которые находятся на сервере
{
new i = -1 // Индекс последнего игрока
while(i <= get_maxplayers())
if(is_user_connected(i))
return i
return -1
}
Главный вопрос в параметре any в функции. Я пока не полностью разобрался, но можно ли утверждать, что any передается составным из значений параметром?
Например:
- Код: Выделить всё
ColorChat(id, "%s, %d, %s", "str", 4, "str")
Получается, что первый параметр - id, второй -"%s, %d, %s", а третий "str", 4, "str"?
И тогда в vformat мы как раз и добавляем 3 параметр vformat(msg, 191, Msg, 3), который, как бы, составной?