PDA

View Full Version : *PORTAL* script



Gleeok
11-09-2007, 07:30 AM
Ahahaha!!! At long last I believe I have a non-buggy Portal script! (and yet I promise nothing...) Well, I was gonna make a ridiculously hard Portal demo and make someone beat it to get the password...but then I remembered I don't really like making lots and lots of puzzles. Oh well, whatever, I'll leave the puzzles to you guys. Here it is:


*EDIT* I've edited this to contain all three versions of PORTAL_item. Read below for what each do differently.

EDIT#2 - Here they are at last, at long last. And now i'll be taking a short break from scripting. :brainfried emoticon!!!:

EDIT #3 friggin billion....now you can't get stuck in a wall or warp shooters yada yada enjoy.

Portal item version 3 will recall the portals so you can fire them again
^^*RECOMMENDED*^^

. and portal item 2 will keep one of them active if there are two open portals or let you fire both again or vice-versa, But it's a bit tricky to use. Of coarse practice makes perfect.

(It's fixed now)Here is the Final version:


//D0 Cset of first portal
//D1 Cset of second portal
//D2 speed of portal gun

item script PORTAL_item_ver2{

void run(int cset, int cset2, int speed){

ffc portal1 = Screen->LoadFFC(29); //set hard coded ffc data here
ffc portal2 = Screen->LoadFFC(28); // and here




if(!((portal1->Data >= portal_data) && (portal1->Data <= portal_data+7))){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal1->X = Link->X;
portal1->Y = Link->Y - 16;
portal1->Vy = -speed;
portal1->Vx = 0;
portal1->Data = portal_data;
portal1->CSet = cset;
}
if(Link->Dir == 1) {
portal1->X = Link->X;
portal1->Y = Link->Y + 16;
portal1->Vy = speed;
portal1->Vx = 0;
portal1->Data = portal_data+1;
portal1->CSet = cset;
}
if(Link->Dir == 2) {
portal1->X = Link->X - 16;
portal1->Y = Link->Y;
portal1->Vx = -speed;
portal1->Vy = 0;
portal1->Data = portal_data+2;
portal1->CSet = cset;
}
if(Link->Dir == 3) {
portal1->X = Link->X + 16;
portal1->Y = Link->Y;
portal1->Vx = speed;
portal1->Vy = 0;
portal1->Data = portal_data+3;
portal1->CSet = cset;
}
}
else{
if(!((portal2->Data >= portal_data) && (portal2->Data <= portal_data+7))){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal2->X = Link->X;
portal2->Y = Link->Y - 16;
portal2->Vy = -speed;
portal2->Vx = 0;
portal2->Data = portal_data;
portal2->CSet = cset2;
}
if(Link->Dir == 1) {
portal2->X = Link->X;
portal2->Y = Link->Y + 16;
portal2->Vy = speed;
portal2->Vx = 0;
portal2->Data = portal_data+1;
portal2->CSet = cset2;
}
if(Link->Dir == 2) {
portal2->X = Link->X - 16;
portal2->Y = Link->Y;
portal2->Vx = -speed;
portal2->Vy = 0;
portal2->Data = portal_data+2;
portal2->CSet = cset2;
}
if(Link->Dir == 3) {
portal2->X = Link->X + 16;
portal2->Y = Link->Y;
portal2->Vx = speed;
portal2->Vy = 0;
portal2->Data = portal_data+3;
portal2->CSet = cset2;
}
}
else{ // if both portals are already set fire portal 1 again

if((portal1->Data > portal_data+3) && (portal1->Data <= portal_data+7)&&
(portal2->Data > portal_data+3) && (portal2->Data <= portal_data+7)){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal1->X = Link->X;
portal1->Y = Link->Y - 16;
portal1->Vy = -speed;
portal1->Vx = 0;
portal1->Data = portal_data;
portal1->CSet = cset;
}
if(Link->Dir == 1) {
portal1->X = Link->X;
portal1->Y = Link->Y + 16;
portal1->Vy = speed;
portal1->Vx = 0;
portal1->Data = portal_data+1;
portal1->CSet = cset;
}
if(Link->Dir == 2) {
portal1->X = Link->X - 16;
portal1->Y = Link->Y;
portal1->Vx = -speed;
portal1->Vy = 0;
portal1->Data = portal_data+2;
portal1->CSet = cset;
}
if(Link->Dir == 3) {
portal1->X = Link->X + 16;
portal1->Y = Link->Y;
portal1->Vx = speed;
portal1->Vy = 0;
portal1->Data = portal_data+3;
portal1->CSet = cset;
}
}
else{ // if not then fire portal 2 once more

if((portal2->Data >= portal_data+4) && (portal2->Data <= portal_data+7)){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal2->X = Link->X;
portal2->Y = Link->Y - 16;
portal2->Vy = -speed;
portal2->Vx = 0;
portal2->Data = portal_data;
portal2->CSet = cset2;
}
if(Link->Dir == 1) {
portal2->X = Link->X;
portal2->Y = Link->Y + 16;
portal2->Vy = speed;
portal2->Vx = 0;
portal2->Data = portal_data+1;
portal2->CSet = cset2;
}
if(Link->Dir == 2) {
portal2->X = Link->X - 16;
portal2->Y = Link->Y;
portal2->Vx = -speed;
portal2->Vy = 0;
portal2->Data = portal_data+2;
portal2->CSet = cset2;
}
if(Link->Dir == 3) {
portal2->X = Link->X + 16;
portal2->Y = Link->Y;
portal2->Vx = speed;
portal2->Vy = 0;
portal2->Data = portal_data+3;
portal2->CSet = cset2;
}
}
}
}} // end of else statements
}
}

