Рунная магия: Делаем показ цифр на экране
Сегодня я научу вас как показывать цифры на экране без всяких там дополнительных скриптов или плагинов.
Ну не то что бы совсем без. Я делаю смешанные механики на ивентах, но с использованием строчек кода.
Потому и называю всё это дело Рунной магией.
Мне нужна стандартная команда Вызвать скрипт и всего три строчки кода на показ, перемещение и удаление картинки... Ну и как кодом забить переменную.
Показать картинку
index - индекс картинки
name - имя файла
позиция - position = [0] по краю, [1] по центру
x, y - координаты
x zoom, y zoom - увеличение по x, y = масштаб
opacity - прозрачность, для непрозрачности ставится 255
смешивание - blend type = [0] обычное, [1] добавление, [2] замещение
Двигать картинку
index - индекс картинки
position(позиция) = [0] по краю, [1] по центру
x, y - координаты
x zoom, y zoom - увеличение по x, y = масштаб
opacity - прозрачность, для непрозрачности ставится 255
blend type(смешивание) = [0] обычное, [1] добавление, [2] замещение
wait - продолжительность движения, в кадрах
Удалить картинку соответственно:
screen.pictures[index].erase
index - индекс картинки
И переменная
$game_variables[n]
Всё эти можно найти здесь. И даже больше.
rpgmaker.su/f32/%5Bvx-ace%5D-Простые-скр...ight=простые+скрипты
Погнали.
Для начала «нарисуем» сами цифры и кинем в папку Pictures. Я нарисовал такие вот крупноватые на скорую руку.
Вы можете нарисовать, скопировать или взять откуда угодно и как угодно.
Теперь нам нужно разбить цифру, которую мы хотим показать, на составляющие. Единицы, десятые, сотые и так далее. В примере до тысячных. Пока достаточно.
Я сделал это без скриптов. Ручками.
Смотрим Общее событие 1
В данном случае переменная 1 это и есть наша цифра для показа. Сделано специально чтобы способ был универсальным, а не завязан на какой-нибудь конкретной цифре.
Потом нам нужно понимать какую картинку для какой цифры показывать.
Делаем это в Общем 2. Возможно есть способ проще скриптом прибавить к nom_ цифру, но я его не знаю и мне так ручками проще.
Смотрим Общее событие 2
Ну теперь лепим сам показ цифр.
Добавляем переменную 9(№картинки) и 10(между бкувами).
Переменная 9 нужна чтобы не запутаться сколько картинок под какими номерами мы показали. Ставлю её от 50 по умолчанию. Можно поставить меньше если вдруг вы захотите показать больше 50 картинок.
Переменная 10 определяет расстояние между цифрами. Если она будет отрицательная, то цифры будут показываться справа налево.
Так же добавляем переменную 11 и 12, х и у положения первой картинки соответственно.
Можно добавить переменные для Зума, но это уже по желанию.
Всё. Собираем Общее событие 3 «Показать цифры»
Смотрим Общее событие 3
Теперь собираем это в рабочую конструкцию Общее событие 4(Комплект)
По сути это опционально, но я люблю такие вот комплектики.
Примечание 1: Всегда собирайте готовые конструкции из нескольких общих в одно.
Понятно, удобно, эффективно.
Ну и теперь собираем Общее событие 5. Пусть называется Показ заданной цифры. Смотри примечание 1
Смотрим Общее событие 5
ГОТОВО.
Можно открывать проект-пример, подойти к Скелету и смотреть что получилось.
Усложняем задачу!
Теперь я хочу показать всплывающие цифры.
Для начала делаю Общее событие 7 как шаблон показа ХП игрока.
Далее копируем Общее событие 3 и добавляем несколько строк для перемещения картинки.
screen.pictures[$game_variables[9]].
move(0, $game_variables[11], $game_variables[12]-50, 100, 100, 0, 0, 60)
Соответственно $game_variables[12]-50 — это наш У и цифра улетит на 50 пикселей вверх.
Я сделал на примере Урона игроку.
Грубо, но всё работает и циферки плывут.)
Примечание 2: Величайшая глупость думать, что худ на тот же ХП нужно немедленно пихать в какое-нибудь параллельное. Чаще всего достаточно его пихать общим событием после каждого изменения этого самого ХП. У меня в примере с шипами нет никаких параллельных.
На этом всё. Пользуйтесь на здоровье.
Скачать проект-пример здесь.
yadi.sk/d/6oc2LzaHC4Ulxg
Пример может не запуститься без РТП. Скачайте отсюда, установите один раз и больше не вспоминайте про это.
www.rpgmakerweb.com/run-time-package
Пы.Сы.
Это пример для Аси.
Но его так же можно адаптировать под МВ. Просто найдите здесь аналоги скриптовых команд из урока.
docs.google.com/spreadsheets/d/1-Oa0cRGp...etnvh7OHs/edit#gid=0
Пы.Сы.2
В качестве бонуса в примере есть сундук с золотом.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
выглядит конечно очень громоздко и страшно, но для новичка будет полезно по нескольким причинам:
1) все структурированно, последовательно, довольно топорно, а потому понятно. Было бы круче каждый шаг по пунктикам, но благодаря картинкам все в голове укладывается
2) алгоритмы нахождения десятков, единиц, сотен много где испоользуется, а потому тоже новичок благодаря уроку поймет
несколько замечаний:
1) новичок,который повторяет урок, замучается событиями совершать действия с переменными. Раз уж ты используешь в скриптах события, то действия с переменными на 1 и 2 скриншоте можно было также написать скриптом, тем более $game_variables ты уже упомянул, типа:
2) еще одна проблема - если человек уже где-то использовал данный подход, и переносит подобный "ивентоплагин" в другой свой проект, но в том проекте эти переменные заняты, то ему придется лезть в каждое событие и переделывать. Опять же запись через $game_variables помогло бы избавиться от многих промежуточных переменных
3) Второй скрин можно было заменить простой строчкой (или как там в руби делается конкатенация), даже "ифы" не надо было бы изучать
4) "Я делаю смешанные механики на ивентах, но с использованием строчек кода. Потому и называю всё это дело Рунной магией.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- peter8031983
-
Автор темы
- Не в сети
- Давно я тут
-
- Добро-вещь относительная.
Спасибо.yuryol пишет: выглядит конечно очень громоздко и страшно, но для новичка будет полезно по нескольким причинам:
1) все структурированно, последовательно, довольно топорно, а потому понятно. Было бы круче каждый шаг по пунктикам, но благодаря картинкам все в голове укладывается
2) алгоритмы нахождения десятков, единиц, сотен много где испоользуется, а потому тоже новичок благодаря уроку поймет
Мне тупо не хватило терпения расписывать по пунктам.
Много раз видел от тебя такой совет, но я вот в упор не понимаю каким местом проще писать эти громоздкие коды, а не просто тыкнуть пару раз в раскрывающийся список...несколько замечаний:
1) новичок,который повторяет урок, замучается событиями совершать действия с переменными. Раз уж ты используешь в скриптах события, то действия с переменными на 1 и 2 скриншоте можно было также написать скриптом, тем более $game_variables ты уже упомянул, типа:Code:$game_variables[2] = $game_variables[1]
Я бы это отнёс к вредным советам больше.
Ну и плюс это и сделано без скриптов чтобы показать, что это можно без скриптов. Как в принципе ты отметил выше.
Откровенно говоря не понял замечания. Человек проделает это один раз. Потратит минут 10-15 максимум на заготовку и будет пользоваться всю разработку.2) еще одна проблема - если человек уже где-то использовал данный подход, и переносит подобный "ивентоплагин" в другой свой проект, но в том проекте эти переменные заняты, то ему придется лезть в каждое событие и переделывать.
Я лично этот способ придумал для 2003го и переносил его много раз. Абсолютно ни с чем не мучаясь.
И в Асю перенёс, так же потратив чуть больше получаса наверное. Тупо потому что в Асе приходится юзать код вместо команды как в 2003м.
Урок как бы создан не для бездумного копирования, а чтобы человек понял и мог воссоздать.
Чем? Всё те же "мучения", если переменные заняты. Только тут ещё и залезь, выдели, сотри, напиши по новой. Против зайди и выбери. Два клика.Опять же запись через $game_variables помогло бы избавиться от многих промежуточных переменных
Я ошибся в начале и в 10 условиях вместо nom написал num. Очень неудобно было править.
Ну я как бы сразу и написал, что есть способ проще, но я его не знаю. Чтобы таких замечаний не было. Но ты его всё-равно сделал...3) Второй скрин можно было заменить простой строчкой (или как там в руби делается конкатенация), даже "ифы" не надо было бы изучать
Code:$game_variables[8] = "nom_#{$game_variables[7]}"
За код спасибо.
Я уверен, что кто-то где-то делал это ещё раньше, чем Демий. В какой-нить Японии.4) "Я делаю смешанные механики на ивентах, но с использованием строчек кода. Потому и называю всё это дело Рунной магией.
" - Демий это делал намного раньше, но не помню как он это называл(
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
peter8031983 пишет:
Много раз видел от тебя такой совет, но я вот в упор не понимаю каким местом проще писать эти громоздкие коды, а не просто тыкнуть пару раз в раскрывающийся список...Code:$game_variables[2] = $game_variables[1]
зачем писать? копировать-вставить. тут преимущество, что даже в эйсе можно написать в вызове скрипта несколько строчек, а потому вместо того,чтоб сделать несколько кликов для изменения напрмиер четырех переменных можно:
- 1 раз жмем команду "скрипт"
- копируем код из одного проекта или с этого урока
- вставляем код
- жмем ок
В МВ же вообще можно вставлять скрипт неограниченной длины, а потому можно в один скрипт сделать изменения всех переменных
Чем? Всё те же "мучения", если переменные заняты. Только тут ещё и залезь, выдели, сотри, напиши по новой. Против зайди и выбери. Два клика.
да почему ж "те же".
посчитаем действия в ивентах на скрине про нахождение единиц,десятков,сотен,тысяч:
В единицах 5 раз делаем действия с переменными а потому надо 5 раз сделать 5 действий "открыть команду присвоения переменной - выбрать арифметическое действие - выбрать значение - нажать ок" - 25 действий.
Далее для десятков,сотен и тысяч у тебя для каждой по 6 раз изменить переменную, итого - 3 * 6 * 5 = 80 действий.
всего действий с того скрина за сотку
в скриптах
На том скрине для нахождения единиц у тебя будет одна строчка кода вместо пяти команд. Итого "открыть скрипт - копировать код - вставить - нажать ок" - четыре действия.
В десятках,сотнях,тысячах также по одной строчке вместо 6 действий у каждой.
Учитывая что все строчки можем соединить в один вызов скрипта то будет один вызов скрипта с вставкой туда кода
Итого: 4 действия вместо сотни
Опять же запись через $game_variables помогло бы избавиться от многих промежуточных переменных
Чем? Всё те же "мучения", если переменные заняты. Только тут ещё и залезь, выдели, сотри, напиши по новой. Против зайди и выбери. Два клика.
Я ошибся в начале и в 10 условиях вместо nom написал num. Очень неудобно было править.
переменная "промежуточная" тебе бы не понадобилась
"залезь - сотри - напиши" решается любым простеньким редактором кода. Скопировал код в редактор, нажал волшебную кнопочку для замены символов-фраз и все заменено. вставил обратно. буквально пара секунд. Если ты часто пишешь "скрипто-ивенты" то редактор кода стоит скачать и установить,благо даже в редакторах весом 20 мегов такие функции есть
поэтому первые два общих события перенесутся в новый проект буквально за пол минутки
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- peter8031983
-
Автор темы
- Не в сети
- Давно я тут
-
- Добро-вещь относительная.
То что ты написал мне совсем не проще. Я как бы давно мукерю.
Урок не о том, что проще, а что нет.
У тебя есть возможность и время написать свой урок что и как по ТВОЕМУ проще.
Дерзай.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
