Game Maker - создание игр | HellRoom Games
Декабрь 07, 2025, 04:41:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: 1 ... 13 14 [15] 16 17 ... 28   Вниз
  Печать  
Автор Тема: Пример инвентаря  (Прочитано 341005 раз)
0 Пользователей и 1 Гость смотрят эту тему.
wargamen
Участник
****

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

Пол: Мужской
API: Game Maker 6.1
Деятельность: Java, GMS, pixelart
Сообщений: 155

Java, i love you:3


« Ответ #210 : Август 22, 2012, 19:08:36 »

мм, точно(насчет второго)
Ну, а первый вопрос переформулирую: Чтобы нажал на одну ячейку инвентаря obj_inv1, и в obj_inv2 убирались предметы
Записан

"Если ты играешь в престолы, ты должен либо умереть, либо победить! Среднего не бывает!". Песнь льда и пламени.

"Закон бесконечной всемирной извращенности или закон Феликса." Когда сисадмины правили Землей.
Dva_Kota
Гл. Администратор
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #211 : Август 23, 2012, 10:29:30 »

1. В первом посте, ниже спойлеров, есть ссылка как удалять и использовать предметы при нажатии клавиш на клавиатуре. Этот же код можно использовать при нажатии на предметах в инвентаре.
Записан

ETUN4
«Старожил форума»
******

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

Пол: Мужской
Награды:
500 сообщений!За постоянность! [10 дней на форуме]
API: Game Maker 8.0 Pro
Деятельность: Game Maker, HTML, MobileBasic...
Сообщений: 855

Ну как-то так...


« Ответ #212 : Август 25, 2012, 15:16:33 »

Dva_Kota, у меня есть идея добавить к каждой вещи свой вес, и что бы у ГГ был лимит веса.
Записан

Dva_Kota
Гл. Администратор
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #213 : Август 26, 2012, 20:37:19 »

Это легко осуществить: У каждого предмета переменная "вес". У инвентаря переменная "вес всех предметов". Перед перемещением предмета в инвентарь сравнивать вес всех предметов + вес этого предмета, и если сумма меньше или равна допустимому весу - перемещать предмет в инвентарь и увеличивать переменную "вес всех предметов", если нет - ничего не делать. При использовании/выбрасывании предмета уменьшать вес. Каждый, кому это нужно, может легко добавить это в свой инвентарь.
Записан

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

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

Пол: Мужской
API: Game Maker 8.0 Pro
Деятельность: Чём я занимаюсь в игрострое?... хм. да всем с чем приходится работать. Всего по немногу.
Сообщений: 90



« Ответ #214 : Август 27, 2012, 18:34:19 »

А как отобразить ботинки на игроке?
И ещё как сделать урон нашему гг с защитой. Ну к примеру ГГ сталкивается с объектом Obj_ship если защиты у него 0 то урон будет 1. Ну а если защиты больше то урона меньше.
И последнее как в инвентаре вместо второго меча/щита повесить ещё один амулет?
Записан
AndrewVideoGames
Главный Модератор
*

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

Пол: Мужской
Награды:
За постоянность! [500 дней на форуме]За лояльность! [+750 репутации]5000 сообщений!За помощь новичкам!
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316



« Ответ #215 : Август 27, 2012, 19:19:01 »

 2) Надо создать переменную, отвечающую за то, есть броня или её нет. Например glabal.br(поставь её в Create какого нибудь объекта). Далее в событии столкновения с obj_ship:
Код:
if global.br=false
{
hp-=1
}
else
{
hp-=0.5
}
Записан
Reylor
Пользователь
***

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

Пол: Мужской
API: Game Maker 8.0 Pro
Деятельность: Чём я занимаюсь в игрострое?... хм. да всем с чем приходится работать. Всего по немногу.
Сообщений: 90



« Ответ #216 : Август 28, 2012, 21:35:11 »

А как сделать без переменной, ну вот как с шлемом например?
Записан
AndrewVideoGames
Главный Модератор
*

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

Пол: Мужской
Награды:
За постоянность! [500 дней на форуме]За лояльность! [+750 репутации]5000 сообщений!За помощь новичкам!
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316