item script PORTAL_item_ver3{

void run(int cset, int cset2, int speed){

ffc portal1 = Screen->LoadFFC(29); //set hard coded ffc data here
ffc portal2 = Screen->LoadFFC(28); // and here




if(!((portal1->Data >= portal_data) && (portal1->Data <= portal_data+7))){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal1->X = Link->X;
portal1->Y = Link->Y - 16;
portal1->Vy = -speed;
portal1->Vx = 0;
portal1->Data = portal_data;
portal1->CSet = cset;
}
if(Link->Dir == 1) {
portal1->X = Link->X;
portal1->Y = Link->Y + 16;
portal1->Vy = speed;
portal1->Vx = 0;
portal1->Data = portal_data+1;
portal1->CSet = cset;
}
if(Link->Dir == 2) {
portal1->X = Link->X - 16;
portal1->Y = Link->Y;
portal1->Vx = -speed;
portal1->Vy = 0;
portal1->Data = portal_data+2;
portal1->CSet = cset;
}
if(Link->Dir == 3) {
portal1->X = Link->X + 16;
portal1->Y = Link->Y;
portal1->Vx = speed;
portal1->Vy = 0;
portal1->Data = portal_data+3;
portal1->CSet = cset;
}
}
else{
if(!((portal2->Data >= portal_data) && (portal2->Data <= portal_data+7))){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal2->X = Link->X;
portal2->Y = Link->Y - 16;
portal2->Vy = -speed;
portal2->Vx = 0;
portal2->Data = portal_data;
portal2->CSet = cset2;
}
if(Link->Dir == 1) {
portal2->X = Link->X;
portal2->Y = Link->Y + 16;
portal2->Vy = speed;
portal2->Vx = 0;
portal2->Data = portal_data+1;
portal2->CSet = cset2;
}
if(Link->Dir == 2) {
portal2->X = Link->X - 16;
portal2->Y = Link->Y;
portal2->Vx = -speed;
portal2->Vy = 0;
portal2->Data = portal_data+2;
portal2->CSet = cset2;
}
if(Link->Dir == 3) {
portal2->X = Link->X + 16;
portal2->Y = Link->Y;
portal2->Vx = speed;
portal2->Vy = 0;
portal2->Data = portal_data+3;
portal2->CSet = cset2;
}
}
else{

portal2->Data = 1;
portal2->X = 0;
portal2->Y = 0;
portal1->Data = 1;
portal1->X = 0;
portal1->Y = 0;

}
}
}
}


