Как сделать инвентарь в игре?
| |
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, на бумаге, под названием
|
|
| |
zik13 | Дата: Вторник, 21 Декабря 2010, 11:36 | Сообщение # 4 |
Dark wolf
Сейчас нет на сайте
| ну дык мне поможет кто нить Добавлено (21.12.2010, 11:36) --------------------------------------------- люди помогите кто может
|
|
| |
TheApKoT | Дата: Вторник, 21 Декабря 2010, 11:40 | Сообщение # 5 |
GML ProgrammeR
Сейчас нет на сайте
| Дай ссыль, попробуем объяснить.
Посоветуйте, где скачать 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 |
заслуженный участник
Сейчас нет на сайте
| Как так получается что у меня работает нормально, а тебе не помогло? 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.
|
|
| |
|