Суббота, 20 Апреля 2024, 00:53

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Статьи по Game Maker (Мои статьи)
Статьи по Game Maker
ScorpioДата: Четверг, 18 Февраля 2010, 19:49 | Сообщение # 1
Любитель геймдева
Сейчас нет на сайте
Постинг в данной теме запрещен. Наказание- бан.
Постит только автор статей.
Все вопросы- в отдельные темы.
Vinchensoo

Три моих статьи. Надеюсь, кому-нибудь пригодятся!

Переменные в Game Maker
Очень важное значение имеют так называемые переменные. Переменные - это ячейки со своими именами, в которые можно записать любое значение. Они бывают двух типов: строковые и вещественные. Важный момент: переменные надо объявлять и называть в событии Create или Game Start - по крайней мере, до того, как они будут использоваться. Это происходит так: money=30. Это значит, что переменная money становится равна 30.

Вещественные переменные
Вещественные переменные содержат в себе числа (любые: и целые, и дроби). К примеру, health=100 - здоровье становится полным (100 очков). Используется очень часто: это и кол-во патронов, и здоровье, и деньги и т.д.

Строковые переменные
Строковые переменные содержат в себе любые символы и записываются через апострофы:name='Чувак'. Может использоваться для ввода имени, для вывода статуса героя и т.д.

Глобальные переменные
Глобальными могут быть и строковые, и вещественные переменные. Глобальная переменная принадлежит не какому-то отдельному объекту, а всей игре сразу - поэтому она не может быть разной у разных объектов. Если какой-то объект переходит из комнаты в комнату, то глобальная переменная со своим значением переносится туда же и используется в новой комнате - очень полезная вещь. Чтобы сделать переменную глобальной, надо записать ее с приставкой global. - например:
global.money=100.

Пользуйтесь переменными и не пропадете!

Окраска
Если у вас есть несколько разных объектов, и их спрайты отличаются только определенным цветом - можно сделать всего один спрайт на всех!
Создайте спрайт. Часть, которая будет разных цветов, должна в спрайте быть белой!
Нужным объектам присвойте это изображение. В Create объектов пишем image_blend=цвет.
Вместо "цвет" пишем нужный цвет по-английски с приставкой c_ (с_green, c_red, c_yellow и т.д.).
Теперь белая часть спрайта будет закрашена нужным цветом!
Это может пригодиться вам, например, во флагах (один красный, другой белый, третий синий...), в цветах одежды разных героев и т.д.
Все это работает лишь в зарегистрированном Game Maker!

Несколько советов:

Если вы хотите, чтобы спрайт поворачивался по направлению героя (бывает полезно в играх с видом сверху) - пишите image_angle=direction и рисуйте спрайт того, кому это делаете, повернутым вправо.

Если надо, чтобы игрок вводил свое имя - пишите name=get_string('Как вас зовут?','') и потом пользуйтесь name, скажем так:
show_message('О, привет, '+string(name)+'!'). Выскочит сообщение с приветствием.

Если нужно, чтобы игрок вводил число, то:vashe_chislo=get_integer('Введите свое число!',0) и пользуйтесь точно также.

Если вы хотите сделать событие, происходящее через время после чего-то, пользуйтесь alarm[0]=сколько надо. Если хотите понять, сколько это время в секундах - просто разделите на скорость комнаты (по умолчанию 30). То есть 120 шагов - это 4 секунды!

Чтобы вывести текст на экран, надо сделать невидимый объект и в событии Draw вписать draw_text('ваш текст').

Чтобы рисовать текст по-русски, создайте новый шрифт (скажем, font1), найдите два поля там и в первое пишите 0, во второе 255, а затем в событии Draw вписать draw_set_font(font1)

Чтобы рисовать текст другим цветом, впишите draw_set_color(цвет). Вместо цвет писать цвета с приставкой с_:c_green, c_red, c_yellow и т.д.

Чтобы сделать титры, создайте объект o_titres и поместите в комнату для титров.
У этого объекта в Create впишите y_titres=450.
В событии Draw впишите:
draw_text(150,y_titres,'текст титров')
y_titres-=1

Чтобы в рисовании текста или выводе сообщения перейти на другую строку, используйте знак #