//===================GLOBAL VARIABLES=====================
int portal_warp_delay = 0;
int enemy_portal_warp_delay = 0;

int portal_data = 160; // change this to be the first of 8 block combos for graphics

//make a block of 8 combos, the first 4 being gun projectile up, down, left, right in that order
//then make the next 4 the same used for open portal animation(no combo cycling)
//================================================== ======

//D0 - this ffc number
//D1 - other ffc number
// Ex: Set ffc 28 D0 to 28 and D1 to 29 then set ffc 29 D0 to 29 and D1 to 28. easy, huh?

ffc script PORTAL_FFC_ver4{ // BUGFIXED VERSION

void run(int this_ffc_number, int other_ffc_number){

ffc this_ffc = Screen->LoadFFC(this_ffc_number);
ffc other_ffc = Screen->LoadFFC(other_ffc_number);

int portal_set = 0;

int portal_position = 0;

bool portal_open = false;

int enemy_number = 0;
npc enemy;

this_ffc->Data = 1;this->Y = 0; this->X = 0;

while(true){

if(this_ffc->X < 14 || this_ffc->X > 226 || this_ffc->Y < 14 || this_ffc->Y > 146 ||
Link->X < 0 || Link->X > 240 || Link->Y < 0 || Link->Y > 160){
this_ffc->Data = 1; this->Y = 0; this->X = 0; portal_open = false;}
if(this_ffc->Data <= portal_data+3){ portal_open = false;}

if(portal_warp_delay > 0){ portal_warp_delay--;}
if(enemy_portal_warp_delay > 0){ enemy_portal_warp_delay--;}

if( (this->Data >= portal_data) && (this->Data <=portal_data+3) ){

if( (this_ffc->Vx < 0) && (Screen->ComboS[ComboAt(this_ffc->X-1, this_ffc->Y+8)] != 0)
&& (Screen->ComboT[ComboAt(this_ffc->X-1, this_ffc->Y+8)] != 3)){ portal_open = true;}

if( (this_ffc->Vx > 0) && (Screen->ComboS[ComboAt(this_ffc->X+16, this_ffc->Y+8)] != 0)
&& (Screen->ComboT[ComboAt(this_ffc->X+16, this_ffc->Y+8)] != 3)){ portal_open = true;}

if( (this_ffc->Vy < 0) && (Screen->ComboS[ComboAt(this_ffc->X+8, this_ffc->Y-1)] != 0)
&& (Screen->ComboT[ComboAt(this_ffc->X+8, this_ffc->Y-1)] != 3)){ portal_open = true;}

if( (this_ffc->Vy > 0) && (Screen->ComboS[ComboAt(this_ffc->X+8, this_ffc->Y+16)] != 0)
&& (Screen->ComboT[ComboAt(this_ffc->X+8, this_ffc->Y+16)] != 3)){ portal_open = true;}

}
if(portal_open){

if(Screen->ComboS[ComboAt(this_ffc->X+8, this_ffc->Y+8)] == 15){ portal_open = false;}
else{ this_ffc->Data = portal_data+4; this_ffc->Vx = 0; this_ffc->Vy = 0;}
}
if(portal_set == 0){

if(other_ffc->Data >= portal_data + 4){

if(portal_warp_delay == 0){

if ( (Link->X <= this_ffc->X + 8)&&(Link->X >= this_ffc->X -8)&&
(Link->Y <= this_ffc->Y + 8)&&(Link->Y >= this_ffc->Y -8) ){

portal_warp_delay = 60;
Link->X = other_ffc->X;
Link->Y = other_ffc->Y;
Game->PlaySound(36);
}
}
if(enemy_portal_warp_delay == 0){

enemy_number = Screen->NumNPCs();

while(enemy_number > 0){

enemy = Screen->LoadNPC(enemy_number);
if ( (this_ffc->X - 10 < enemy->X) && (this_ffc->X + 10 > enemy->X) &&
(this_ffc->Y - 10 < enemy->Y) && (this_ffc->Y + 10 > enemy->Y) &&
!(enemy->Tile==0) ){

enemy->X = other_ffc->X; enemy->Y = other_ffc->Y;
Game->PlaySound(35);enemy_portal_warp_delay = 80;
}
enemy_number--;
}
}
}
}
Waitframe();
}
}
}
It's currently set up to use ffc's 28 and 29. These are changable only once, before you compile it. Everything else is noted, just read.


