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

[TUT] Тутор сообщения из Condition Zero [Update 1.2]

Статьи или фрагменты кода для новичков и уже опытных скриптеров по AMXX.

Модератор: Chuvi

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

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

[TUT] Тутор сообщения из Condition Zero [Update 1.2]

Сообщение Retro-kolt Lincoln » 14 апр 2012, 13:16

Автор: Freedo.m
Источник: amx-x.ru
Версия: 1.2

В этой статье мы рассмотрим использование тутор сообщений из кондишен зеро.

И так начнём, сначала добавляем в верх нашего исходника новый таск.
[pawn]
  1. #define TASK_HIDE_TUTOR 8800
[/pawn]

Добавляем глобальные массивы или как их там правильно называют. (если вы хотите выставлять длительность сообщения через квар, разкомментируйте gMsgTutorTime)
[pawn]
  1. new gMsgTutorClose, gMsgTutorText//, gMsgTutorTime
[/pawn]

Добавляем в plugin_init. (если вы хотите выставлять длительность сообщения через квар, разкомментируйте gMsgTutorTime)
[pawn]
  1. gMsgTutorClose = get_user_msgid("TutorClose")

  2.         gMsgTutorText = get_user_msgid("TutorText")

  3.         //gMsgTutorTime = register_cvar("msg_tutor_time", "8")
[/pawn]

Добавляем прекреш нужных файлов.
[pawn]
  1. public plugin_precache()

  2. {

  3.         precache_generic("gfx/career/icon_i.tga")

  4.         precache_generic("gfx/career/icon_skulls.tga")

  5.         precache_generic("gfx/career/round_corner_ne.tga")

  6.         precache_generic("gfx/career/round_corner_nw.tga")

  7.         precache_generic("gfx/career/round_corner_se.tga")

  8.         precache_generic("gfx/career/round_corner_sw.tga")

  9.  

  10.         precache_generic("resource/TutorScheme.res")

  11.         precache_generic("resource/UI/TutorTextWindow.res")

  12.  

  13.         precache_sound("events/enemy_died.wav")

  14.         precache_sound("events/friend_died.wav")

  15.         precache_sound("events/task_complete.wav")

  16.         precache_sound("events/tutor_msg.wav")

  17. }
[/pawn]

Добавляем новый сток. (если вы хотите выставлять длительность сообщения через квар, разкомментируйте gMsgTutorTime и закоментируйте строчку ниже). Объясняю условие 8.0 < 5 ? 5.0 : 8.0 данные значения отвечают как долго сообщение будет висеть на экране игрока, оба значения должны быть одинаковыми и дробными!
[pawn]
  1. stock Create_TutorMsg(id, iStyle, bool:bSound, szMsg[], any:...)

  2. {

  3.         new szBuffer[192]

  4.        

  5.         new iArgs = numargs()

  6.        

  7.         for (new iArg = 4; iArg < iArgs; iArg++)

  8.         {

  9.         if (getarg(iArg) != LANG_PLAYER)

  10.                 continue;

  11.                

  12.         setarg(iArg, _, id)

  13.         }

  14.        

  15.         vformat(szBuffer, 191, szMsg, 5)

  16.        

  17.         if (bSound)

  18.         {

  19.                 switch(iStyle)

  20.                 {

  21.                         case 0: PlaySound(id, id, "events/tutor_msg.wav")

  22.                         case 1: PlaySound(id, id, "events/friend_died.wav")

  23.                         case 2: PlaySound(id, id, "events/enemy_died.wav")

  24.                         case 3: PlaySound(id, id, "events/tutor_msg.wav")

  25.                         case 4: PlaySound(id, id, "events/task_complete.wav")

  26.                 }

  27.         }

  28.        

  29.         message_begin(MSG_ONE_UNRELIABLE, gMsgTutorClose, {0, 0, 0}, id)

  30.         message_end()

  31.        

  32.         message_begin(MSG_ONE_UNRELIABLE, gMsgTutorText, {0, 0, 0}, id)

  33.         write_string(szBuffer)

  34.         write_byte(0)

  35.         write_short(0)

  36.         write_short(0)

  37.         write_short(1<<iStyle)

  38.         message_end()

  39.        

  40.         remove_task(TASK_HIDE_TUTOR+id)

  41.         //set_task(get_pcvar_num(gMsgTutorTime) < 5 ? 5.0 : get_pcvar_float(gMsgTutorTime), "Remove_TutorMsg", TASK_HIDE_TUTOR+id)

  42.         set_task(5.0 < 5 ? 5.0 : 5.0, "Remove_TutorMsg", TASK_HIDE_TUTOR+id)

  43. }
