Пятница, 29 Ноября 2024, 11:50

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Как сделать инвентарь в игре?
zik13Дата: Понедельник, 20 Декабря 2010, 21:20 | Сообщение # 1
Dark wolf
Сейчас нет на сайте
люди расскажите как сделать инвентарь ? я посмотрел почти все уроки но некоторые или непонятные или вообще
нерабочие .

мне нужен инвентарь в котором можно перетаскивать вещи и их выкидывать . Что бы при наведение появлялась инфа
о вещи и что бы когда в инвентаре 2 одинаковые вещи они переносились в одну стопку и рядом появлялась цифра показывающая их кол-во .

P.S. ++++++ ОБЯЗАТЕЛЬНО

Сообщение отредактировал zik13 - Среда, 22 Декабря 2010, 00:49
67boyДата: Понедельник, 20 Декабря 2010, 21:49 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
На чем? написать

SaiteiДата: Понедельник, 20 Декабря 2010, 21:51 | Сообщение # 3
старожил
Сейчас нет на сайте
67boy, на бумаге, под названием
Quote (67boy)
Game Maker
zik13Дата: Вторник, 21 Декабря 2010, 11:36 | Сообщение # 4
Dark wolf
Сейчас нет на сайте
ну дык мне поможет кто нить

Добавлено (21.12.2010, 11:36)
---------------------------------------------
люди помогите кто может

TheApKoTДата: Вторник, 21 Декабря 2010, 11:40 | Сообщение # 5
GML ProgrammeR
Сейчас нет на сайте
Quote (zik13)
непонятные

Дай ссыль, попробуем объяснить. wink


Посоветуйте, где скачать VB6 :C
zik13Дата: Вторник, 21 Декабря 2010, 11:45 | Сообщение # 6
Dark wolf
Сейчас нет на сайте
давайте я исх скину сюда я какбы сделал но там багов много

Добавлено (21.12.2010, 11:45)
---------------------------------------------
http://rghost.ru/3693056

1) при переносе вещи появляется левый спрайт
2) инвентарь привязан а вещи в нем по чему то нет

IroNNДата: Вторник, 21 Декабря 2010, 11:54 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Исходников дофига на эту тему.

пол года учил GML. GameMaker отказывается теперь работать на моем компе...
Здравствуй Construct!
zik13Дата: Вторник, 21 Декабря 2010, 12:05 | Сообщение # 8
Dark wolf
Сейчас нет на сайте
я сделал как мне было надо но есть баги с которыми я не пойму как совладать
ФилДата: Вторник, 21 Декабря 2010, 12:27 | Сообщение # 9
Томатный революционер
Сейчас нет на сайте
39dll.ru
Вот пример. Из того что ты просишь не реализовано лишь перетаскивание.
zik13Дата: Вторник, 21 Декабря 2010, 12:30 | Сообщение # 10
Dark wolf
Сейчас нет на сайте
спс конечно но мне интересно в чем ошибка с моим инвентарем
ФилДата: Вторник, 21 Декабря 2010, 12:32 | Сообщение # 11
Томатный революционер
Сейчас нет на сайте
я не могу разбирать чужой код ибо я не понимаю как ты мыслишь.
zik13Дата: Вторник, 21 Декабря 2010, 12:34 | Сообщение # 12
Dark wolf
Сейчас нет на сайте
ну ты хотя бы посмотри
Dva_KotaДата: Вторник, 21 Декабря 2010, 14:01 | Сообщение # 13
заслуженный участник
Сейчас нет на сайте
Значит так. первая ошибка:
В драв у инвентаря первая строка:

Code
draw_sprite(o_inv,image_index,view_xview[0]+444,view_yview[0]+2)

Это ты рисуешь относительно вида. Все правильно.

Потом у тебя идут строки, которыми ты рисуешь предметы в инвентаре. И вот тут уже не правильно. Тут ты пишешь просто x и y Это координаты относительно самого инвентаря, а он у тебя не двигается. Он у тебя на месте стоит, просто рисует спрайты в разных местах (привязывает их к виду)

Вот я исправил для первого слота. Для остальных исправь аналогично:

Code
if slot[0,0] >0 {               //Если слот 0 заполнен
draw_sprite(slot[0,4],-1,view_xview[0]+444,view_yview[0]+25)   /*То рисуем спрайт в первой клетке
равный указанному в скрипте*/
draw_text(view_xview[0]+444+6,view_yview[0]+25+6,slot[0,1])}   //И пишем кол-во

Теперь у тебя спрайт бутылки будет вверху экрана и будет следовать за видом. Число возле бутылки (это, я так понял количество) тоже будет следовать за видом. Вот только расположен инвентарь у тебя фактически там, где ты его поставил в редакторе, по этому надпись при наведении мыши (и вообще, реакция на мышь) будет как будто он стоит там, а не двигается. Чтобы этого небыло, привяжи сам инвентарь к виду. Для этого в End Step инвентарю добавь строки:

Code
x=view_xview[0]+444;
y=view_yview[0]+25;

Изменяй и смотри что получится. Со спрайтами твоими не правильными чуть позже разберусь.

