Author Topic: How to change graphic for buttons in GUI - when it loads with mouseover  (Read 228 times)

Hi,

I know how to change a buttons graphic in a GUI:

Code: Adventure Game Studio
  1. button.NormalGraphic = 123;
  2.  

These are for buttons which show inventory items that are there (graphic=123) or not there yet (graphic=456) - they don't need to be clicked, and have no script attached.

But what about when a GUI is invisible? Or, when it's visible, and drops down from the the top with mousover? Can I have code which 'prepares' the graphic for when the GUI is visible or partly visible? (I'm using gIconBar 'when mouse moves over the top of the screen').

Which makes it hard, since I know the code, but not where to put it :/
In rep_exec in global script??...

Gurok

  • Rottwheelers
  • When life hands you lemons, combine them with the mop
    • I can help with AGS tutoring
    •  
    • Best Innovation Award Winner 2016, for improving and extending the AGS scripting language
    •  
    • I can help with proof reading
    •  
    • I can help with scripting
    •  
  • Gurok worked on a game that was nominated for an AGS Award!Gurok worked on a game that won an AGS Award!
Rather than approaching this from the perspective of trying to pre-empt the GUI being displayed, I'd suggest you look at AGS' built-in events.
There are two events associated with inventory items, eEventAddInventory and eEventLoseInventory. These events fire whenever an inventory item is added or removed, respectively.

Since you're concerned only with having a different graphic when items are present, we can filter these events so that we only pay attention to those that matter: the first item added and the last item removed.
You'll need an InventoryWindow to track this, but I presume you're already using one for the aforementioned GUI.

Add or amend the on_event and on_game_start functions in your global script like so:

Code: Adventure Game Studio
  1. bool wasInventoryEmpty;
  2.  
  3. function game_start()
  4. {
  5.   wasInventoryEmpty = invMyWindow.ItemCount == 0;
  6. }
  7.  
  8. function on_event(EventType event, int data)
  9. {
  10.     if(event == eEventAddInventory)
  11.     {
  12.         if(wasInventoryEmpty && invMyWindow.ItemCount > 0) // First item(s) were added
  13.         {
  14.             button.NormalGraphic = 123;
  15.             // Anything else you want to have shown when there are items present
  16.             wasInventoryEmpty = false;
  17.         }
  18.     }
  19.     else
  20.     {
  21.         if(event == eEventLoseInventory)
  22.         {
  23.             if(!wasInventoryEmpty && invMyWindow.ItemCount == 0) // Last item was removed
  24.             {
  25.                 button.NormalGraphic = 456;
  26.                 // Anything else you want to have shown when there are no items present
  27.                 wasInventoryEmpty = true;
  28.             }
  29.         }
  30.     }
  31. }

where invMyWindow is your InventoryWindow.

