Konstruktor001
Посетитель

Репутация: 0
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
Пол:  Награды:  ![Второе место на HellRoom Jam #9 [Антибиотик] Второе место на HellRoom Jam #9 [Антибиотик]](http://forum.hellroom.ru/awards/195ce38974a80fb1fe0e6909737628c8_hj9_silver-1.gif)
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345
|
 |
« Ответ #361 : Ноябрь 15, 2015, 15:29:43 » |
|
покажи весь код, ( точнее весь фрагмент, где текст должен рисоваться )
|
|
|
|
|
Записан
|
|
|
|
Konstruktor001
Посетитель

Репутация: 0
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
Пол:  Награды:  ![Второе место на HellRoom Jam #9 [Антибиотик] Второе место на HellRoom Jam #9 [Антибиотик]](http://forum.hellroom.ru/awards/195ce38974a80fb1fe0e6909737628c8_hj9_silver-1.gif)
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
Пол: 
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
API: Game Maker 8.0 Pro
Сообщений: 10
|
 |
« Ответ #365 : Январь 09, 2016, 14:38:45 » |
|
Доброго времени суток! Товарищи, подскажите,как проще всего реализовать предмет, который занимает несколько ячеек. Т.е в данном примере каждый предмет занимает одну ячейку в массиве. Мы перебираем ячейки пока не находим свободную и записываем в нее данные предмета. Допустим, есть предмет который должен занимать три ячейки по горизонтали, как это можно сделать, ведь например первая ячейка может быть свободна а следующая занята. Каша в голове, помогите придти к истине.
|
|
|
|
|
Записан
|
|
|
|
|
S_Kleer
|
 |
« Ответ #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Награды: ![За постоянность! [10 дней на форуме] За постоянность! [10 дней на форуме]](http://forum.hellroom.ru/awards/35b6e985f89cc9a79a2bbfdd216390ca_hellroomforum_time_tin.gif)
API: GameMaker Studio Pro
Сообщений: 224
|
 |
« Ответ #367 : Январь 09, 2016, 16:21:23 » |
|
|
|
|
|
|
Записан
|
|
|
|
Gans
Новичок
Репутация: 0
Offline
API: Game Maker 8.0 Pro
Сообщений: 10
|
 |
« Ответ #368 : Январь 09, 2016, 16:38:39 » |
|
Делать проверку не по одной ячейки,а сразу по 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) Стек предмета Благодарю, попробую помудрить. Если есть возможность описать в общих чертах этот пункт 3) Ссылка из занятой ячейки в конкретный предмет (Допустим, предмет занимает 3 ячейки по горизонтали, при клике на последнюю или на среднюю, берём информацию из самой левой) или скинуть пример, что бы поковырять Добавлено: Январь 09, 2016, 16:40:43 Я находил данный пример. К сожалению он не запускается и там много иных фишек, которые отвлекают от сути, но все равно спасибо
|
|
|
|
|
Записан
|
|
|
|
|
S_Kleer
|
 |
« Ответ #369 : Январь 09, 2016, 19:02:54 » |
|
Прикрепил. Я этот пример как раз для хелрума и делал, но потом как-то забылось и бросилось...
Эдакий, движок инвентаря хотел сделать, где всё можно парой функций настроить.
|
|
|
|
Записан
|
Коты - Мирители
|
|
|
Gans
Новичок
Репутация: 0
Offline
API: Game Maker 8.0 Pro
Сообщений: 10
|
 |
« Ответ #370 : Январь 09, 2016, 19:14:55 » |
|
Прикрепил. Я этот пример как раз для хелрума и делал, но потом как-то забылось и бросилось...
Эдакий, движок инвентаря хотел сделать, где всё можно парой функций настроить.
Шикарно, буду ковырять, спасибо за помощь!
|
|
|
|
|
Записан
|
|
|
|
|
S_Kleer
|
 |
« Ответ #371 : Январь 09, 2016, 19:33:48 » |
|
Ой. Забыл же самое главное. Он не доделан. 
|
|
|
|
|
Записан
|
Коты - Мирители
|
|
|
Gans
Новичок
Репутация: 0
Offline
API: Game Maker 8.0 Pro
Сообщений: 10
|
 |
« Ответ #372 : Январь 09, 2016, 19:50:33 » |
|
Ой. Забыл же самое главное. Он не доделан.  Там более менее понятно, принцип и ход мыслей. А то я начинаю городить кучу лишнего, так что мне и так пойдет.
|
|
|
|
|
Записан
|
|
|
|
geroy231
GM Pro user
Репутация: 137
Offline
Пол:  Награды:  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](http://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif)
API: Game Maker 8.0 Pro
Сообщений: 952
|
 |
« Ответ #373 : Январь 09, 2016, 21:52:25 » |
|
Доброго времени суток! Товарищи, подскажите,как проще всего реализовать предмет, который занимает несколько ячеек. Т.е в данном примере каждый предмет занимает одну ячейку в массиве. Мы перебираем ячейки пока не находим свободную и записываем в нее данные предмета. Допустим, есть предмет который должен занимать три ячейки по горизонтали, как это можно сделать, ведь например первая ячейка может быть свободна а следующая занята. Каша в голове, помогите придти к истине.
Есть пример инвентаря на ds_grid, как раз что бы работать сразу с несколькими ячейками. Выложу в понедельник, когда дома буду.
|
|
|
|
|
Записан
|
|
|
|
Gans
Новичок
Репутация: 0
Offline
API: Game Maker 8.0 Pro
Сообщений: 10
|
 |
« Ответ #374 : Январь 09, 2016, 21:59:16 » |
|
Доброго времени суток! Товарищи, подскажите,как проще всего реализовать предмет, который занимает несколько ячеек. Т.е в данном примере каждый предмет занимает одну ячейку в массиве. Мы перебираем ячейки пока не находим свободную и записываем в нее данные предмета. Допустим, есть предмет который должен занимать три ячейки по горизонтали, как это можно сделать, ведь например первая ячейка может быть свободна а следующая занята. Каша в голове, помогите придти к истине.
Есть пример инвентаря на ds_grid, как раз что бы работать сразу с несколькими ячейками. Выложу в понедельник, когда дома буду. Было бы здорово, любой пример пригодится. Если он еще и с комментариями, цены нет.
|
|
|
|
|
Записан
|
|
|
|
|