SilentPhil
Norland
GM Pro user
Репутация: 479
Offline
Пол:  Награды: ![Первое место на HellRoom Jam #7 [Hell in Your Fridge] Первое место на HellRoom Jam #7 [Hell in Your Fridge]](http://forum.hellroom.ru/awards/9f62be4ccdd73fb5efadd1f34c96ed53_hj7_gold_original.gif)  ![За постоянность! [50 дней на форуме] За постоянность! [50 дней на форуме]](http://forum.hellroom.ru/awards/d09ba76b977b84fd4f5dcfae1f2918ff_hellroomforum_time_copper.gif) ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ...
API: GameMaker Studio 2
Деятельность: GML, Pixel Art
Сообщений: 1363
|
 |
« Ответ #390 : Февраль 20, 2017, 04:47:10 » |
|
Всем привет! Никто не подскажет, как можно заменить многочисленно используемый execute_string? В GMS эта функция, увы, вырезана с корнями.
Пересмотром архитектуры кода. Если вам нужен execute_string, значит вы делаете что-то не так. Опишите свой юзкейс.
|
|
|
|
|
Записан
|
|
|
|
Aliery
Новичок
Репутация: 0
Offline
API: GameMaker Studio Pro
Сообщений: 2
|
 |
« Ответ #391 : Апрель 09, 2017, 20:25:32 » |
|
У меня вот тоже возникла проблема с вашим примером в GMS...Вроде все настроил, все ставится, поднимается, в общем работает, а из-за отсутствия функции execute_string я не понимаю как поменять значения, которые берутся из переменных act_on и act_off соответственно....Сможете подсказать альтернативу?
|
|
|
|
|
Записан
|
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол:  Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](http://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif)  
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
 |
« Ответ #392 : Апрель 09, 2017, 20:57:20 » |
|
У меня вот тоже возникла проблема с вашим примером в GMS...Вроде все настроил, все ставится, поднимается, в общем работает, а из-за отсутствия функции execute_string я не понимаю как поменять значения, которые берутся из переменных act_on и act_off соответственно....Сможете подсказать альтернативу?
Для чего вы её используете? Какая цель? К примеру, если с помощью execute_string вы получаете название ресурса: execute_string('return s_'+string(number)), эту функцию в gms можно заменить на asset_get_index('s_'+string(number))
|
|
|
|
|
Записан
|
|
|
|
Aliery
Новичок
Репутация: 0
Offline
API: GameMaker Studio Pro
Сообщений: 2
|
 |
« Ответ #393 : Апрель 09, 2017, 22:01:57 » |
|
if (n_x_1 != -1) { if (txt[n_x_1,n_y_1]='') { txt[n_x_1,n_y_1]=other.name; spr[n_x_1,n_y_1]=other.sprite_index; item[n_x_1,n_y_1]=1; name_obj[n_x_1,n_y_1]=other.object_index; max_number[n_x_1,n_y_1]=1; act_on[n_x_1,n_y_1] = other.act_on; act_off[n_x_1,n_y_1] = other.act_off; item_type[n_x_1,n_y_1] = other.item_type; r_weap = true; execute_string('act_on[n_x_1,n_y_1]'); Вот кусок кода из примера инвентаря. Как я понял там сначала идет оператор switch(определение клеток), затем условия проверки слота и добавление предмета в слот. Переменная act_on отвечает за действие предмета на персонажа, но я не понял как использовать ее правильно, чтобы все работало. Спс за подсказду, попробую воспользоваться ей. А с помощью ds_list, ds_map можно ли сделать? PS. Файл "Пример инвентаря и экипировки", Обект "obj_item_base".
|
|
|
|
« Последнее редактирование: Апрель 09, 2017, 22:07:18 от Aliery »
|
Записан
|
|
|
|
Andrey_27
Новичок
Репутация: 0
Offline
API: GameMaker Studio Standard
Сообщений: 6
|
 |
« Ответ #394 : Январь 26, 2019, 23:53:25 » |
|
Всем привет. Подскажите пожалуйста, как можно сохранить пропорции инвентаря при смене параметров view_wview, view_hview. Кликабельная область смещается.
|
|
|
|
« Последнее редактирование: Январь 29, 2019, 15:23:11 от Andrey_27 »
|
Записан
|
|
|
|
Fur
Абы-какой
GM Pro user
Репутация: 463
Offline
Пол:  Награды:  ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![Третье место на HellRoom Jam #9 [Flucoldache] Третье место на HellRoom Jam #9 [Flucoldache]](http://forum.hellroom.ru/awards/bb4b4f1479909ce4eb3764370bdb2375_hj9_bronze-1.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](http://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673
Лисяток тебе.
|
 |
« Ответ #395 : Январь 27, 2019, 00:01:50 » |
|
Примеры существуют для изучения, а не для копипасты в свои проекты. Если ты не удосужился понять, как что работает и почитать о Draw GUI, то уж извиняй.
|
|
|
|
|
Записан
|
В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях. Hyperflex
|
|
|
Andrey_27
Новичок
Репутация: 0
Offline
API: GameMaker Studio Standard
Сообщений: 6
|
 |
« Ответ #396 : Январь 29, 2019, 15:35:01 » |
|
Отрисовка в Draw GUI к сожалению не решила проблему. Объект сползает в сторону от спрайта. Не могу понять в чём дело.
|
|
|
|
|
Записан
|
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол:  Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](http://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif)  
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
 |
« Ответ #397 : Январь 29, 2019, 15:47:11 » |
|
Отрисовка в Draw GUI к сожалению не решила проблему. Объект сползает в сторону от спрайта. Не могу понять в чём дело.
Какой объект? Что означает "сползает"? Что именно у вас не так с кликабельностью и как вы её реализуете?
|
|
|
|
|
Записан
|
|
|
|
Andrey_27
Новичок
Репутация: 0
Offline
API: GameMaker Studio Standard
Сообщений: 6
|
 |
« Ответ #398 : Январь 29, 2019, 16:12:24 » |
|
Если взять пример инвентаря 1.0078 и попробовать реализовать зум при помощи view_wview, view_hview (колесо мыши) получается, что клетки инвентаря и их содержимое будут находится там где нужно, а вот клик по ячейкам уже не сработает. Меняя view_hview нужно будет кликать возле инвентаря а не по ячейкам. И чем больше меняется параметр view_hview, тем левее будет находится кликабельная область. Вот и получается, чтоб схватить предмет из ячейки, нужно кликать где-то в стороне, а не под спрайтом.
|
|
|
|
|
Записан
|
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол:  Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](http://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif)  
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
 |
« Ответ #399 : Январь 29, 2019, 16:14:25 » |
|
У вас абсолютные координаты у ячеек? Скиньте кусок кода, который отрисовывает ячейки и кусок кода, который отрабатывает нажатие.
|
|
|
|
|
Записан
|
|
|
|
Andrey_27
Новичок
Репутация: 0
Offline
API: GameMaker Studio Standard
Сообщений: 6
|
 |
« Ответ #400 : Январь 29, 2019, 16:16:38 » |
|
Отрисовка в Draw GUI не помогла приклеить инвентарь так, чтоб он не реагировал на зум
|
|
|
|
|
Записан
|
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол:  Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](http://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif)  
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
 |
« Ответ #401 : Январь 29, 2019, 17:00:03 » |
|
Отрисовка в Draw GUI не помогла приклеить инвентарь так, чтоб он не реагировал на зум
Чтобы инвентарь не реагировал на зум - вам нужно сделать координаты нажатия относительными. Проверять нажатие относительно экрана, а не относительно комнаты.
|
|
|
|
|
Записан
|
|
|
|
Andrey_27
Новичок
Репутация: 0
Offline
API: GameMaker Studio Standard
Сообщений: 6
|
 |
« Ответ #402 : Январь 29, 2019, 18:42:48 » |
|
Отрисовка x=view_xview+1377; y=view_yview+32;
for (slot_x=0; slot_x<inv_width_x; slot_x+=1) { for (slot_y=0; slot_y<inv_height_y; slot_y+=1) { draw_sprite(sprite_index,image_index,x+slot_x*slot_width_x,y+slot_y*slot_height_y); if (txt[slot_x,slot_y]!='' && txt[slot_x,slot_y]!='empty') { draw_sprite(spr[slot_x,slot_y],image_index,x+slot_x*slot_width_x,y+slot_y*slot_height_y); if item[slot_x,slot_y]!=1 {draw_text(x+5+slot_x*slot_width_x,y+slot_y*slot_height_y,item[slot_x,slot_y])}; }}}
if position_meeting(mouse_x,mouse_y,self) { depth = -3; klick_x=floor((mouse_x-x)/slot_width_x); klick_y=floor((mouse_y-y)/slot_height_y);
if (txt[klick_x,klick_y]!='' && txt[klick_x,klick_y]!='empty') { draw_text(x-237,y+290,txt[klick_x,klick_y]); }}
if (inv_txt!='') { depth = -4; draw_sprite(inv_spr,image_index,mouse_x-50,mouse_y-45); }
Left Pressed if (visible and inv_txt='' and obj_inv_weapon.inv_txt='' ) {{ klick_x=floor((mouse_x-x)/slot_width_x); klick_y=floor((mouse_y-y)/slot_height_y); if (txt[klick_x,klick_y]!='') { switch (name_obj[klick_x,klick_y]) { case obj_hp_2: global.health+=10; break;}}}
if (txt[klick_x,klick_y]!='') { with (obj_inv_weapon) { n_x_1 = -1; n_y_1 = -1; n_x_2 = -1; n_y_2 = -1; switch (other.item_type[other.klick_x,other.klick_y]) {
case 0: asset_get_index(other.act_on[other.klick_x,other.klick_y]); break; case 1: n_x_1 = 0; n_y_1 = 1; n_x_2 = 2; n_y_2 = 1; break; ...
|
|
|
|
|
Записан
|
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол:  Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](http://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif)  
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
 |
« Ответ #403 : Январь 29, 2019, 19:22:26 » |
|
1) Оформление кода плохое, он не читаем. Пробелы ставьте везде, а не только в некоторых местах, фигурные скобки и вовсе расставлены непонятным образом, я даже одной не досчитал. Так же, используйте табуляцию и [code][/code] для вставки кода на форуме. x = view_xview + 1377; y = view_yview + 32;
for(slot_x=0; slot_x<inv_width_x; slot_x++) { for(slot_y=0; slot_y<inv_height_y; slot_y++) { draw_sprite(sprite_index, image_index, x + slot_x * slot_width_x, y + slot_y * slot_height_y); if (txt[slot_x,slot_y] != "" && txt[slot_x,slot_y] !="empty") { draw_sprite(spr[slot_x,slot_y], image_index, x + slot_x * slot_width_x, y + slot_y * slot_height_y); if item[slot_x,slot_y] !=1 { draw_text(x + 5 + slot_x * slot_width_x, y + slot_y * slot_height_y, item[slot_x,slot_y]); } } } }
if position_meeting(mouse_x, mouse_y, self) { depth = -3; klick_x = floor((mouse_x - x) / slot_width_x); klick_y = floor((mouse_y - y) / slot_height_y); if (txt[klick_x,klick_y] != "" && txt[klick_x,klick_y] != "empty") { draw_text(x-237,y+290,txt[klick_x,klick_y]); } }
if (inv_txt! = "") { depth = -4; draw_sprite(inv_spr, image_index, mouse_x - 50,mouse_y - 45); }
2) Вы используете непонятные числа. 32 и 1377 - это числа для вызова Сатаны? Откуда они? Что они означают? Забейте их в переменные и сделайте относительными, если 32 - это высота спрайта, то так и пишите sprite_get_height(sprite). Так же, по коду у вас бывают значения по типу 5, 237, 290, 45, 50 - это безобразие. 3) Использование абсолютных координат. В klick_x=floor((mouse_x-x)/slot_width_x); вы используте mouse_x и x - эти координаты указаны относительно комнаты, используйте display_get_gui_height, display_get_gui_width или относительно вида (учитывать view_xview, view_yview, view_wport, view_hport), координаты мыши так же относительно экрана, а не комнаты.
|
|
|
|
|
Записан
|
|
|
|
Andrey_27
Новичок
Репутация: 0
Offline
API: GameMaker Studio Standard
Сообщений: 6
|
 |
« Ответ #404 : Январь 29, 2019, 19:32:32 » |
|
Понял, спасибо. Попробую сделать переменные относительными. + поставил 
|
|
|
|
|
Записан
|
|
|
|
|