[/pawn]

Добавляем функцию удаления сообщения.
[pawn]
  1. public Remove_TutorMsg(taskid)

  2. {

  3.         new id = (taskid > TASK_HIDE_TUTOR) ? (taskid - TASK_HIDE_TUTOR) : taskid

  4.         message_begin(MSG_ONE , gMsgTutorClose, {0, 0, 0}, id)

  5.         message_end()

  6. }
[/pawn]

Ну и последний сток, функция проигрывания звуков.
[pawn]
  1. stock PlaySound(const pReceiver = 0, const pSender = 0, const szSound[], const iPitch = PITCH_NORM, const bool:bReliable = false)

  2. {

  3.         if (bReliable)

  4.         {

  5.                 if (pReceiver)

  6.                 {

  7.                         message_begin(MSG_ONE, get_user_msgid("SendAudio"), _, pReceiver)

  8.                 }

  9.                 else

  10.                 {

  11.                         message_begin(MSG_ALL, get_user_msgid("SendAudio"))

  12.                 }

  13.         }

  14.         else

  15.         {

  16.                 if (pReceiver)

  17.                 {

  18.                         message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SendAudio"), _, pReceiver)

  19.                 }

  20.                 else

  21.                 {

  22.                         message_begin(MSG_BROADCAST, get_user_msgid("SendAudio"))

  23.                 }

  24.         }

  25.        

  26.         write_byte(pSender)

  27.         write_string(szSound)

  28.         write_short(iPitch)

  29.         message_end()

  30. }
[/pawn]

Пример создания сообщения:
[pawn]
  1.  // Create_TutorMsg(индекс, стиль от 0 до 4, звук false - выкл true - вкл, "сообщение")

  2. Create_TutorMsg(id, 0, true, "Вы успешно сбросили свой счёт")
[/pawn]

Стили:
[pawn]
  1. 0 - стандартный зелёный

  2. 1 - красный

  3. 2 - синий

  4. 3 - желтый

  5. 4 - зелёный, миссия выполнена.
[/pawn]

С радостью приму пожелание о найденные ошибки, если таковые имеются. В архиве все нужные файлы, а так же sma файл со всем кодом.

История версий:
v1.0 Релиз
v1.1 Оптимизация кода.
v1.2 Добавлено ограничение на 191 байт, чтобы умные юзеры не смогли вылезти за предел массива. Добавлена поддержка аргументов, типа: %s %d и т.д. Небольшая оптимизация кода.

Благодарности: Вы должны зарегистрироваться, чтобы видеть ссылки.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Retro-kolt Lincoln 26 апр 2012, 00:29, всего редактировалось 10 раз(а).
Аватара пользователя
Retro-kolt Lincoln
 
Сообщения: 1283
Зарегистрирован: 28 авг 2010, 19:16
Благодарил (а): 321 раз.
Поблагодарили: 581 раз.
Опыт программирования: Больше трех лет
Языки программирования: ╚►Counter-Strike 1.6

Re: [TUT] Тутор сообщения из Condition Zero [Update 1.2]

Сообщение Chuvi » 10 июл 2012, 13:42

Plrip, тебе никто не запрещает сделать его прямее и выложить сюда. Более того, тебе за это спасибо скажут.

Добавлено спустя 1 час 3 минуты 19 секунд:
Проверьте, пожалуйста.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Плагинами на заказ не занимаюсь.
Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2253
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 562 раз.

Re: [TUT] Тутор сообщения из Condition Zero [Update 1.2]

Сообщение Plrip » 10 июл 2012, 15:53


Status:
Аватара пользователя
Plrip
Скриптер
 
Сообщения: 2903
Зарегистрирован: 03 дек 2011, 19:33
Откуда: Ukraine
Благодарил (а): 237 раз.
Поблагодарили: 603 раз.
Языки программирования: Counter-Strike 1.6
X-Ray
Killing-Floor [low]

Пред.

Вернуться в Статьи / фрагменты кода

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

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 7