Jump to content
  • 0
FelipeMartins

How to create many instances of the same map

Question

9 answers to this question

Recommended Posts

  • 0
16 minutes ago, Mabuhay said:

Thats the idea of instancing. You are using live duplicated maps.

how to do it?

*instance_mapname("<map name>"{,<instance id>})

Returns the unique name of the instanced map. If no instance ID is specified,
the instance the script is attached to is used. If the script is not attached to
an instance, the instance of the currently attached player is used (if it is a
character, party, guild or clan mode). If it is not owned by anyone, no player needs
to be attached. If that fails, the command returns an empty string instead.

I sow this command, but how to use it? There is no examples in the documentation.

 

 

 

Link to comment
Share on other sites

  • 0
2 minutes ago, FelipeMartins said:

how to do it?

*instance_mapname("<map name>"{,<instance id>})

Returns the unique name of the instanced map. If no instance ID is specified,
the instance the script is attached to is used. If the script is not attached to
an instance, the instance of the currently attached player is used (if it is a
character, party, guild or clan mode). If it is not owned by anyone, no player needs
to be attached. If that fails, the command returns an empty string instead.

I sow this command, but how to use it? There is no examples in the documentation.

 

 

 

 

You can start learning how to instance here:

https://github.com/rathena/rathena/blob/master/doc/sample/instancing.txt

 

  • Upvote 1
Link to comment
Share on other sites

  • 0
5 minutes ago, Mabuhay said:

Im assuming that you are using old server files. Check your own doc/sample/instancing.txt

Thanks man! Worked! My version is little old i think.

 

//===== 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,{
	[email protected]$ = "Abyss Lake Instance";

	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:
			[email protected] = instance_create([email protected]$);
			if ([email protected] < 0) {
				mes "[Sample Instance]";
				switch ([email protected]) {
					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;
		}
	}
	[email protected] = instance_enter([email protected]$);
	if ([email protected] != 0) {
		mes "[Sample Instance]";
		switch ([email protected]) {
			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
	[email protected]$        = instance_mapname("abyss_03");
	[email protected]$      = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
	[email protected]_boss$ = instance_npcname(strnpcinfo(0))+"::OnMyBossDead";
	monster [email protected]$,0,0,"Huge Poring",1002,20,[email protected]$,2;
	monster [email protected]$,0,0,"Huge Drops",1113,15,[email protected]$,2;
	monster [email protected]$,0,0,"Huge Poporing",1031,10,[email protected]$,2;
	monster [email protected]$,0,0,"Huge Marin",1242,10,[email protected]$,2;
	monster [email protected]$,0,0,"Tiny Zombie",1015,30,[email protected]$,1;
	monster [email protected]$,0,0,"Huge Mime Monkey",1585,2,[email protected]$,2;
	monster [email protected]$,97,102,"Treasure Chest",1732,1,[email protected]_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
	[email protected]$   = instance_mapname("abyss_03");
	[email protected]$ = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
	killmonster [email protected]$,[email protected]$;
	mapannounce [email protected]$,"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;
}

 

BUT NOW, I JUST WANT TO CREATE COPIES OF A VIP Room.

My NPC Vip will create a "new" map or "copy" when there is 10 or more players in the vip map... how to create new copies?

Link to comment
Share on other sites

  • 0

that script sample is exactly how you make instanced map. Try to learn how to use it. It is pretty much straight forward to understand. Goodluck!

Link to comment
Share on other sites

  • 0
On 6/17/2020 at 1:10 AM, Mabuhay said:

that script sample is exactly how you make instanced map. Try to learn how to use it. It is pretty much straight forward to understand. Goodluck!

It's for a creation of an instance, i just want to make simple clones of the same map, because i will create houses using this map. 

 

 

 

On 6/17/2020 at 1:01 AM, Mabuhay said:

Im assuming that you are using old server files. Check your own doc/sample/instancing.txt

 

//===== 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,150,170,6	script	Sample Instance2	101,{
	// id = 100
	[email protected]$ = "Guild Point_01";
	
	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:
			[email protected] = instance_create([email protected]$);
			if ([email protected] < 0) {
				mes "[Sample Instance]";
				switch ([email protected]) {
					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;
		}
	}

	[email protected] = instance_enter([email protected]$);
	if ([email protected] != 0) {
		mes "[Sample Instance]";
		switch ([email protected]) {
			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
//============================================================
support,12,86,6	script	Instance NPC#start2	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_mobs2")+"::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;
}

support,0,0,0	script	#ins_abyss03_mobs2	-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
	[email protected]$        = instance_mapname("support");
	[email protected]$      = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
	[email protected]_boss2$ = instance_npcname(strnpcinfo(0))+"::OnMyBossDead";
	monster [email protected]$,0,0,"Huge Poring",1002,20,[email protected]$,2;
	monster [email protected]$,0,0,"Huge Drops",1113,15,[email protected]$,2;
	monster [email protected]$,0,0,"Huge Poporing",1031,10,[email protected]$,2;
	monster [email protected]$,0,0,"Huge Marin",1242,10,[email protected]$,2;
	monster [email protected]$,0,0,"Tiny Zombie",1015,30,[email protected]$,1;
	monster [email protected]$,0,0,"Huge Mime Monkey",1585,2,[email protected]$,2;
	monster [email protected]$,86,74,"Treasure Chest",1732,1,[email protected]_boss2$,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
	[email protected]$   = instance_mapname("support");
	[email protected]$ = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
	killmonster [email protected]$,.[email protected]$;
	mapannounce [email protected]$,"Instance NPC: Good work! Please speak to me as soon as possible.",bc_all;
	donpcevent instance_npcname("Instance NPC#finish2")+"::OnEnable";
	end;
}

support,67,78,4	script	Instance NPC#finish2	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;
}