Code: Adventure Game Studio
  1. function game_start() {
  2. ...
  3. wasInventoryEmpty = gInventory.ItemCount == 0;
  4. ...
  5. }
  6.  
  7. ...
  8.  
  9. function on_event(EventType event, int data)
  10. {
  11.     if(event == eEventAddInventory)
  12.     {
  13.         if(wasInventoryEmpty && gInventory.ItemCount > 0) // First item(s) were added
  14.         {
  15.                                         if (cJulius.HasInventory(iCarKeys)) {
  16.             Button1.NormalGraphic = 2231;
  17.                                         } else {
  18.                                                 Button1.NormalGraphic = 2244;
  19.                                         }
  20.                                         else if (cJulius.HasInventory(iFlowInductor)) {
  21.                                                 Button2.NormalGraphic = 2243;
  22.                                         } else {
  23.                                                 Button2.NormalGraphic = 2243;
  24.                                         }
  25.                                         else if (cJulius.HasInventory(iBackingPlate)) {
  26.                                                 Button3.NormalGraphic = 2233;
  27.                                         } else {
  28.                                                 Button3.NormalGraphic = 2246;
  29.                                         }
  30.                                         else if (cJulius.HasInventory(iCog)) {
  31.                                                 Button4.NormalGraphic = 2234;
  32.                                         } else {
  33.                                                 Button4.NormalGraphic = 2247;
  34.                                         }
  35.                                         else if (cJulius.HasInventory(iCarCoolant)) {
  36.                                                 Button5.NormalGraphic = 2235;
  37.                                         } else {
  38.                                                 Button5.NormalGraphic = 2248;
  39.                                         }
  40.                                         else if (cJulius.HasInventory(iOilContainer)) {
  41.                                                 Button6.NormalGraphic = 2239;
  42.                                         } else {
  43.                                                 Button6.NormalGraphic = 2252;
  44.                                         }
  45.                                         else if (cJulius.HasInventory(iCarPetrol)) {
  46.                                                 Button7.NormalGraphic = 2240;
  47.                                         } else {
  48.                                                 Button7.NormalGraphic = 2253;
  49.                                         }
  50.                                         else if (cJulius.HasInventory(iDialFace1)) {
  51.                                                 Button8.NormalGraphic = 2236;
  52.                                         } else {
  53.                                                 Button8.NormalGraphic = 2249;
  54.                                         }
  55.                                         else if (cJulius.HasInventory(iKeyboardKeys)) {
  56.                                                 Button9.NormalGraphic = 2238;
  57.                                         } else {
  58.                                                 Button9.NormalGraphic = 2251;
  59.                                         }
  60.                                         else if (cJulius.HasInventory(iFuzzyDice)) {
  61.                                                 Button10.NormalGraphic = 2237;
  62.                                         } else {
  63.                                                 Button10.NormalGraphic = 2250;
  64.                                         }
  65.                                         else if (cJulius.HasInventory(iElectricWireSilver)) {
  66.                                                 Button11.NormalGraphic = 2241;
  67.                                         } else {
  68.                                                 Button11.NormalGraphic = 2254;
  69.                                         }
  70.                                         else if (cJulius.HasInventory(iBobbleHead)) {
  71.                                                 Button12.NormalGraphic = 2240;
  72.                                         } else {
  73.                                                 Button12.NormalGraphic = 2255;
  74.                                         }
  75.                                         else if (cJulius.HasInventory(iGum)) {
  76.                                                 Button13.NormalGraphic = 2232;
  77.                                         } else {
  78.                                                 Button13.NormalGraphic = 2245;
  79.                                         }
  80.                                        
  81.                                         wasInventoryEmpty = false;
  82.  
  83.         }
  84.     }
  85.     else
  86.     {
  87.         if(event == eEventLoseInventory)
  88.         {
  89.             if(!wasInventoryEmpty && gInventory.ItemCount == 0) // Last item was removed
  90.             {
  91.                                                                 if (cJulius.HasInventory(iCarKeys)) {
  92.                                                                         Button1.NormalGraphic = 2231;
  93.                                                                 } else {
  94.                                                                         Button1.NormalGraphic = 2244;
  95.                                                                 }
  96.                                                                 else if (cJulius.HasInventory(iFlowInductor)) {
  97.                                                                         Button2.NormalGraphic = 2243;
  98.                                                                 } else {
  99.                                                                         Button2.NormalGraphic = 2243;
  100.                                                                 }
  101.                                                                 else if (cJulius.HasInventory(iBackingPlate)) {
  102.                                                                         Button3.NormalGraphic = 2233;
  103.                                                                 } else {
  104.                                                                         Button3.NormalGraphic = 2246;
  105.                                                                 }
  106.                                                                 else if (cJulius.HasInventory(iCog)) {
  107.                                                                         Button4.NormalGraphic = 2234;
  108.                                                                 } else {
  109.                                                                         Button4.NormalGraphic = 2247;
  110.                                                                 }
  111.                                                                 else if (cJulius.HasInventory(iCarCoolant)) {
  112.                                                                         Button5.NormalGraphic = 2235;
  113.                                                                 } else {
  114.                                                                         Button5.NormalGraphic = 2248;
  115.                                                                 }
  116.                                                                 else if (cJulius.HasInventory(iOilContainer)) {
  117.                                                                         Button6.NormalGraphic = 2239;
  118.                                                                 } else {
  119.                                                                         Button6.NormalGraphic = 2252;
  120.                                                                 }
  121.                                                                 else if (cJulius.HasInventory(iCarPetrol)) {
  122.                                                                         Button7.NormalGraphic = 2240;
  123.                                                                 } else {
  124.                                                                         Button7.NormalGraphic = 2253;
  125.                                                                 }
  126.                                                                 else if (cJulius.HasInventory(iDialFace1)) {
  127.                                                                         Button8.NormalGraphic = 2236;
  128.                                                                 } else {
  129.                                                                         Button8.NormalGraphic = 2249;
  130.                                                                 }
  131.                                                                 else if (cJulius.HasInventory(iKeyboardKeys)) {
  132.                                                                         Button9.NormalGraphic = 2238;
  133.                                                                 } else {
  134.                                                                         Button9.NormalGraphic = 2251;
  135.                                                                 }
  136.                                                                 else if (cJulius.HasInventory(iFuzzyDice)) {
  137.                                                                         Button10.NormalGraphic = 2237;
  138.                                                                 } else {
  139.                                                                         Button10.NormalGraphic = 2250;
  140.                                                                 }
  141.                                                                 else if (cJulius.HasInventory(iElectricWireSilver)) {
  142.                                                                         Button11.NormalGraphic = 2241;
  143.                                                                 } else {
  144.                                                                         Button11.NormalGraphic = 2254;
  145.                                                                 }
  146.                                                                 else if (cJulius.HasInventory(iBobbleHead)) {
  147.                                                                         Button12.NormalGraphic = 2240;
  148.                                                                 } else {
  149.                                                                         Button12.NormalGraphic = 2255;
  150.                                                                 }
  151.                                                                 else if (cJulius.HasInventory(iGum)) {
  152.                                                                         Button13.NormalGraphic = 2232;
  153.                                                                 } else {
  154.                                                                         Button13.NormalGraphic = 2245;
  155.                                                                 }
  156.  
  157.                 wasInventoryEmpty = true;
  158.             }
  159.         }
  160.     }
  161. }
  162.  

