Game Maker - создание игр | HellRoom Games
Январь 19, 2025, 18:58:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Урок по созданию эффектных выпадающих инфо-сообщений  (Прочитано 7286 раз)
0 Пользователей и 1 Гость смотрят эту тему.
site-pro
Участник
****

Репутация: 31
Offline Offline

Пол: Мужской
Награды:
За постоянность!
API: GameMaker 8.1 Standard
Деятельность: Програмирую программы и игры, а также рисую аниме
Сообщений: 139


Программист


« : Сентябрь 01, 2012, 21:23:59 »

рабочий пример во вложении
создаём объект parent
в событии Create пишем
Код:
showed=0
в событии Draw пишем
Код:
if (mouse_x>x && mouse_x<x+w && mouse_y>y && mouse_y<y+h )||(hit=1)
//проверели что мышка находиться над объектом или на него нажали
{
if showed=0 // если инфо ещё не показывалось
{
//обнуление временных переменных
i=0
j=0
ii=0
jj=0
n=0
nn=0
xx=0
yy=0
ttext=''
//получаем цвет для рамки инфо
ch=color_get_hue(color)
cs=color_get_saturation(color)
cv=color_get_value(color)
cl=make_color_hsv(ch,cs,cv+100)
//инфо показываеться
showed=1
}
}else showed=0
теперь создадим объект control
в событии Draw пишем
Код:
with(all) if sprite_exists(sprite_index) draw_sprite(sprite_index,0,x,y)// перерисовали объектам их спрайты
with(all)
{
if variable_local_exists('showed') showhint() //выведем на экран инфо
}
теперь создадим скрипт showhint
Код:
if showed=1 // если инфо показываеться
{
wid=string_width(text)+10 //ширена инфы
hei=string_height(text)+10//высота инфы
//проверка выхода за экран
q=mouse_x+10+wid
q1=mouse_y+hei
if q<view_wview[1] xx=mouse_x+10 else xx=view_wview[1]-wid
if q1<view_hview[1] yy=mouse_y else yy=view_hview[1]-hei
if mouse_x<0 xx=0
if mouse_y<0 yy=0
if n=0
{
if i<wid i+=5
if j<hei j+=5
if i>=wid && j>=hei
{
n=1
}
}
if n=1
{
if ii<wid ii+=5
if jj<hei jj+=5
if ii=wid && jj=hei n=2
}
if nn<string_length(text)
{
nn+=1
ttext+=string_char_at(text,nn)
}
//рисуем рамку
draw_set_color(cl)
draw_line_width(xx,yy,xx+i,yy,2)
draw_line_width(xx,yy,xx,yy+j,2)
draw_line_width(xx,yy+j,xx+ii,yy+j,2)
draw_line_width(xx+i,yy,xx+i,yy+jj,2)
//рисуем фон
draw_set_color(color)
draw_rectangle(xx+1,yy+1,xx+min((i+ii)div 2,i-1),yy+min((j+jj)div 2,j-1),0)
//рисуем текст т. е. саму инфу
draw_set_color(c_black)
draw_text(xx+5,yy+5,ttext)
}
теперь создадим объект obj
в событии Create пишем
Код:
//текст инфы для объекта
text='Name:block#color:yellow#you can move#this block.To move#this block you have #to click on him.'
x_=0
y_=0
//цвет инфы
color=c_blue
hit=0
//ширина и высота объекта
w=32
h=32
в событии Left Pressed пишем
Код:
x_=mouse_x-x
y_=mouse_y-y
hit=1
в событии Global Left Button пишем
Код:
if hit=1
{
x=mouse_x-x_
y=mouse_y-y_
}
в событии Global Left Released пишем
Код:
hit=0

* hints.gmk (10.96 Кб - загружено 850 раз.)
Записан

-Движок 3D
-Эффектные выпад. инфо-сообщения
-Steam pipes[The most adequate games of hellroom #2]
-terraria на android
Пишу программы и игры на Delphi,GML,C++,сайты на HTML,PHP,MySQL. Рисую аниме

Tapacko
Новичок
*

Репутация: 3
Offline Offline

API: Game Maker 8.0 Pro
Деятельность: Начинающий игродел GM
Сообщений: 2


« Ответ #1 : Ноябрь 20, 2012, 15:09:48 »

This is a simple example of how use my showhint_script
Грамматическая ошибка, английский храмает старичек =)
А в целом скрипт очень таки хорош, но дизайном слабоват, для красивых игр нужно лучше.
Записан

Все ошибки в моем сообщении являются авторским стилем написания (c) Tapacko
site-pro
Участник
****

Репутация: 31
Offline Offline

Пол: Мужской
Награды:
За постоянность!
API: GameMaker 8.1 Standard
Деятельность: Програмирую программы и игры, а также рисую аниме
Сообщений: 139


Программист


« Ответ #2 : Ноябрь 20, 2012, 17:51:29 »

да англ ... скрипт я написал так что бы он был более-мение обобщающий то как можно сделать... я хотел показать сторону кода,а не дизайна ..
« Последнее редактирование: Февраль 03, 2014, 15:49:30 от site-pro » Записан

-Движок 3D
-Эффектные выпад. инфо-сообщения
-Steam pipes[The most adequate games of hellroom #2]
-terraria на android
Пишу программы и игры на Delphi,GML,C++,сайты на HTML,PHP,MySQL. Рисую аниме

Fur
Абы-какой
GM Pro user
*

Репутация: 463
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]Третье место на HellRoom Jam #9 [Flucoldache]За лояльность! [+300 репутации]Настоящий игродел!Боже мой, посмотрите на эту медальку! Первое место на HellRoom Jam #6
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673


Лисяток тебе.


« Ответ #3 : Февраль 03, 2014, 15:54:57 »

Записан

В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях.

Hyperflex
Scurovoid
Активный участник
*****

Репутация: 34
Offline Offline

Пол: Мужской
Награды:
За постоянность! [10 дней на форуме]
API: Love
Деятельность: Self-destruction
Сообщений: 290


Продажный чиновник


WWW
« Ответ #4 : Февраль 03, 2014, 16:05:56 »

Я сделаю проще при помощи маленького скриптика который будет вести массив и "with", ну а эффектик симпатичный.
Записан

site-pro
Участник
****

Репутация: 31
Offline Offline

Пол: Мужской
Награды:
За постоянность!
API: GameMaker 8.1 Standard
Деятельность: Програмирую программы и игры, а также рисую аниме
Сообщений: 139


Программист


« Ответ #5 : Февраль 03, 2014, 17:15:25 »

обновление..
что изменил :
в объекте control в событии draw
Код:
with (parent)showhint()
в объекте parent в событии draw
Код:
if (mouse_x>x && mouse_x<x+w && mouse_y>y && mouse_y<y+h )||(hit=1){
if showed=0{
i=0 j=0 ii=0 jj=0
n=0 nn=0xx=0 yy=0
ttext=''
ch=color_get_hue(color)
cs=color_get_saturation(color)
cv=color_get_value(color)
cl=make_color_hsv(ch,cs,cv+100)
showed=1
}
}else showed=0
draw_sprite(sprite_index,0,x,y)
и поменял скорость .. вроде теперь лучше..

* hints.gmk (10.94 Кб - загружено 559 раз.)
Записан

-Движок 3D
-Эффектные выпад. инфо-сообщения
-Steam pipes[The most adequate games of hellroom #2]
-terraria на android
Пишу программы и игры на Delphi,GML,C++,сайты на HTML,PHP,MySQL. Рисую аниме

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.147 секунд. Запросов: 30.