support,66,86,0	script	#ins_abyss03_warp2	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;
}

 

 

 

 

LET ME EXPLAIN, I NEED 109 maps cloned.

Edited by FelipeMartins
Link to comment
Share on other sites

  • 0
11 hours ago, FelipeMartins said:

It's for a creation of an instance, i just want to make simple clones of the same map, because i will create houses using this map. 

 

 

 

 

//===== 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,150,170,6	script	Sample Instance2	101,{
	// id = 100
	[email protected]$ = "Guild Point_01";
	
	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:
			[email protected] = instance_create([email protected]$);
			if ([email protected] < 0) {
				mes "[Sample Instance]";
				switch ([email protected]) {
					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;
		}
	}

	[email protected] = instance_enter([email protected]$);
	if ([email protected] != 0) {
		mes "[Sample Instance]";
		switch ([email protected]) {
			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
//============================================================
support,12,86,6	script	Instance NPC#start2	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_mobs2")+"::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;
}

support,0,0,0	script	#ins_abyss03_mobs2	-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
	[email protected]$        = instance_mapname("support");
	[email protected]$      = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
	[email protected]_boss2$ = instance_npcname(strnpcinfo(0))+"::OnMyBossDead";
	monster [email protected]$,0,0,"Huge Poring",1002,20,[email protected]$,2;
	monster [email protected]$,0,0,"Huge Drops",1113,15,[email protected]$,2;
	monster [email protected]$,0,0,"Huge Poporing",1031,10,[email protected]$,2;
	monster [email protected]$,0,0,"Huge Marin",1242,10,[email protected]$,2;
	monster [email protected]$,0,0,"Tiny Zombie",1015,30,[email protected]$,1;
	monster [email protected]$,0,0,"Huge Mime Monkey",1585,2,[email protected]$,2;
	monster [email protected]$,86,74,"Treasure Chest",1732,1,[email protected]_boss2$,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
	[email protected]$   = instance_mapname("support");
	[email protected]$ = instance_npcname(strnpcinfo(0))+"::OnMyMobDead";
	killmonster [email protected]$,[email protected]$;
	mapannounce [email protected]$,"Instance NPC: Good work! Please speak to me as soon as possible.",bc_all;
	donpcevent instance_npcname("Instance NPC#finish2")+"::OnEnable";
	end;
}

support,67,78,4	script	Instance NPC#finish2	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;
}

support,66,86,0	script	#ins_abyss03_warp2	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;
}

 

 

 

 

LET ME EXPLAIN, I NEED 109 maps cloned.

I understand you need copies of the map. But I hope you also understand how instance script works. It is basically the thing you'll need to work with... As I told you, everything you'll need to know is found on the script sample and if you want to expand more knowledge, check your doc/script_commands.txt and proceed to instancing part.. If you still don't understand, try posting on script request section in the forum and wait for someone who might be able to give you what you need instead of learning how to make a proper instance script..

 

EDIT:
While I was lurking at rathena's git. I found this https://github.com/rathena/rathena/pull/5112

Not sure if already stable or ready for use but you can try it yourself.

Edited by Mabuhay
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...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.