Достижения
|
|
toby3d | Дата: Среда, 08 Февраля 2012, 20:19 | Сообщение # 1 |
One-Aloner
Сейчас нет на сайте
| Всем снова здравствуйте.
Сейчас меня очень интересует реализация такой детали многих игр как "достижения" (ачивменты). Мне необходимо сделать так, чтобы при определённом значении глобальной переменнной, в левом нижнем углу появлялась небольшая табличка с динамической надписью (название достижения). И всё бы ничего, если бы достижения были редкими (1-2 за игру), но в моём проекте есть возможность получения сразу несколько ачивок в один и тот же момент. 1) Как сделать так, чтобы достижение, которое ещё не успело исчезнуть с экрана, поднималось чуть выше достижения, полученного позже, т.е. как бы выползало списком? 2) Как, пользуясь одним спрайтом и динамической надписью заставить писать нужный текст при достижении глобальной переменной определённого значения? Учитывая, что будут появляться сразу несколько копий этих объектов и в каждой динамической надписи должен быть свой текст.
Заранее благодарю за ответ.
Сообщение отредактировал toby3d - Среда, 08 Февраля 2012, 20:34 |
|
| |
Sanches | Дата: Среда, 08 Февраля 2012, 21:37 | Сообщение # 2 |
участник
Сейчас нет на сайте
| 1)События: Sprite - Is overlaping at offset - Sprite, X-offset=0, Y-offset=2 Sprite - pick top-most Every 50 miliseconds Действие: Sprite - Set position X=Sprite.X, Y=Sprite.Y-1
2)Добавляешь в игру объект Text. Ищешь у спрайта вкладку Container, находится под вкладкой Groups. Добавляешь объект текста в контейнер, теперь при создании спрайта автоматически будет создаваться текст. В редакторе событий делаешь примерно так: Событие: Always. Действие: Text - set position another object - Спрайт достижения.
Ещё событие: Достижение получено (не знаю, как у тебя оно получается, но отследить момент сможешь, наверное) Под-событие: Достижение = достижение номер 192 (или какое получено) Действие к под-событию: System - create object Спрайт достижения (позицию создания ставишь какую нужно тебе) Text - Set text - "Достижение номер 192 получено!"
Должно работать. Если что обращайся)
|
|
| |
toby3d | Дата: Среда, 08 Февраля 2012, 22:02 | Сообщение # 3 |
One-Aloner
Сейчас нет на сайте
| Quote (Sanches) Достижение получено (не знаю, как у тебя оно получается, но отследить момент сможешь, наверное) Событие: System - Compare global variable - Combo100 Equal to 1 Действие: Вот тут поподробнее. Все достижения имеют свою глобальную переменную, которые имеют лишь два значения (0 - не получено; 1 - достигнуто).
Ах да, как сделать объект с текстом глобальным, чтобы они появлялись во всех "комнатах"? Галку "Global" в настройках объектов поставил, но в других комнатах они не отображаются на рабочем поле. :( С этим разобрался.
Сообщение отредактировал toby3d - Среда, 08 Февраля 2012, 22:25 |
|
| |
Sanches | Дата: Четверг, 09 Февраля 2012, 14:12 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Тогда не надо делать под-события, просто создавай спрайт достижения и меняй текст.
|
|
| |
toby3d | Дата: Четверг, 09 Февраля 2012, 15:22 | Сообщение # 5 |
One-Aloner
Сейчас нет на сайте
| Quote (Sanches) просто создавай спрайт достижения и меняй текст. Тогда при получение нескольких ачивок, все тексты на них меняются на название последней полученной.
Может вам в ЛС отправить исходник?
|
|
| |
Sanches | Дата: Четверг, 09 Февраля 2012, 18:56 | Сообщение # 6 |
участник
Сейчас нет на сайте
| Просто добавь под-событие (оно всё-таки нужно=)). В нём пиши: Text - Pick closest to Sprite.X, Sprite.Y Это нужно поставить под событием получения достижения. И уже в этом подсобытии меняй текст на нужный.
|
|
| |
toby3d | Дата: Четверг, 09 Февраля 2012, 19:06 | Сообщение # 7 |
One-Aloner
Сейчас нет на сайте
| Quote (Sanches) Pick closest to Sprite.X, Sprite.Y Такого действия я не обнаружил. о_о
|
|
| |
Sanches | Дата: Пятница, 10 Февраля 2012, 13:22 | Сообщение # 8 |
участник
Сейчас нет на сайте
| Это событие, я тоже сначала не понял.
|
|
| |
toby3d | Дата: Пятница, 10 Февраля 2012, 16:10 | Сообщение # 9 |
One-Aloner
Сейчас нет на сайте
| Quote (Sanches) Это событие, я тоже сначала не понял. Где это событие? ._.
|
|
| |
Sanches | Дата: Пятница, 10 Февраля 2012, 19:19 | Сообщение # 10 |
участник
Сейчас нет на сайте
| Не знаю)) Видимо, нужно несколько объектов на уровне. Попробуй тогда Pick by comprassion, пикать объект у которого Y-позиция равна Y-позиции спрайта, или Y Imagepoint'a, к которому привязан текст. Или просто Sprite - Os overlaping another object - Text
Сообщение отредактировал Sanches - Пятница, 10 Февраля 2012, 19:20 |
|
| |
toby3d | Дата: Понедельник, 20 Февраля 2012, 22:34 | Сообщение # 11 |
One-Aloner
Сейчас нет на сайте
| Quote (Sanches) Sprite - Os overlaping another object - Text Теперь вообще ничего не работает. :С Посмотрите исходник, который я вам выслал в ЛС. Всё, разобрался, надо было создавать текст, а потом уже графическую часть достижения.Добавлено (20.02.2012, 22:34) --------------------------------------------- Новый вопрос: Как сделать страницу с достижениями (название+краткое описание), желательно с прокруткой?
Сообщение отредактировал toby3d - Понедельник, 20 Февраля 2012, 22:34 |
|
| |
vicu2010 | Дата: Вторник, 21 Февраля 2012, 00:03 | Сообщение # 12 |
Сейчас нет на сайте
| Quote (toby3d) Где это событие? ._. Попробуй это-же но для условия always например... Т.е. ищи объект в экшнах а не в условиях, пример: always - нужное условие к нужному объекту.
Программист Ruby on Rails / COBOL | Веб-дизайнер(Bootstrap, HTML5, JS) | Викверс на Construct 2 / Classic
|
|
| |
toby3d | Дата: Суббота, 09 Июня 2012, 21:18 | Сообщение # 13 |
One-Aloner
Сейчас нет на сайте
| Quote (vicu2010) Попробуй это-же но для условия always например... Т.е. ищи объект в экшнах а не в условиях, пример: always - нужное условие к нужному объекту. Уже решено до вас.Добавлено (09.06.2012, 21:18) --------------------------------------------- До сих пор бьюсь над прокручиваемым списком достижений.
|
|
| |
allxumuk | Дата: Воскресенье, 10 Июня 2012, 12:19 | Сообщение # 14 |
старожил
Сейчас нет на сайте
| Quote (toby3d) До сих пор бьюсь над прокручиваемым списком достижений. А в чём проблема? тыц Левой кнопкой добавляешь "ачивки", колёсиком прокручиваешь.
Любой дурак может написать программу, которую поймёт компилятор. Хорошие программисты пишут программы, которые смогут понять другие программисты.
|
|
| |
toby3d | Дата: Воскресенье, 10 Июня 2012, 17:06 | Сообщение # 15 |
One-Aloner
Сейчас нет на сайте
| Quote (allxumuk) колёсиком прокручиваешь. А можно как-нить создать полосу прокрутки из линии и спрайта с поведением Drag and Drop?
Осталась ещё одна проблема: С помощью Array я по строке X записываю номер ачивмента и его выполнение (yes/no) или число. Мне необходимо, что выполненный ачивмент больше не активировался заного в следующих сеансах игры и сохранялся в файле как уже выполеннный.
Например, ачивка даётся за запуск игры: при первом запуске я пишу в 1-ю X ячейку Array значение "yes" и на экране появляется соответствующая табличка с надписью о полученном достижении. Ачивка считается полученной, соответствующая активная табличка будет висеть в списке ачивок. После, табличка не должна выскакивать при последующих запусках игры, а значение не должно заново прописываться в Array, чтобы достижение вновь считалось выполненой.
Сообщение отредактировал toby3d - Воскресенье, 10 Июня 2012, 17:35 |
|
| |
allxumuk | Дата: Воскресенье, 10 Июня 2012, 21:20 | Сообщение # 16 |
старожил
Сейчас нет на сайте
| Quote (toby3d) А можно как-нить создать полосу прокрутки из линии и спрайта с поведением Drag and Drop? Да не вопрос: тыц
Quote (toby3d) С помощью Array я по строке X записываю номер ачивмента и его выполнение (yes/no) или число. Мне необходимо, что выполненный ачивмент больше не активировался заного в следующих сеансах игры и сохранялся в файле как уже выполеннный. Собственно нужно периодически пробегать по массиву и проверять выполненность условий и была ли ачивка выдана, в чём проблема?
Любой дурак может написать программу, которую поймёт компилятор. Хорошие программисты пишут программы, которые смогут понять другие программисты.
|
|
| |
toby3d | Дата: Вторник, 12 Июня 2012, 11:32 | Сообщение # 17 |
One-Aloner
Сейчас нет на сайте
| Quote (allxumuk) Собственно нужно периодически пробегать по массиву и проверять выполненность условий и была ли ачивка выдана, в чём проблема? С Array начал работать недели 2 назад, ещё не совсем понимаю его работу, проверку и всё такое. Пока научился только сохранять данные и прописывать переменные. Добавлено (11.06.2012, 16:29) --------------------------------------------- Вот кусок скрипта выполнения ачивки: Добавлено (12.06.2012, 11:32) --------------------------------------------- Попробовал периодически загружать Array. Все ачивки как будто сбрасываются.
Сообщение отредактировал toby3d - Понедельник, 11 Июня 2012, 16:29 |
|
| |
allxumuk | Дата: Вторник, 12 Июня 2012, 12:18 | Сообщение # 18 |
старожил
Сейчас нет на сайте
| Вот пример с простейшим способом проверки полученности ачивок.
Любой дурак может написать программу, которую поймёт компилятор. Хорошие программисты пишут программы, которые смогут понять другие программисты.
|
|
| |
toby3d | Дата: Вторник, 12 Июня 2012, 13:09 | Сообщение # 19 |
One-Aloner
Сейчас нет на сайте
| Quote (allxumuk) Вот пример с простейшим способом проверки полученности ачивок. ДА! То что надо! СПАСИБО! + вам в копилочку!
|
|
| |