Чтобы что-то происходило, когда вы шевелите мышкой, то делайте так:
в событии Create
xx=mouse_x yy=mouse_y
в событии Step
if xx!=mouse_x or yy!=mouse_y {происходит то, что надо}
xx=mouse_x yy=mouse_y

Сообщение отредактировал Scorpio - Понедельник, 08 Марта 2010, 10:39
ScorpioДата: Понедельник, 01 Марта 2010, 21:46 | Сообщение # 2
Любитель геймдева
Сейчас нет на сайте
Empty, спасибо за отзыв!

Сажусь писать статьи. smile

Создание текстовых игр в Game Maker
Чтобы создать текстовую игру на ГМ, достаточно одного объекта, одной комнаты любых размеров и вот этих команд:
show_message('Привет!') - выводит на экран сообщение (в данном случае "Привет!").
команда=show_message_ext('','Да','','.') - выводит на экран сообщение с вариантами для выбора (максимум тремя). Вместо "команда" вписываем переменную и потом пользуемся ей для проверки варианта выбора. Пример:

otvet=show_message_ext('Хочешь поесть?','Да','Нет','Не знаю...')
if otvet=1 {show_message('Угощайся, друг!')}
if otvet=2 {show_message('Ну как хочешь.')}
if otvet=3 {show_message('Подумай как следует!')}

команда=get_integer('Вопрос',0 (это кол-во по умолчанию)) - выводит на экран строку, в которую игрок должен вписать число. "Команда" проверяет вписанное число. К примеру:

zub_number=32
zub=get_integer('Сколько зубов тебе выбить?',0)
zub_number-=zub

команда=get_string('Вопрос','' (это вписанное по умолчанию)) - выводит на экран строку, в которую игрок должен вписать любые символы. "Команда" проверяет вписанное. К примеру:

name=get_string('Как вас зовут?','Безымянный')
show_message('Что ж, привет, '+string(name))

Также может пригодиться:
команда=show_menu('',0) - выводит список возможных вариантов (разделяются символом |). Команда - выбранный вариант. В отличии от show_message_ext, начинается с нуля! К примеру:
show_message('Выбери оружие!')
otvet=show_menu('Пистолет|АК|Дробовик',0)
if otvet=0 {oruzhie='Пистолет'}
if otvet=0 {oruzhie='АК'}
if otvet=0 {oruzhie='Дробовик'}

И, наконец, вот команды для окраски вашей текстовой игры:
message_button(спрайт) - кнопка ответа теперь - ваш спрайт
message_size(width,height) - ваш размер окна (стандартный размер - 400 на 300)
message_background(фон) - фон окна меняется на ваш.

Надеюсь, этот урок поможет вам в создании текстовой игры. Желаю удачи!

Сообщение отредактировал Scorpio - Понедельник, 08 Марта 2010, 10:41
ScorpioДата: Воскресенье, 07 Марта 2010, 23:28 | Сообщение # 3
Любитель геймдева
Сейчас нет на сайте
YemSalat, спасибо! Я старался! smile

Текстовым играм статью посвятил, теперь очередь RPG!
Предупреждение: не буду расписывать отвлеченные вещи вроде рисования спрайтов и создания объектов. Только говорю - все препятствия на пути героя должны быть

с Solid!
Давайте поразмышляем: что необходимо для РПГ? Прокачка героя, разные суперпуперспособности, адекватные сражения и диалоги - правильно? Вот этим и займемся.
В Create пропишем необходимые переменные. Так как в РПГ может быть множество локаций, логично, что переменные эти глобальны (существуют в одном экземпляре и

сохраняются при переходе героя на другую локацию).
Скажем, так:
global.xp=0 //Очки опыта героя
global.level=1 //Уровень
global.maxhealth=100 //Максимальное здоровье, увеличивается при прокачке.
global.mana=100 // Мана
global.maxmana=100 //Максимальная мана, тоже увеличивается при прокачке.
//Также наш герой должен менять одежду, оружие, как в больших РПГ. Пропишем для начала:
global.oruzhie='Кулаки'
global.odezhda='Обноски'
С переменными разобрались. Сделаем герою движение - он не может стоять на месте, верно? Вид у нас будет сверху и движение - с помощью тыканья мышкой.

