Game Maker - создание игр | HellRoom Games
Ноябрь 17, 2025, 16:04:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: 1 ... 23 24 [25] 26 27 28   Вниз
  Печать  
Автор Тема: Пример инвентаря  (Прочитано 335570 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Konstruktor001
Посетитель
**

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

Пол: Мужской
API: GameMaker Studio Standard
Сообщений: 36


« Ответ #360 : Ноябрь 15, 2015, 14:58:00 »

по идее такого быть не должно,
но раз уж так случилось, то

Код:

if position_meeting ( mouse_x , mouse_y , o_ini )
    {
        mousx = floor (( mouse_x - x ) / ini_w )
        mousy=floor (( mouse_y - y ) / ini_h )

        if mousx > -1
        and mousy > -1
        and mousx < количество_ячеек_в_ширину
        and mousy > количество_ячеек_в_высоту
               {
                               //       твой код
               }
    }


Ну как - то так!

Добавлено: Ноябрь 15, 2015, 14:29:47
Код:
russ_name[mousx,mousy]

замени на string ( russ_name[mousx,mousy] ) // мало ли, вдруг там хранится не строковая величина
Помогло, только имя предмета теперь не показывает, а показывает только если убрать
if mousx > -1
and mousy > -1
and mousx < количество_ячеек_в_ширину
and mousy > количество_ячеек_в_высоту
А без них ошибка.
А поможет если написать вот так
 if (mousx > -1 && mousy > -1 && mousx < 8 && mousy > 2){             
   mousx=0
   mousy=0
   }
Отдельно от общего кода.
« Последнее редактирование: Ноябрь 15, 2015, 15:11:30 от Konstruktor001 » Записан
Goo
ну типа
GM Pro user
*

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

Пол: Мужской
Награды:
3 место в HellRoom Jam XВторое место на HellRoom Jam #9 [Антибиотик]
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345



« Ответ #361 : Ноябрь 15, 2015, 15:29:43 »

покажи весь код, ( точнее весь фрагмент, где текст должен рисоваться )
Записан

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

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

Пол: Мужской
API: GameMaker Studio Standard
Сообщений: 36


« Ответ #362 : Ноябрь 15, 2015, 15:35:15 »

Ну вот это
if position_meeting ( mouse_x , mouse_y , o_ini )
    {
    mousx = floor (( mouse_x - x ) / ini_w )
    mousy=floor (( mouse_y - y ) / ini_h )
draw_set_font(name) 
if naimen_ob[mousx,mousy]!='' && naimen_ob[mousx,mousy]!='@'{
draw_text(view_xview[0]+340,view_yview[0]+0,russ_name[mousx,mousy])
///////
Это переменная отвечает за русское название
russ_name[mousx,mousy]
///////////
Это имя на английском, для чтения в коде
naimen_ob[mousx,mousy]
//////////////
Я попробовал написать отдельно в Draw вроде всё нормально, но не уверен.
 if (mousx > -1 && mousy > -1 && mousx < 8 && mousy > 2){             
   mousx=0
   mousy=0}
Записан
Goo
ну типа
GM Pro user
*

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

Пол: Мужской
Награды:
3 место в HellRoom Jam XВторое место на HellRoom Jam #9 [Антибиотик]
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345



« Ответ #363 : Ноябрь 15, 2015, 15:49:47 »

Код:

 /*
        ПОПРОБУЙ ТАК!
*/

if position_meeting ( mouse_x , mouse_y , o_ini )
{
    mousx = floor (( mouse_x - x ) / ini_w )
    mousy = floor (( mouse_y - y ) / ini_h )
   
    // draw_set_font(name) 
                            /*
                               это перетащи в create, какждый шаг присваивать то,
                               что можно один раз, не обязательно
                            */
 
    if naimen_ob [ mousx , mousy ] != ''
    and naimen_ob [ mousx , mousy ] != '@'
        {
       
            if mousx > -1
            and mousy > -1
            and mousx < 8  // замени на переменную, которую хранит число 8 - колличество ячеек
            and mousy > 2  // и сдесь, использование "магических чисел" - не есть хорошо.
                {             
           
                     draw_text ( view_xview[0] +340 , view_yview[0] , russ_name [ mousx , mousy ] )
                    // проверь на всякий случай массив russ_name , может он пуст.                   
               
                    /*
                        это
                            mousx=0
                            mousy=0
                        не к чему,
                        т.к. ты все рано их в следующем шаге приравняешь к
                            mousx = floor (( mouse_x - x ) / ini_w )
                            mousy = floor (( mouse_y - y ) / ini_h )                       
                       
                    */
                }
        }
}


Добавлено: Ноябрь 15, 2015, 15:57:11
Тьфу, туплю, лучше так

Код:

/*
        ПОПРОБУЙ ТАК!
*/

if position_meeting ( mouse_x , mouse_y , o_ini )
{
    mousx = floor (( mouse_x - x ) / ini_w )
    mousy = floor (( mouse_y - y ) / ini_h )
   
    // draw_set_font(name) 
                            /*
                               это перетащи в create, какждый шаг присваивать то,
                               что можно один раз, не обязательно
                            */
    if mousx > -1
    and mousy > -1
    and mousx < 8  // замени на переменную, которую хранит число 8 - колличество ячеек
    and mousy > 2  // и сдесь, использование "магических чисел" - не есть хорошо.
        {
     
            if naimen_ob [ mousx , mousy ] != ''
            and naimen_ob [ mousx , mousy ] != '@'
                {                         
                   
                             draw_text ( view_xview[0] +340 , view_yview[0] , russ_name [ mousx , mousy ] )
                            // проверь на всякий случай массив russ_name , может он пуст.                   
                       
                            /*
                                это
                                    mousx=0
                                    mousy=0
                                не к чему,
                                т.к. ты все рано их в следующем шаге приравняешь к
                                    mousx = floor (( mouse_x - x ) / ini_w )
                                    mousy = floor (( mouse_y - y ) / ini_h )                       
                               
                            */
                }
        }
}

« Последнее редактирование: Ноябрь 15, 2015, 15:57:11 от ZaRubick » Записан

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

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

Пол: Мужской
API: GameMaker Studio Standard
Сообщений: 36


« Ответ #364 : Ноябрь 15, 2015, 16:51:54 »

// draw_set_font(name)  
                            /*
                               это перетащи в create, какждый шаг присваивать то,
                               что можно один раз, не обязательно
                            */
Но в create не будет работать, текст всё-равно не отрисовывается
Проблема не уходит, уходит только если
if mousx > -1
and mousy > -1
and mousx < 8 
and mousy > 2
написать это, но текст перестаёт рисоваться.
« Последнее редактирование: Ноябрь 16, 2015, 20:34:35 от Konstruktor001 » Записан
Gans
Новичок
*

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

API: Game Maker 8.0 Pro
Сообщений: 10


« Ответ #365 : Январь 09, 2016, 14:38:45 »

Доброго времени суток! Товарищи, подскажите,как проще всего реализовать предмет, который занимает несколько ячеек. Т.е в данном примере каждый предмет занимает одну ячейку в массиве. Мы перебираем ячейки пока не находим свободную и записываем в нее данные предмета. Допустим, есть предмет который должен занимать три ячейки по горизонтали, как это можно сделать, ведь например первая ячейка может быть свободна а следующая занята. Каша в голове, помогите придти к истине.
Записан
S_Kleer
GM Pro user
*

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

Награды:
За лояльность! [+500 репутации]3 место в Дичайшем джеме #82000 сообщений!За постоянность! [50 дней на форуме]Настоящий игродел!2 место на HellRoom Jam #5, Контраст...
API: GameMaker Studio 2
Сообщений: 2734


« Ответ #366 : Январь 09, 2016, 16:16:25 »

Делать проверку не по одной ячейки,а сразу по 3.

Т.е. примерно так:

Код:
for (i=0; i<20; i++)
{
    for (j=0; j<15; j++)
    {
        if inventory[i,j] = 0 && inventory[i + 1,j] = 0 && inventory[i + 2,j] = 0
        {
            inventory[i,j] = 1;
            inventory[i + 1,j] = 1;
            inventory[i + 2,j] = 1;
            exit;
        }
    }
}

Но это слишком чугунное решение. В плане того, что одним массивом не обойтись.
Несколько раз я делал такой инвентарь, но не доделывал до идеала. Использовал 4 массива.
1) Сам предмет
2) Занятость ячеек (т.е. свободна или занята)
3) Ссылка из занятой ячейки в конкретный предмет (Допустим, предмет занимает 3 ячейки по горизонтали, при клике на последнюю или на среднюю, берём информацию из самой левой)
4) Стек предмета
Записан

