Меню сайта


[DS]: Half-Life Server
[DS]: Half-Life Server


[DS]: CS:S GunGame v34 Server
[DS]: CS:S GunGame v34 Server


[DS]: CS:S v34 Server
[DS]: CS:S v34 Server


Поиск

add_newДобавить новость
Последние добавленные
Название игры: S.I.P: Out Life
Жанр: FPS, с элементами RPG
Язык: с++, скрипты lua
G API: DirectX 9
Сайт: sip-game.su
Группа Vk: vk....
Читать далее

<JAM>
m1-palinka


HL-HEV
hl-hev

DS-Servers
Статьи
Туториалы
Маппинг
Goldsrc
Создание карт
Продвинутый маппинг

Подсчет фрагов на табло



Подсчет фрагов на табло
Добавил: root
2013-01-09 13:27:55
23 просмотра

В данной статье мы расскажем о создании табло с подсчетом фрагов. Такое табло Вы могли видеть на карте Ka_100x100. При каждом убийстве игрока счетчик увеличивается на единицу. Счетчик имеет 3 разряда: единицы, десятки, сотни, т.е. максимальное количество фрагов составляет 999, затем происходит обнуление.

Мы будем очень активно использовать следующие энтити-объекты:

Приготовьтесь к созданию 94 объектов и выставлению их свойств :) Ничего страшного нет, вся система построена как бы из повторяющихся звеньев. Каждое звено состоит из 3-4 объектов, свойства которых очень схожи.

Итак, давайте посмотрим, как будет выглядеть табло:

Так будет выглядеть табло с подсчетом фрагов в игре



Нолики и другие цифры, которые будут появляться при каждом фраге, не просто картинки, это объекты func_button с нанесенными на них цифрами. Когда убьют какого-либо игрока, кнопка с цифрой «0» поднимется вверх, а сверху опустится кнопка с цифрой «1». При следующем фраге кнопка с цифрой «1» поднимется вверх, а сверху опустится кнопка с цифрой «2» и т.д.

Средняя цифра меняется только при каждом десятом фраге. Левая цифра (разряд сотен) меняется только при каждом сотом фраге.

Изначально кнопку с цифрой «0» необходимо разместить так, чтобы ее было видно на табло. Остальные кнопки с цифрами от 1 до 9 нужно разместить над кнопкой 0 так, чтоб они были скрыты в «конструкции табло». Всего необходимо создать 30 кнопок (по 10 на разряды единиц, десятков и сотен). Из этих 30 кнопок сразу будут видны только 3 — это изначальные нули, остальные 27 будут скрыты в табло.

Кстати, мы рекомендуем конструкцию табло (т.е. все, что окружает кнопки) превратить в func_wall, чтобы при компиляции свет мог проникнуть через конструкцию (как известно, энтити-объекты пропускают свет) и осветил текстуры цифр (иначе текстуры получатся затемненными).

Внизу — кнопки 0, вверху — кнопки с 1 по 9 (находятся в одном и том же месте)




О подсчете фрагов

Теперь расскажем о том, как будут подсчитываться фраги.

У нас есть замечательный энтити-объект game_counter, который считает свои активации и по достижении определенного значения активирует другой объект.

Мы создадим 3 таких объекта:

  • Первый будет считать отдельные фраги (он будет переключать кнопки единиц)
  • Второй будет считать до 10 фрагов (он будет переключать кнопки десятков)
  • Третий будет считать до 100 фрагов (он будет переключать кнопки сотен)

Нам нужно, чтобы при каждом фраге все 3 счетчика увеличивали свое значение на 1. Для этого воспользуемся объектом multi_manager, в который запишем активацию всех 3-х счетчиков. Имя для multi_manager'а нужно выставить как game_playerkill. Это одно из пяти специальных имен, которое позволяет активировать объект при убийстве игрока. Таким образом, теперь при каждом фраге у нас будет автоматически активироваться multi_manager, который в свою очередь активирует 3 счетчика.

Multi_manager (этот объект активируется при каждом фраге)
Name: game_playerkill (имя должно быть именно таким!)
1counter — 0 (активация счетчика единиц по имени 1counter через 0 секунд)
10counter — 0 (активация счетчика десятков по имени 10counter через 0 секунд)
100counter — 0 (активация счетчика сотен по имени 100counter через 0 секунд)



Счетчики game_counter с именами: 1counter, 10counter, 100counter активируют кнопки с цифрами. Например, кто-то набрал 1 фраг. Срабатывает multi_manager. Тут же все три счетчика увеличивают свое значение на 1. Самый первый счетчик ведет отсчет отдельных фрагов, а значит он должен при каждой активации переключать кнопки единиц.

Нам необходимо сделать так, чтобы активировав первую кнопку, в следующий раз счетчик активировал бы вторую кнопку, затем третью и т.д., то есть необходимо, чтобы параметр «Target» счетчика менялся по кругу от 0 до 9 кнопки. Это можно организовать при помощи объекта trigger_changetarget.

Ниже приведена схема работы одного из счетчиков.

Схема работы системы подсчета фрагов



