Game Maker - создание игр | HellRoom Games
Ноябрь 18, 2025, 10:14:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: 1 ... 10 11 [12] 13 14 ... 16   Вниз
  Печать  
Автор Тема: Полезные скрипты  (Прочитано 380700 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DmitryDS
Потому что я такой-сякой
GM Pro user
*

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

Награды:
За лояльность! [+150 репутации]1000 сообщений!За постоянность! [100 дней на форуме]
API: GameMaker Studio Master
Сообщений: 1061



WWW
« Ответ #165 : Июнь 29, 2016, 18:41:16 »

Простой, но очень полезный скрипт, заметно уменьшающий объем кода при написании всяких интерфейсов, а также имеющий небольшую защиту от возможных ошибок: Кнопка!

Код: (sc_Button)
///sc_Button(x1, y1, x2, y2)
var x1 = min(argument0, argument2),
    y1 = min(argument1, argument3),
    x2 = max(argument0, argument2),
    y2 = max(argument1, argument3);
return point_in_rectangle(window_mouse_get_x(), window_mouse_get_y(),
    x1, y1, x2, y2);

Назначение, как видно - убедиться, что курсор находится в заданной области. Можно использовать не только для кнопок, но и для выделения элемента при наведении, вызове всплывающих подсказок etc.
Записан

Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла
Gamedel
GM Pro user
*

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

Пол: Мужской
Награды:
За постоянность! [10 дней на форуме]Добавление и перевод новостей о Game Maker!
API: GameMaker Studio Master
Деятельность: Прогер GML, C#, PHP, HTML и тп.
Сообщений: 331



« Ответ #166 : Июнь 30, 2016, 05:10:28 »

Скрипт нажатия кнопки с её отрисовкой

Create:
button_init() - инициализация скрипта

Draw:
button_sc_ext(x,y,image,index,image_index,toggle on, image off,image_index off) - рисование и проверка нажатия кнопки. При нажатии на кнопку возвращает значение 1, а по умолчанию 0. Нажатие проверяется по маске спрайта.
x,y - координаты кнопки
index - индекс кнопки (у каждой кнопки должен быть свой индекс. Примечание: индексы лучше начинать нумеровать с 0-n)
image, image_index - спрайт кнопки и индекс спрайта
toggle on - состояние кнопки (0 - выключена, тогда игнорирует нажатия и рисует спрайт image off; 1 - активна; 2 - игнорирует нажатия рисуется спрайт image)
image off,image_index off - спрайт и его индекс, который будет рисоваться если кнопка отключена (т.е. toggle on=0)

Пример использования скрипта:

P.S. Если скрипт оказался полезным не забываем плюсовать  

Добавлено: Июнь 30, 2016, 05:20:04
Скрипт постепенного сведения числа к нужному

raven(my_val,other_val,prirost) - позволяет свести какое-нибудь число к нужному, используя число приращения. Возвращает my_val с приращением (в конечном итоге other_val). Полезен тем, что можно накидывать числу значения не боясь переполнения, заданного вами порога.
my_val - число которое надо свести
other_val - число к которому надо свести
prirost - приращение (всегда положительное, даже если my_val>other_val)

Пример использования:
« Последнее редактирование: Июнь 30, 2016, 05:26:08 от Gamedel » Записан
MusNik
KeeVee Games
GM Pro user
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+500 репутации]За отличную игру Rock painting story!За помощь в развитии форума!За отличные статьи по Game Maker!...
API: GameMaker Studio 2
Сообщений: 3241



WWW
« Ответ #167 : Июнь 30, 2016, 10:10:24 »

prirost sideways

Это не это разве?

Записан

Gamedel
GM Pro user
*

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

Пол: Мужской
Награды:
За постоянность! [10 дней на форуме]Добавление и перевод новостей о Game Maker!
API: GameMaker Studio Master
Деятельность: Прогер GML, C#, PHP, HTML и тп.
Сообщений: 331



« Ответ #168 : Июнь 30, 2016, 10:56:15 »

Оно самое, не заметил. Ещё думаю можно было бы подобное с помощью готовой функции реализовать clamp(val, min, max)
Записан
life Jumb
GM Pro user
*

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

Пол: Мужской
Награды:
1000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+150 репутации]За добавление полезных программ!Третье место на HellRoom Jam #6 [Игра на конкурс]2 место в конкурсе Адекватные игры #3 [Антиутопия]
API: GameMaker Studio Pro
Деятельность: Программист
Сообщений: 1512



