Воскресенье, 22.12.2024, 17:18
Главная Регистрация RSS
Приветствую Вас, Гость
Поиск по сайту
Авторизация

Меню сайта
Game Maker
Если вы только-только начали изучать игрострой и еще даже не успели скачать сам Game Maker, предлагаем вам на выбор следующие версии программы:

Game Maker 8.1
Классика. Идеально подходит для создания простых 2D игр на PC. Требует активации.
Game Maker for Mac
Абсолютно та же программа, но только для пользователей Mac. Требует активации.
Game Maker Studio
Самая новая версия с возможностью кроссплатформенной разработки. Бесплатна.
Топ 5 игр
Агент Green 4.2 / 5.0
FeDo 4.2 / 5.0
To Mars: Sec... 4.2 / 5.0
To Mars+MapE... 3.9 / 5.0
Paintball 3.8 / 5.0

Топ игр составлен путем пользовательского голосования.

Если вы не согласны с какой-либо оценкой, примите участие и поставьте свой балл игре. Ваша оценка очень важна для нас ;)
Статистика



На сайте: 2
Гостей: 2
Пользователей: 0
Главная » Статьи » Разработка игр

Создание инвентаря

Сейчас я постараюсь вам объяснить принцип инвентаря, инвентарь - это группа ячеек, а потом уже и все остальное!

Создаем первый объект и называем его oI (старайтесь давать названия покороче т.к. в коде вам еще не раз предстоит ссылаться на них).Объекту присваиваем спрайт. Решите сразу, из скольких клеток (ячеек) будет состоять ваш инвентарь. Для примера нам хватит трех. Здесь следует отметить, что все три будут являться разными интерпретациями созданного раннее обькта oI.

На карте должно быть три oI с разными значениями v (вид предмета, находящегося в конкретной ячейке) и vv (количество предметов). Как все это можно осуществить? Ответ прост - надо воспользоваться "опережающим объектом". Пусть им станет s (не забудьте найти для него место на карте). В событие создания (Create) объекта s печатаем такой код:
I=instance_create(x,y,oI)
II=instance_create(x+40,y,oI)
III=instance_create(x+80,y,oI)
//Как видите, наши объекты разделены, и имеют разные имена.

Вводим первоначальные характеристики главного персонажа (того, кто использует предметы):
global.n1=50       //сила
global.n2=200     //ловкость
global.n3=8        //мудрость

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

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

Пускай зовется v123. Повторяем операцию с "опережающим объектом". В событие создания (Create) объекта s впечатываем:
v=instance_create(112,31,v123) // координаты могут быть любыми.
v.vvv=1 // вещь 1 типа

v=instance_create(112,45,v123)
v.vvv=1 // вещь 1 типа

v=instance_create(142,31,v123)
v.vvv=2 // вещь 2 типа

v=instance_create(152,31,v123)
v.vvv=3 // вещь 3 типа

Ну вот, другое дело. Далее переключаемся на событие отпускания левой кнопки мыши (Left Released) объекта v123 и вставляем туда:
if s.I.v=vvv{s.I.vv+=1;instance_destroy();exit}
if s.II.v=vvv{s.II.vv+=1;instance_destroy();exit}
if s.III.v=vvv{s.III.vv+=1;instance_destroy();exit}
// Если в инвентаре уже имеется вещь данного вида, то увеличивается
// количество предметов.

if s.I.v!=0 && s.II.v!=0 && s.III.v!=0
{show_message('Инвентарь заполнен!');exit}
// Если свободного места вдруг не обнаружится, выводим сообщение
// "Инвентарь заполнен!"

if s.I.v=0{s.I.vv=1;s.I.v=vvv;instance_destroy();exit}
if s.II.v=0{s.II.vv=1;s.II.v=vvv;instance_destroy();exit}
if s.III.v=0{s.III.vv=1;s.III.v=vvv;instance_destroy();exit}
//Для надежности второй раз проверяем условие не занятости клеток :)
//Обозначаем вид предмета и увеличиваем его количество до 1 шт.

Вернемся к oI. В событие рисования (draw) чиркнем:
draw_sprite(s0,0,x,y) //спрайт клетки
if vv>0
{
if v=1{draw_sprite(s1,-1,x,y)} //если вещь 1 типа, рисуем соответствующий спрайт
if v=2{draw_sprite(s2,-1,x,y)} //если вещь 2 типа, рисуем соответствующий спрайт
if v=3{draw_sprite(s3,-1,x,y)} //если вещь 3 типа, рисуем соответствующий спрайт

if vv>1 {draw_text(x+19,y+20,string(vv))}
//если количество вещичек одного вида больше единицы, отображаем значение vv.
}
else{v=0}

Осталось только разобрать использование приобретенных вещей. Что по-вашему, происходит когда вы одеваете на главного персонажа броню? Во-первых, изменяется часть характеристик героя. Во-вторых, активированный предмет (в нашем случае броня) каким-либо образом выделяется или исчезает, превращаясь в крупное изображение. Стало быть и нам как-то нужно выделить используемую вещь. По аналогии с oI создаем объект oV (клавиша "использовать"). При нажатиии на нее левой кнопкой мыши (Left Released) должно происходить следующее:
//активацию предмета можно показывать разными способами, в этом уроке
// ограничимся появлением у задействованной вещи рамки. Объект ac1 для
//этого дела как раз сгодится.

if instance_number(ac1)>0{with(ac1){instance_destroy()}}
//если количество "рамок" на карте больше 0, удаляем их к черту, во избежании
// активации сразу нескольких предметов.

ni=instance_create(x,y-40,ac1)
//создаем рамку у выбранного предмета.

on=instance_nearest(x+5,y-5,oI)
//определяем самую ближнюю клетку(oI) и даем ей кодовое имя on,
// связывая таким образом кнопку "использовать"(oV) с находящейся выше ячейкой.

if on.v=1
//Если в ближайшей ячейке находится вещь 1 типа, влияние на характеристики будет таким:

{
ni.no1=-5 //сила-5
ni.no2=234 //ловкость+234
ni.no3=1 //мудрость+1
}

if on.v=2//изменение показателей для вещи 2 типа
{
ni.no1=26
ni.no2=-26
ni.no3=26
}

if on.v=3//изменение показателей для вещи 3 типа
{
ni.no1=9
ni.no2=0
ni.no3=0
}

В событие создания (Create) рамки(ac1):
global.n1+=no1
global.n2+=no2
global.n3+=no3
//изменяет характеристики г. персонажа.

А в событие ее уничтожения (Destroy):
global.n1-=no1
global.n2-=no2
global.n3-=no3
//возвращает все на круги своя.

Ну вот пожалуй и все.
Надеюсь это вам поможет. 
:)

Автор © 30.06.2003 Савельев Дмитрий (SAYMAN)
Категория: Разработка игр | Добавил: qwerto (14.02.2012)
Просмотров: 3948 | Комментарии: 4 | Рейтинг: 4.0/4
Всего комментариев: 4
3 elf346   (31.03.2012 00:26) [Материал]
Я ничего не понял... :(

4 Gracio001   (03.03.2013 11:23) [Материал]
Gracio001 это не для новичков... попрактикуйся, создай сначала пакмана

1 никита   (14.03.2012 19:57) [Материал]
никита Что-то не получается! cry Говорит что ошибка в этих скриптах:
if s.I.v=vvv{s.I.vv+=1;instance_destroy();exit}
if s.II.v=vvv{s.II.vv+=1;instance_destroy();exit}
if s.III.v=vvv{s.III.vv+=1;instance_destroy();exit}

2 BRESS   (15.03.2012 06:50) [Материал]
BRESS Тут не к нам. Это рерайт.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]