У меня есть магазин, который я пытаюсь настроить, который запускается всеми учетными записями внутри отладчика, но абсолютно ничего не делает.
У меня есть такой набор:
o_Shop
- игрок взаимодействует, чтобы создать слой внутри комнаты0
o_Shop_setup
- Создание массива, создание события:
global.inventory[1, 1] = "Mines"; //Item Name
global.inventory[1, 2] = sp_Blue_mine_UI; //Item Sprite
global.inventory[1, 3] = 50; //Cost
global.inventory[1, 4] = MINE_NUMBER; //Current Inventory
global.inventory[1, 5] = MINE_NUMBER_MAXIMUM; //Maximum amount
//HE Ammo
global.inventory[2, 1] = "HE Ammo"; //Item Name
global.inventory[2, 2] = sp_ammoHE; //Item Sprite
global.inventory[2, 3] = 5; //Cost
global.inventory[2, 4] = AMMO_AMOUNT; //Current Inventory
global.inventory[2, 5] = AMMO_AMOUNT_MAXIMUM; //Maximum amount
Затем я использую следующие объекты, которые обращаются к этому массиву:
o_item_parent - родитель o_shop_Mines / o_shop_AmmoHE
- Внутри события рисования o_item_parent:
draw_set_font(fnt_small);
draw_set_halign(fa_center);
draw_set_valign(fa_middle);
draw_set_color(c_white);
draw_text(x, y - 100, global.inventory[myid, 1]);
draw_sprite(global.inventory[myid, 2], 0, x, y - 30);
draw_set_color(c_yellow);
draw_text(x, y + 32, string(global.inventory[myid, 3]) + " Coins");
draw_set_color(c_white);
draw_text(x, y + 64, string(global.inventory[myid, 4]) + " / " + string(global.inventory[myid, 5]));
o_shop_Mines - наследует событие Draw без изменений.
o_shop_Mines Создать событие:
myid = 1;
o_shop_AmmoHE - наследует событие Draw без изменений.
o_shop_AmmoHe Создать событие:
myid = 2;
o_buy_parent - родитель o_buy_Mines / o_buy_ammoHE
o_buy_parent - Создать событие:
image_speed = 0;
image_index = 0;
o_buy_parent
Шаг Событие:
if (COINS >= global.inventory[myid, 3])
{
image_index = 0;
}
else
{
image_index = 1;
}
if (global.inventory[myid, 4] == global.inventory[myid, 5])
{
image_index = 1;
}
o_buy_parent
Событие, нажатое слева:
if (global.inventory[myid, 4] == global.inventory[myid, 5])
{
audio_play_sound(snd_gunReload, 1, false);
}
else if (COINS < global.inventory[myid, 3])
{
audio_play_sound(snd_game_over, 1, false);
}
else
{
//audio play sound snd_purchase_complete
COINS -= global.inventory[myid, 3];
global.inventory[myid,4]++;
}
o_buy_Mines
- наследует шаговое событие / левое нажатое событие от o_buy_parent
Внутри o_buy_Mines
Создать событие:
myid = 1;
event_inherited();
o_buy_ammoHE
- наследует шаговое событие / левое нажатое событие от o_buy_parent
Внутри o_buy_ammoHE
Создать событие:
myid = 2;
event_inherited();
Внутри o_buy_ammoHE
Создать событие:
myid = 2;
event_inherited();
Внутри o_buy_ammoHE
Левое нажатие Событие:
if (global.inventory[myid, 4] == global.inventory[myid, 5])
{
audio_play_sound(snd_gunReload, 1, false);
}
else if (COINS < global.inventory[myid, 3])
{
audio_play_sound(snd_game_over, 1, false);
}
else
{
//audio play sound snd_purchase_complete
COINS -= global.inventory[myid, 3];
global.inventory[myid,4]++; //breakpoint triggers fine, does nothing.
//Have also tried the below line, doesn't work, but commented out currently:
//AMMO_AMOUNT += 5;
}
Все переменные в ALL CAPS являются глобальными переменными, созданными с помощью метода globalvar внутри o_init
o_init is inside of room ->
rm_LoadingScreen`
rm_LoadingScreen
ничего не делает, но удерживает этот объект, который не является постоянным, этот объект содержит
оператор switch, который может изменить STATE = GameState
(enum)
`STATE = GameState.menu` is called by default which calls
scr_menuLoader();
break;
Все работает, кроме магазина. Это сработало вчера, но у меня проблемы с отслеживанием того, что я сломал. Как и в настоящее время, код увеличивает число, отображаемое на экране, на
draw_text(x, y + 64, string(global.inventory[myid, 4]) + " / " + string (global.inventory[myid, 5]));
но глобальная переменная AMMO_AMOUNT не меняется. Отладчик показывает, что он никогда не меняется.
Может кто-нибудь дать отзыв или второй взгляд? Я смотрел на это часами и просто не вижу проблемы.