"ERROR: .ItemCount is not a public member of GUI."

Gurok

  • Rottwheelers
  • When life hands you lemons, combine them with the mop
    • I can help with AGS tutoring
    •  
    • Best Innovation Award Winner 2016, for improving and extending the AGS scripting language
    •  
    • I can help with proof reading
    •  
    • I can help with scripting
    •  
  • Gurok worked on a game that was nominated for an AGS Award!Gurok worked on a game that won an AGS Award!
Okay, you do not need that wasInventory empty stuff. I perhaps misunderstood your initial statement. Here's a revised on_event:

Add spoiler tag for Hidden:
Code: Adventure Game Studio
  1. function on_event(EventType event, int data)
  2. {
  3.         if(event == eEventAddInventory)
  4.         {
  5.                 if (cJulius.HasInventory(iCarKeys)) {
  6.                         Button1.NormalGraphic = 2231;
  7.                 } else {
  8.                         Button1.NormalGraphic = 2244;
  9.                 }
  10.                 if (cJulius.HasInventory(iFlowInductor)) {
  11.                         Button2.NormalGraphic = 2243;
  12.                 } else {
  13.                         Button2.NormalGraphic = 2243;
  14.                 }
  15.                 if (cJulius.HasInventory(iBackingPlate)) {
  16.                         Button3.NormalGraphic = 2233;
  17.                 } else {
  18.                         Button3.NormalGraphic = 2246;
  19.                 }
  20.                 if (cJulius.HasInventory(iCog)) {
  21.                         Button4.NormalGraphic = 2234;
  22.                 } else {
  23.                         Button4.NormalGraphic = 2247;
  24.                 }
  25.                 if (cJulius.HasInventory(iCarCoolant)) {
  26.                         Button5.NormalGraphic = 2235;
  27.                 } else {
  28.                         Button5.NormalGraphic = 2248;
  29.                 }
  30.                 if (cJulius.HasInventory(iOilContainer)) {
  31.                         Button6.NormalGraphic = 2239;
  32.                 } else {
  33.                         Button6.NormalGraphic = 2252;
  34.                 }
  35.                 if (cJulius.HasInventory(iCarPetrol)) {
  36.                         Button7.NormalGraphic = 2240;
  37.                 } else {
  38.                         Button7.NormalGraphic = 2253;
  39.                 }
  40.                 if (cJulius.HasInventory(iDialFace1)) {
  41.                         Button8.NormalGraphic = 2236;
  42.                 } else {
  43.                         Button8.NormalGraphic = 2249;
  44.                 }
  45.                 if (cJulius.HasInventory(iKeyboardKeys)) {
  46.                         Button9.NormalGraphic = 2238;
  47.                 } else {
  48.                         Button9.NormalGraphic = 2251;
  49.                 }
  50.                 if (cJulius.HasInventory(iFuzzyDice)) {
  51.                         Button10.NormalGraphic = 2237;
  52.                 } else {
  53.                         Button10.NormalGraphic = 2250;
  54.                 }
  55.                 if (cJulius.HasInventory(iElectricWireSilver)) {
  56.                         Button11.NormalGraphic = 2241;
  57.                 } else {
  58.                         Button11.NormalGraphic = 2254;
  59.                 }
  60.                 if (cJulius.HasInventory(iBobbleHead)) {
  61.                         Button12.NormalGraphic = 2240;
  62.                 } else {
  63.                         Button12.NormalGraphic = 2255;
  64.                 }
  65.                 if (cJulius.HasInventory(iGum)) {
  66.                         Button13.NormalGraphic = 2232;
  67.                 } else {
  68.                         Button13.NormalGraphic = 2245;
  69.                 }
  70.         }
  71.         else
  72.         {
  73.                 if(event == eEventLoseInventory)
  74.                 {
  75.                         if (cJulius.HasInventory(iCarKeys)) {
  76.                                 Button1.NormalGraphic = 2231;
  77.                         } else {
  78.                                 Button1.NormalGraphic = 2244;
  79.                         }
  80.                         if (cJulius.HasInventory(iFlowInductor)) {
  81.                                 Button2.NormalGraphic = 2243;
  82.                         } else {
  83.                                 Button2.NormalGraphic = 2243;
  84.                         }
  85.                         if (cJulius.HasInventory(iBackingPlate)) {
  86.                                 Button3.NormalGraphic = 2233;
  87.                         } else {
  88.                                 Button3.NormalGraphic = 2246;
  89.                         }
  90.                         if (cJulius.HasInventory(iCog)) {
  91.                                 Button4.NormalGraphic = 2234;
  92.                         } else {
  93.                                 Button4.NormalGraphic = 2247;
  94.                         }
  95.                         if (cJulius.HasInventory(iCarCoolant)) {
  96.                                 Button5.NormalGraphic = 2235;
  97.                         } else {
  98.                                 Button5.NormalGraphic = 2248;
  99.                         }
  100.                         if (cJulius.HasInventory(iOilContainer)) {
  101.                                 Button6.NormalGraphic = 2239;
  102.                         } else {
  103.                                 Button6.NormalGraphic = 2252;
  104.                         }
  105.                         if (cJulius.HasInventory(iCarPetrol)) {
  106.                                 Button7.NormalGraphic = 2240;
  107.                         } else {
  108.                                 Button7.NormalGraphic = 2253;
  109.                         }
  110.                         if (cJulius.HasInventory(iDialFace1)) {
  111.                                 Button8.NormalGraphic = 2236;
  112.                         } else {
  113.                                 Button8.NormalGraphic = 2249;
  114.                         }
  115.                         if (cJulius.HasInventory(iKeyboardKeys)) {
  116.                                 Button9.NormalGraphic = 2238;
  117.                         } else {
  118.                                 Button9.NormalGraphic = 2251;
  119.                         }
  120.                         if (cJulius.HasInventory(iFuzzyDice)) {
  121.                                 Button10.NormalGraphic = 2237;
  122.                         } else {
  123.                                 Button10.NormalGraphic = 2250;
  124.                         }
  125.                         if (cJulius.HasInventory(iElectricWireSilver)) {
  126.                                 Button11.NormalGraphic = 2241;
  127.                         } else {
  128.                                 Button11.NormalGraphic = 2254;
  129.                         }
  130.                         if (cJulius.HasInventory(iBobbleHead)) {
  131.                                 Button12.NormalGraphic = 2240;
  132.                         } else {
  133.                                 Button12.NormalGraphic = 2255;
  134.                         }
  135.                         if (cJulius.HasInventory(iGum)) {
  136.                                 Button13.NormalGraphic = 2232;
  137.                         } else {
  138.                                 Button13.NormalGraphic = 2245;
  139.                         }
  140.                 }
  141.         }
  142. }