« Ответ #217 : Август 28, 2012, 21:41:10 »

 Ну можно попробывать так:
Код:
if instance_exists(имя_объекта_брони)
{
hp-=1
}
else
{
hp-=0.5
}
Это будет работать, при условии, что у тебя нет объекта брони, если ты её не надел.
Записан
Repkin
Участник
****

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

Пол: Мужской
API: Game Maker 8.0 Pro
Деятельность: GML, учу HTML*.
Сообщений: 197


Successful day? Sit down for game-maker.


« Ответ #218 : Август 29, 2012, 14:57:12 »

Решил немножко сократить create для obj_inv, ну чтоб новички как я -  не рыскали в этом огромном "мире кода" , а сразу всё так на глазу.
Не чего не удалял, всё на месте. Внес всё под 1 цикл.Если кто-то уже так сделал, то извините...
Записан

Dva_Kota
Гл. Администратор
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #219 : Август 29, 2012, 21:05:07 »

Reylor:
1. Так же как броню, аналогично.

2. Это делается именно через переменную. У игрока должна быть переменная "защита". У предметов есть код, который выполняется при одевании/снимании предмета. В этом коде у некоторых предметов написано изменение переменной "Защита". Когда одеваем предмет переменная увеличивается, когда снимаем - уменьшается (так же со всеми остальными переменными, которые меняются если надеть предмет). Вот в зависимости от переменной "защита" (которая у игрока, не помню как именно она называется). В зависимости от этой переменной изменяй наносимый урон (на форуме есть темы про это, связи с инвентарем тут уже нет). Один из вариантов - чем больше защита - тем меньше урон.
Например защита может меняться от 0 (нет защиты) до 1 (100% зацита). Тогда урон можно рассчитывать так:
Код:
hp -= урон * (1 - защита);

3. Если не ошибаюсь, в инвентаре экипировки, в событии Create описаны типы предметов. Каждому слоту присвоен свой тип. Создай еще один слот с таким же типом как у ячейки с амулетом. Вообще можно в инвентарь экипировки добавить сколько угодно слотов, сколько угодно типов слотов (для разных типов предметов) и расположить их как угодно (при большом желании можно и не в виде квадрата расположить).

P.s. ГМ под рукой нет, пример давно не смотрел, по этому пишу по памяти.

Repkin, да  так лучше. Но это было в самой старой версии инвентаря. В новых все так же как ты написал.
Записан

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

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

Пол: Мужской
API: Game Maker 8.0 Pro
Деятельность: Чём я занимаюсь в игрострое?... хм. да всем с чем приходится работать. Всего по немногу.
Сообщений: 90



« Ответ #220 : Август 31, 2012, 20:03:49 »

Вот, я исправил, но эффекта ноль. Почему?

Windows Image.jpg
Пример инвентаря
* Windows Image.jpg (242.48 Кб, 1024x768 - просмотрено 752 раз.)
Записан
Dva_Kota
Гл. Администратор
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #221 : Сентябрь 10, 2012, 12:05:31 »

Возможно уже не актуально, но раньше не было времени ответить.

Нужно еще в событиях перемещения предметов подправить строки с 6 по аналогии со строками с 7 (амулеты сделать так же как кольца)

Объект obj_item_base, событие столкновения с игроком:
Где выбирается зависимость куда переместить предмет от типа предмета, вариант 6 изменить вот так:
Код:
...
        case 6: n_x_1 = 2;
                n_y_1 = 0;
                n_x_2 = 0;
                n_y_2 = 0;
                break;
...

а в варианте 5 вообще убрать (чтобы перчатки туда нельзя было переместить).

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

Если хочешь чтобы амулет был в другой ячейки - нужно ставить другие координаты.

Теперь если амулет подобрать он автоматически будет перемещаться в свободную ячейку. Но нужно добавить еще перемещение амулетов при клике по ним в основном инвентаре. Для этого нужно в объекте obj_inv в событии нажатия ЛКМ сделать то же самое.
Записан

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

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

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


« Ответ #222 : Сентябрь 11, 2012, 11:26:33 »

