10 полезных скриптов для game maker

10 полезных скриптов для game maker thumbnail
RevolverOcelot

Посетитель
**

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

Пол:
Russian Federation Russian Federation

API: GameMaker Studio Free
Сообщений: 43

v   v   v   v   v

^  ^  ^  ^  ^

Предлагаю темку, в которой будут выкладываться полезные скрипты (сделанные вами, увиденные вами — неважно), который упрощают работу, создают полезные свойства, эффекты. Никакого обсуждения — скрипт и его описание.

Вот пример (скрипт не мой, увидел в каком то РПГ движке, хорошая вещь) — рисует обведенный текст.

draw_set_color(argument3)
draw_text(argument0+1,argument1,argument4)
draw_text(argument0-1,argument1,argument4)
draw_text(argument0,argument1+1,argument4)
draw_text(argument0,argument1-1,argument4)

draw_set_color(argument2)
draw_text(argument0,argument1,argument4)

//argument0 = x позиция текста
//argument1 = y позиция текста
//argument2 = основной цвет текста
//argument3 = цвет обводки текста
//argument4 = ‘текст’

« Последнее редактирование: Апрель 12, 2017, 21:04:15 от Fantom »

Записан

Fantom

Автор скрипта: FanTom
Простой скрипт для создания объемного звука:

sound_3d_set_sound_position(argument0,(x — view_xview — (view_wview div 2)) / 130,
(y — view_yview — (view_hview div 2)) / 100,4);

//argument0 — название звука, расположение которого изменяется

Определяет расположение звука относительно центра вида (камеры).

Делители (130 и 100) определяют глубину объемности.
Чем больше делитель, тем качественнее изменяется расположение звука,
но в то же время медленнее перелетает в «Ð´Ñ€ÑƒÐ³Ð¾Ðµ ухо» 🙂
Поэтому нужно найти баланс, и для разных игр эти числа могут отличаться.

Выполняя этот скрипт в каком-либо объекте, звук, записанный в нулевом аргументе, «Ð¿ÐµÑ€ÐµÐ¿Ñ€Ñ‹Ð³Ð¸Ð²Ð°ÐµÑ‚» в координаты этого объекта.

« Последнее редактирование: Июль 30, 2011, 22:17:52 от FanTom »

Записан

Fantom

Пара скриптов по работе с текстом.

1. Автор скрипта: FanTom
Запись числа, у которого пустые разряды заполнены нулями.
То есть, вместо пишется 000000; вместо 25 пишется 000025.

scr1=string(scr);
scr2=»;

if string_length(scr1) < 6 {scr2+=’0′}
if string_length(scr1) < 5 {scr2+=’0′}
if string_length(scr1) < 4 {scr2+=’0′}
if string_length(scr1) < 3 {scr2+=’0′}
if string_length(scr1) < 2 {scr2+=’0′}
scr2+=scr1;

draw_text(10,10,scr2);

//scr — текущие очки, количество денег и др.

2. Автор скрипта: FanTom
Разбиение сплошного текста на массив строк. Пригодится для диалогов.

maxphrase = string_count(chr(13),text) + 1;

istart = 1; iend = 1000000; j = 0;
for (i=1; i<=string_length(text); i+=1;)
{
 if ord(string_char_at(text,i)) = 13
 {iend = i;
  mess[j] = string_copy(text,istart,iend-istart+1);
  istart=i+2;
  j+=1;
 }
 
 if i=string_length(text)
 {iend = i;
  mess[j] = string_copy(text,istart,iend-istart+1);
 }
 
}

//text — исходный сплошной текст
//mess[] — массив строк, получающийся в результате
//maxphrase — количество строк в тексте

« Последнее редактирование: Ноябрь 22, 2012, 18:48:09 от FanTom »

Записан

UncleDec

Скрипт des

Недавно создал скрипт, простейший, но с ним очень удобно работать.
Наверное, всех уже начинает бесить код уничтожения других объектов.

Итак, создаём скрипт des:

И пишем:

with argument0
{
instance_destroy()
}

И, уже можно им пользоваться, теперь можно писать просто des(название_объекта).

Очень удобно! 

Записан

TUjh

Пользователь
***

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

Пол:
Russian Federation Russian Federation

API: Game Maker 8.0 Pro
Деятельность: GML программист, художник, 3D Моделлинг
Сообщений: 76

Who i am?