Создайте спрайт и объект зеленой точки (она обозначает, куда двигается герой). В событии у героя Global Mouse Left (нажатие левой кнопки мыши в любом месте)

ставим:
1)удаление всех объектов зеленой точки;
2)создание объекта этой зеленой точки в координатах mouse_x,mouse_y;
3)движение героя опять-таки в mouse_x, mouse_y.
В столкновении героя с этой самой точкой пишем исчезновение точки и остановку героя (думаю, обойдемся без подробных объяснений).
Теперь в Степе image_angle=direction (у вас должен быть лицензионный ГМ!), чтобы спрайт героя поворачивался в сторону движения. Спрайт должен быть нарисован

изначально повернутым вправо.
Получилось движение героя! Что там дальше? Ну конечно, какая РПГ без сражений с монстрами! Сделать монстра не так уж сложно. Есть кнопка передвижения с

обходом препятствий (Step Towards Point), ее и перетаскиваем монстру в Step, в координаты там пишем: hero.x, hero.y. Перед этой кнопкой ставим кнопку

проверки переменной, в поле переменной пишем "distance_to_object(hero)", а ниже выбираем smaller than и пишем во второе поле, например, 200.
Теперь у монстра есть простенький ИИ - при приближении героя враг начинает бежать за ним.
В Create монстра ставим heal=100 (это его здоровье)
В событии нажатия на монстра (в объекте монстра) ставим примерно так:
if global.oruzhie='Кулаки' heal-=2
if global.oruzhie='Меч' heal-=4
if global.oruzhie='Еще что-нибудь' heal-=7
Естественно, также ставим при столкновении героя с монстром так:
if odezhda='Обноски' health-=1
if odezhda='Плащ' health-=0.6
if odezhda='Еще что-нибудь' health-=0.3
У монстра, кстати, ставим в Степ image_angle=direction (он тоже имеет право поворачиваться, куда хочет :)).
Но это не все. Герой еще бессмертный и ему плевать на уменьшение здоровья (как и монстру).
У героя пишем в степ:
if health<=0 {show_message('ЛУЗЕР!!!')game_end()}
А у монстра
if heal<=0 {instance_destroy() global.xp+=50}

Фу-ух, разобрались. Простенькая игрушка создана. Но это все еще не совсем РПГ. Нужна прокачка, верно?
В степе что-нибудь вроде этого:
if global.xp>=300
{
global.level+=1
global.xp=0
show_message('ВАШ УРОВЕНЬ - '+string(global.level)+'!')
global.maxhealth+=10
global.maxmana+=10
global.mana+=10
health+=10
}
Это пример прокачки героя - когда опыт больше 299, повышается уровень и максимальные мана и здоровье.

Остались магические способности героя. Рассмотрим, скажем, файерболы.
Пишем в событии глобального нажатия левой кнопки мыши:
if global.mana>=20{
instance_create(x,y,faerball)
global.mana-=20}
у файербола в Create:
move_towards_point(mouse_x,mouse_y,15)
И в столкновении монстра с файерболом:
heal-=30 (или сколько надо)

С заклинанием разобрались, настало время последнего элемента - диалогов. С этим просто. В столкновении героя с НПС пишешь вот (пример):
speed=0 (НПС должен быть solid!)
dialog=show_message_ext('Что вы хотите?','Как дела?','Исчезни','Пока!')
if dialog=1 {show_message('Да нормально все!')}
if dialog=2 {with (other) instance_destroy()}
if dialog=3 {show_message('Пока! Удачи!')}

Предупреждение: везде, где сказано про нажатие кнопки мыши, должно быть именно нажатие (Pressed), а не удержание (Button).

Вот и подошел урок к концу. Если что-то непонятно, есть проблемы - обращайтесь ко мне!

P.S. Планирую продолжить рассмотрение создания игр разных жанров в Game Maker.

Сообщение отредактировал Scorpio - Понедельник, 08 Марта 2010, 10:59
ScorpioДата: Понедельник, 08 Марта 2010, 12:10 | Сообщение # 4
Любитель геймдева
Сейчас нет на сайте
Создание TDS
В последнее время многие стремятся создать свою TDS, и чаще всего для этих целей выбирают Game Maker.
Я решил посвятить свою очередную статью их созданию (часть совпадает с материалом о создании RPG).
Что должно быть в каждой ТДС? Бегающий туда-сюда герой, увешанный оружием, толпа монстров, с которой сражается маленький беззащитный (почти) человек. Но пока

