Jump to content

Photo

Help with GB Shield Script?


  • Please log in to reply
1 reply to this topic

#1 Shadowblitz16

Shadowblitz16

    Illustrious

  • Members

Posted 26 April 2018 - 09:57 AM

can someone help me with my GB Shield Script?

It doesn't seem to be staying in the shielded state

it also seems that when I stab it makes link's tiles go blank

import "std.zh"

// Item IDs
const int I_GBSHIELD1      = 93;  // The item with the gbshield script
const int I_GBSHIELD1_MOD1 = 144; // The tile mod item for not shielding
const int I_GBSHIELD1_MOD2 = 143; // The tile mod item for shielding
const int I_GBSHIELD2      = 1;
const int I_GBSHIELD2_MOD1 = 1;
const int I_GBSHIELD2_MOD2 = 1;
const int I_GBSHIELD3      = 1;
const int I_GBSHIELD3_MOD1 = 1;
const int I_GBSHIELD3_MOD2 = 1;

const int SFX_GBSHIELD = 17; //Shield active SFX

int shieldItem;   //Shield item to give (set by item script, reset each frame)
int shieldButton; //0 - A, 1 - B

global script GBShield_Global
{
	void run()
	{
		//Initializations
		bool shieldInput;
		bool shieldOn;

		while(true)
		{
			shieldInput = false;			
			if (Link->PressA && HasShield(0)) shieldInput = true;
			if (Link->PressB && HasShield(1)) shieldInput = true;
					
			int eqA=GetEquipmentA();
			int eqB=GetEquipmentB();
					
			if (HasShield(0) || HasShield(1)) 
			{
				//Give Shield
				if (eqA == I_GBSHIELD1 && Link->Item[I_GBSHIELD1] == false) Link->Item[I_GBSHIELD1]=true;
						
				//Switch Shield State
				if (shieldInput)
				{
					//Remove Idle Shield Item
					if      ((eqA == I_GBSHIELD1 || eqB == I_GBSHIELD1) && Link->Item[I_GBSHIELD1_MOD1] == true) Link->Item[I_GBSHIELD1_MOD1]=false;
					else if ((eqA == I_GBSHIELD2 || eqB == I_GBSHIELD2) && Link->Item[I_GBSHIELD1_MOD1] == true) Link->Item[I_GBSHIELD2_MOD1]=false;
					else if ((eqA == I_GBSHIELD3 || eqB == I_GBSHIELD3) && Link->Item[I_GBSHIELD1_MOD1] == true) Link->Item[I_GBSHIELD3_MOD1]=false;
				
					//Give Active Shield Item
					if      ((eqA == I_GBSHIELD1 || eqB == I_GBSHIELD1) && Link->Item[I_GBSHIELD1_MOD1] == false) Link->Item[I_GBSHIELD1_MOD2]=true;
					else if ((eqA == I_GBSHIELD2 || eqB == I_GBSHIELD2) && Link->Item[I_GBSHIELD1_MOD1] == false) Link->Item[I_GBSHIELD2_MOD2]=true;
					else if ((eqA == I_GBSHIELD3 || eqB == I_GBSHIELD3) && Link->Item[I_GBSHIELD1_MOD1] == false) Link->Item[I_GBSHIELD3_MOD2]=true;
					
					//Set shield to on and play sound
					if (!shieldOn)Game->PlaySound(SFX_GBSHIELD); //Play the sound
					shieldOn=true; //Set shield state to off
				}
				else if(!shieldInput)
				{
					//Give Idle Shield Item
					if      ((eqA == I_GBSHIELD1 || eqB == I_GBSHIELD1) && Link->Item[I_GBSHIELD1_MOD1] == false) Link->Item[I_GBSHIELD1_MOD1]=true;
					else if ((eqA == I_GBSHIELD2 || eqB == I_GBSHIELD2) && Link->Item[I_GBSHIELD2_MOD1] == false) Link->Item[I_GBSHIELD2_MOD1]=true;
					else if ((eqA == I_GBSHIELD3 || eqB == I_GBSHIELD3) && Link->Item[I_GBSHIELD3_MOD1] == false) Link->Item[I_GBSHIELD3_MOD1]=true;
				
					//Remove Active Shield Item
					if      ((eqA == I_GBSHIELD1 || eqB == I_GBSHIELD1) && Link->Item[I_GBSHIELD1_MOD1] == true) Link->Item[I_GBSHIELD1_MOD2]=false;
					else if ((eqA == I_GBSHIELD2 || eqB == I_GBSHIELD2) && Link->Item[I_GBSHIELD2_MOD1] == true) Link->Item[I_GBSHIELD2_MOD2]=false;
					else if ((eqA == I_GBSHIELD3 || eqB == I_GBSHIELD3) && Link->Item[I_GBSHIELD3_MOD1] == true) Link->Item[I_GBSHIELD3_MOD2]=false;
					
					//Set shield to on and play sound
					if (shieldOn) Game->PlaySound(SFX_GBSHIELD); //Play the sound
					shieldOn=false; //Set shield state to off
				}
			}
			else
			{
				//Take Shield
				if (Link->Item[shieldItem]==true) Link->Item[shieldItem]=false; //Remove the shield
			
				//Remove Idle Shield Item
				if      ((eqA == I_GBSHIELD1 || eqB == I_GBSHIELD1) && Link->Item[I_GBSHIELD1_MOD1] == true) Link->Item[I_GBSHIELD1_MOD1]=false;
				else if ((eqA == I_GBSHIELD2 || eqB == I_GBSHIELD2) && Link->Item[I_GBSHIELD2_MOD1] == true) Link->Item[I_GBSHIELD2_MOD1]=false;
				else if ((eqA == I_GBSHIELD3 || eqB == I_GBSHIELD3) && Link->Item[I_GBSHIELD3_MOD1] == true) Link->Item[I_GBSHIELD3_MOD1]=false;
				
				//Remove Active Shield Item
				if      ((eqA == I_GBSHIELD1 || eqB == I_GBSHIELD1) && Link->Item[I_GBSHIELD1_MOD2] == true) Link->Item[I_GBSHIELD1_MOD2]=false;
				else if ((eqA == I_GBSHIELD2 || eqB == I_GBSHIELD2) && Link->Item[I_GBSHIELD2_MOD2] == true) Link->Item[I_GBSHIELD2_MOD2]=false;
				else if ((eqA == I_GBSHIELD3 || eqB == I_GBSHIELD3) && Link->Item[I_GBSHIELD3_MOD2] == true) Link->Item[I_GBSHIELD3_MOD2]=false;
			}
			Waitframe(); //Needed at bottom of while(true) loop
		}
	}
}

ahh I fixed it as soon as posting this I just had to check of input not press and make sure I am only running it when link is idle or walking



#2 Shadowblitz16

Shadowblitz16

    Illustrious

  • Members

Posted 04 May 2018 - 10:19 PM

This can be deleted




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users