Item containers

Started by Gepard, Sun 11/04/2010 13:47:43

Previous topic - Next topic

Gepard

I have the following script in "while player stands on region":

Code: ags
if (IsKeyPressed(83)==1) { //while key "S" is pressed
  		gObsah.Visible = true; //simple gui shows up...
      container.Text = "container:"; //...with this label. The name can be anything for example wardrobe or box etc.
      if (GetGlobalInt(103)==0) {
        object[3].Visible = true;
        object[4].Visible = true;
        object[5].Visible = true;
        }

      if (GetGlobalInt(103)==1) {
        object[4].Visible = true;
        object[5].Visible = true;
        }

      if (GetGlobalInt(103)==2) {
        object[3].Visible = true;
        object[5].Visible = true;
        }

      if (GetGlobalInt(103)==3) {
        object[3].Visible = true;
        object[4].Visible = true;
        }

      if (GetGlobalInt(103)==4) {
        object[3].Visible = true;
        }

      if (GetGlobalInt(103)==5) {
        object[4].Visible = true;
        }

      if (GetGlobalInt(103)==6) {
        object[5].Visible = true;
        }

      else {}
      }
}


After clicking on a certain object there is this:

Code: ags
if (carry+9 <= carryweight) {  
object[3].Visible = false;
 player.AddInventory (ibeans);
 if (GetGlobalInt(103)==0) {
 SetGlobalInt (103,1);
}
 if (GetGlobalInt(103)==2) {
 SetGlobalInt (103, 6);
   }
 if (GetGlobalInt(103)==3) {
 SetGlobalInt (103, 5);
   }
 if (GetGlobalInt(103)==4) {
 SetGlobalInt (103, 7);
   }
}


As you can see it is really long script. What I wish is to simplify this in any way. Any suggestions please?
Drink up me 'arties! Yo ho!

Matti

#1
The first if-part can be shortened to this:

Code: ags

  if (GetGlobalInt(103)==0 || GetGlobalInt(103)==2 || GetGlobalInt(103)==3  || GetGlobalInt(103)==4) object[3].Visible = true;
  if (GetGlobalInt(103)==0 || GetGlobalInt(103)==1 || GetGlobalInt(103)==3  || GetGlobalInt(103)==5) object[4].Visible = true;
  if (GetGlobalInt(103)==0 || GetGlobalInt(103)==1 || GetGlobalInt(103)==2  || GetGlobalInt(103)==6) object[5].Visible = true;


The second one doesn't need the brackets:

Code: ags

 if (GetGlobalInt(103)==0) SetGlobalInt (103, 1);
 if (GetGlobalInt(103)==2) SetGlobalInt (103, 6);
 if (GetGlobalInt(103)==3) SetGlobalInt (103, 5);
 if (GetGlobalInt(103)==4) SetGlobalInt (103, 7);

Gepard

Thanks for the reply. Seems I have found even easier solution. Everytime character stands on the region and presses "S" key I let the script to show all the objects. However, when he clicks on selected object, corresponding item it will be added to his inventory and the object will move outside the room coordinates so its not visible anymore :) Next time all three objects are shown, but player can only see the remaining two.
Drink up me 'arties! Yo ho!

SMF spam blocked by CleanTalk