Створення простого інвентарю на game maker

спрайт
s_fruit - спрайт предмета, який ми будемо підбирати.
s_non - спрайт осередки. Просто створіть порожній прозорий спрайт розміром в 32 х 32.

об'єкти
inv - об'єкт, в якому створюються осередки інвентарю.
o_case - осередок. Створюються в об'єкті inv.
o_fruit - предмет, який ми будемо підбирати.

Спрайт і об'єкти створені, тепер можна переходити до написання коду. Відкриваємо об'єкт inv. створюємо подія Create і пишемо код:

width = 3;
height = 3;
for (i = 0; i for (j = 0; j cell [i, j] = instance_create (i * 32, j * 32, o_case);
>
>

Давайте розберемо. Перший рядок відповідає за кількість осередків по горизонталі, друга - по вертикалі. В результаті у нас повинно вийти 9 осередків. Третя і четверта рядки ініціалізують подвійний цикл. П'ятий рядок створює об'єкти осередків по горизонталі і вертикалі і записує індекс кожного осередку в масив. Думаю, зрозуміли. Все, з цим об'єктом завершили. Переходимо тепер до об'єкта o_fruit. Створюємо події натиснутою кнопки миші (не глобальне) і пишемо такий код:

for (j = 0; j for (i = 0; i if (inv.cell [i, j] .sprite_index == s_non) <
inv.cell [i, j] .sprite_index = sprite_index;
instance_destroy ();
exit;
>
>
>


Тут код відповідає за вибір теми і поміщення його в першу вільну комірку інвентарю. Працює це так: якщо в об'єкта осередку спрайт == s_non. значить вона вільна, інакше - зайнята. Запускаємо цикл, який перевіряє всі осередки, і створюємо умова, яке перевіряє всі осередки на наявність предмета, якщо його немає, то знайденої порожній клітинці присвоюємо спрайт об'єкта, на який натиснули, знищуємо цей об'єкт і виходимо з циклу. З цим розібралися.

Далі йдемо в o_case і створюємо дві події.
-Натиснута кнопка миші
-Draw

У події натискання кнопки миші пишемо ну дуже складний код:

if (sprite_index == s_fruit) o_player.hp + = 10; // Якщо умова істина, то додаємо гравцеві 10 одиниць здоров'я і
sprite_index = s_non; // Спустошуємо осередок, на яку натиснули
>

І останнє, що ми з вами повинні зробити, це отрисовать осередок, тому що вона невидима через спрайту. Відкриваємо раніше створене подія Draw і пишемо такі рядки:

draw_set_alpha (0.3); // Встановлюємо прозорість на 0.3
draw_rectangle (x, y, x + 32, y + 32, 0); // Малюємо навколо спрайту заповнений квадрат
draw_set_alpha (1); // Встановлюємо прозорість на 1
draw_rectangle (x, y, x + 32, y + 32, 1); // І поверх малюємо незаповнення квадрат
draw_sprite_ext (sprite_index, image_index, x, y, 1, 1, image_angle, c_white, 1); // І, ​​нарешті, отрісовиваємих сам спрайт осередки


Тепер осередки будуть відображатися нормально. З вами був Fade. спасибі за прочитання статті і до нових зустрічей!

(J = 0; j Потрібно змінити на.
(J = 0; j

___________________________________________
ERROR in
action number 1
of Mouse Event for Left Button
for object money:

Error in code at line 1:
for (j = 0; j ^
at position 20: Unknown variable height

Схожі статті