проопишем необходимые переменные.
oruzhie='Пистолет' (начальное оружие)
pistolet_patron=100 (какое оружие без патронов)
blaster_patron=0
s_blasterom=false (нет бластера!)

Оно обычно такое: поворот с помощью мышки, бегаем на стрелочках/WASD. Чтобы герой мог ходить по диагонали, бег сделаем с помощью прыжков в определенные

координаты. Вот так:
if keyboard_check(vk_right) {x+=4}
if keyboard_check(vk_left) {x-=4}
if keyboard_check(vk_up) {y-=4}
if keyboard_check(vk_down) {y+=4}
Поворачивание за мышкой легко сделать с помощью команды, определяющей направление по отношению к координатам мышки:
image_angle=point_direction(hero.x,hero.y,mouse_x,mouse_y)
Чтобы все было красиво, необходимо центрировать спрайт героя!
Все, движение героя есть. Радуемся и переходим к стрельбе по монстрам.
В Create героя поместите:
babah=15 (это необходимо для перезарядки)
В Step героя:
babah-=1
Создайте объект пули (еще нарисуйте, естественно, саму пулю). В событии глобального нажатия левой кнопки мышки (Global Left Button) пропишите создание пули

в координатах героя:
if babah<=0
{if oruzhie='Пистолет' and pistolet_patron>0 or oruzhie='Бластер' and blaster_patron>0
{instance_create(x,y,pulya) if oruzhie='Пистолет' {pistolet_patron-=1 babah=15} if oruzhie='Бластер' {blaster_patron-=1 babah=30}} }
А у пули в Create:
move_towards_point(mouse_x,mouse_y,25)
Теперь получилось, что герой стреляет. Не из дула, а из своей середины - но, благодаря высокой скорости пули, это незаметно.
Стрельба есть, но врагов нет. Непорядок! Создайте объект какого-нибудь чудовища и перетащите ему в Step кнопку Step Towards Point (координаты -

hero.x,hero.y. Также выберите solid и включите solid самому монстру - чтобы обходил препятствия и таких же, как он сам).
Теперь монстру в Create:
heal=100 (это его здоровье)
В столкновении героя с монстром напишите
health-=1
А в столкновении монстра с пулей:
if hero.oruzhie='Пистолет'heal-=20 (можно больше, для скоростного и кровавого геймплея smile )
if hero.oruzhie='Бластер'heal-=60

В Step монстра:
if heal<=0 {instance_change(trup,1)}
И создайте объект трупа врага и спрайт этого трупа.
Сам герой умереть тоже должен, пишем ему в Step что-то подобное:
if health<=0 {game_end() show_message('Ты сдох, чувак!')}

Основная часть позади! Но надо еще сделать постоянное нападение врагов и смену оружия.
Сначала враги. Посмотрите на своей игровой карте точки, из которых могли бы выходить монстры (желательно за пределами карты и штуки три), создаем объект без

спрайта и пишем ему в Create
Alarm[0]=30 (можно меньше)
А в событии Alarm 0:
instance_create(координаты вашей первой точки,monstr)
instance_create(координаты вашей второй точки,monstr)
instance_create(координаты вашей третьей точки,monstr)
alarm[0]=30

Теперь монстры постоянно идут из тех точек.
Дальше оружие.
Создаем объект blaster. В столкновении героя с бластером поместим:
blaster_patron+=20 (патроны нашли)
s_blasterom=true (у нас он есть)
oruzhie='Бластер' (автоматически оружие меняется на бластер, для удобства)
Создаем объект пистолета и пишем в столкновении героя с ним примерно так:
pistolet_patron+=40
И, наконец, смена оружия. У героя в нажатии цифры 1:
oruzhie='Пистолет'
А в нажатии 2:
if s_blasterom=true {oruzhie='Бластер'}

Вот и все - простенькая TDS создана!

Выкладываю также исходник этого примера.
Он немного не такой, в частности геймплей там быстрый за счет увеличения скорости комнаты. smile

