const int FLAG_SHOP_ITEM_1 = 100; const int FLAG_SHOP_ITEM_2 = 101; const int FLAG_SHOP_ITEM_3 = 102; const int CMB_SHOP_ITEM = 2500; const int SHOP_PRICE_Y_OFFSET = 18; const int SHOP_PRICE_X_OFFSET = -4; const int SFX_BUYITEM = 63; const int SHOP_STRING_LAYER = 2; const int SHOP_STRING_SHADOW_X_OFFSET = 1; const int SHOP_STRING_SHADOW_Y_OFFSET = 1; const int SHOP_STRING_BG_COLOUR = 0x0F; const int SHOP_STRING_FG_COLOUR = 0x01; ffc script Automatic_Z3_Shop { void run(int shop_id) { item shopitems[3]; shopdata sd = Game->LoadShopData(shop_id); for ( int q = 0; q < 176; ++q ) { //FInd the flags and place the items if ( Screen->ComboF[q] == FLAG_SHOP_ITEM_1 ) { Screen->ComboD[q] = CMB_SHOP_ITEM; shopitems[0] = Screen->CreateItem(sd->Item[0]); shopitems[0]->X = ComboX(q); shopitems[0]->Y = ComboY(q); shopitems[0]->HitXOffset = -32768; shopitems[0]->PString = sd->String[0]; shopitems[0]->PStringFlags |= 0x04; } if ( Screen->ComboF[q] == FLAG_SHOP_ITEM_2 ) { Screen->ComboD[q] = CMB_SHOP_ITEM; shopitems[1] = Screen->CreateItem(sd->Item[1]); shopitems[1]->X = ComboX(q); shopitems[1]->Y = ComboY(q); shopitems[1]->HitXOffset = -32768; shopitems[1]->PString = sd->String[1]; shopitems[1]->PStringFlags |= 0x04; } if ( Screen->ComboF[q] == FLAG_SHOP_ITEM_3 ) { Screen->ComboD[q] = CMB_SHOP_ITEM; shopitems[2] = Screen->CreateItem(sd->Item[2]); shopitems[2]->X = ComboX(q); shopitems[2]->Y = ComboY(q); shopitems[2]->HitXOffset = -32768; shopitems[2]->PString = sd->String[2]; shopitems[2]->PStringFlags |= 0x04; } } while(1) { //Draw the prices Screen->DrawString( SHOP_STRING_LAYER, shopitems[0]->X+SHOP_PRICE_X_OFFSET+SHOP_STRING_SHADOW_X_OFFSET, shopitems[0]->Y+SHOP_PRICE_Y_OFFSET+SHOP_STRING_SHADOW_Y_OFFSET, FONT_Z3_SMALL, SHOP_STRING_BG_COLOUR, 0, 0, Game->GetMessage(sd->String[0]), OP_OPAQUE); Screen->DrawString( SHOP_STRING_LAYER, shopitems[0]->X+SHOP_PRICE_X_OFFSET, shopitems[0]->Y+SHOP_PRICE_Y_OFFSET, FONT_Z3_SMALL, SHOP_STRING_FG_COLOUR, 0, 0, Game->GetMessage(sd->String[0]), OP_OPAQUE); Screen->DrawString( SHOP_STRING_LAYER, shopitems[1]->X+SHOP_PRICE_X_OFFSET+SHOP_STRING_SHADOW_X_OFFSET, shopitems[0]->Y+SHOP_PRICE_Y_OFFSET+SHOP_STRING_SHADOW_Y_OFFSET, FONT_Z3_SMALL, SHOP_STRING_BG_COLOUR, 0, 0, Game->GetMessage(sd->String[1]), OP_OPAQUE); Screen->DrawString( SHOP_STRING_LAYER, shopitems[1]->X+SHOP_PRICE_X_OFFSET, shopitems[0]->Y+SHOP_PRICE_Y_OFFSET, FONT_Z3_SMALL, SHOP_STRING_FG_COLOUR, 0, 0, Game->GetMessage(sd->String[1]), OP_OPAQUE); Screen->DrawString( SHOP_STRING_LAYER, shopitems[2]->X+SHOP_PRICE_X_OFFSET+SHOP_STRING_SHADOW_X_OFFSET, shopitems[0]->Y+SHOP_PRICE_Y_OFFSET+SHOP_STRING_SHADOW_Y_OFFSET, FONT_Z3_SMALL, SHOP_STRING_BG_COLOUR, 0, 0, Game->GetMessage(sd->String[2]), OP_OPAQUE); Screen->DrawString( SHOP_STRING_LAYER, shopitems[2]->X+SHOP_PRICE_X_OFFSET, shopitems[0]->Y+SHOP_PRICE_Y_OFFSET, FONT_Z3_SMALL, SHOP_STRING_FG_COLOUR, 0, 0, Game->GetMessage(sd->String[2]), OP_OPAQUE); for ( int q = 0; q < 3; ++q ) { if ( PressedBuyButton() ) { if ( Link->Dir == DIR_UP ) { if ( Game->Counter[CR_RUPEES] >= sd->Price[q] ) { if ( Below(shopitems[q]) { if ( DistXY(shopitems[q], 12) ) { Audio->PlaySound(SFX_BUYITEM); Game->DCounter[CR_RUPEES] += sd->Price[q]; shopitems[q]->Pickup = IP_HOLDUP; shopitems[q]->HitXOffset = 0; shopitems[q]->X = Link->X; shopitems[q]->Y = Link->Y; } } } } } } Waitframe(); } } }