WWW
« Ответ #169 : Август 12, 2016, 13:24:50 »

Код: (math_mix(v1, v2, coof))
///math_mix(v1, v2, coof)
return( argument0*(1-argument2)+argument1*argument2 )
Самая обычная пропорция, возвращает среднее значение между v1 и v2 со смещением в сторону coof
т.е если coof=0 возвратит v1 если coof=1 то v2
Код: (например)
image_angle=math_mix(90, 80, 0.7) //необязательно v2 должен быть больше v1, формула работает и так

x=math_mix(50, 20, global.pause=0) //норм работает с булевыми, это заменяет код: "if(global.pause=0){x=20}else{x=50}"
Записан

 
Dmi7ry
Гл. Администратор
*

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

Пол: Мужской
Награды:
5000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+1000 репутации]За помощь в развитии форума!Знаток Game Maker!За помощь новичкам!
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626



WWW
« Ответ #170 : Август 12, 2016, 14:39:20 »

Код: (math_mix(v1, v2, coof))
///math_mix(v1, v2, coof)
return( argument0*(1-argument2)+argument1*argument2 )
Самая обычная пропорция, возвращает среднее значение между v1 и v2 со смещением в сторону coof
т.е если coof=0 возвратит v1 если coof=1 то v2
Код: (например)
image_angle=math_mix(90, 80, 0.7) //необязательно v2 должен быть больше v1, формула работает и так

x=math_mix(50, 20, global.pause=0) //норм работает с булевыми, это заменяет код: "if(global.pause=0){x=20}else{x=50}"
lerp же
Записан

- А какой, собственно, командой процессора колобок ест черта?
- Командой EAT...
Справка и FAQ в правом верхнем углу...
life Jumb
GM Pro user
*

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

Пол: Мужской
Награды:
1000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+150 репутации]За добавление полезных программ!Третье место на HellRoom Jam #6 [Игра на конкурс]2 место в конкурсе Адекватные игры #3 [Антиутопия]
API: GameMaker Studio Pro
Деятельность: Программист
Сообщений: 1512



WWW
« Ответ #171 : Август 12, 2016, 15:47:53 »

О и правда такая есть, хотя я помню ее искал перед тем как написал свою, странно почему не mix
Записан

 
Лер да Рим
On standby...
GM Pro user
*

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

Пол: Мужской
Награды:
500 сообщений!За постоянность! [50 дней на форуме]
API: Game Maker 8.0 Pro
Сообщений: 896


фрр-фрррр


« Ответ #172 : Август 12, 2016, 16:03:30 »

Какой ещё mix? Это функция линейно интерполяции.
Записан

Всё гениальное просто.
life Jumb
GM Pro user
*

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

Пол: Мужской
Награды:
1000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+150 репутации]За добавление полезных программ!Третье место на HellRoom Jam #6 [Игра на конкурс]2 место в конкурсе Адекватные игры #3 [Антиутопия]
API: GameMaker Studio Pro
Деятельность: Программист
Сообщений: 1512



WWW
« Ответ #173 : Август 12, 2016, 16:10:57 »

Я имел в виду почему ее не mix в гамаке назвали. везде аналогичная функция mix называется, сорри если меня не поняли
Записан

 
Лер да Рим
On standby...
GM Pro user
*

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

Пол: Мужской
Награды:
500 сообщений!За постоянность! [50 дней на форуме]
API: Game Maker 8.0 Pro
Сообщений: 896


фрр-фрррр


« Ответ #174 : Август 12, 2016, 16:20:07 »

Везде она как раз называется lerp.
Записан

Всё гениальное просто.
life Jumb
GM Pro user
*

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

Пол: Мужской
Награды:
1000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+150 репутации]За добавление полезных программ!Третье место на HellRoom Jam #6 [Игра на конкурс]2 место в конкурсе Адекватные игры #3 [Антиутопия]
API: GameMaker Studio Pro
Деятельность: Программист
Сообщений: 1512



WWW
« Ответ #175 : Август 12, 2016, 16:32:10 »

Я не знаю других яп, кроме glsles и блупринтов из ue, поэтому искал в справке потому-что хранилось в моей голове.
т.е. у меня очень узкий круг знаний в кодерстве
Хотя забавно бывает натыкаться на такие совпадения, когда названия действия функции разные, но формула работы идентичная.
Записан

 
MusNik
KeeVee Games
GM Pro user
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+500 репутации]За отличную игру Rock painting story!За помощь в развитии форума!За отличные статьи по Game Maker!...
API: GameMaker Studio 2
Сообщений: 3241