Добавлено (21.12.2010, 14:01)
---------------------------------------------
Вполне естественно что у тебя инвентарь не совпадает с предметом в инвентаре:
У тебя инвентарь рисуется первой строкойв координатах (view_xview[0]+476,view_yview[0]+40), а предмет в первом слоте ты располагаешь в координатах (view_xview[0]+444,view_yview[0]+25). Видишь разницу? инвентарь рисуешь в одном месте, а предмет - в другом... Координаты инвентаря (у тебя центр спрайта в верхнем левом углу) и координаты первой ячейки должны совпадать. К координатам остальных ячеек добавляй размер ячейки, чтобы рисовалось уже в следующей ячейке (ты, кстати, только для первой изменил, для остальных тоже измени координаты).


Новый пример инвентаря! /20.06.2012/

Energy Wars
zik13Дата: Вторник, 21 Декабря 2010, 14:38 | Сообщение # 14
Dark wolf
Сейчас нет на сайте
а с появлением спрайта героя разобратся получилось ?
Dva_KotaДата: Вторник, 21 Декабря 2010, 16:30 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
Я весь код несколько раз просмотрел, все скрипты, всю процедуру "доставания элемента из инвентаря" в голове прокрутил...
У тебя, когда берешь любой предмет из инвентаря, отображается спрайт s_player. Причем он отображается даже если его переименовать! но вот если его удалить появляется ошибка (попытка нарисовать не существующий спрайт в draw у объекта o_inv). Вообще, если писать кодом ссылку на спрайт, а потом этот спрайт переименовать, работать не будет. Но у тебя там только код, а при переименовании спрайта все равно работает... И вот, наконец-то я нашел в чем ошибка! Скорее всего это даже не ошибка, а опечатка. Или из-за невнимательности ты не то число написал...
Последняя строчка кода в событии draw у объекта o_inv
Code
draw_sprite(temp_slot[0,3],-1,mouse_x,mouse_y)

ты рисуешь спрайт temp_slot[0,3]. А что же у нес хранится в переменной temp_slot[0,3]? Смотрим событие "создание" у объекта o_inv. А там написано:
Code
slot[0,3] = 0       //Имя
slot[0,4] = 0       //Спрайт

дальше ище идет взаимодействие со скриптами add_item и drag_item про них я скажу лишь то, что в add_item нужно поменять местами комментарии "имя" и "вес" (не все строки, а именно комментарии), чтобы не было путаницы, они там наоборот стоят.
Так вот в чем главная ошибка была: ты рисовал спрайт с индексом temp_slot[0,3], а это не индекс спрайта с бутылкой, а индекс самого первого созданного спрайта. Там у тебя (в переменной) записана строка, а она воспринимается как ноль. С этим я до конца не разобрался, но логически получается что так оно и есть.
чтобы все это исправить замени
Code
draw_sprite(temp_slot[0,3],-1,mouse_x,mouse_y)

на
Code
draw_sprite(temp_slot[0,4],-1,mouse_x,mouse_y)


Новый пример инвентаря! /20.06.2012/

Energy Wars
zik13Дата: Вторник, 21 Декабря 2010, 17:08 | Сообщение # 16
Dark wolf
Сейчас нет на сайте
Quote (Dva_Kota)
чтобы все это исправить замени Codedraw_sprite(temp_slot[0,3],-1,mouse_x,mouse_y) на Codedraw_sprite(temp_slot[0,4],-1,mouse_x,mouse_y)

не помогло

Dva_KotaДата: Вторник, 21 Декабря 2010, 17:18 | Сообщение # 17
заслуженный участник
Сейчас нет на сайте
Как так получается что у меня работает нормально, а тебе не помогло? wacko

http://rghost.ru/3696598


Новый пример инвентаря! /20.06.2012/

Energy Wars
zik13Дата: Вторник, 21 Декабря 2010, 17:21 | Сообщение # 18
Dark wolf
Сейчас нет на сайте
значит я чет не так сделал )) а как сделать место для остальных яйчеек
Dva_KotaДата: Вторник, 21 Декабря 2010, 17:32 | Сообщение # 19
заслуженный участник
Сейчас нет на сайте
координаты я только для первой поменял. Аналогично для остальных поменяй (вместо x ставь view_xview[0]+476, вместо y view_yview[0]+40)
то есть вместо
Code
draw_sprite(slot[1,4],-1,x+32,y)

у тебя будет
Code
draw_sprite(slot[1,4],-1,view_xview[0]+476+32,view_yview[0]+40)

и т.д.


Новый пример инвентаря! /20.06.2012/

Energy Wars
zik13Дата: Вторник, 21 Декабря 2010, 17:49 | Сообщение # 20
Dark wolf
Сейчас нет на сайте
и так для каждого слота ?

Добавлено (21.12.2010, 17:43)
---------------------------------------------
чет не выходит

Добавлено (21.12.2010, 17:49)
---------------------------------------------
FATAL ERROR in
action number 1
of Draw Event
for object o_inv:

COMPILATION ERROR in code action
Error in code at line 22:
draw_text view_xview[0]+476+6,view_yview[0]+40+6,slot[3,1])} //И пишем кол-во
^
at position 12: Assignment operator expected.

  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

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