Коты - Мирители
TeTaTeT
Участник
****

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

Награды:
За постоянность! [10 дней на форуме]
API: GameMaker Studio Pro
Сообщений: 224



« Ответ #367 : Январь 09, 2016, 16:21:23 »

Пример инвентаря в стиле Diablo 2.
Записан
Gans
Новичок
*

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

API: Game Maker 8.0 Pro
Сообщений: 10


« Ответ #368 : Январь 09, 2016, 16:38:39 »


Благодарю, попробую помудрить. Если есть возможность описать в общих чертах этот пункт
или скинуть пример, что бы поковырять

Добавлено: Январь 09, 2016, 16:40:43

Я находил данный пример. К сожалению он не запускается и там много иных фишек, которые отвлекают от сути, но все равно спасибо
Записан
S_Kleer
GM Pro user
*

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

Награды:
За лояльность! [+500 репутации]3 место в Дичайшем джеме #82000 сообщений!За постоянность! [50 дней на форуме]Настоящий игродел!2 место на HellRoom Jam #5, Контраст...
API: GameMaker Studio 2
Сообщений: 2734


« Ответ #369 : Январь 09, 2016, 19:02:54 »

Прикрепил.
Я этот пример как раз для хелрума и делал, но потом как-то забылось и бросилось...