Предположим, что кто-то набрал фраг. В этом случае возникает следующая цепочка действий:

  • Счетчик game_counter увеличивает свое значение на 1
  • Затем он активирует первый multi_manager (на схеме левая красная стрелка)
  • Multi_manager поднимает кнопку «0»
  • Multi_manager опускает кнопку «1» туда, где только что была кнопка «0»
  • Multi_manager запускает первый объект trigger_changetarget (на схеме CT1)
  • Trigger_changetarget перенаправляет счетчик с первого multi_manager'а на второй

Дальше действия развиваются по второй красной стрелке на схеме (все действия аналогичные).

  • Счетчик game_counter увеличивает свое значение на 1
  • Активирует второй multi_manager (вторая красная стрелка)
  • Multi_manager поднимает кнопку «1»
  • Multi_manager опускает кнопку «2» туда, где только что была кнопка «1»
  • Multi_manager запускает второй объект trigger_changetarget (на схеме CT2)
  • Trigger_changetarget перенаправляет счетчик со второго multi_manager'а на третий

Тоже самое происходит при смене кнопки «2» на кнопку «3» и т.д. до кнопки «9». Таким образом, для разряда единиц необходимо создать 10 подобных звеньев из multi_manager'а, двух кнопок и trigger_changetarget (всего: 30 объектов).

Для раздела десятков все тоже самое (нужно создать еще 30 объектов, считая кнопки десятков), единственная разница в свойствах счетчика — он активирует кнопки через каждые 10 фрагов, а не через каждый фраг. Для сотен — еще 30 объектов. А счетчик сотен активирует кнопки через каждые сто фрагов, т.е. довольно редко.

Рекомендуем размещать счетчики единиц, десятков и сотен рядом с соответствующими мульти_менеджерами и прочими объектами (чтобы не запутаться). Вы можете посмотреть, как это сделано на нашей тестовой карте.


Свойства объектов для счетчика единиц

Ниже мы приводим свойства самого первого звена объектов (на схеме к этому звену ведет левая красная стрелка).

Game_counter (счетчик единиц)
Name: 1counter (имя счетчика единиц)
Target: m0 (сюда необходимо записать имя самого первого объекта multi_manager, см. схему выше)
Initial Value: 0 (начальное значение счетчика — 0)
Limit Value: 1 (конечное значение, достигнув которого, счетчик начнет активировать кнопки; т.к. это счетчик единиц, то необходимо поставить значение 1)

Флаги:

Reset on fire: нужно отметить этот флаг, чтобы счетчик сбрасывался на 0 (обнулялся), когда достигаеся значение «Limit Value»



Multi_manager (этот объект опускает/поднимает кнопки, активирует другие объекты)
Name: m0 (имя данного объекта)
btn0 — 0 (поднимает кнопку «0»)
btn1 — 0 (опускает кнопку «1»)
ct0 — 0 (запускает объект trigger_changetarget)



Func_button (кнопка «0», разряд единиц)
Name: btn0 (имя кнопки «0» из разряда единиц)
Angle: Up (направление движения вверх)
Speed: 200 (скорость движения)
Lip: -8 (этот параметр управляет расстоянием, на которое перемещается кнопка; отрицательное значение увеличивает расстояние, положительное уменьшает)
Delay before reset: 0 (время, после прошествия которого, кнопку можно вновь активировать)

Флаги:

Toggle: этот флаг оставляет кнопку в нажатом положении до следующей активации



Func_button (кнопка «1», разряд единиц)
Name: btn1 (имя кнопки «1» из разряда единиц)
Angle: Down (направление движения вниз, т.к. изначально кнопка расположена выше табло)
Speed: 200 (скорость движения)
Lip: -8 (этот параметр управляет расстоянием, на которое перемещается кнопка; отрицательное значение увеличивает расстояние, положительное уменьшает)
Delay before reset: 0 (время, после прошествия которого, кнопку можно вновь активировать)

Флаги:

Toggle: этот флаг оставляет кнопку в нажатом положении до следующей активации



Trigger_changetarget (меняет параметр «Target» счетчику единиц)
Name: ct0 (имя данного объекта)
Target: 1counter (здесь указывается имя счетчика единиц)
New Target: m1 (означает, что в следующий раз счетчик будет активировать объект по имени m1, т.е. следующий мульти_менеджер из второго звена)



Это первое звено объектов, которые меняют цифру 0 на цифру 1. Как Вы понимаете, необходимо сделать еще 9 таких звеньев.


Свойства объектов для счетчика десятков

Ниже мы приводим свойства первого звена объектов для счетчика десятков.

Game_counter (счетчик десятков)
Name: 10counter (имя счетчика десятков)
Target: m00 (сюда необходимо записать имя самого первого объекта multi_manager в звене десятков)
Initial Value: 0 (начальное значение счетчика — 0)
Limit Value: 10 (конечное значение, достигнув которого, счетчик начнет активировать кнопки; т.к. это счетчик десятков, то необходимо поставить значение 10)

Флаги:

Reset on fire: нужно отметить этот флаг, чтобы счетчик сбрасывался на 0 (обнулялся), когда достигаеся значение «Limit Value»