Сообщение отредактировал Scorpio - Понедельник, 08 Марта 2010, 13:02
ScorpioДата: Четверг, 01 Апреля 2010, 14:08 | Сообщение # 5
Любитель геймдева
Сейчас нет на сайте
Я и собирался, но были проблемы (случайно ГМ стерся). Так что скоро будут.

Добавлено (08.03.2010, 13:03)
---------------------------------------------
Пример TDS создан и залит на Deposit Files (ссылка в статье!)

Добавлено (08.03.2010, 17:14)
---------------------------------------------
Виртуальная машинка
Небольшая статья про гонки.
На ГМ можно создать игру любого жанра, без ограничений. В том числе и гонку. Я не буду описывать весь процесс ее создания, а расскажу о создании именно автомобиля. Вид сверху, пространство 2D.
Управление будет стандартным - газ на Up, задний ход на Down, Left/Right - поворот. У машины будет нстоящий тормозной путь, а также время, необходимое для разгона.
В событии Up пишем (скорость может быть другой, на ваше усмотрение)
if speed<8 {speed+=0.4}
В событии Down
if speed>-5 {speed-=0.4}
В событии Step:
image_angle=direction
if keyboard_check(vk_up)=0 and keyboard_check(vk_down)=0
{if speed>0 speed-=0.2
if speed<0 speed+=0.2}
В событии Left
if speed<-1 or speed>1 direction+=5
И, соответственно, в событии Right
if speed<-1 or speed>1 direction-=5

Вот и создана машинка, на основе которой можно легко создать гонку!
Выкладываю также пример - http://depositfiles.com/files/brf5wdf79

Добавлено (01.04.2010, 14:08)
---------------------------------------------
ПРИМЕР RPG
В нем реализована прокачка, небольшой текстовый инвентарь, мана + фаерболы, квест и т.д.

Сообщение отредактировал Scorpio - Четверг, 01 Апреля 2010, 14:14
Made_In_USSRДата: Четверг, 27 Мая 2010, 19:05 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Можете влепить мне бан, но у меня есть пожелание к автору, которое безсмысленно постить в отдельную тему.
Хотелось бы увидеть статью в которой в доходчивой форме обьяснялось как, зачем и в каких случаях имеет смысл писать скрипты.
После прочтения топикстартером пост можно удалить.


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
vasiliylukДата: Понедельник, 04 Марта 2013, 18:05 | Сообщение # 7
был не раз
Сейчас нет на сайте
файл на "виртуальную машинку" к с wink dry

Добавлено (04.03.2013, 18:05)
---------------------------------------------
к сожалению а не 'к с' извините не увидел
biggrin


vasiliy12
MasterSamboДата: Воскресенье, 23 Июня 2013, 12:37 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Здраствуйте, посетители сайта! В этой статье я расскажу как сделать платформер за короткое время.
Платформер - это простой жанр игры, в котором есть игрок, который бегает и собирает что-то.
Приступим!
Открываем Game Maker. Создаём два спрайта:
player - наш игрок
wall - блок, стена.

Создаём такие же объекты. Работаем с игроком. Делаем событие создание и вписываем код:
if place_free(x,y+1) {gravity = 0.5}
else {gravity = 0}
gravity_direction = 270
if vspeed > 10 {vspeed = 10}
if keyboard_check(vk_right) && place_free(x+4,y) {x+=4}
if keyboard_check(vk_left) && place_free(x-4,y) {x-=4}
if keyboard_check_pressed(vk_up) && !place_free(x,y+1) {vspeed = -8}

То есть в первых строках идёт гравитация, а потом управление игроком. Далее в очереди событие столкновение с объектом wall. Вписываем простой скрипт:
if wall.solid = 1
{
vspeed = 0
}

Всё, игрок готов! Переходим на работу со стеной. Внимание: стену как обычно мы привыкли делать твёрдой не делаем (в нашей игре можно прыгать снизу блока, но нельзя сверху).
Делаем событие создание и пишем код:
solid = 1
Это значит, что твёрдость у стены равна одному. Теперь создаём событие степ (шаг) и вписываем скрипт:
with player
{
if vspeed > 0
{
if !place_meeting(x,y,wall)
{
with wall
{
solid = 1
}
}
}
}
with player
{
if vspeed < 0
{
if !place_meeting(x,y,wall)
{
with wall
{
solid = 0
}
}
}
}
Не будем говорить про этот скрипт, хотя он и важен (скажу только то, что он связан с прыжком: снизу можно, а сверху нет)
Всё! Расставляем объекты в комнате.

