Jump to content
  • 0

[ask] how to go back into the instance map


Akbare

Question


  • Group:  Members
  • Topic Count:  31
  • Topics Per Day:  0.01
  • Content Count:  491
  • Reputation:   19
  • Joined:  11/19/11
  • Last Seen:  

I have an instance
I've been inside but then I die,

how to return to the instance?

Is there a script command that can be given to npc

 

thx

 

i'm use instance simple script

 

//===== rAthena Script =======================================
//= Sample: Instancing
//===== By: ==================================================
//= Euphy
//===== Last Updated: ========================================
//= 20140129
//===== Description: ========================================= 
//= Contains elements of a basic instance script.
//============================================================

// Before running this script, add the entry below to
// 'db/(pre-)re/instance_db.txt':
// 100,Abyss Lake Instance,3600,300,abyss_03,160,155

// Instance Creation
//============================================================
prontera,151,190,6	script	Sample Instance	101,{
	.@instance$ = "Rent Location";

	if (instance_id()) {  // ignore the console debug message (harmless)
		mes "[Sample Instance]";
		mes "You are already part of an instance.";
		next;
		switch(select("Enter Instance.:Cancel.")) {
		case 1:
			break;
		case 2:
			mes "[Sample Instance]";
			mes "You don't want to try again?";
			emotion ET_CRY;
			close;
		}
	} else {
		mes "[Sample Instance]";
		mes "Would you like to try the sample instance in Abyss Lake 3?";
		next;
		switch(select("Create Instance.:Cancel.")) {
		case 1:
			.@create = instance_create(.@instance$);
			if (.@create < 0) {
				mes "[Sample Instance]";
				switch (.@create) {
					case -1: mes "ERROR: Invalid type."; break;
					case -2: mes "ERROR: Party not found."; break;
					case -3: mes "ERROR: Instance already exists."; break;
					case -4: mes "ERROR: No free instances."; break;
				}
				mes " ";
				mes "Instance creation ^FF0000failed^000000.";
				emotion ET_HUK;
				close;
			}
			mes "[Sample Instance]";
			mes "Instance created.";
			mes " ";
			mes "Now entering the instance...";
			next;
			break;
		case 2:
			mes "[Sample Instance]";
			mes "Okay. Maybe next time!";
			close;
		}
	}
	.@enter = instance_enter(.@instance$);
	if (.@enter != 0) {
		mes "[Sample Instance]";
		switch (.@enter) {
			case 1: mes "ERROR: Party not found."; break;
			case 2: mes "ERROR: Party does not have an instance."; break;
			case 3: mes "ERROR: Unknown error."; break;
		}
		mes " ";
		mes "Instance entry ^FF0000failed^000000.";
		emotion ET_HUK;
		close;
	}
	close;
}

// Instance Scripts
//============================================================
abyss_03,154,159,6	script	Instance NPC#start	101,{
	mes "[Instance NPC]";
	mes "Are you ready to begin?";
	next;
	switch(select("Yes.:No.")) {
	case 1:
		mes "[Instance NPC]";
		mes "Good luck.";
		close2;
		donpcevent instance_npcname("#ins_abyss03_mobs")+"::OnEnable";
		delwaitingroom;
		disablenpc instance_npcname(strnpcinfo(0));
		end;
	case 2:
		mes "[Instance NPC]";
		mes "Take your time.";
		close;
	}
	end;

OnInit:  // hide the NPC on the normal map
	disablenpc strnpcinfo(0);
	end;
OnInstanceInit:  // initialize the NPC when the instance is created
	disablenpc instance_npcname("abysslakedunwarp004");  // disable original warp portal (currently buggy)
	waitingroom "Click here to start!",0;
	end;
}

abyss_03,0,0,0	script	#ins_abyss03_mobs	-1,{
	end;
OnEnable:
	initnpctimer;
	end;
OnTimer1000:  //strnpcinfo(4) will retrieve the instanced map name
	mapannounce strnpcinfo(4),"Instance NPC: The Abyss Lake instance has begun.",bc_all;
	end;