A couple of things:
The else if structure you posted would not work. You can't have an else if for an else block. You do not need the else before your ifs. The if is enough.
By InventoryWindow, I did not mean the GUI you're using, but a type of object called an InventoryWindow. Are you trying to emulate that using buttons? Using an inventory window would be much simpler, in my opinion:


Edit: I restructured the whole thing. "data" for the eEventAddInventory and eEventLoseInventory events is the ID of the added or removed inventory item. You can use this to eliminate a lot of unnecessary ifs.

Code: Adventure Game Studio
  1. function on_event(EventType event, int data)
  2. {
  3.         switch(event)
  4.         {
  5.                 case eEventAddInventory:
  6.                         switch(data)
  7.                         {
  8.                                 case iCarKeys.ID:
  9.                                         Button1.NormalGraphic = 2231;
  10.                                         break;
  11.                                 // This graphic stays the same
  12.                                 /*
  13.                                 case iFlowInductor.ID:
  14.                                         Button2.NormalGraphic = 2243;
  15.                                         break;
  16.                                 */
  17.                                 case iBackingPlate.ID:
  18.                                         Button3.NormalGraphic = 2234;
  19.                                         break;
  20.                                 case iCog.ID:
  21.                                         Button4.NormalGraphic = 2235;
  22.                                         break;
  23.                                 case iCarCoolant.ID:
  24.                                         Button5.NormalGraphic = 2239;
  25.                                         break;
  26.                                 case iOilContainer.ID:
  27.                                         Button6.NormalGraphic = 2240;
  28.                                         break;
  29.                                 case iCarPetrol.ID:
  30.                                         Button7.NormalGraphic = 2231;
  31.                                         break;
  32.                                 case iDialFace1.ID:
  33.                                         Button8.NormalGraphic = 2236;
  34.                                         break;
  35.                                 case iKeyboardKeys.ID:
  36.                                         Button9.NormalGraphic = 2238;
  37.                                         break;
  38.                                 case iFuzzyDice.ID:
  39.                                         Button10.NormalGraphic = 2237;
  40.                                         break;
  41.                                 case iElectricWireSilver.ID:
  42.                                         Button11.NormalGraphic = 2241;
  43.                                         break;
  44.                                 case iBobbleHead.ID:
  45.                                         Button12.NormalGraphic = 2240;
  46.                                         break;
  47.                                 case iGum.ID:
  48.                                         Button13.NormalGraphic = 2232;
  49.                                         break;
  50.                         }
  51.                         break;
  52.                 case eEventLoseInventory:
  53.                         switch(data)
  54.                         {
  55.                                 case iCarKeys.ID:
  56.                                         Button1.NormalGraphic = 2244;
  57.                                         break;
  58.                                 // This graphic stays the same
  59.                                 /*
  60.                                 case iFlowInductor.ID:
  61.                                         Button2.NormalGraphic = 2243;
  62.                                         break;
  63.                                 */
  64.                                 case iBackingPlate.ID:
  65.                                         Button3.NormalGraphic = 2246;
  66.                                         break;
  67.                                 case iCog.ID:
  68.                                         Button4.NormalGraphic = 2247;
  69.                                         break;
  70.                                 case iCarCoolant.ID:
  71.                                         Button5.NormalGraphic = 2248;
  72.                                         break;
  73.                                 case iOilContainer.ID:
  74.                                         Button6.NormalGraphic = 2252;
  75.                                         break;
  76.                                 case iCarPetrol.ID:
  77.                                         Button7.NormalGraphic = 2253;
  78.                                         break;
  79.                                 case iDialFace1.ID:
  80.                                         Button8.NormalGraphic = 2249;
  81.                                         break;
  82.                                 case iKeyboardKeys.ID:
  83.                                         Button9.NormalGraphic = 2251;
  84.                                         break;
  85.                                 case iFuzzyDice.ID:
  86.                                         Button10.NormalGraphic = 2250;
  87.                                         break;
  88.                                 case iElectricWireSilver.ID:
  89.                                         Button11.NormalGraphic = 2254;
  90.                                         break;
  91.                                 case iBobbleHead.ID:
  92.                                         Button12.NormalGraphic = 2255;
  93.                                         break;
  94.                                 case iGum.ID:
  95.                                         Button13.NormalGraphic = 2245;
  96.                                         break;
  97.                         }
  98.                         break;
  99.         }
  100. }