Oh, one more thing. This will warp enemies too, as well as being able to cross over water combos. Want to make some nasty puzzles? I suggest using water...alot.;) Any non-walkable combo you don't want to open a portal near in fact. And believe it or not it would be quite easy to make 3 or 4 portals using this code. Only a few things would need to be tweaked.:D I might still do that just for fun. ...or maybe not.

Oops, I threw something together anyways. :) If you have any problems getting it to work, just download this: PORTAL_DEMO-635 (http://www.mediafire.com/?0jiywx5nm1f)( use 635 or 655 to play this.NOTE* THIS DEMO DOES NOT HAVE THE BUGFIXED SCRIPT.

...I swear if I have to edit this again i'm gonna go crazy...(crosses fingers and logs off)


Have fun.

Master_of_Power
11-09-2007, 12:08 PM
how does it work? When I shoot it, it fails to open... anywhere...

One thing I'd like to see is reflection as part of it.

Russ
11-09-2007, 12:42 PM
Neat, but what does it do?

Master_of_Power
11-09-2007, 01:45 PM
It opens up a portal which allows you to transverse from one side of the screen to the other past obsticles... somehow.

Gleeok
11-09-2007, 06:17 PM
Uuh...I knew I should of included a .qst file with this already set up. Alright what tileset you using? Probably DoR, right, yeah, I'll throw one together along with some example puzzles.


...I think i'll add that ability to recall poorly placed portals too...

Pheonix
11-09-2007, 06:49 PM
I'm getting this:
Pass 1: Parsing
Pass 2: Preprocessing
Pass 3: Building symbol tables
tmp, line 139: Error S10: Function ComboAt is undeclared.
tmp, line 140: Error S10: Function ComboAt is undeclared.
tmp, line 142: Error S10: Function ComboAt is undeclared.
tmp, line 143: Error S10: Function ComboAt is undeclared.
tmp, line 145: Error S10: Function ComboAt is undeclared.
tmp, line 146: Error S10: Function ComboAt is undeclared.
tmp, line 148: Error S10: Function ComboAt is undeclared.
tmp, line 149: Error S10: Function ComboAt is undeclared.

I'll make the script demo for you. Expect it... when I'm done.

Joe123
11-09-2007, 06:54 PM
If you're getting ComboAt is undeclared, your std.zh is either wrong, or you don't have ' import "std.zh" ' at the beginning of your script document.

ComboAt is a utility routine declared in std.zh, which turns (x,y) coordinates on a screen into a single number that can be read by some Screen->Combo?[]; commands, so if you've told zscript to import std.zh it should work fine.

Pheonix
11-09-2007, 06:58 PM
I see my problem. Thanks.
EDIT: My demo design requires that the portals are deleted after firing the gun a second time. Could you make it so, Gleeok?

ShadowTiger
11-09-2007, 07:12 PM
I.e. Perhaps if there are portals on the screen, hitting either L or R would clear them?

The Portal Flash (http://portal.wecreatestuff.com) is a wonderful way to get in touch with your Portal side. Try even a few levels. You'll see why it's so great.

Gleeok
11-09-2007, 07:54 PM
OK, I see now.

Here's two more item scripts for portal:



This one keeps portal 2 active while you re-shoot portal 1, then re-shoots portal 2 if portal 1 hasn't opened yet.



item script PORTAL_item_ver2{

void run(int cset, int cset2, int speed){

ffc portal1 = Screen->LoadFFC(29); //set hard coded ffc data here
ffc portal2 = Screen->LoadFFC(28); // and here




if(!((portal1->Data >= portal_data) && (portal1->Data <= portal_data+7))){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal1->X = Link->X;
portal1->Y = Link->Y - 16;
portal1->Vy = -speed;
portal1->Vx = 0;
portal1->Data = portal_data;
portal1->CSet = cset;
}
if(Link->Dir == 1) {
portal1->X = Link->X;
portal1->Y = Link->Y + 16;
portal1->Vy = speed;
portal1->Vx = 0;
portal1->Data = portal_data+1;
portal1->CSet = cset;
}
if(Link->Dir == 2) {
portal1->X = Link->X - 16;
portal1->Y = Link->Y;
portal1->Vx = -speed;
portal1->Vy = 0;
portal1->Data = portal_data+2;
portal1->CSet = cset;
}
if(Link->Dir == 3) {
portal1->X = Link->X + 16;
portal1->Y = Link->Y;
portal1->Vx = speed;
portal1->Vy = 0;
portal1->Data = portal_data+3;
portal1->CSet = cset;
}
}
else{
if(!((portal2->Data >= portal_data) && (portal2->Data <= portal_data+7))){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal2->X = Link->X;
portal2->Y = Link->Y - 16;
portal2->Vy = -speed;
portal2->Vx = 0;
portal2->Data = portal_data;
portal2->CSet = cset2;
}
if(Link->Dir == 1) {
portal2->X = Link->X;
portal2->Y = Link->Y + 16;
portal2->Vy = speed;
portal2->Vx = 0;
portal2->Data = portal_data+1;
portal2->CSet = cset2;
}
if(Link->Dir == 2) {
portal2->X = Link->X - 16;
portal2->Y = Link->Y;
portal2->Vx = -speed;
portal2->Vy = 0;
portal2->Data = portal_data+2;
portal2->CSet = cset2;
}
if(Link->Dir == 3) {
portal2->X = Link->X + 16;
portal2->Y = Link->Y;
portal2->Vx = speed;
portal2->Vy = 0;
portal2->Data = portal_data+3;
portal2->CSet = cset2;
}
}
else{ // if both portals are already set fire portal 1 again

if((portal1->Data > portal_data+3) && (portal1->Data <= portal_data+7)&&
(portal2->Data > portal_data+3) && (portal2->Data <= portal_data+7)){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal1->X = Link->X;
portal1->Y = Link->Y - 16;
portal1->Vy = -speed;
portal1->Vx = 0;
portal1->Data = portal_data;
portal1->CSet = cset;
}
if(Link->Dir == 1) {
portal1->X = Link->X;
portal1->Y = Link->Y + 16;
portal1->Vy = speed;
portal1->Vx = 0;
portal1->Data = portal_data+1;
portal1->CSet = cset;
}
if(Link->Dir == 2) {
portal1->X = Link->X - 16;
portal1->Y = Link->Y;
portal1->Vx = -speed;
portal1->Vy = 0;
portal1->Data = portal_data+2;
portal1->CSet = cset;
}
if(Link->Dir == 3) {
portal1->X = Link->X + 16;
portal1->Y = Link->Y;
portal1->Vx = speed;
portal1->Vy = 0;
portal1->Data = portal_data+3;
portal1->CSet = cset;
}
}
else{ // if not then fire portal 2 once more

if((portal2->Data >= portal_data+4) && (portal2->Data <= portal_data+7)){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal2->X = Link->X;
portal2->Y = Link->Y - 16;
portal2->Vy = -speed;
portal2->Vx = 0;
portal2->Data = portal_data;
portal2->CSet = cset2;
}
if(Link->Dir == 1) {
portal2->X = Link->X;
portal2->Y = Link->Y + 16;
portal2->Vy = speed;
portal2->Vx = 0;
portal2->Data = portal_data+1;
portal2->CSet = cset2;
}
if(Link->Dir == 2) {
portal2->X = Link->X - 16;
portal2->Y = Link->Y;
portal2->Vx = -speed;
portal2->Vy = 0;
portal2->Data = portal_data+2;
portal2->CSet = cset2;
}
if(Link->Dir == 3) {
portal2->X = Link->X + 16;
portal2->Y = Link->Y;
portal2->Vx = speed;
portal2->Vy = 0;
portal2->Data = portal_data+3;
portal2->CSet = cset2;
}
}
}
}} // end of else statements
}
}




