PDA

View Full Version : "If" problems?



Nimono
03-05-2007, 05:48 PM
Ugh, sorry for all the help topics. >_<

I'm having a little problem with my "if" statements, I think. Here is the script that is giving me troubles:

// Warp Machine- When used, this Item will warp Link to a random location on the current screen. If used on certain combos, however, this
// item will warp you to a specific location on the current screen, or to a new screen altogether, depending on the combo you're on.
// Variables:
// Magic- Magic required to use, in 32nds of a Container.
// ComboO1- Special Warp Combo 1- Overworld Use. Warps to another combo on same screen.
// ComboO2- Special Warp Combo 2- Overworld Use. See above.
// ComboO3- Special Warp Combo 3- Overworld Use. Again, see above.
// ComboO4- Special Warp Combo 4- Overworld Use.
// ComboO5- Special Warp Combo 5- Overworld Use.
// ComboO6- Special Warp Combo 6- Overworld Use.
// ComboONS1-NS3- New-Screen Special Warp Combos- Overworld Use. These combos warp you to a new screen, specified by a certain piece of code.
// ComboDNS1-NS3- Same as above, only Dungeon Use.
// ComboD1- Special Warp Combo 1- Dungeon Use. Same as Overworld Use.
// ComboD2- Special Warp Combo 2- Dungeon Use. See above.
// ComboD3- Special Warp Combo 3- Dungeon Use. Again, see above.
// ComboD4- Special Warp Combo 4- Dungeon Use.
// ComboD5- Special Warp Combo 5- Dungeon Use.
// ComboD6- Special Warp Combo 6- Dungeon Use.
// LinkXOld- Link's X-coordinate before warping. Leave this alone.
// LinkYOld- Link's Y-coordinate before warping. Leave this alone, too.
// LinkXY- Self explanatory.
// RandomX- Randomized X-position. Changing this has no effect on anything. :P
// RandomY- Randomized Y-position. Leave this alone.
// RandomXY- Stay away from this.