« Last Edit: 09 Nov 2017, 08:31 by Gurok »

I'm trying to use the gIconbar window, which is a panel at the top of the screen, autohiding, that has the inventory items, inventory, option menu and the load/save games button on it.


Ah, InvWindow code deleted :)

Now I only have the on_event function.

One final bug:
When I add all items, they all show colour-filled (ie. non-transparent) (correct)
When I add some items, some show colour filled, some show translucent (correct)
When I have *no* items, they all show colour-filled (should be all translucent)

What is wrong?

Gurok

  • Rottwheelers
  • When life hands you lemons, combine them with the mop
    • I can help with AGS tutoring
    •  
    • Best Innovation Award Winner 2016, for improving and extending the AGS scripting language
    •  
    • I can help with proof reading
    •  
    • I can help with scripting
    •  
  • Gurok worked on a game that was nominated for an AGS Award!Gurok worked on a game that won an AGS Award!
If you don't add any items, all of the buttons will show in the state you see in the editor.
Try using the translucent version as your graphic for each button in the editor.

You can add an InventoryWindow to any GUI, including the one you're using.
Though, I understand that it may not be exactly what you want -- you won't get the translucency effect.
« Last Edit: 09 Nov 2017, 10:19 by Gurok »

Khris

    • Lifetime Achievement Award Winner
    •  
    • I can help with play testing
    •  
    • I can help with scripting
    •  
    • I can help with translating
    •  
  • Khris worked on a game that was nominated for an AGS Award!
I'm trying to understand what's happening, because only adding some items works, but adding items only changes the buttons for those items. It should leave not added items' buttons untouched. So how on earth do those buttons all change to color-filled with only on_event in play? Doesn't make any sense.

bx83, did you remove all code you had tried earlier from rep_exec?

Gurok

  • Rottwheelers
  • When life hands you lemons, combine them with the mop
    • I can help with AGS tutoring
    •  
    • Best Innovation Award Winner 2016, for improving and extending the AGS scripting language
    •  
    • I can help with proof reading
    •  
    • I can help with scripting
    •  
  • Gurok worked on a game that was nominated for an AGS Award!Gurok worked on a game that won an AGS Award!
Khris, I had guessed that he was using the intermediate version of the code (above, in the hide tag).

Take a look at this image so far:


As you can see, the two images ('none' and 'all') are exactly the same - I want 'none' to be like the middle image ('some'). In other words, I want all to be saturated, none to be unsaturated, and some to be objects in the inventory saturated only.

Here's the code so far:

Code: Adventure Game Studio
  1. function on_event(EventType event, int data)
  2. {
  3.         if(event == eEventAddInventory)
  4.         {
  5.                 if (cJulius.HasInventory(iCarKeys)) {
  6.                         Button1.NormalGraphic = 2231;
  7.                 } else {
  8.                         Button1.NormalGraphic = 2244;
  9.                 }
  10.                 if (cJulius.HasInventory(iFlowInductor)) {
  11.                         Button2.NormalGraphic = 2243;
  12.                 } else {
  13.                         Button2.NormalGraphic = 2256;
  14.                 }
  15.                 if (cJulius.HasInventory(iBackingPlate)) {
  16.                         Button3.NormalGraphic = 2233;
  17.                 } else {
  18.                         Button3.NormalGraphic = 2246;
  19.                 }
  20.                 if (cJulius.HasInventory(iCog)) {
  21.                         Button4.NormalGraphic = 2234;
  22.                 } else {
  23.                         Button4.NormalGraphic = 2247;
  24.                 }
  25.                 if (cJulius.HasInventory(iCarCoolant)) {
  26.                         Button5.NormalGraphic = 2235;
  27.                 } else {
  28.                         Button5.NormalGraphic = 2248;
  29.                 }
  30.                 if (cJulius.HasInventory(iOilContainer)) {
  31.                         Button6.NormalGraphic = 2239;
  32.                 } else {
  33.                         Button6.NormalGraphic = 2252;
  34.                 }
  35.                 if (cJulius.HasInventory(iCarPetrol)) {
  36.                         Button7.NormalGraphic = 2240;
  37.                 } else {
  38.                         Button7.NormalGraphic = 2253;
  39.                 }
  40.                 if (cJulius.HasInventory(iDialFace1)) {
  41.                         Button8.NormalGraphic = 2236;
  42.                 } else {
  43.                         Button8.NormalGraphic = 2249;
  44.                 }
  45.                 if (cJulius.HasInventory(iKeyboardKeys)) {
  46.                         Button9.NormalGraphic = 2238;
  47.                 } else {
  48.                         Button9.NormalGraphic = 2251;
  49.                 }
  50.                 if (cJulius.HasInventory(iFuzzyDice)) {
  51.                         Button10.NormalGraphic = 2237;
  52.                 } else {
  53.                         Button10.NormalGraphic = 2250;
  54.                 }
  55.                 if (cJulius.HasInventory(iElectricWireSilver)) {
  56.                         Button11.NormalGraphic = 2241;
  57.                 } else {
  58.                         Button11.NormalGraphic = 2254;
  59.                 }
  60.                 if (cJulius.HasInventory(iBobbleHead)) {
  61.                         Button12.NormalGraphic = 2242;
  62.                 } else {
  63.                         Button12.NormalGraphic = 2255;
  64.                 }
  65.                 if (cJulius.HasInventory(iGum)) {
  66.                         Button13.NormalGraphic = 2232;
  67.                 } else {
  68.                         Button13.NormalGraphic = 2245;
  69.                 }
  70.        
  71.         }       else {
  72.                
  73.                 if (event == eEventLoseInventory)
  74.                 {
  75.                         if (cJulius.HasInventory(iCarKeys)) {
  76.                                 Button1.NormalGraphic = 2231;
  77.                         } else {
  78.                                 Button1.NormalGraphic = 2244;
  79.                         }
  80.                         if (cJulius.HasInventory(iFlowInductor)) {
  81.                                 Button2.NormalGraphic = 2243;
  82.                         } else {
  83.                                 Button2.NormalGraphic = 2256;
  84.                         }
  85.                         if (cJulius.HasInventory(iBackingPlate)) {
  86.                                 Button3.NormalGraphic = 2233;
  87.                         } else {
  88.                                 Button3.NormalGraphic = 2246;
  89.                         }
  90.                         if (cJulius.HasInventory(iCog)) {
  91.                                 Button4.NormalGraphic = 2234;
  92.                         } else {
  93.                                 Button4.NormalGraphic = 2247;
  94.                         }
  95.                         if (cJulius.HasInventory(iCarCoolant)) {
  96.                                 Button5.NormalGraphic = 2235;
  97.                         } else {
  98.                                 Button5.NormalGraphic = 2248;
  99.                         }
  100.                         if (cJulius.HasInventory(iOilContainer)) {
  101.                                 Button6.NormalGraphic = 2239;
  102.                         } else {
  103.                                 Button6.NormalGraphic = 2252;
  104.                         }
  105.                         if (cJulius.HasInventory(iCarPetrol)) {
  106.                                 Button7.NormalGraphic = 2240;
  107.                         } else {
  108.                                 Button7.NormalGraphic = 2253;
  109.                         }
  110.                         if (cJulius.HasInventory(iDialFace1)) {
  111.                                 Button8.NormalGraphic = 2236;
  112.                         } else {
  113.                                 Button8.NormalGraphic = 2249;
  114.                         }
  115.                         if (cJulius.HasInventory(iKeyboardKeys)) {
  116.                                 Button9.NormalGraphic = 2238;
  117.                         } else {
  118.                                 Button9.NormalGraphic = 2251;
  119.                         }
  120.                         if (cJulius.HasInventory(iFuzzyDice)) {
  121.                                 Button10.NormalGraphic = 2237;
  122.                         } else {
  123.                                 Button10.NormalGraphic = 2250;
  124.                         }
  125.                         if (cJulius.HasInventory(iElectricWireSilver)) {
  126.                                 Button11.NormalGraphic = 2241;
  127.                         } else {
  128.                                 Button11.NormalGraphic = 2254;
  129.                         }
  130.                         if (cJulius.HasInventory(iBobbleHead)) {
  131.                                 Button12.NormalGraphic = 2242;
  132.                         } else {
  133.                                 Button12.NormalGraphic = 2255;
  134.                         }
  135.                         if (cJulius.HasInventory(iGum)) {
  136.                                 Button13.NormalGraphic = 2232;
  137.                         } else {
  138.                                 Button13.NormalGraphic = 2245;
  139.                         }
  140.                 }
  141.         }
  142. }
  143.  

SOLVED :)
Here's the code:

