Суббота, 28 Декабря 2024, 03:06

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Много вопросов по GM
marsepДата: Суббота, 03 Ноября 2012, 14:53 | Сообщение # 1
участник
Сейчас нет на сайте
Всем привет! Недавно начал понимать тонкости этого конструктора и уже столкнулся с некоторыми вопросами:

1. Создаю 2 объекта: А и В. В А создаю такое событие: если нажимаешь на объект А левой клавишей мыши, то происходит следующее:
instance_create(point_obj.x, point_obj.y, B);
instance_destroy();

Т.е. в координатах объекта А должен создаваться объект В, а сам объект А уничтожаться. Но у меня почему то, это действие происходит не всегда, чаще всего объект А уничтожается, но В не создается на его месте. Т.е. в комнате стоит 10 объектов А и если нажать в игре на каждый, то объект В создается раза 3-5, т.е. выполняется это действие не всегда. Хотя сам объект А удаляется всегда. В чем может быть проблема?

2. Чтобы объявить глобальные переменные или выполнить те действия, которые не относятся к объектам в целом (таймер какой-нибудь), то это нужно делать в выделенном объекте? Т.е. создать объект без спрайта и использовать его в качестве "хранилища глобальных операций".

3. Какие действия могут быть заданы при написание кода в самой комнате (Room - Setting - Set Scripting)?

4. Я прописал у объекта следующее:
draw_set_font(font1);
draw_text(x1, y1, "Hello,World!");
draw_set_font(font2);
draw_text(x2, y2, "Hello,World!");

Так почему текст хоть и появляется в игре, но второй текст появляется с тем же шрифтом, что и первый (font1), хотя должен быть font2. Как это делается вообще, чтобы нарисовать несколько текстов, но с разными шрифтами?

5. Когда игрок нажимает Escape появляется окно (меню)... Как сделать, чтобы комната темнела или просто накладывался черный фон с прозрачностью где-то 50%, но с самим окном (меню) ничего не происходило?

6. Как сделать, чтобы при навидении на объект курсором его спрайт менялся на другой, а когда курсор не на нем, то его спрайт становится стандартным (первоначальным)?

7. С помощью Path объект движется по комнате. Как сделать, чтобы он останавливался, когда перед ним оказывался другой заданный объект и через некоторое время этот объект уничтожался, и первый объект продолжал двигаться по своему пути Path ?

8. Как можно вывести текст (типо очки игрока) и чтобы выглядел этот текст так: 000000 и по мере получения очков количество цифр не менялось - менялось только значение. Т.е. если игрок получил 10 очков, то стало так: 000010, а если еще 255 получил, то так: 000265. Как можно сделать такое?

P.S. Использую GM: Studio... Заранее спасибо за помощь!!!

7.
DracДата: Суббота, 03 Ноября 2012, 17:46 | Сообщение # 2
частый гость
Сейчас нет на сайте
Quote (marsep)
8. Как можно вывести текст (типо очки игрока) и чтобы выглядел этот текст так: 000000 и по мере получения очков количество цифр не менялось - менялось только значение. Т.е. если игрок получил 10 очков, то стало так: 000010, а если еще 255 получил, то так: 000265. Как можно сделать такое?


000000 это рассматриваем так - сотни тысяч, десятки тысяч, тысячи, сотни, десятки, единиц. Как реализовать думай сам, саму логику я дал.


Всем добра =)
Raven84Дата: Суббота, 03 Ноября 2012, 18:21 | Сообщение # 3
старожил
Сейчас нет на сайте
Quote
6. Как сделать, чтобы при навидении на объект курсором его спрайт менялся на другой, а когда курсор не на нем, то его спрайт становится стандартным (первоначальным)?

В событии STEP объекта,которому нужна менять спрайт напиши:
Code
if place_meeting (x,y,cursor) {sprite_image=sprite1} else {sprite_image=sprite2}

Думаю разъяснять не надо,сам разберешься что к чему.


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland
Hamster099Дата: Суббота, 03 Ноября 2012, 23:12 | Сообщение # 4
был не раз
Сейчас нет на сайте
1. замени 1 строчку на
Code
with instance_create(point_obj.x, point_obj.y, B ) {show_message('объект B создан!')};
Возможно ты его просто не видишь, либо он создаётся в той же точке что и предыдущий.
point_obj это идентификатор объекта насколько я понимаю, если тебе надо создавать в той же точке что и А и код запускается из А, используй просто x, y

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

3. Любые, но однократные. Выполняются при входе в комнату. Можно вставить загрузку чегото, но удобнее как в пункте 2

4. возможно у тебя шрифты одинаковые, кодом все верно

5. рисуй полупрозрачный прямоугольник на весь вид. Можно прямо в драве объекта меню, самой первой строчкой, до рисования спрайтов текстов и тд:
Code
draw_set_color(c_black);
draw_set_alpha(0.5);
draw_rectangle(view_xview,view_yview,view_xview+view_wview,view_yview+view_hview,false);


7. path_speed=0

8.
Quote (Drac)
000000 это рассматриваем так - сотни тысяч, десятки тысяч, тысячи, сотни, десятки, единиц. Как реализовать думай сам, саму логику я дал.

Нифига ты не дал, это всё не нужно.
score=10, к примеру. Заводишь переменную score_draw
Code
score_draw=string(score);
while string_length(score_draw)<6 {score_draw='0'+score_draw}
draw_text(x,y,score_draw);


P.S.
Quote (marsep)
Использую GM: Studio...

юзаю 8.0, если какие операторы не распознает кури справку, принцип действия подобен


Сообщение отредактировал Hamster099 - Суббота, 03 Ноября 2012, 23:14
marsepДата: Воскресенье, 04 Ноября 2012, 12:42 | Сообщение # 5
участник
Сейчас нет на сайте
Hamster099, большое тебе спасибо за помощь!!!

Добавлено (04.11.2012, 12:42)
---------------------------------------------

Quote (marsep)
1. Создаю 2 объекта: А и В. В А создаю такое событие: если нажимаешь на объект А левой клавишей мыши, то происходит следующее: instance_create(А.x, А.y, B); instance_destroy(); Т.е. в координатах объекта А должен создаваться объект В, а сам объект А уничтожаться. Но у меня почему то, это действие происходит не всегда, чаще всего объект А уничтожается, но В не создается на его месте. Т.е. в комнате стоит 10 объектов А и если нажать в игре на каждый, то объект В создается раза 3-5, т.е. выполняется это действие не всегда. Хотя сам объект А удаляется всегда. В чем может быть проблема?


А как сделать по подобному примеру (см.выше), чтобы после того как ставишь объект В, объект начинал стрелять в объект С, в качестве снаряда использовался бы объект D. Как сделать, чтобы он летел в объект С?
Hamster099Дата: Воскресенье, 04 Ноября 2012, 17:33 | Сообщение # 6
был не раз
Сейчас нет на сайте
объект B (в alarm-е):
Code
with instance create(x,y,D) {direction=point_direction(other.x,other.y,C.x,C.y)}


Сообщение отредактировал Hamster099 - Воскресенье, 04 Ноября 2012, 17:34
marsepДата: Воскресенье, 04 Ноября 2012, 20:28 | Сообщение # 7
участник
Сейчас нет на сайте
Hamster099, еще раз спасибо за помощь!
  • Страница 1 из 1
  • 1
Поиск:

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