Простой скрипт тени для объекта:

draw_sprite_ext(sprite_index,image_index,x+6,y+6,1,1,image_angle,c_black,0.3)
draw_sprite_ext(sprite_index,image_index,x,y,1,1,image_angle,image_blend,1)

x+6,y+6 — Положение тени
c_black,0.3 — цвет и прозрачность тени

Записан

Hummer

Во время разработки ЭВМ я написал 18 скриптов, и сейчас представлю самые полезные

if(argument0=1)
{
return 0;//=false
}
else
{
return 1;//=true
}

Скрипт может понадобиться в изменениях булевых функций, например показывать-не показывать окно (инвентарь, консоль и т д)

if(argument0=1)&&(argument1=1)
{
return 1;//=true
}
else
{
return 0;//=false
}

Нужен для соблюдения двух условий

if(argument0=1)||(argument1=1)
{
return 1;
}
else
{
return 0;
}

Когда нужно соблюсти хотябы одно условие

Прикрепляю .gml этих и других логических функций

 Logic.rar (0.31 Кб — загружено 835 раз.)

Записан

Есть вещи, которые нельзя объяснить. Для всего остального есть Справка
Рандом-рандом-рандомище (с)

C++ & OpenGL

Romixal

GM Pro user
*

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

Пол:
Russian Federation Russian Federation

Награды:

API: GameMaker Studio Pro
Деятельность: developer
Сообщений: 627

// Скрипт следующего вида
// x = sc_wobble(x, target_x, slowness, wobble, array_index)
// — wobble может быть между 1.05 и 2.
// — slowness может быть от 16 до 100.
// — array_index отражает id операции.
// Для этого скрипта необходимо инициализировать spd[array_index] = 0
//
//Скрипт плавного изменения переменной от x до target_x.
//
// Написан Mordi (2006 год.)

var dis, xx, tar, fric;
xx=argument0;
tar=argument1;
fric=argument2;
sp=argument3;

dis=point_distance(xx,xx,tar,tar)/2;

if xx<tar { spd[argument4]+=dis/fric; }
if xx>tar { spd[argument4]-=dis/fric; }

spd[argument4]=spd[argument4]/sp;
xx+=spd[argument4];

return xx;

Записан

Hummer

вот ещё хочу предложить скрипт file_text_save(fname)   10 полезных скриптов для game maker

file_text_close(argument0)
file_text_open_append(argument0)

Помоему логично   😉

Записан

Есть вещи, которые нельзя объяснить. Для всего остального есть Справка
Рандом-рандом-рандомище (с)

C++ & OpenGL

MyDreamForever

GM Pro user
*

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

Пол:
Ukraine Ukraine

Награды:

API: Game Maker 8.0 Pro
Сообщений: 701

StarCraft <3

Движение за объектом

x=название объекта за котором ты следуешь.x
y=название объекта за котором ты следуешь.y

Объект летит за мышкой.

x=mouse_x
y=mouse_y

Объект следит за мышкой

image_angle=point_direction(x,y,mouse_x,mouse_y)

Объект поворачивается  Ð·Ð° объектом

image_angle=point_direction(x,y,Player.x,Player.y)

Событие Draw, смена цвета объекта на выбор игрока.

image_blend=get_color(c_red)

Сохранения и загрузка

 Ð”ействие сохранения.

save_x = get_save_filename(‘Game Save|*.save’,»)
game_save(save_x+string(‘.save’))

Действие загрузки.

load_x = get_open_filename(‘Game Save|*.save’,»)
game_load(load_x)

Объект постепенно летит за мышкой

direction=point_direction(x,y,mouse_x,mouse_y)
speed=8  

instance_change(название объекта,1) // превращение в объект

Hummer: Такая тема уже есть. Тема перенесена

« Последнее редактирование: Январь 08, 2011, 10:46:58 от Hummer »

Записан

Hummer

Предлагаю такой скрипт рисования четырёхугольника (не квадрата или прямоугольника)

//Скрипт рисующий четырёхугольник
//argument8 — истина если не закрашивать, ложь если закрашивать
x1=argument0
y1=argument1
x2=argument2
y2=argument3
x3=argument4
y3=argument5
x4=argument6
y4=argument7
out=argument8
if(out=1)
{
draw_line(x1, y1, x2, y2)
draw_line(x2, y2, x3, y3)
draw_line(x3, y3, x4, y4)
draw_line(x4, y4, x1, y1)
}
else
{
draw_triangle(x1, y1, x2, y2, x4, y4, 0)
draw_triangle(x2, y2, x3, y3, x4, y4, 0)
}