Code: Adventure Game Studio
  1. function on_event(EventType event, int data)
  2. {
  3.         if (
  4.                 !cJulius.HasInventory(iCarKeys) &&
  5.                 !cJulius.HasInventory(iFlowInductor) &&
  6.                 !cJulius.HasInventory(iBackingPlate) &&
  7.                 !cJulius.HasInventory(iCog) &&
  8.                 !cJulius.HasInventory(iCarCoolant) &&
  9.                 !cJulius.HasInventory(iOilContainer) &&
  10.                 !cJulius.HasInventory(iCarPetrol) &&
  11.                 !cJulius.HasInventory(iDialFace1) &&
  12.                 !cJulius.HasInventory(iKeyboardKeys) &&
  13.                 !cJulius.HasInventory(iFuzzyDice) &&
  14.                 !cJulius.HasInventory(iElectricWireSilver) &&
  15.                 !cJulius.HasInventory(iBobbleHead) &&
  16.                 !cJulius.HasInventory(iGum)
  17.         )      
  18.         {
  19.                 Button1.NormalGraphic = 2244;
  20.                 Button2.NormalGraphic = 2256;
  21.                 Button3.NormalGraphic = 2246;
  22.                 Button4.NormalGraphic = 2247;
  23.                 Button5.NormalGraphic = 2248;
  24.                 Button6.NormalGraphic = 2252;
  25.                 Button7.NormalGraphic = 2253;
  26.                 Button8.NormalGraphic = 2249;
  27.                 Button9.NormalGraphic = 2251;
  28.                 Button10.NormalGraphic = 2250;
  29.                 Button11.NormalGraphic = 2254;
  30.                 Button12.NormalGraphic = 2255;
  31.                 Button13.NormalGraphic = 2245;
  32.         }
  33.        
  34.         if (event == eEventAddInventory || event == eEventLoseInventory)
  35.         {
  36.                 if (cJulius.HasInventory(iCarKeys)) {
  37.                         Button1.NormalGraphic = 2231;
  38.                 } else {
  39.                         Button1.NormalGraphic = 2244;
  40.                 }
  41.                 if (cJulius.HasInventory(iFlowInductor)) {
  42.                         Button2.NormalGraphic = 2243;
  43.                 } else {
  44.                         Button2.NormalGraphic = 2256;
  45.                 }
  46.                 if (cJulius.HasInventory(iBackingPlate)) {
  47.                         Button3.NormalGraphic = 2233;
  48.                 } else {
  49.                         Button3.NormalGraphic = 2246;
  50.                 }
  51.                 if (cJulius.HasInventory(iCog)) {
  52.                         Button4.NormalGraphic = 2234;
  53.                 } else {
  54.                         Button4.NormalGraphic = 2247;
  55.                 }
  56.                 if (cJulius.HasInventory(iCarCoolant)) {
  57.                         Button5.NormalGraphic = 2235;
  58.                 } else {
  59.                         Button5.NormalGraphic = 2248;
  60.                 }
  61.                 if (cJulius.HasInventory(iOilContainer)) {
  62.                         Button6.NormalGraphic = 2239;
  63.                 } else {
  64.                         Button6.NormalGraphic = 2252;
  65.                 }
  66.                 if (cJulius.HasInventory(iCarPetrol)) {
  67.                         Button7.NormalGraphic = 2240;
  68.                 } else {
  69.                         Button7.NormalGraphic = 2253;
  70.                 }
  71.                 if (cJulius.HasInventory(iDialFace1)) {
  72.                         Button8.NormalGraphic = 2236;
  73.                 } else {
  74.                         Button8.NormalGraphic = 2249;
  75.                 }
  76.                 if (cJulius.HasInventory(iKeyboardKeys)) {
  77.                         Button9.NormalGraphic = 2238;
  78.                 } else {
  79.                         Button9.NormalGraphic = 2251;
  80.                 }
  81.                 if (cJulius.HasInventory(iFuzzyDice)) {
  82.                         Button10.NormalGraphic = 2237;
  83.                 } else {
  84.                         Button10.NormalGraphic = 2250;
  85.                 }
  86.                 if (cJulius.HasInventory(iElectricWireSilver)) {
  87.                         Button11.NormalGraphic = 2241;
  88.                 } else {
  89.                         Button11.NormalGraphic = 2254;
  90.                 }
  91.                 if (cJulius.HasInventory(iBobbleHead)) {
  92.                         Button12.NormalGraphic = 2242;
  93.                 } else {
  94.                         Button12.NormalGraphic = 2255;
  95.                 }
  96.                 if (cJulius.HasInventory(iGum)) {
  97.                         Button13.NormalGraphic = 2232;
  98.                 } else {
  99.                         Button13.NormalGraphic = 2245;
  100.                 }
  101.         }
  102. }
  103.  

Gurok

  • Rottwheelers
  • When life hands you lemons, combine them with the mop
    • I can help with AGS tutoring
    •  
    • Best Innovation Award Winner 2016, for improving and extending the AGS scripting language
    •  
    • I can help with proof reading
    •  
    • I can help with scripting
    •  
  • Gurok worked on a game that was nominated for an AGS Award!Gurok worked on a game that won an AGS Award!
