Русское сообщество по скриптингу

vformat и any: ...  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

vformat и any: ...

Сообщение nekruxa » 02 мар 2021, 13:45

Код: Выделить всё

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 = -// Индекс последнего игрока
 while(<= 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), который, как бы, составной?
Аватара пользователя
nekruxa
 
Сообщения: 147
Зарегистрирован: 20 апр 2020, 12:43
Благодарил (а): 13 раз.
Поблагодарили: 28 раз.
Языки программирования: Я ничего не знаю

Re: vformat и any: ...  [Решено]

Сообщение RevCrew » 07 мар 2021, 18:21

он не составной, их просто несколько

Добавлено спустя 4 минуты 7 секунд:
а в vformat ты указываешь начиная с какого аргумента хочешь подставлять
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 15