And this one resets them so you can fire them both again:


item script PORTAL_item_ver3{

void run(int cset, int cset2, int speed){

ffc portal1 = Screen->LoadFFC(29); //set hard coded ffc data here
ffc portal2 = Screen->LoadFFC(28); // and here




if(!((portal1->Data >= portal_data) && (portal1->Data <= portal_data+7))){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal1->X = Link->X;
portal1->Y = Link->Y - 16;
portal1->Vy = -speed;
portal1->Vx = 0;
portal1->Data = portal_data;
portal1->CSet = cset;
}
if(Link->Dir == 1) {
portal1->X = Link->X;
portal1->Y = Link->Y + 16;
portal1->Vy = speed;
portal1->Vx = 0;
portal1->Data = portal_data+1;
portal1->CSet = cset;
}
if(Link->Dir == 2) {
portal1->X = Link->X - 16;
portal1->Y = Link->Y;
portal1->Vx = -speed;
portal1->Vy = 0;
portal1->Data = portal_data+2;
portal1->CSet = cset;
}
if(Link->Dir == 3) {
portal1->X = Link->X + 16;
portal1->Y = Link->Y;
portal1->Vx = speed;
portal1->Vy = 0;
portal1->Data = portal_data+3;
portal1->CSet = cset;
}
}
else{
if(!((portal2->Data >= portal_data) && (portal2->Data <= portal_data+7))){

Game->PlaySound(11);

if(Link->Dir == 0) {
portal2->X = Link->X;
portal2->Y = Link->Y - 16;
portal2->Vy = -speed;
portal2->Vx = 0;
portal2->Data = portal_data;
portal2->CSet = cset2;
}
if(Link->Dir == 1) {
portal2->X = Link->X;
portal2->Y = Link->Y + 16;
portal2->Vy = speed;
portal2->Vx = 0;
portal2->Data = portal_data+1;
portal2->CSet = cset2;
}
if(Link->Dir == 2) {
portal2->X = Link->X - 16;
portal2->Y = Link->Y;
portal2->Vx = -speed;
portal2->Vy = 0;
portal2->Data = portal_data+2;
portal2->CSet = cset2;
}
if(Link->Dir == 3) {
portal2->X = Link->X + 16;
portal2->Y = Link->Y;
portal2->Vx = speed;
portal2->Vy = 0;
portal2->Data = portal_data+3;
portal2->CSet = cset2;
}
}
else{

portal2->Data = 1;
portal2->X = 0;
portal2->Y = 0;
portal1->Data = 1;
portal1->X = 0;
portal1->Y = 0;

}
}
}
}