It's important to understand why something works. That first block of code is being called on EVERY event (enters room after fade in, among others). You could make things more efficient by putting the inner part of the if-block in game_start or as I suggested earlier, just making your buttons reflect the initial state of the inventory (all items translucent) in the editor.
« Last Edit: 09 Nov 2017, 23:09 by Gurok »

How would game_start call the code on events, or is it just once? This doesn't seem like a good idea to me.
How do I make the buttons reflect their state? In their own script? (RunScript)

Gurok

  • Rottwheelers
  • When life hands you lemons, combine them with the mop
    • I can help with AGS tutoring
    •  
    • Best Innovation Award Winner 2016, for improving and extending the AGS scripting language
    •  
    • I can help with proof reading
    •  
    • I can help with scripting
    •  
  • Gurok worked on a game that was nominated for an AGS Award!Gurok worked on a game that won an AGS Award!
The code to set the initial state of the buttons would be called just once -- when the game starts.
You could break it up like this:

Code: Adventure Game Studio
  1.     function game_start()
  2.     {
  3.         // Set the initial state of all icon bar buttons
  4.         Button1.NormalGraphic = 2244;
  5.         Button2.NormalGraphic = 2256;
  6.         Button3.NormalGraphic = 2246;
  7.         Button4.NormalGraphic = 2247;
  8.         Button5.NormalGraphic = 2248;
  9.         Button6.NormalGraphic = 2252;
  10.         Button7.NormalGraphic = 2253;
  11.         Button8.NormalGraphic = 2249;
  12.         Button9.NormalGraphic = 2251;
  13.         Button10.NormalGraphic = 2250;
  14.         Button11.NormalGraphic = 2254;
  15.         Button12.NormalGraphic = 2255;
  16.         Button13.NormalGraphic = 2245;
  17.     }
  18.  
  19.     function on_event(EventType event, int data)
  20.     {
  21.            
  22.             if (event == eEventAddInventory || event == eEventLoseInventory)
  23.             {
  24.                     if (cJulius.HasInventory(iCarKeys)) {
  25.                             Button1.NormalGraphic = 2231;
  26.                     } else {
  27.                             Button1.NormalGraphic = 2244;
  28.                     }
  29.                     if (cJulius.HasInventory(iFlowInductor)) {
  30.                             Button2.NormalGraphic = 2243;
  31.                     } else {
  32.                             Button2.NormalGraphic = 2256;
  33.                     }
  34.                     if (cJulius.HasInventory(iBackingPlate)) {
  35.                             Button3.NormalGraphic = 2233;
  36.                     } else {
  37.                             Button3.NormalGraphic = 2246;
  38.                     }
  39.                     if (cJulius.HasInventory(iCog)) {
  40.                             Button4.NormalGraphic = 2234;
  41.                     } else {
  42.                             Button4.NormalGraphic = 2247;
  43.                     }
  44.                     if (cJulius.HasInventory(iCarCoolant)) {
  45.                             Button5.NormalGraphic = 2235;
  46.                     } else {
  47.                             Button5.NormalGraphic = 2248;
  48.                     }
  49.                     if (cJulius.HasInventory(iOilContainer)) {
  50.                             Button6.NormalGraphic = 2239;
  51.                     } else {
  52.                             Button6.NormalGraphic = 2252;
  53.                     }
  54.                     if (cJulius.HasInventory(iCarPetrol)) {
  55.                             Button7.NormalGraphic = 2240;
  56.                     } else {
  57.                             Button7.NormalGraphic = 2253;
  58.                     }
  59.                     if (cJulius.HasInventory(iDialFace1)) {
  60.                             Button8.NormalGraphic = 2236;
  61.                     } else {
  62.                             Button8.NormalGraphic = 2249;
  63.                     }
  64.                     if (cJulius.HasInventory(iKeyboardKeys)) {
  65.                             Button9.NormalGraphic = 2238;
  66.                     } else {
  67.                             Button9.NormalGraphic = 2251;
  68.                     }
  69.                     if (cJulius.HasInventory(iFuzzyDice)) {
  70.                             Button10.NormalGraphic = 2237;
  71.                     } else {
  72.                             Button10.NormalGraphic = 2250;
  73.                     }
  74.                     if (cJulius.HasInventory(iElectricWireSilver)) {
  75.                             Button11.NormalGraphic = 2241;
  76.                     } else {
  77.                             Button11.NormalGraphic = 2254;
  78.                     }
  79.                     if (cJulius.HasInventory(iBobbleHead)) {
  80.                             Button12.NormalGraphic = 2242;
  81.                     } else {
  82.                             Button12.NormalGraphic = 2255;
  83.                     }
  84.                     if (cJulius.HasInventory(iGum)) {
  85.                             Button13.NormalGraphic = 2232;
  86.                     } else {
  87.                             Button13.NormalGraphic = 2245;
  88.                     }
  89.             }
  90.     }

That said, it would be EVEN SIMPLER to just follow my suggestion and use the translucent graphics for your buttons in the editor, thereby eliminating the block of code in game_start above.

Ah yes I see - slow smarts day :P