Записан

Есть вещи, которые нельзя объяснить. Для всего остального есть Справка
Рандом-рандом-рандомище (с)

C++ & OpenGL

S_Kleer

С помощью этого скрипта ваш игрок сможет проходить снизу блока, а сверху нет. (В платформере)
В create у блока (он не должен быть твёрдым) пишем:

solid = 1

В step пишем это:

with Player
 {
  if vspeed > 0
  {
   if !place_meeting(x,y,Block)
   {
    with Block
    {
     solid = 1
    }
   }
  }
 }
 with Player
 {
  if vspeed < 0
  {
   if !place_meeting(x,y,Block)
   {
    with Block
    {
     solid = 0
    }
   }
  }
 }

Player — Игрок
Block — Наш блок
В столкновении игрока с блоком пишем это:

if Block.solid = 1
{
vspeed = 0
}

Готово! Вы получили, что так долго хотели!  😉
Чтобы враг с гравитацией не проходил сквозь платформы, делаем в step так:

if !place_meeting(x,y,Block)
{
if place_free(x,y+1)
{
gravity = 1
gravity_direction = 270
}
else
{
gravity = 0
}
if vspeed >= 6
{
vspeed = 6
}
}

В столкновении с этим блоком, делаем так:

move_contact_all(270,0)
if Block.solid = 1
{
vspeed = 0
}
if Block.solid = 0
{
gravity = 0
vspeed = -1
}

Конечно враг будет немного дёргатся если игрок подпрыгнет, но это лучше чем ничего.  😉

Авторы скрипта: S’Kleer и HARRISON

Записан

Коты — Мирители

Haks

GM Pro user
*

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

Пол:
Russian Federation Russian Federation

Награды:

API: GameMaker 8.1 Standard
Деятельность: Программист, Композитор.
Сообщений: 606