Multi_manager (этот объект опускает/поднимает кнопки, активирует другие объекты)
Name: m00 (имя данного объекта)
btn00 — 0 (поднимает кнопку «0» в разряде десятков)
btn11 — 0 (опускает кнопку «1» в разряде десятков)
ct00 — 0 (запускает объект trigger_changetarget)



Func_button (кнопка «0», разряд десятков)
Name: btn00 (имя кнопки «0» из разряда десятков)
Angle: Up (направление движения вверх)
Speed: 200 (скорость движения)
Lip: -8 (этот параметр управляет расстоянием, на которое перемещается кнопка; отрицательное значение увеличивает расстояние, положительное уменьшает)
Delay before reset: 0 (время, после прошествия которого, кнопку можно вновь активировать)

Флаги:

Toggle: этот флаг оставляет кнопку в нажатом положении до следующей активации



Func_button (кнопка «1», разряд десятков)
Name: btn11 (имя кнопки «1» из разряда десятков)
Angle: Down (направление движения вниз, т.к. изначально кнопка расположена выше табло)
Speed: 200 (скорость движения)
Lip: -8 (этот параметр управляет расстоянием, на которое перемещается кнопка; отрицательное значение увеличивает расстояние, положительное уменьшает)
Delay before reset: 0 (время, после прошествия которого, кнопку можно вновь активировать)

Флаги:

Toggle: этот флаг оставляет кнопку в нажатом положении до следующей активации



Trigger_changetarget (меняет параметр «Target» счетчику десятков)
Name: ct00 (имя данного объекта)
Target: 10counter (здесь указывается имя счетчика десятков)
New Target: m11 (означает, что в следующий раз счетчик будет активировать объект по имени m11, т.е. следующий мульти_менеджер из второго звена)



Это первое звено объектов, которые меняют цифру 0 на цифру 1 в разряде десятков. Дальше необходимо создать еще 9 таких звеньев.


Свойства объектов для счетчика сотен

Ниже мы приводим свойства первого звена объектов для счетчика сотен.

Game_counter (счетчик сотен)
Name: 100counter (имя счетчика сотен)
Target: m000 (сюда необходимо записать имя самого первого объекта multi_manager в звене сотен)
Initial Value: 0 (начальное значение счетчика — 0)
Limit Value: 100 (конечное значение, достигнув которого, счетчик начнет активировать кнопки; т.к. это счетчик сотен, то необходимо поставить значение 100)

Флаги:

Reset on fire: нужно отметить этот флаг, чтобы счетчик сбрасывался на 0 (обнулялся), когда достигаеся значение «Limit Value»



Multi_manager (этот объект опускает/поднимает кнопки, активирует другие объекты)
Name: m000 (имя данного объекта)
btn000 — 0 (поднимает кнопку «0» в разряде сотен)
btn111 — 0 (опускает кнопку «1» в разряде сотен)
ct000 — 0 (запускает объект trigger_changetarget)



Func_button (кнопка «0», разряд сотен)
Name: btn000 (имя кнопки «0» из разряда сотен)
Angle: Up (направление движения вверх)
Speed: 200 (скорость движения)
Lip: -8 (этот параметр управляет расстоянием, на которое перемещается кнопка; отрицательное значение увеличивает расстояние, положительное уменьшает)
Delay before reset: 0 (время, после прошествия которого, кнопку можно вновь активировать)

Флаги:

Toggle: этот флаг оставляет кнопку в нажатом положении до следующей активации



Func_button (кнопка «1», разряд сотен)
Name: btn111 (имя кнопки «1» из разряда сотен)
Angle: Down (направление движения вниз, т.к. изначально кнопка расположена выше табло)
Speed: 200 (скорость движения)
Lip: -8 (этот параметр управляет расстоянием, на которое перемещается кнопка; отрицательное значение увеличивает расстояние, положительное уменьшает)
Delay before reset: 0 (время, после прошествия которого, кнопку можно вновь активировать)

Флаги:

Toggle: этот флаг оставляет кнопку в нажатом положении до следующей активации



Trigger_changetarget (меняет параметр «Target» счетчику сотен)
Name: ct000 (имя данного объекта)
Target: 100counter (здесь указывается имя счетчика сотен)
New Target: m111 (означает, что в следующий раз счетчик будет активировать объект по имени m111, т.е. следующий мульти_менеджер из второго звена)



Это первое звено объектов, которые меняют цифру 0 на цифру 1 в разряде сотен. Дальше необходимо создать еще 9 таких звеньев.


Вот и все нехитрое устройство счетчика фрагов :) Думается, немногие мапперы дочитают эту статью до конца, но поверьте, придумать такое, да еще и понятно описать оч-ч-чень трудно. В любом случае Вы можете скачать нашу карту-пример и скопировать счетчик на свою карту. Используйте на здоровье!


frag-o-matic.zip [93Кб] — в архиве карта-пример в форматах BSP и RMF.


Поделиться:
Тэги:

DS-Servers.com
Copyright © 2012-2016. All Rights Reserved.
При копировании материала ссылка на источник обязательна
За материалы, размещенные пользователями, администрация сайта ответственности НЕ несет