WWW
« Ответ #176 : Август 12, 2016, 18:57:07 »

Какой, к чёрту, mix?

везде аналогичная функция mix называется
Я не знаю других яп, кроме glsles и блупринтов из ue
Я не знаю не одного ЯП, но буду использовать термин "везде". Молодец, чо.
Записан

Goo
ну типа
GM Pro user
*

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

Пол: Мужской
Награды:
3 место в HellRoom Jam XВторое место на HellRoom Jam #9 [Антибиотик]
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345



« Ответ #177 : Август 13, 2016, 12:24:51 »

Ну не знаю, мне пригодилось, вдруг и еще кто-нибудь найдет ему применение

Первый скрип,
у вас есть 3 произвольных значения, val0,val1 и val2,
если при нажатии мыши точка cx,cy(не обязательно координаты мыши)
попадает в оба квадрата(они одинаковы, но у второго дополнительные границы), то возвращает val2,
если попадает в квадрат с границей(минуя "безграничный" квадрат), то возвращает val1,
в противном случае возвращает val0(вне квадратов)

Код:

/// f_point_in_rectangle_border(cx,cy,x,y,x1,y1,lb,ub,rb,db,debug,val0,val1,val2,mouse key)

var cx  = argument0;      //   x
var cy  = argument1;      //   y
var lx  = argument2;      //   left x
var uy  = argument3;      //   up y
var rx  = argument4;      //   right x
var dy  = argument5;      //   down y    
var lb  = argument6;      //   borders left
var ub  = argument7;      //           up
var rb  = argument8;      //           right
var db  = argument9;      //           down
var d   = argument10;     //   debug
var v   = argument11;     //   val 0
var v0  = argument12;     //       1
var v1  = argument13;     //       2
var k   = argument14;     //   mouse key

if(d)
{
    draw_rectangle(lx,uy,rx,dy,true);
    draw_rectangle(lx-lb,uy-ub,rx+rb,dy+db,true);
}

if(mouse_check_button_pressed(k))
{
    if(point_in_rectangle(cx,cy,lx-lb,uy-ub,rx+rb,dy+db))
    {
        if(point_in_rectangle(cx,cy,lx,uy,rx,dy))
        {
             return(v1);          
        }
        
        return(v0);            
    }      
}

return(v);


Второй скрипт, возвращает true,
если при нажатии мыши точка px,py(не обязательно координаты мыши)
принадлежит кругу (cx,cy,r), при условии, что центр этого круга тоже
принадлежит кругу (cx0,cy0,r0), в противном случае возвратит false

Код:

/// f_point_in_circle_ext(px,py,cx,cy,rad,cx0,cy0,rad0,debug,mouse key)

var px  = argument0;      //    point x
var py  = argument1;      //    point y
var cx  = argument2;      //    first circle x
var cy  = argument3;      //    first circle y
var r   = argument4;      //    first circle radius
var cx0 = argument5;      //    second circle x
var cy0 = argument6;      //    second circle y
var r0  = argument7;      //    second circle radius
var d   = argument8;      //    debug
var k   = argument9;      //    mouse key

if(d)
{
     draw_circle(cx,cy,r,true);
     draw_circle(cx0,cy0,r0,true);
}

if(mouse_check_button_pressed(k))
{
    if(point_in_circle(cx,cy,cx0,cy0,r0))
    {
        if(point_in_circle(px,py,cx,cy,r))
        {
             return(true);
        }
    }
}

return(false);

« Последнее редактирование: Август 13, 2016, 20:34:32 от ZaRubick » Записан

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

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

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


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


« Ответ #178 : Август 13, 2016, 19:38:27 »

Комментарии? Объяснение назначения функции? .-.
Записан

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

Hyperflex
MusNik
KeeVee Games
GM Pro user
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+500 репутации]За отличную игру Rock painting story!За помощь в развитии форума!За отличные статьи по Game Maker!...
API: GameMaker Studio 2
Сообщений: 3241



WWW
« Ответ #179 : Август 13, 2016, 19:40:54 »

Да вроде и так понятно.
Записан

Страниц: 1 ... 10 11 [12] 13 14 ... 16   Вверх
  Печать  
 
Перейти в:  

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