|
|
|
|
[СТАТЬЯ]Повышение квалификации по тригерам
|
|
Cancel | Дата: Понедельник, 16 Февраля 2009, 14:36:46 | Сообщение # 1 |
8 уровень
Группа: Проверенные
Сообщений: 634
Награды: 0
Репутация: 158
Блокировки:
| Ручаюсь, что автор я Эта тема предназначена для картостроителей, овладающих тригерами на среднем уровне и предназначена для повышения их уровня. Для этого я дам пару заданий по созданию достаточно сложных тригерных наработок с подробным описанием каждого действия. При создании тригерной наработки определитесь с названием, например если тригерная наработка предназначена для поведения камеры и вас зовут Вася, то назовите наработку VasyaKamera название не играет большой роли. Все тригеры отдельной наработки размещайте в одной категории, и назовите эту категорию VasyaKamera v1.00. К названиям всех переменых вашей наработки добавляйте суффикс названия наработки, например к целочисленой переменой x добавьте суффикс, что-бы было название VasyaKamera_x. Так-же подобный суффикс добавляйте ко всем тригерам. Для чего это нужно? что-бы при импортировании наработки в карту небыло конфликтов переменых или тригеров, есть вероятность того, что переменая с таким-же названием используется. В категории с тригерами вашей наработки сделайте комментарий к тригеру с описанием наработки, именами создателей наработки и способы контактов с разработчиками, а так-же описания условий, при соблюдений которых другие люди могут использовать вашу наработку (например добавление вашего имени в авторы карты, куда импортирована ваша наработка). Первым тригером делайте "VasyaKamera Start" тригер предназначен для установления начальных значений некоторых переменых наработки. Например Установить VasyaKamera_plavnost как 3.00 --Комментарий - установите значение этой переменой от 0.00 до 10.00, значение этой переменой влияет на плавность камеры-- И т. д. Старайтесь использовать как можно больше настраиваемых переменых, что бы наработка была более мобильной. например если наработка предназначена для востановления враждебных мобов, то сделайте настраиваемую переменую, которая отвечает за время востановления мобов. Вроде для введения всё. Вот пару заданий по созданию наработок. Создав их вы приобретёте опыт по коректному использованию массивных переменых. Сделайте тригерную наработку, которая будет считать дату в игре. каждый день календарю будет прибавляться 1 день. В году 12 месяцев, сама сложность в том, что в каждом месяце разное количество дней. Подсказка Так как в некоторых месяцах разное количество дней, логично создать две массивные переменные Calendar_name_m - массивная переменая текстовая, каждая ячейка будет содержать название месяца соответствующего индексу. Calendar_day_in_m - массивная переменая целочисленная, каждая ячейка будет содержать количество дней в месяце, соответствующего индексу Calendar_day - целочисленная переменая показывающая номер текущего дня Calendar_m - целочисленная переменная показывающпая номер текущего месяца При наступлении следующего дня переменная Calendar_day должна повыситься на 1 Затем влючается условие, если количество дней в текущем месяце меньше сегодняшнего дня, то установить текущий месяц на 1 больше, установить текущий день как 1. Всю наработку можно сделать двумя тригерами В первом тригере человек-редактор устанавливает переменные, которые устанавливаются на это значение при инициализации А второй тригер будет делать эти вычисления К названию всем переменым и тригеров добавляйте приставку "Calendar_" дабы при импортировании в кампанию небыло комфликта тригеров и переменых. Если что-то непонятно не бойтесь задавать вопросы через ЛС Не переходите к дальнейшему тексту, пока не выполните превую наработку. Вторая наработка будет сложнее тригерная наработка системы репутаций. Описани простое, но сама наработка не столь проста она будет показывать значение репутации героя resp_x - целочисленая переменая, настраиваемая при инициализации, показывающая количество значений репутаций (например - 4) resp_tex - масивная переменая типа строка, настраиваемая при инициализации, каждая ячейка её содержит название значений репутации Например resp_tex(1) = неизвестный resp_tex(2) = знаменитый resp_tex(3) = великий resp_tex(4) = легендарный resp_znach - масивная целочисленая, показывающая требуемое значение репутации героя для перехода на следующую ступень репутации Например resp_znach(1) = 400 resp_znach(2) = 1200 resp_znach(3) = 3500 resp_znach(4) = 10000 Целочисленые переменые, связаные с показателями репутации героя resp_pleer - показывает количество играющих героев (это для того, что-бы наработку можно было легко использовать в других наших проектах, в том числе мультиплеерных) в кампании будет стоять значение 1 resp_pleer_namber - масивная переменая игрок, в каждой ячейке указывается номер играющего игрока (resp_pleer_namber(1) = Игрок 1 (красный) resp_pleer_hero - масивная переменая боевая единица, в каждой ячейке указывается играбельный герой игрока resp_hero_r - масивная переменая показывает балы репутации героя каждого игрока resp_hero_znach - масивная переменая, показывающая ступень репутации героя (от 1 до resp_x) Должны присутствовать 2 тригера, в одном редактор устанавливает значения переменых при инициализации, другой тригер без события (он запускается другими тригерами при изменении значения репутации) С первым всё понятно, вот описание второго Вначале идёт цикл А от 1 до количества играющих игроков (resp_pleer) В цикле А втавляем ещё один цикл B от 1 до количества значений репутаций (resp_x) В нём проверяем соответствует ли балы репутаций игрока (resp_pleer_namber(A)) диапозону от минимально значения репутации данной ступени до максимального. If resp_hero_r(А) больше (resp_znach(B-1) + 1) AND resp_hero_x(А) меньше или равно resp_znach(B) then set resp_hero_znach(А) = B Более подробное описание наработки, если первое описание вы не поняли начнём с цикла B Допустим что вычисляется репутация игрока Resp_pleer_namber(1) то есть игрока 1 Его репутация, допустим, равна resp_pleer_r(1) = 1380 Далее запускается цикл Цикл B от 1 до количества значений репутаций (resp_x) --То есть B от 1 до 4-- И так, первый шаг цикла, B = 1 Проверяется условие того, что репутация игрока 1 (resp_pleer_r(1)) находится в диапазоне значений первой ступени репутации Макс. значение это resp_znach(B) так как B=1, значит максимальное значение диапазона resp_znach(1) что равно 400 Мин. значение данной ступени – то максимальное значение предыдущей плюс 1 То есть resp_znach(B-1) + 1. так как B=1, то B-1 = 0, а resp_znach(0) = 0. Таким образом настраивается resp_znach(B-1) + 1 = 0 + 1 = 1. У нас вышел диапазон от 1 до 400 Условие проверяет, чтобы значение репутации игрока было в этом диапазоне, Если да (resp_znach(B) < resp_pleer_r(1) > resp_znach(B-1) + 1) если да, то степень репутации игрока resp_hero_znach(1) устанавливается как B, то есть как 1, но это не так, потому ничего не происходит Но resp_hero_znach(1) = 1380, это больше максимального значения ступени, потому идёт следующий шаг И так B = 2 Макс. значение это resp_znach(B) так как B=2, значит максимальное значение диапазона resp_znach(2) что равно 1200 Мин. значение данной ступени – то максимальное значение предыдущей плюс 1 То есть resp_znach(B-1) + 1. так как B=2, то B-1 = 1, а resp_znach(1) = 400. Таким образом настраивается resp_znach(B-1) + 1 = 400 + 1 = 401 У нас вышел диапазон от 401 до 1200 Условие проверяет, чтобы значение репутации игрока было в этом диапазоне, Если да (resp_znach(B) < resp_pleer_r(1) > resp_znach(B-1) + 1) если да, то степень репутации игрока resp_hero_znach(1) устанавливается как B, то есть как 2, но это не так, потому ничего не происходит Но resp_hero_znach(1) = 1380, это больше максимального значения ступени (1200), потому идёт следующий шаг И так B = 3 Макс. значение это resp_znach(B) так как B=3, значит максимальное значение диапазона resp_znach(3) что равно 3500 Мин. значение данной ступени – то максимальное значение предыдущей плюс 1 То есть resp_znach(B-1) + 1. так как B=3, то B-1 = 2, а resp_znach(1) = 1200. Таким образом настраивается resp_znach(B-1) + 1 = 1200 + 1 = 1201 У нас вышел диапазон от 1201 до 3500 Условие проверяет, чтобы значение репутации игрока было в этом диапазоне, Если да (resp_znach(B) < resp_pleer_r(1) > resp_znach(B-1) + 1) если да, то степень репутации игрока resp_hero_znach(1) устанавливается как B, то есть как 3 resp_hero_znach(1) = 1380, это входит в диапазон от 1201 до 3500, Потому resp_hero_znach(1) устанавливается как 3 На практике это означает, что если игрок заработал1380 очков репутации, то он на 3 ступени известности, он (resp_tex(3) + «герой») что значит «Великий герой» Теперь цикл А, этот цикл высчитывает ступень репутации для каждого играющего игрока Вот пример Играет три игрока Игрок 1 Игрок 4 Игрок 5 Устанавливаются переменные resp_pleer_namber(1) = Игрок 1 (красный) resp_pleer_namber(2) = Игрок 4 (фиолетовый) resp_pleer_namber(3) = Игрок 5 (желтый) resp_pleer = 3 (количество играющих игроков У героя первого игрока resp_hero_znach(1) = 500 У героя второго игрока resp_hero_znach(2) = 200 У героя второго игрока resp_hero_znach(3) = 155 Второй триггер Цикл А от 1 до resp_pleer То есть от 1 до 3 Там проверяется какому диапазону подходит resp_hero_znach(А) Получается триггер For integer A от 1 до resp_pleer For integer B от 1 до resp_x If resp_hero_r(А) больше (resp_znach(B-1) + 1) AND resp_hero_x(А) меньше или равно resp_znach(B) then set resp_hero_znach(А) = B Next B Next A Этот тригер покажет, что игрок красный знаменитый, а игроки фиолетовый и жёлтый неизвестные На этом пока всё. Надеюсь мой урок вам поможет. И последнее, если вы будете использовать наработку репутаций, то вставьте моё имя в список авторов карты и в описание наработки репутаций благодарность Cancel'у c моим почтовым ящиком для связи. Если вы сделали эти две наработки, то теперь вы можете делать более коректные тригеры))
Сообщение отредактировал Cancel - Вторник, 17 Февраля 2009, 13:27:54 |
|
|
|
DEMON-666DM | Дата: Понедельник, 16 Февраля 2009, 18:18:11 | Сообщение # 2 |
6 уровень
Группа: Проверенные
Сообщений: 238
Награды: 0
Репутация: 6
Блокировки:
| Cancel, Не плохо, но сделай в цвете, а то перед глазами всё плывет...
анимэ зло
|
|
|
|
Faceorck | Дата: Понедельник, 16 Февраля 2009, 18:54:05 | Сообщение # 3 |
3 уровень
Группа: Пользователи
Сообщений: 57
Награды: 0
Репутация: 3
Блокировки:
| DEMON-666DM, значет у тебя зрение плохое
GGC=6level
|
|
|
|
M@]{c | Дата: Понедельник, 16 Февраля 2009, 23:26:39 | Сообщение # 4 |
3 уровень
Группа: Пользователи
Сообщений: 54
Награды: 0
Репутация: 9
Блокировки:
| Cancel, держи первую
|
|
|
|
Cancel | Дата: Вторник, 17 Февраля 2009, 01:39:39 | Сообщение # 5 |
8 уровень
Группа: Проверенные
Сообщений: 634
Награды: 0
Репутация: 158
Блокировки:
| M@]{c, эта работа предназначена для того, что бы тригерщик наловчился с массивами, что бы не пришлось делать по десять тригеров на каждый случай как сделал это ты.
|
|
|
|
M@]{c | Дата: Вторник, 17 Февраля 2009, 01:50:59 | Сообщение # 6 |
3 уровень
Группа: Пользователи
Сообщений: 54
Награды: 0
Репутация: 9
Блокировки:
| Cancel, этот случай одними массивами не пробьешь! А ты захотел всего двумя триггерами!!! Я попробую сжать, но у меня с массивами плохо. К тому же массив может дать серьезный глюк если он неправильно обрабатывается.
|
|
|
|
Cancel | Дата: Вторник, 17 Февраля 2009, 01:56:31 | Сообщение # 7 |
8 уровень
Группа: Проверенные
Сообщений: 634
Награды: 0
Репутация: 158
Блокировки:
| Quote (M@|{c) Я попробую сжать, но у меня с массивами плохо. К тому же массив может дать серьезный глюк если он неправильно обрабатывается. У массивов глюков нет, есть глюки у создателя. А это задание было специально для массивов, я даже расписал как сделать вычисления дня одним тригеров в несколько действий используяч массивы
|
|
|
|
M@]{c | Дата: Вторник, 17 Февраля 2009, 01:59:56 | Сообщение # 8 |
3 уровень
Группа: Пользователи
Сообщений: 54
Награды: 0
Репутация: 9
Блокировки:
| Ну если такой умный скинь наработку. Если в 2 тригах уложишься, респект тебе навечный, но если пролетишь... Я те тоже придумаю такую, что "караул" заорешь!
|
|
|
|
Cancel | Дата: Вторник, 17 Февраля 2009, 03:28:01 | Сообщение # 9 |
8 уровень
Группа: Проверенные
Сообщений: 634
Награды: 0
Репутация: 158
Блокировки:
| Quote (M@|{c) Ну если такой умный Воздержи эмоции Quote (M@|{c) Если в 2 тригах уложишься Ты конечно не обижайся, но если ты не смог уложиться в двух тригерах по описанию статьи, то твои навыки в тригерах не достаточно высоки, что бы повысить свою квалификацию. Quote (M@|{c) скинь наработку Специально для тебя сделал
|
|
|
|
Ramazan(off) | Дата: Вторник, 17 Февраля 2009, 06:48:10 | Сообщение # 10 |
11 уровень
Группа: Проверенные
Сообщений: 1670
Награды: 1
Репутация: 775
Блокировки:
| Да что за глупые споры? Если вы не уложились в 2 как сказал Cancel триггера, то незачем свои наработки выкладывать.
|
|
|
|
M@]{c | Дата: Вторник, 17 Февраля 2009, 12:31:34 | Сообщение # 11 |
3 уровень
Группа: Пользователи
Сообщений: 54
Награды: 0
Репутация: 9
Блокировки:
| Ладно люди извините! Я вчера ночью посидел, попробовал. Уже в 4 тригах уложился. Сегодня на 2 забацаем.
|
|
|
|
Cancel | Дата: Вторник, 17 Февраля 2009, 12:38:58 | Сообщение # 12 |
8 уровень
Группа: Проверенные
Сообщений: 634
Награды: 0
Репутация: 158
Блокировки:
| кто-то мне респект обещал вечный... мне бы хотяб однократный
|
|
|
|
Murador | Дата: Вторник, 17 Февраля 2009, 13:07:34 | Сообщение # 13 |
Группа: Проверенные
Сообщений: 1221
Награды: 1
Репутация: 446
Блокировки:
| не четал не удобно попалась только на глаза вот эта фраза Quote (Cancel) Прошу модератора перенести эту тему в "важные". Ручаюсь, что автор я я чуть не здох. Но судя по написанию ты пытаешся каго то научить пользоваться LoopAIndex и LoopBIndex
|
|
|
|
Cancel | Дата: Вторник, 17 Февраля 2009, 13:31:32 | Сообщение # 14 |
8 уровень
Группа: Проверенные
Сообщений: 634
Награды: 0
Репутация: 158
Блокировки:
| Murador, ну раз ты даже не читал чего ты с оффтопом лезишь? --_-- Добавлено (17-02-2009, 13:31) ---------------------------------------------
Quote (Murador) Но судя по написанию ты пытаешся каго то научить пользоваться LoopAIndex и LoopBIndex мда.. и приблизительно не угадал
|
|
|
|
Murador | Дата: Вторник, 17 Февраля 2009, 14:30:14 | Сообщение # 15 |
Группа: Проверенные
Сообщений: 1221
Награды: 1
Репутация: 446
Блокировки:
| лол циклы это и есть Loop'ы
|
|
|
|
Cancel | Дата: Вторник, 17 Февраля 2009, 14:54:08 | Сообщение # 16 |
8 уровень
Группа: Проверенные
Сообщений: 634
Награды: 0
Репутация: 158
Блокировки:
| блин, говорю те речь не о циклах!! Они используются, но цель то не ими овладеть Добавлено (17-02-2009, 14:54) ---------------------------------------------
Quote (Murador) лол циклы это и есть Loop'ы До тебя долго доходит --_--
|
|
|
|
Gam_Over | Дата: Вторник, 17 Февраля 2009, 15:07:21 | Сообщение # 17 |
9 уровень
Группа: Проверенные
Сообщений: 1107
Награды: 0
Репутация: 175
Блокировки:
| Cancel, норм статья тока суть конечно муторная!
|
|
|
|
Cancel | Дата: Вторник, 17 Февраля 2009, 15:27:00 | Сообщение # 18 |
8 уровень
Группа: Проверенные
Сообщений: 634
Награды: 0
Репутация: 158
Блокировки:
| суть в практике с массивами. Просто начинает поднадоедать,Ю что в каждом проекте по десять тригеров, которые легко можно заменить одним. Например арена, где можно выбрать одного из десяти героев. Меня смутило что максимальное количество игроков - 4. Решил исправить. Захожу, а там 10! тригеров, связаных с выбором героя, и в каждом в 4 раза больше действий чем нужно (проверяется условие для каждого игрока отдельно). Согласись, что проблема в том, что картостроители мало юзают возможности масива, которые на первый взгляд кажутся малыми Добавлено (17-02-2009, 15:27) --------------------------------------------- Для примера можешь взять наработку M@]{cа и сравнить с наработкой, которую он запросил в ответ. Примерно в 90% случаях картостроители так и строют свои тригеры
|
|
|
|
BuHHu-nyX | Дата: Вторник, 17 Февраля 2009, 16:41:26 | Сообщение # 19 |
50 уровень Превед медвед
Группа: Ветераны
Сообщений: 1941
Награды: 2
Репутация: 437
Блокировки:
| Quote (Cancel) Прошу модератора перенести эту тему в "важные". Ручаюсь, что автор я Размечтался. Добавил тег. Добавлено (17-02-2009, 16:41) --------------------------------------------- Прошу оформить.
|
|
|
|
M@]{c | Дата: Вторник, 17 Февраля 2009, 16:50:45 | Сообщение # 20 |
3 уровень
Группа: Пользователи
Сообщений: 54
Награды: 0
Репутация: 9
Блокировки:
| Cancel, в двух триггерах
|
|
|
|
Cancel | Дата: Вторник, 17 Февраля 2009, 17:04:56 | Сообщение # 21 |
8 уровень
Группа: Проверенные
Сообщений: 634
Награды: 0
Репутация: 158
Блокировки:
| Cancel, в двух триггерах Во втором тригере лишние действия. не вижу великой силы массивов.
|
|
|
|
M@]{c | Дата: Вторник, 17 Февраля 2009, 17:20:19 | Сообщение # 22 |
3 уровень
Группа: Пользователи
Сообщений: 54
Награды: 0
Репутация: 9
Блокировки:
| Cancel, для новичка с массивами это и так хорошо (я только вчера ночью попробовал). Спасиьо за критику. Но какой косяк; возможно, лишнее там где определяются, месяцы в которых 30 дней? Вопрос: Можно к следущей наработке переходить?
|
|
|
|
Cancel | Дата: Вторник, 17 Февраля 2009, 17:32:59 | Сообщение # 23 |
8 уровень
Группа: Проверенные
Сообщений: 634
Награды: 0
Репутация: 158
Блокировки:
| Quote (M@|{c) Вопрос: Можно к следущей наработке переходить? Нет, первая наработка джана не даром, просто не осознав принцып работы её ты не сможешь сделать вторую. Я чуть позже выложу первую наработку с подробными комментариями
|
|
|
|
M@]{c | Дата: Среда, 18 Февраля 2009, 12:47:16 | Сообщение # 24 |
3 уровень
Группа: Пользователи
Сообщений: 54
Награды: 0
Репутация: 9
Блокировки:
| Cancel, я все-таки попробую. Тренировать то надо. Я просто пока с массивами не сталкивался.
|
|
|
|
Cancel | Дата: Четверг, 26 Февраля 2009, 03:57:46 | Сообщение # 25 |
8 уровень
Группа: Проверенные
Сообщений: 634
Награды: 0
Репутация: 158
Блокировки:
| M@]{c, долго же пробуешь...
|
|
|
|
|
|
|
|
|
|
|