Кстати вопрос один интересный мучает. Пропадают спрайты предметов в инвентаре когда переходишь из комнаты в комнату. Сам obj_inv со свойством persistent у меня. В той комнате где ты предмет взял, спрайты показываются как надо, но если из комнаты выйдешь, то в окне инвентаря ничего нету. Вернешься обратно -  все на месте. Предметы по клику в слоте в обоих случаях используются без проблем, но вот спрайты их не отображаются, так же как и описание предмета

Добавлено: Сентябрь 11, 2012, 12:14:04
Хотя разобрался уже
Записан
Dva_Kota
Гл. Администратор
*

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

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #223 : Сентябрь 11, 2012, 12:59:18 »

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

Напиши в чем проблема была.
Записан

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

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

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


« Ответ #224 : Сентябрь 11, 2012, 19:08:31 »

Ну да. Так и есть. Сразу не заметил, как во второй комнате случайно инвентарь создал.

Добавлено: Сентябрь 19, 2012, 14:25:00
Извиняюсь за тупой вопрос, а как содержимое инветаря в текстовый файл сохранить?
Попоробовал вот такой вот код для сохранения
Код:
for (slot_x=0; slot_x<obj_inv.inv_width_x; slot_x+=1)
    {
    for (slot_y=0; slot_y<obj_inv.inv_height_y; slot_y+=1)
        {
        file_text_write_string(file,obj_inv.txt[slot_x,slot_y]);
        file_text_writeln(file);
        file_text_write_real(file,obj_inv.item[slot_x,slot_y]);
        file_text_writeln(file);
        file_text_write_real(file,obj_inv.max_number[slot_x,slot_y]);
        file_text_writeln(file);
        file_text_write_string(file,sprite_get_name(obj_inv.spr[slot_x,slot_y]));
        file_text_writeln(file);
        file_text_write_string(file,obj_inv.name_obj[slot_x,slot_y]);
        file_text_writeln(file);
        file_text_write_string(file,obj_inv.act_on[slot_x,slot_y]);
        file_text_writeln(file);
        file_text_write_string(file,obj_inv.act_off[slot_x,slot_y]);
        file_text_writeln(file);
        file_text_write_string(file,obj_inv.item_type[slot_x,slot_y]);
        file_text_writeln(file);
        }
    }
И вот такой для загрузки
Код:
for (slot_x=0; slot_x<obj_inv.inv_width_x; slot_x+=1)
    {
    for (slot_y=0; slot_y<obj_inv.inv_height_y; slot_y+=1)
        {
        obj_inv.txt[slot_x,slot_y]=file_text_read_string(file);
        file_text_readln(file);
        obj_inv.item[slot_x,slot_y]=file_text_read_real(file);
        file_text_readln(file);
        obj_inv.max_number[slot_x,slot_y]=file_text_read_real(file);
        file_text_readln(file);
        obj_inv.spr[slot_x,slot_y]=file_text_read_string(file);
        file_text_readln(file);
        obj_inv.name_obj[slot_x,slot_y]=file_text_read_string(file);
        file_text_readln(file);
        obj_inv.act_on[slot_x,slot_y]=file_text_read_string(file);
        file_text_readln(file);
        obj_inv.act_off[slot_x,slot_y]=file_text_read_string(file);
        file_text_readln(file);
        obj_inv.item_type[slot_x,slot_y]=file_text_read_string(file);
        file_text_readln(file);
        }
    }
Команды инициализации текстового файла само-собой пропускаю. Инвентарь перед загрузкой очищаю. теперь вот закавыка. Не знаю как спрайт сохранить. И почему то при загрузке в массиве в загруженных ячейках одни нули

Добавлено: Сентябрь 19, 2012, 15:14:29
Хотя с нулями разобрался. '' при чтении из файла пропускались. В общем массив заполнялся не верно. Это исправил вроде. А вот с картинками что делать не знаю
« Последнее редактирование: Сентябрь 19, 2012, 15:14:29 от ALT » Записан
Страниц: 1 ... 13 14 [15] 16 17 ... 28   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.08 секунд. Запросов: 32.