OnTimer4000:
	mapannounce strnpcinfo(4),"Instance NPC: Smash the Treasure Chest in the center of the map for a prize.",bc_all;
	end;
OnTimer5000:
	stopnpctimer;

	// spawn mobs
	.@map$        = instance_mapname("abyss_03");
	.@label$      = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
	.@label_boss$ = instance_npcname(strnpcinfo(0))+"::OnMyBossDead";
	monster .@map$,0,0,"Huge Poring",1002,20,.@label$,2;
	monster .@map$,0,0,"Huge Drops",1113,15,.@label$,2;
	monster .@map$,0,0,"Huge Poporing",1031,10,.@label$,2;
	monster .@map$,0,0,"Huge Marin",1242,10,.@label$,2;
	monster .@map$,0,0,"Tiny Zombie",1015,30,.@label$,1;
	monster .@map$,0,0,"Huge Mime Monkey",1585,2,.@label$,2;
	monster .@map$,97,102,"Treasure Chest",1732,1,.@label_boss$,2;
	end;
OnMyMobDead:  // normal mobs
	dispbottom "What am I doing? I should be attacking the Treasure Chest!";
	viewpoint 0,97,102,0,0xFF0000;
	switch (rand(6)) {  // for fun (:
		case 0: sc_start SC_STONE,5000,0; break;
		case 1: sc_start SC_FREEZE,5000,0; break;
		case 2: sc_start SC_STUN,5000,0; break;
		case 3: sc_start SC_SLEEP,5000,0; break;
		case 4: sc_start SC_CONFUSION,5000,0; break;
		case 5: sc_start SC_BLIND,5000,0; break;
	}
	end;
OnMyBossDead:  // treasure chest
	specialeffect2 EF_MVP;
	getitem 512,1; //Apple

	// trigger other events
	.@map$   = instance_mapname("abyss_03");
	.@label$ = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
	killmonster .@map$,.@label$;
	mapannounce .@map$,"Instance NPC: Good work! Please speak to me as soon as possible.",bc_all;
	donpcevent instance_npcname("Instance NPC#finish")+"::OnEnable";
	end;
}

abyss_03,97,102,4	script	Instance NPC#finish	101,{
	mes "[Instance NPC]";
	mes "Congratulations! You've finished the instance.";
	mes "I'll send you back to town now.";
	emotion ET_BEST;
	close2;
	warp "prontera",156,191;
	instance_destroy();
	end;

OnInit:
	disablenpc strnpcinfo(0);
	end;
OnInstanceInit:
	disablenpc instance_npcname(strnpcinfo(0));
	end;
OnEnable:
	enablenpc instance_npcname(strnpcinfo(0));
	specialeffect EF_HIDING;
	end;
}

abyss_03,115,26,0	script	#ins_abyss03_warp	45,5,5,{
	end;
OnTouch:
	mes "Are you sure you want to leave?";
	next;
	switch(select("Leave.:Stay.")) {
	case 1:
		warp "prontera",156,191;
		break;
	case 2:
		warp strnpcinfo(4),160,155;
		break;
	}
	close;
OnInit:
	disablenpc strnpcinfo(0);
	end;
}

 

Edited by Akbare
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

  • Group:  Forum Moderator
  • Topic Count:  33
  • Topics Per Day:  0.01
  • Content Count:  1268
  • Reputation:   381
  • Joined:  02/03/12
  • Last Seen:  

If the instance hasn't been destroyed you need to get the instance id...

https://github.com/rathena/rathena/blob/master/doc/script_commands.txt#L9093

When you have the instance id you can then use the instance_mapname command and warp the play back to that instanced map.

https://github.com/rathena/rathena/blob/master/doc/script_commands.txt#L9085

The full thing might look like...

warp instance_mapname("prontera",instance_id(IM_PARTY)), 0, 0;

This is if the player in question started an instance of the prontera map and we wanted to warp them back there.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...