Date a Live ][

Вот полезный скрит для создания ии в тдс для солдатов стреляющих пулями, взял со своей игры Operation F.O.X. 2

В событии Create скрипт называется: fxg_ai_create

noalert=false
alert=true
time_move = 0
status = noalert
dir = image_angle
image_angle = 0
shoot = false
rana = false
time = 0

В событиии Step скрипты назвается: fxg_ai_step

if status = noalert{
time_move += 1
image_speed = 0.3
if time_move = 20{image_angle = random(360)}

if time_move > 20{move_contact_solid(image_angle,argument0) sprite_index = argument1;image_angle += 1}

if time_move > 60{sprite_index = argument2;time_move = 0}}

if status = alert{mp_potential_step(argument3.x,argument3.y,argument0,false);shoot = true;image_angle = point_direction(x,y,argument3.x,argument3.y)}

if distance_to_object(argument3) < argument5{status = alert; time_move = 0;rana = true}
if distance_to_object(argument3) > argument5 and rana = false{status = noalert;shoot = false;move_towards_point(0,0,0)}
if distance_to_object(argument3) < 32{move_towards_point(0,0,0)}
if status = alert sprite_index = argument1

if shoot = true{time += 1}
if time = argument8{sound_play(argument7);instance_create(x,y,argument6);time = 0}
if shoot = false{time = 0}
//argument0 = speed
//argument1 = sprite run
//argument2 = sprite idle
//argument3 = player object
//argument4 = speed wanted
//argument5 = radius look
//argument6 = bullet enemy
//argument7 = sound shoot
//argument8=time shoot
//fxg_ai_step(speed,sprite_run,sprite_idle,player_object,speed_wanded,raius,bullet_enemy,shoot_sound,time_shoot)

И в событии попадание пули в врага скрипт называется:fxg_ai_contact_object

rana = true
status = alert

Добавлено: Январь 26, 2011, 00:38:50
Эффекты частиц ядерного взрыва смотреть в разрешении комнаты 1280×1024:

//Ядерный Взрыв by H2x
ps =part_system_create()
part_system_depth(ps,depth)
//Radius Ring
ring = part_type_create()
part_type_shape(ring,pt_shape_ring)
part_type_blend(ring,true)
part_type_size(ring,2,25,1,0)
part_type_color1(ring,c_white)
part_type_alpha2(ring,1,0)
part_type_life(ring,60,60)

//Radius Ring2
ring2 = part_type_create()
part_type_shape(ring2,pt_shape_ring)
part_type_blend(ring2,true)
part_type_size(ring2,0.2,20,0,1)
part_type_color2(ring2,c_orange,c_white)
part_type_alpha2(ring2,1,0)
part_type_life(ring2,120,120)

//Explosion
expl = part_type_create()
part_type_shape(expl,pt_shape_explosion)
part_type_blend(expl,true)
part_type_size(expl,0.2,2,1,0)
part_type_color2(expl,c_orange,c_white)
part_type_alpha2(expl,1,0)
part_type_life(expl,120,120)

//Explosion 2
expl2 = part_type_create()
part_type_shape(expl2,pt_shape_explosion)
part_type_blend(expl2,true)
part_type_size(expl2,0.2,8,0,1)
part_type_color2(expl2,c_orange,c_white)
part_type_alpha2(expl2,1,0)
part_type_life(expl2,60,120)

//Explosion 3
expl3 = part_type_create()
part_type_shape(expl3,pt_shape_explosion)
part_type_blend(expl3,true)
part_type_size(expl3,1,5,0,0)
part_type_color1(expl3,c_silver)
part_type_alpha2(expl3,1,0)
part_type_speed(expl3,8,15,0,0)
part_type_direction(expl3,0,360,0,0)
part_type_life(expl3,120,120)

//Emittent Create
em=part_emitter_create(ps)
part_emitter_region(ps,em,x,x,y,y,ps_shape_ellipse,ps_distr_gaussian)
part_emitter_burst(ps,em,ring,4)
part_emitter_burst(ps,em,ring2,3)
em2=part_emitter_create(ps)
part_emitter_region(ps,em2,x,x,y,y,ps_shape_ellipse,ps_distr_linear)
part_emitter_burst(ps,em2,expl2,10)
part_emitter_burst(ps,em2,expl,2)
part_emitter_burst(ps,em2,expl,8)
part_emitter_burst(ps,em2,expl3,100)

Записан

Sashok_one

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

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

Пол:
Russian Federation Russian Federation

Награды:

API: Game Maker 8.0 Pro
Деятельность: Программист (GML, C#), художник, дизайнер.
Сообщений: 256

*BOOOM*

Вот еше один из вариантов тени для объектов… (мой)

_spr = argument0; // имя спрайта
_smb = argument1;  // индекс спрайта
_x = argument2; // х координата
_y = argument3; // у координата

draw_sprite_ext(_spr,_smb,_x+1,_y+1,1,1,0,c_black,0.5);
draw_sprite_ext(_spr,_smb,_x+3,_y+1,1,1,0,c_black,0.3);
draw_sprite_ext(_spr,_smb,_x+1,_y+3,1,1,0,c_black,0.3);
draw_sprite_ext(_spr,_smb,_x-1,_y+1,1,1,0,c_black,0.3);
draw_sprite_ext(_spr,_smb,_x+1,_y-1,1,1,0,c_black,0.3);

Добавлено: Январь 29, 2011, 16:08:48
Так жэ и с текстом! ;D

_text = argument3 // текст
_x = argument0 // х координата
_y = argument1 // у координата

draw_text_color(_x+1,_y+1,_text,c_black,c_black,c_black,c_black,0.5)
draw_text_color(_x+3,_y+1,_text,c_black,c_black,c_black,c_black,0.3)
draw_text_color(_x+1,_y+3,_text,c_black,c_black,c_black,c_black,0.3)
draw_text_color(_x-1,_y+1,_text,c_black,c_black,c_black,c_black,0.3)
draw_text_color(_x+3,_y-1,_text,c_black,c_black,c_black,c_black,0.3)

Записан

Hummer

Может скрипт не полезный, но попробовать его советую. такая красота получается.

effect_create_above(ef_cloud, random(room_width), random(room_height), irandom(2), choose(c_red, c_yellow, c_blue, c_orange, c_fuchsia))

😉
Только поставьте фон в комнате белый

Записан

Есть вещи, которые нельзя объяснить. Для всего остального есть Справка
Рандом-рандом-рандомище (с)

C++ & OpenGL

Источник

Кто знает какие скрипты кидайте сюда!
Задавать вопросы на стене!

Кто хочет создать игру в которой персонаж поворачивался за мышкой тогда в step пишите код image_angle=point_direction(x,y,mouse_x,mouse_y)
если хотите сделать чтобы за объектом тогда пишите место mouse_ имя объекта а место чёрточки точку а x и y как есть пусть так и останутся
если только при движении объекта поворачивался туда куда идет ваш персонаж то пишите image_angle=direction можно и нарисовать изометрического персонажа в 360% на 360 градусов против часовой стрелки
и чтобы он поворачивался анимацией за чем то то место image_angle пишите image_single.

Как сделать жизни в создании пишите код health=100 maxhealth=100
а в step такой код if health>maxhealth {health=maxhealth}
if health<1 {show_message(‘Здесь писать предсмертный текст…’)room_restart()}

а в рисовании такой код чтобы жизни были видны сверху объекта

draw_sprite_ext(sprite_index,image_index,x,y,1,1,image_angle,image_blend,image_alpha)
draw_healthbar(x-25,y-20,x+25,y-15,health,c_black,c_lime,c_lime,0,1,1)

а чтобы видно было цифрами то найдите в разделе control draw_variable
и пишите в variable health
а в x такой код view_xview+10
в y пишите view_yview+10

Лиджи Очиров

Круто спасиб чувак ща в нете найду выложу скрипты!!!

Скрипт для автогенерации уровня в платформе только несколько условий
создайте блок obj_wall и в создании пишите код scr_blocks()
и script должен называться также scr_blocks()
в уровень поставте эти блоки просто в низу линией вот пример
начало уровня|_ _ _ _ _ _|конец уровня
………………..^ ^ ^ ^ ^
а это( блоки черточки) снизу

scr_blocks
obj=obj_wall
obj1=obj_wall
howhigh=15
if y<=room_height-sprite_height{
if !place_meeting(x,y+1,obj){instance_create(x,y+sprite_height,obj1)}
}
if y<=room_height-sprite_height{
if !place_meeting(x+1,y,obj) && !place_meeting(x-1,y,obj) && place_free(x,y+33){instance_create(x,y+sprite_height,obj1)}
}
if y>=(room_height-sprite_height)-(howhigh*sprite_height){
if random(1)<=0.5{
if place_meeting(x+sprite_width,y,obj) or place_meeting(x-sprite_width,y,obj){
if random(1)<=0.5{instance_create(x+sprite_width,y-32,obj1)}else
{instance_create(x-sprite_width,y-32,obj1)}
}
else
if place_meeting(x+sprite_width*2,y,obj) or place_meeting(x-sprite_width*2,y,obj){
if random(1)<=0.5{instance_create(x+sprite_width*2,y-32,obj1)}else
{instance_create(x-sprite_width*2,y-32,obj1)}
}
}
}

Кто хочет сделать бота который не видит вас за стеной тогда вот пример. Например создали Player ваш игрок Enemy это враг Wall это стена.Теперь у Enemy в step поставьте такой код :
if !collision_line(x,y,Player.x,Player.y,Wall,true,true){Тут поставьте что будет если вас враг увидит}

скрипт от которого зависит чем ближе к какому то объекту тем лучше видно
image_alpha=1-distance_to_object(тут пишите название своего персонажа)/ а тут пишите на коком расстоянии объект совсем исчезнет.

DELETED

для создания надписей
draw_text(10,11,»текст»);
11=y
10=x

Чтобы ваш объект не исчезал когда вы работаете с Draw Рисованием
надо писать такой код Execute code :
draw_sprite_ext(sprite_index,image_index,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha)

Лиджи Очиров

Вот один скрипт
(Как сделать движение по неровной поверхности в платформере)
Здесь тоже нет ничего сложного. Проблема в том, что иногда игроку может препятствовать всего один пиксель, и чтобы на него взобраться — приходится прыгать. Потому, нужно создать некоторую имитацию ног человека — за один шаг игрок может взобраться на несколько пикселей, без прыжка. Итак, сначала задаётся максимальная высота, на которую может взобраться игрок — обычно 4-8 пикселей. Во время движения в цикле проверяется сначала позиция прямо возле игрока, потом на один пиксель выше, на два пикселя выше, и так до максимальной высоты, на которую может взобраться игрок за один шаг. Эта картинка наглядно демонстрирует метод:
В коде это будет выглядеть примерно так:
step event:
var i;
if keyboard_check(vk_left) // Если игрок нажал стрелку влево
{
for (i = 0; i < vdis_max; i += 1) // В цикле проверяем все позиции: с высотой как у игрока, на 1 пиксель выше, на 2 и т.д.
{
if place_free(x — spd, y — i) // Если данная позиция свободна, то…
{
x -= spd; // Двигаем игрока
y -= i;
break; // Завершаем цикл
}
}
}

//…

Лиджи Очиров

Где vdis_max — максимальная высота, на которую может взобраться игрок за один шаг, spd — скорость передвижения игрока.
В случае, если нужно реализовать ещё и быстрый спуск по ступенькам вниз — код будет выглядеть примерно так:
var i;
if keyboard_check(vk_left) // Если игрок нажал стрелку влево
{
for (i = 0; i < vdis_max; i += 1) // В цикле проверяем все позиции: с высотой как у игрока, на 1 пиксель выше, на 2 и т.д.
if place_free(x — spd, y — i) // Если данная позиция свободна
{
x -= spd; // Двигаем игрока
y -= i;

if place_free(x, y + 1) // Если игрок не стоит на платформе,
if !place_free(x, y + vdis_max2 + 1) // Но она под ним есть!
for (i = 0; i < vdis_max2 + 1; i += 1) // Проверяем все позиции немного ниже его
{
if !place_free(x, y + i) // Если в данная позиция занята твёрдым объектом
{
y += i — 1; // Двигаем игрока вплотную к этому объекту
break; // Завершаем цикл
}
}
break; // Завершаем цикл
}
}
Собственно, эти циклы — самописные аналоги функций move_outside_solid и move_contact_solid. При желании их можно заменить встроенными функциями, или даже использовать instance_place.

Лиджи Очиров

(Как убрать курсор с помощью кода? Как изменить курсор? Как сделать свою картинку курсора)
Изменить стандартное изображение можно с помощью функции window_set_cursor(curs), в которой можно использовать следующие константы:
cr_default
cr_none
cr_arrow
cr_cross
cr_beam
cr_size_nesw
cr_size_ns
cr_size_nwse
cr_size_we
cr_uparrow
cr_hourglass
cr_drag
cr_nodrop
cr_hsplit
cr_vsplit
cr_multidrag
cr_sqlwait
cr_no
cr_appstart
cr_help
cr_handpoint
cr_size_all
Чтобы убрать курсор — следует выбрать константу cr_none.
Чтобы показывалась картинка игрового курсора, можно использовать переменную cursor_sprite.
Обратите внимание, если скорость комнаты меньше 60 — ваш собственный курсор будет немного «тормозить», потому что частота обновления экрана значительно больше 30.

вот такой код нужен для того чтобы вокруг персонажа летали например мухи.У мух в step с помощью Execute code теперь пишите :
motion_add(point_direction(x,y,тут впишите имя персонажа.x,тут тоже самое имя персонажа.y),0.5)
вот и всё…

Лиджи Очиров

Что такое текстовый квест?

Текстовый квест — это игра состаящая из локаций, диалоговых окон, любой графики между локациями, любых файлов мультимедиа(например видео, музыка, звуки). Чтобы создавать квесты на GM я выбрал самый простой и оптимальный способ выведения текста и кнопок это show_message(для сообщений) и show_message_ext(для локаций). Ещё можно добавлять видео(show_video) и картинки(show_image).

show_message_ext

Без этой функции нельзя сделать локацию. Локация — это диалоговое окно с несколькими кнопками(максимум 3мя), в окне локации должно быть её описание и варианты действий. например: otvet=show_message_ext(‘Я подошёл к человеку и он предлжил мне поесть.’,’Я не голоден’,’Нет, спасибо’,’Да, я с удовольствием поем’) Вроде всё понятно, но зачем переменная «otvet»? С этим всё тоже просто. Функция show_message_ext возвращает номер нажатой кнопки и 0 если будет нажата клавиша(в этом случае пропишите повторение функции). после функции мы пропишем: if otvet = 1{show_message(‘досвидания’) } if otvet = 2{show_message(‘Да не за что’)} if otvet = 3{show_message(‘Прошу за стол!’)} здесь всё понятно.

Оформление локаций и сообщений

Я нехотел бы, чтобы в моей игре были окна стандартного GM. Чтобы ваше изображение было вместо стандартного окна надо сначала поместить изображение окна в BackGrounds потом в коде прописать: message_background(твой_бэк) и чтобы кнопки были тоже твоими, надо поместить спрайт кнопки в sprites и прописать message_button(спрайт_кнопки)

для тех кто хочет создать strategy то вот обводка персонажей создайте 2 объекта 1 mouse 2 poza у mouse в step такой код :
x=poza.x
y=poza.y

в глобальная левая кнопка отпущена glob left relesed пишите такой код : instance_destroy()

в draw рисовании такой код:
draw_redraw_set_color(c_green)//это каким цветом рисуется обводка
ctangle(poza.x,poza.y,mouse_x,mouse_y,1)//1
draw_rectangle(poza.x+1,poza.y+1,mouse_x+1,mouse_y+1,1)//2
draw_rectangle(poza.x+2,poza.y+2,mouse_x+2,mouse_y+2,1)//3
draw_rectangle(poza.x+3,poza.y+3,mouse_x+3,mouse_y+3,1)//4

чем боль таких rectangle тем толще ваша обводка , но каждая на 1 больше другой смещена в сторону от неё

а у объекта poza в глобальная левая кнопка нажать glob left presed пишите такой код :
x=mouse_x
y=mouse_y
instance_create(x,y,mouse)

в рисовании такой код : draw_clear(c_black)
это какого цвета фон

Лиджи Очиров

Как защитить счёт в игре от артмани
——————————————————————————————-
Метод 1:
Можно хранить в памяти не то значение которое выводится на экран — тогда пользователь не сможет узнать, по какому именно значению проводить поиск.
Пример реализации:
create event:
score = 0;
——————————————————————————————-
keyboard press space event:
score += irandom(5) * 0.456;
——————————————————————————————-
draw event:
draw_text(x, y, score / 0.456);
——————————————————————————————-
Таким образом, на экране отображается одно значение, а в памяти хранится всего 456/1000 от него. Конечно, желательно использовать более сложные формулы, чем просто деление и умножение.
///////////////////////////////////////////////////////////////////////////////////////////////////
Метод 2:
Можно создать ещё одну переменную для проверки счёта.
Пример реализации:
create event:
score = 0;
score_prev = score + 240.764;
———————————————————————————————
step event:
if score != score_prev — 240.764
{
show_message(‘Не пытайтесь взломать нашу игру. Это бесполезно.’)
game_end();
}
———————————————————————————————
keyboard press space event:
score += irandom(5) * 0.456;
score_prev = score + 240.764;
———————————————————————————————
draw event:
draw_text(x, y, score);
———————————————————————————————
Таким образом, как только пользователь изменит кол-во счёта с помощью сторонних программ — игра сразу же это обнаружит.

Лиджи Очиров

Как сделать паузу между выстрелами?
create event:
shooting_ready = 1; // Указываем, что игрок готов стрелять
step event:
if (shooting_ready) // Если игрок готов стрелять
{
// …
// Стреляем
alarm[0] = room_speed*<количество_секунд>; // Устанавливаем время, через которое игрок снова будет готов стрелять
shooting_ready = 0; // Указываем, что игрок более не может стрелять
}
alarm 0 event:
shooting_ready = 1; // После истечения времени указываем, что игрок готов стрелять

Кто-нибудь знает, как сделать очерёдность ходов по 30 сек.???
например, враг сходил, выстрелил и ход закончился и передался мне. Потом я выстрелил и ход передался компу и т.д.
Напишите в личку плиз!!!

вот пример создай объект x1 и x2 в создании у x1 и x2 в Create поставь код у обоих объектов
za=30 alarm[0]=30

в Alarm 0 поставь такой код za-=1 alarm[0]=30

у x1 поставь в step такой код
if za<1 {instance_change(x2,true)}

а у x2 такой код
if za<1 {instance_change(x1,true)}

а в рисовании у обоих выбери control и там выбери Draw Variable
и поставь в 1 строке ставь za во 2 строке пиши +30 это x в 3 строке +10 y

, а у твоего персонажа первого можно в step поставить test instance count в 1 стоке выбери x1 во 2 строке пусть будет 0 , а в 3 строке larger than и у

второго персонажа поставь тоже самое только место x1 поставь x2 это тоже в step что не понятно то говори

в личку не могу я для этого должен быть твоим другом потому что ты поставил ограничение

Источник

Читайте также:  Поиск полезных ископаемых с помощью мирного атома