Эдакий, движок инвентаря хотел сделать, где всё можно парой функций настроить.

* Пример инвентаря.gm81 (14.12 Кб - загружено 506 раз.)
Записан

Коты - Мирители
Gans
Новичок
*

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

API: Game Maker 8.0 Pro
Сообщений: 10


« Ответ #370 : Январь 09, 2016, 19:14:55 »

Прикрепил.
Я этот пример как раз для хелрума и делал, но потом как-то забылось и бросилось...

Эдакий, движок инвентаря хотел сделать, где всё можно парой функций настроить.

Шикарно, буду ковырять, спасибо за помощь!
Записан
S_Kleer
GM Pro user
*

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

Награды:
За лояльность! [+500 репутации]3 место в Дичайшем джеме #82000 сообщений!За постоянность! [50 дней на форуме]Настоящий игродел!2 место на HellRoom Jam #5, Контраст...
API: GameMaker Studio 2
Сообщений: 2734


« Ответ #371 : Январь 09, 2016, 19:33:48 »

Ой. Забыл же самое главное.
Он не доделан. 
Записан

Коты - Мирители
Gans
Новичок
*

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

API: Game Maker 8.0 Pro
Сообщений: 10


« Ответ #372 : Январь 09, 2016, 19:50:33 »

Ой. Забыл же самое главное.
Он не доделан. 

Там более менее понятно, принцип и ход мыслей. А то я начинаю городить кучу лишнего, так что мне и так пойдет.
Записан
geroy231
GM Pro user
*

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

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



« Ответ #373 : Январь 09, 2016, 21:52:25 »

Доброго времени суток! Товарищи, подскажите,как проще всего реализовать предмет, который занимает несколько ячеек. Т.е в данном примере каждый предмет занимает одну ячейку в массиве. Мы перебираем ячейки пока не находим свободную и записываем в нее данные предмета. Допустим, есть предмет который должен занимать три ячейки по горизонтали, как это можно сделать, ведь например первая ячейка может быть свободна а следующая занята. Каша в голове, помогите придти к истине.
Есть пример инвентаря на ds_grid, как раз что бы работать сразу с несколькими ячейками. Выложу в понедельник, когда дома буду.
Записан

Gans
Новичок
*

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

API: Game Maker 8.0 Pro
Сообщений: 10


« Ответ #374 : Январь 09, 2016, 21:59:16 »

Доброго времени суток! Товарищи, подскажите,как проще всего реализовать предмет, который занимает несколько ячеек. Т.е в данном примере каждый предмет занимает одну ячейку в массиве. Мы перебираем ячейки пока не находим свободную и записываем в нее данные предмета. Допустим, есть предмет который должен занимать три ячейки по горизонтали, как это можно сделать, ведь например первая ячейка может быть свободна а следующая занята. Каша в голове, помогите придти к истине.
Есть пример инвентаря на ds_grid, как раз что бы работать сразу с несколькими ячейками. Выложу в понедельник, когда дома буду.

Было бы здорово, любой пример пригодится. Если он еще и с комментариями, цены нет.
Записан
Страниц: 1 ... 23 24 [25] 26 27 28   Вверх
  Печать  
 
Перейти в:  

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