FFC unchanged, so you'll still need that as well. These are untested but they should work fine.



I'll make the script demo for you. Expect it... when I'm done.

You got it.

*NOTE*Also I left in some extra cool stuff, for enemy based puzzles. ;)
Here's one: Fire the first portal then fire the second directly at an enemy. Pretty nifty, eh?




Neat, but what does it do?

Well, it makes scrambled eggs! :p

C-Dawg
11-09-2007, 08:44 PM
This script is great. It's a really simple concept that is fun and generally useful. It's the PERFECT kind of script for a new Zelda item. It's way better than most of the garbage Capcom spat out in the Oracle series (level 2 flippers? switch hook? gimme a fucking break.)

XdragonSB
11-09-2007, 09:34 PM
what the heck.

This has some problems,
I cant compile them, I get massive errors.

Can someone fix these???

EDIT:
nvm

EDIT:
ok, I used the script on the first post, cause on gleeoks second post the scripts dont work. (I can't compile them, even if I put import "std.zh".)
Umm, I shot the portal. (I used FFC ver4, Portal Item ver3) and, well. it doesnt shoot! I makes some tiles on the floor in the direction I am facing, but it does not work. ( I made two, but I cant teleport between them.)

Gleeok
11-09-2007, 09:54 PM
Ah, Shit! I forgot I booled portal_open for the second and third scripts.

Damnit, I'll fix em up real quick like, and this time there will be an example quest on how to set these up also. Gimme a minute...

Gleeok
11-09-2007, 11:12 PM
Alrighty then, it's fixed now. It will work with all 3 item versions. I will also edit the original post with the update.

Here is an unpassworded quest: PORTAL_DEMO-635 (http://www.mediafire.com/?0jiywx5nm1f) Open it up in ZC and try to beat it or just check out what the portals do. Then in ZQ you can extract the scripts by going to Zscript->Compile->Export and see how it's set up.

Two things worth mentioning: The flags "carry over" and "script restarts when carried over" are enabled for the overworld and level 9. You may want to try "run script at screen init" if you want. Also if you go into Lv1 you'll see that there is no carry over set on these. Yep, you can copy/paste all, or paste ffc special also.


One more thing...If you can get to Gannon, You can warp him with the portals!

Yay! It's finally bug-free!!!

Enjoy!



This script is great. It's a really simple concept that is fun and generally useful. It's the PERFECT kind of script for a new Zelda item. It's way better than most of the garbage Capcom spat out in the Oracle series (level 2 flippers? switch hook? gimme a fucking break.)

Tell me about it. I never beat any of those games. I still find it amazing that huge game companies can spew out piles of fucking garbage one after the other. These are professional game designers, coders, whatever. I don't really understand how it's possible. Apparently new ideas are fleeting. I've probably become too overly critical of these games however.
Thanks though. This was a pain in the ass for me to write. But now I know how to use combo flags, type, solidity, how the canMove works better, etc. So that probably means less stupid questions by Gleeok in the help thread. :laughing:

erm2003
11-09-2007, 11:29 PM
Gleeok, AMAZING job! This really could lead to some new and fascinating things for ZC.

Pheonix
11-10-2007, 12:01 AM
I can't get past the room with the guy in it. Can warp him and his flames around, though...

Gleeok
11-10-2007, 12:10 AM
I can't get past the room with the guy in it. Can warp him and his flames around, though...

Aarg, well it's a zc bug then, so it's not my fault. :tongue:

PORTAL_DEMO-635 (http://www.mediafire.com/?0jiywx5nm1f)(it's fixed now)...

_L_
11-10-2007, 01:06 AM
Aarg, well it's a zc bug then, so it's not my fault.Whatever.

Small bug: it is possible to open a portal halfway inside the south wall of the third room, which, when entered, somehow traps Link in an infinite loop of sorts.

Gleeok
11-10-2007, 02:39 AM
Small bug: it is possible to open a portal halfway inside the south wall of the third room, which, when entered, somehow traps Link in an infinite loop of sorts.

Unverified! ...Ahahahahaha!!!! ...jk. ...well you know it wasn't really designed for NES Dungeons, but:


-Fixed the wall bug.
-Fixed the shooter bug. Now you can't teleport shooters.


..And I'm about fed up with these infernal bugs. :mad: If anyone has any more bugs then post 'em and i'll get to them later.

Master_of_Power
11-10-2007, 12:28 PM
It says "Unable to open file" when I try to play the example quest.

XdragonSB
11-10-2007, 03:58 PM
umm...
I used the portal script
but it fails to open anywhere.
I doesn't collide with the walls. :(

EDIT:
ok I got the blue portal to work, the orange one fails to open.

EDIT
NVM I GOT IT!!!
AWSOME GLEEOK!