User Tag List

Results 1 to 8 of 8

Thread: [Critical] Trying to set ComboS[] on layer 2 - ZC Terminates

  1. #1
    The Timelord
    QDB Manager
    ZC Developer
    ZoriaRPG's Avatar
    Join Date
    Oct 2006
    Location
    Prydon Academy
    Posts
    1,351
    Mentioned
    110 Post(s)
    Tagged
    1 Thread(s)
    vBActivity - Stats
    Points
    4,495
    Level
    21
    vBActivity - Bars
    Lv. Percent
    15.86%

    Sick Bug [Critical] Trying to set ComboS[] on layer 2 - ZC Terminates

    In trying to set ComboS for combos on layer 2, using SetLayerComboS(), I find that while it works perfect for Layer 1, if the same instructions are executed for layer 2, ZC crashes--meaning that ZC fully terminates.

    If you want the script that causes this, I can send it across. I can also provide a quest with the instructions implemented, for debugging.
    Last edited by Tamamo; 12-16-2015 at 05:17 PM.

  2. #2
    Here lies mero. Died by his own dumbassitude.
    Join Date
    May 2011
    Posts
    929
    Mentioned
    102 Post(s)
    Tagged
    2 Thread(s)
    vBActivity - Stats
    Points
    5,527
    Level
    23
    vBActivity - Bars
    Lv. Percent
    13.96%
    It may have something to do with Screen->LayerMap() or Screen->LayerScreen()
    Did you try putting in the values manually?
    Also what solidity value are you using?

    This is the function from std.zh
    Code:
    //A shorthand way to set a combo's solidity on the current layer.
    //Layer 0 is the screen itself.
    void SetLayerComboS(int layer, int pos, int solidity) {
      if (layer == 0)
        Screen->ComboS[pos] = solidity;
      else
        Game->SetComboSolid(Screen->LayerMap(layer), Screen->LayerScreen(layer), pos, solidity);
    }

  3. #3
    The Timelord
    QDB Manager
    ZC Developer
    ZoriaRPG's Avatar
    Join Date
    Oct 2006
    Location
    Prydon Academy
    Posts
    1,351
    Mentioned
    110 Post(s)
    Tagged
    1 Thread(s)
    vBActivity - Stats
    Points
    4,495
    Level
    21
    vBActivity - Bars
    Lv. Percent
    15.86%
    Here is the codeblock:

    Code:
    if ( SWITCHHOOK_USE_LAYER_2 ) { //2
    	for ( int q = 0; q < 176; q++ ) { 	//Pass through the screen combos to find a match...
    		int cmb2 = GetLayerComboI(2,q); 	//loading them along the way...
    		cmb2X = ComboX(q);	//The combo number for the for loop pass...
    		cmb2Y = ComboY(q);	//... X and Y
    		int loc = ComboAt(cmb2X,cmb2Y);
    
    		if ( ( comboF && cmb2 == comboF ) || ( !comboF && cmb2 == CF_SWITCHHOOK ) ) { 	
    						//If D0 is assigned a value above 0, check to see if it matches
    						//that combo inherent flag, otherwise check if it matches the one
    						//assigned to the constant CF_SWITCHSHOT.
    			
    						//If it does....
    			//int cmb_under = 
    			
    			//if ( switching ) {
    			if ( ComboCollision(loc,l) ) {	//and there is collision between that combo and the hookshot...
    				
    			//!We need to check every layer...too..for combos on layers higher than 0. (?)
    				l->DeadState = WDS_DEAD;	//Kill the hookshot.
    				
    				if ( sfx ) Game->PlaySound(sfx); //Play the sound defined in the item script,
    				if ( !sfx && SFX_SWITCHHOOK ) Game->PlaySound(SFX_SWITCHHOOK);  //or the constant if the item editor arg isn't set.
    					
    				//Store Link's starting position.
    				lx = CenterLinkX();
    				ly = CenterLinkY();
    					
    				//Store the switchshot combo to move.
    				cmb2X = ComboX(q);	//The combo number for the for loop pass...
    				cmb2Y = ComboY(q);	//... X and Y
    				cmb2D = GetLayerComboD(2,q); //The original data of the switchhook combo.
    				cmb2S = GetLayerComboS(2,q); //The original solidity of the switchshot combo. 
    				cmb2C = GetLayerComboC(2,q); //The original CSet.
    				
    				//Store the combo datum for the cumbo that Link is on. 
    				
    				cmb2LD = GetLayerComboD(2,ComboAt(Link->X, Link->Y)); //The combo under Link.
    				cmb2LS = GetLayerComboS(2,ComboAt(Link->X, Link->Y)); //The solidity of the combo under Link.
    				cmb2LX = GridX(lx); //The X position
    				cmb2LY = GridY(ly); //The Y position
    				cmb2L = ComboAt(cmb2LX,cmb2LY); //The screen index for that combo (Nth of 276).
    				cmb2LC = GetLayerComboC(2,ComboAt(Link->X, Link->Y));
    				
    					
    				//Change the combo where Link WAS, to the switchshot combo.
    				SetLayerComboD(2,cmb2L,cmb2D); //Set its data
    				SetLayerComboS(2,cmb2L,cmb2S); //and solidity.
    				
    				//!Setting solidity on layer 2 crashes ZC....BUT
    				//!the solidity seems to be preserved anyway.
    				
    				SetLayerComboC(2,cmb2L,cmb2C); //and CSet.
    				
    				
    				//Move Link to where the old switchshot combo that we moved, WAS.
    				Link->X = cmb2X;
    				Link->Y = cmb2Y;
    				
    					
    				//Move the switchshot combo to where LINK was before he moved...
    				SetLayerComboD(2,q,cmb2LD); //Set the combo data
    				SetLayerComboS(2,q,cmb2LS); //and the solidity.
    				SetLayerComboC(2,q,cmb2LC); //and CSet.
    
    				
    				this->Script = 0; //Free the FFC for later use.
    				this->Data = 0;
    				Quit();
    			}
    		}
    	}
    }
    Last edited by ZoriaRPG; 11-28-2015 at 04:17 AM.

  4. #4
    OBEY GOVERNMENT GOD ZC Developer
    Gleeok's Avatar
    Join Date
    Apr 2007
    Posts
    4,779
    Mentioned
    256 Post(s)
    Tagged
    10 Thread(s)
    vBActivity - Stats
    Points
    12,685
    Level
    32
    vBActivity - Bars
    Lv. Percent
    96.99%
    So, does this depend on other things or does this work:
    Code:
    ffc script crash{ void run(){ while(true){ Waitframe(); SetLayerComboS(2, 0, 0); } } }
    "Protocols of the Learned Elders of Zion" (British Royal Institute, 1906)
    "The International Jew: The World's Foremost Problem" �Henry Ford
    "Dope Inc. - Britain Opium War Against The U.S." (LaRouche; Konstandinos Kalimtgis; David Goldman; Jeffrey Stienberg, 1978)
    "Fundamental Laws: A Report of the 68th Convocation of the Rose Cross Order" 1916
    "War is a Racket" �Major General Smedley Butler
    "The Secret Destiny of America" �Manly P. Hall
    "A Strategy for Israel in the Nineteen Eighties" Oded Yinon (English Translation)
    The WWI Conspiracy: Part 1 - Part 2 - Part 3 "A New World Order"
    The War You Don't See
    Psywar

    �The modern theory of the perpetuation of debt has drenched the earth with blood, and crushed its inhabitants under burdens ever accumulating.� �Thomas Jefferson
    �It is well enough that the people of the nation do not understand our banking and monetary system for, if they did, I believe there would be a revolution before tomorrow morning.� �Henry Ford
    �Man will ultimately be governed by God or by tyrants.� �Benjamin Franklin

    This post contains the official Gleeok� seal of approval. Look for these and other posts in an area near you.

  5. #5
    Here lies mero. Died by his own dumbassitude.
    Join Date
    May 2011
    Posts
    929
    Mentioned
    102 Post(s)
    Tagged
    2 Thread(s)
    vBActivity - Stats
    Points
    5,527
    Level
    23
    vBActivity - Bars
    Lv. Percent
    13.96%
    Confirmed with Gleeoks crash ffc script.
    I traced Screen->LayerMap and Screen->LayerScreen, and got the correct values so that's not the issue.

  6. #6
    Is this the end?
    ZC Developer
    Saffith's Avatar
    Join Date
    Jan 2001
    Age
    36
    Posts
    3,383
    Mentioned
    177 Post(s)
    Tagged
    6 Thread(s)
    vBActivity - Stats
    Points
    6,213
    Level
    24
    vBActivity - Bars
    Lv. Percent
    33.39%
    You don't have the same problem with ComboD, ComboI, etc., right? For some reason, the code for SetComboSolid is different than the others, and it appears to calculate the screen incorrectly.
    [tèknoláiz]

    ffcscript.zh 1.1.1 - Updated 2014-08-19
    ghost.zh 2.8.4 - Updated 2019-07-15
    tango.zh 1.3.2 - Updated 2019-08-01

  7. #7
    The Timelord
    QDB Manager
    ZC Developer
    ZoriaRPG's Avatar
    Join Date
    Oct 2006
    Location
    Prydon Academy
    Posts
    1,351
    Mentioned
    110 Post(s)
    Tagged
    1 Thread(s)
    vBActivity - Stats
    Points
    4,495
    Level
    21
    vBActivity - Bars
    Lv. Percent
    15.86%
    Quote Originally Posted by Saffith View Post
    You don't have the same problem with ComboD, ComboI, etc., right? For some reason, the code for SetComboSolid is different than the others, and it appears to calculate the screen incorrectly.
    It was only ComboS, although i didn't use ComboF, or ComboT in the code where I had this problem. I used ComboD, ComboC, and ComboI--all three worked with no errors--but ComboS caused it to crash. I'll send you the whole script, if you wish.

  8. #8
    Is this the end?
    ZC Developer
    Saffith's Avatar
    Join Date
    Jan 2001
    Age
    36
    Posts
    3,383
    Mentioned
    177 Post(s)
    Tagged
    6 Thread(s)
    vBActivity - Stats
    Points
    6,213
    Level
    24
    vBActivity - Bars
    Lv. Percent
    33.39%
    This should be fixed now.
    [tèknoláiz]

    ffcscript.zh 1.1.1 - Updated 2014-08-19
    ghost.zh 2.8.4 - Updated 2019-07-15
    tango.zh 1.3.2 - Updated 2019-08-01

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
About us
Armageddon Games is a game development group founded in 1997. We are extremely passionate about our work and our inspirations are mostly drawn from games of the 8-bit and 16-bit era.
Social