Запускаем игру.
Спасибо за внимание!

Добавлено (21.06.2013, 17:03)
---------------------------------------------

Добавлено (23.06.2013, 12:36)
---------------------------------------------
Добрый день! Я хочу рассказать как сделать игру типа angry birds. Я думаю, что все слышали о ней.

Для начала сделаем спрайты:
s_bird - птица
s_enemy - враг
s_block - блок
Создаём объекты с соответствующими спрайтами:
о_bird - птица
о_enemy - враг
о_block - блок
Переключаемся на работу с объектом птицы. Добавляем событие создание и пишем код:
gravity = 0.2;
gravity_direction = 270;
varDrag = false;

Добавляем столкновение с другой птицей и пишем код:
varDir = point_direction(x, y, other.x, other.y);
with (other) {
motion_add(other.varDir, other.speed/2);
}

move_bounce_all(true);
vspeed = vspeed / 2;
hspeed = hspeed * 0.50;

Теперь столкновение со стеной:
move_bounce_all(true);
vspeed = vspeed / 2;
hspeed = hspeed * 0.90;

Создаём событие левая кнопка мыши нажата и пишем супер-простой скрипт:
varDrag = true;

И наконец событие глобальная левая кнопка мыши. Добавим скрипт:
if (varDrag = true) {
varDist = distance_to_point(mouse_x, mouse_y) / 5;
motion_add(point_direction(x, y, mouse_x, mouse_y), varDist);
varDrag = false;
}

Переходим на работу со стеной:
Просто ставим галочку на твёрдый. Желательно создать ещё одну стену в виде горки и тоже отметить твёрдость. Так как птица с гравитацией, она прокатится по ней.
Ну и враг. Сделаем столкновение с птицей и создадим действие исчезновения (если хотите, добавьте функцию добавления очков) и событие уничтожение.
Готово! Запускаем игру и наслаждаемся!

Внимание!
Если видите ошибку сообщите в коментариях и я всё исправлю!