import "std.zh"
item script Warper
{
int Magic = 128;
int ComboO1 = 199;
int ComboO2 = 208;
int ComboO3 = 200;
int ComboO4 = 394;
int ComboO5 = 0;
int ComboO6 = 0;
int ComboONS1 = 0;
int ComboONS2 = 0;
int ComboONS3 = 0;
int ComboD1 = 0;
int ComboD2 = 0;
int ComboD3 = 0;
int ComboD4 = 0;
int ComboD5 = 0;
int ComboD6 = 0;
int ComboDNS1 = 0;
int ComboDNS2 = 0;
int ComboDNS3 = 0;
int LinkXOld = 0;
int LinkYOld = 0;
int LinkXY = 0;
int RandomX = 0;
int RandomY = 0;
int RandomXY = 0;

void run()
{

ffc FFC1 = Screen->LoadFFC(32);
ffc FFC2 = Screen->LoadFFC(31);
ffc FFC3 = Screen->LoadFFC(30);
ffc FFC4 = Screen->LoadFFC(29);
ffc FFC5 = Screen->LoadFFC(28);
ffc FFC6 = Screen->LoadFFC(27);
if (Screen->ComboD [LinkXY] != ComboO1 || Screen->ComboD [LinkXY] != ComboO2 || Screen->ComboD [LinkXY] != ComboO3 || Screen->ComboD [LinkXY] != ComboO4 || Screen->ComboD [LinkXY] != ComboO5 || Screen->ComboD [LinkXY] != ComboO6 || Screen->ComboD [LinkXY] != ComboD1 || Screen->ComboD [LinkXY] != ComboD2 || Screen->ComboD [LinkXY] != ComboD3 || Screen->ComboD [LinkXY] != ComboD4 || Screen->ComboD [LinkXY] != ComboD5 || Screen->ComboD [LinkXY] != ComboD6 || Screen->ComboD [LinkXY] != ComboONS1 || Screen->ComboD [LinkXY] != ComboONS2 || Screen->ComboD [LinkXY] != ComboONS3 || Screen->ComboD [LinkXY] != ComboDNS1 || Screen->ComboD [LinkXY] != ComboDNS2 || Screen->ComboD [LinkXY] != ComboDNS3)
{
if (Link->MP >= Magic)
{
LinkXOld = Link->X;
LinkYOld = Link->Y;
RandomX = Floor(Rand(1) * 241);
RandomY = Floor(Rand(1) * 161);
float remainder = RandomX % 16;
if (remainder <= 8)
{
RandomX = RandomX - remainder;
}
else
{
RandomX = RandomX + 16 - remainder;
}
float remainderY = RandomY % 16;
if (remainderY <= 8)
{
RandomY = RandomY - remainderY;
}
else
{
RandomY = RandomY + 16 - remainderY;
}
RandomXY = (RandomY & 240)+(RandomX>>4);
LinkXY = (LinkYOld & 240)+(LinkXOld>>4);
if (Screen->ComboD [LinkXY] != ComboO1 || Screen->ComboD [LinkXY] != ComboO2 || Screen->ComboD [LinkXY] != ComboO3 || Screen->ComboD [LinkXY] != ComboO4 || Screen->ComboD [LinkXY] != ComboO5 || Screen->ComboD [LinkXY] != ComboO6 || Screen->ComboD [LinkXY] != ComboD1 || Screen->ComboD [LinkXY] != ComboD2 || Screen->ComboD [LinkXY] != ComboD3 || Screen->ComboD [LinkXY] != ComboD4 || Screen->ComboD [LinkXY] != ComboD5 || Screen->ComboD [LinkXY] != ComboD6 || Screen->ComboD [LinkXY] != ComboONS1 || Screen->ComboD [LinkXY] != ComboONS2 || Screen->ComboD [LinkXY] != ComboONS3 || Screen->ComboD [LinkXY] != ComboDNS1 || Screen->ComboD [LinkXY] != ComboDNS2 || Screen->ComboD [LinkXY] != ComboDNS3)
{
if (Screen->ComboS [RandomXY] != 0)
{
Link->X = LinkXOld;
Link->Y = LinkYOld;
}
else if (Screen->ComboS [RandomXY] == 0)
{
Link->X = RandomX;
Link->Y = RandomY;
Link->MP -= Magic;
Quit();
}
}
}
}
if (Screen->ComboD [LinkXY] == ComboO1 || Screen->ComboD [LinkXY] == ComboD1)
{
Link->X = FFC1->X;
Link->Y = FFC1->Y;
}
else if (Screen->ComboD [LinkXY] == ComboO2 || Screen->ComboD [LinkXY] == ComboD2)
{
Link->X = FFC2->X;
Link->Y = FFC2->Y;
}
else if (Screen->ComboD [LinkXY] == ComboO3 || Screen->ComboD [LinkXY] == ComboD3)
{
Link->X = FFC3->X;
Link->Y = FFC3->Y;
}
else if (Screen->ComboD [LinkXY] == ComboO4 || Screen->ComboD [LinkXY] == ComboD4)
{
Link->X = FFC4->X;
Link->Y = FFC4->Y;
}
else if (Screen->ComboD [LinkXY] == ComboO5 || Screen->ComboD [LinkXY] == ComboD5)
{
Link->X = FFC5->X;
Link->Y = FFC5->Y;
}
else if (Screen->ComboD [LinkXY] == ComboO6 || Screen->ComboD [LinkXY] == ComboD6)
{
Link->X = FFC6->X;
Link->Y = FFC6->Y;
}
}
}
(So what if it reveals my plans? :p)

Anyways, if you use this script while standing on one of those certain combos listed, instead of being randomly warped to another location on the same screen, it'll instead warp you to the location of a specified FFC. Problem is, even with my checks, it sometimes does the random warp, and sometimes, you get warped to the wrong FFC. I will go put up an example quest on some filespace so you can check it out firsthand...

Edit: Umm.... Oops. I forgot to post the link. >_< The test quest I made is here (http://www.geocities.com/pikachu_fan_13/Test.zip)...