Добавлено (23.06.2013, 12:37)
---------------------------------------------
Здравствуйте все! Сегодня я расскажу о скриптах.Часто в играх требуются скрипты для движений объектов, а не только в 8-ми направлениях. Здесь я вам предлагаю базовый набор скриптов для игр. [iскриптов. Создаём спрайт и объект. У спрайта отмечаем center. Добавляем событие Step. Пишем скрипт:
image_angle=point_direction(x,y,mouse_x,mouse_y). Если вы хотите, чтобы объект летел за мышью, то введите другой скрипт:
x=mouse_x
y=mouse_y
С этим объектом можно сделать такую игру:
Объект летит к выходу через лабиринт(разумеется вы его ведёте).Если столкнётся со стеной то отскочит на стартовое место, а если доберётся до выхода, то перейдёт на следующий уровень.Дальше сами!
Движение за объектом:
x=название объекта за которым ты следуешь.x
y=название объекта за которым ты следуешь.y
Объект поворачивается за объектом:
image_angle=point_direction(x,y,Player.x,Player.y)
Событие Draw, смена цвета объекта на выбор игрока:
image_blend=get_color(c_red)
Объект постепенно летит за мышкой:
direction=point_direction(x,y,mouse_x,mouse_y)
speed=8
Вот вам красочный эффект:
effect_create_above(ef_cloud, random(room_width), random(room_height), irandom(2), choose(c_red, c_yellow, c_blue, c_orange, c_fuchsia))
Обводка текста:
var _x, _y, _text, _color1, _color2, _alpha;
_x = argument0; // х координата
_y = argument1; // у координата
_text = argument2; // Текст
_color1 = argument3; // Цвет обводки
_color2 = argument4; // Цвет текста
_alpha = argument5; // Прозрачность обводки

draw_set_color(_color1);
draw_set_alpha(_alpha);
draw_text(_x + 1, _y, _text);
draw_text(_x - 1, _y, _text);
draw_text(_x, _y + 1, _text);
draw_text(_x, _y - 1, _text);

draw_set_color(_color2);
draw_set_alpha(1);
draw_text(_x, _y, _text);
Скрипт для выбора случайной переменной:
mas_x[0]=1;
mas_x[1]=2;
mas_x[2]=3;
mas_x[3]=4;
mas_x[4]=5;
mas_x[5]=6;
mas_x[6]=7;
mas_x[7]=8;
mas_x[8]=9;
mas_x[9]=10;
mas_x[10]=11;
mas_x[11]=0; //последний+1 элемент должен быть пустым
//то есть содержать ненужное значение
mas_l = 10; //количество элементов массива
Далее скрипт, получающий случайный элемент из этого массива:
var mas1,mas_n,buf;

if mas_l=0 {return 0;}
//если закончились элементы, возвращать что-нибудь

mas_n=irandom(mas_l); //случайный индекс элемента. выбирается из имеющегося количества
mas1=mas_x[mas_n]; //получили элемент

for (j=mas_n; j<mas_l; j+=1) //переместить полученный элемент в конец массива
{buf=mas_x[j+1];
mas_x[j+1]=mas_x[j];
mas_x[j]=buf;}

mas_l-=1; //уменьшить количество элементов на 1

return mas1; //получили элемент
Замена символов в тексте на другие:
var t, t1, t2;
t=argument0;
while !(string_pos(argument1,t)=0)
{
len=string_pos(argument1,t);
t1=string_copy(t,0,len-1);
t2=string_copy(t,len+1,string_length(t)-len+1);
t=string(t1)+string(argument2)+string(t2);
}
return t;
Сокращение текста до определённой длинны:
text = argument0;
short = argument1;
if (string_length(text) > short)
{
text = string_delete(text, short + 1, string_length(text) - short + 1) + '...';
}
return text;
Рисование цветка:
Sname=part_system_create();

particle1 = part_type_create();
part_type_shape(particle1,pt_shape_line);
part_type_size(particle1,0.10,0.10,0,0);
part_type_scale(particle1,1,1);
part_type_color1(particle1,16711680);
part_type_alpha1(particle1,1);
part_type_speed(particle1,1,1,0,0);
part_type_direction(particle1,0,359,0,0);
part_type_gravity(particle1,0,270);
part_type_orientation(particle1,0,0,0,0,1);
part_type_blend(particle1,1);
part_type_life(particle1,60,160);

emitter1 = part_emitter_create(Sname);
part_emitter_region(Sname,emitter1,x,x,y,y,0,0);
part_emitter_stream(Sname,emitter1,particle1,5);

attract1 = part_attractor_create(Sname);
part_attractor_position(Sname,attract1,340,241.50);
part_attractor_force(Sname,attract1,0.50,100,1,1);
Прокачка без знания математики (в рпг):
/***************************************************
Скрипт линейной интерполяции

не перепутать пределы, последними идут мин-макс
пределы того значения, которое надо вычислить!
scr_linear_interpolation(x0,x1,x2,y1,y2)
***************************************************/

var x0,x1,x2,y0,y1,y2;
x0=argument0; //известная переменная x
x1=argument1; //минимальный предел x1
x2=argument2; //максимальный предел x2
y1=argument3; //мин. y1
y2=argument4; //макс. y2

y0=((y2-y1)/(x2-x1))*(x0-x1)+y1;
return y0; //неизвестная требуемая переменная
Надеюсь это вам поможет!
Внимание!
Если вы увидели ошибки, то сообщите мне! И ещё: старайтесь не копировать скрипты (я вам не запрещаю копировать), а понимать их. Если все будут копировать, то толком ничего не усвоят и не поймут и в дальнейшем будут всё время спрашивать скрипты на форуме, а скрипты предоставляют для усвоения и для того, чтобы в дальнейшем вы сами смогли составить скрипт!

Сообщение отредактировал arkady - Воскресенье, 23 Июня 2013, 12:36
KaramBinoДата: Четверг, 05 Июня 2014, 17:34 | Сообщение # 9
Karam Грозный
Сейчас нет на сайте
Бред. Бессмысленно!

Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Статьи по Game Maker (Мои статьи)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг