Jump to content
  • 0
Sign in to follow this  
Vincent

Instansting - map problem

Question

Hello,

i try to create a instance at a custom map called "1@farm". 

 

If i warp to the map with the @warp command there is no problem. But if i try to enter the map via the Instance NPC the Client crashs and say:

ResourceError : Cant find file [email protected]

I dont why this error came up.

 

my renametable:

 

[email protected]#[email protected]#[email protected]#[email protected]#[email protected]#[email protected]#À¯ÀúÀÎÅÍÆäÀ̽º[email protected]#À¯ÀúÀÎÅÍÆäÀ̽º[email protected]#

 

Share this post


Link to post
Share on other sites

16 answers to this question

Recommended Posts

  • 0

Well, you need to do that kind of workarounds for quite a lot situations on current scripting that I think they are quite more urgent than this (e.g. get an online user list, you have it as @command but no current scripting command does that without a SQL query, this is still missing since eAthena).

 

I don't know where the problem is. Maybe you can mark the map with the src4instance mapflag and you'll possibly not need to do something like this, or you can even improve my example so that you won't get any errors:

 

OnInit:	set .next_i, 0;	set .max_instance, 100; // I doubt there'll be 100 active instances on the server, so we'll reuse numbers and our map names won't be enormous due to the numbers	// BlahblahblahOnMyInstanceStart:	set .next_i, .next_i + 1;	if (.next_i >= .max_instance)		set .next_i, 0;	// Blahblahblah

Share this post


Link to post
Share on other sites
  • 0

how did you renamed it ?  just clicked it an changed the name ?  if yes this is wrong.

 

you have to  open the map with browedit and click on Save As and then enter the new name

Share this post


Link to post
Share on other sites
  • 0

But the map is working if i use @warp. Only the instance let the Client crash.

 

Here is my scirpt:

 

payon,97,127,4	script	Farm Manager	416,{    .@mdName$ = "House";        mes "[Guard]";    mes "How can I help you?";    switch(select("Warp to my Farm:Buy a farm:Close")) {                case 1:		set .@buy_check,1;		if (.@buy_check == 1 ){						            set .@instance, instance_create("farm instanced", getcharid(1));if( .@instance < 0 ){	mes "Failed to create the instance!";	close;}if( instance_attachmap("1@farm", .@instance) == "" ){ 	instance_destroy(.@instance);	mes "Failed to attach farm as a map!";	close;}instance_attach(.@instance);instance_set_timeout(300, 300, .@instance);instance_init(.@instance);warp "1@farm", 0, 0;									}			else {			mes "You dont own a Farm.";			close;			}            						        case 2:            query_sql "SELECT `status` FROM `tree_farm` WHERE `acc_id` = " + getcharid(3) + "", .@buy_check;			if (.@buy_check == 0 ) {			mes "^0000ffYou wanna buy a Farm for 1.000.000 Zeny?^000000";						switch(select("No:Yes")){						case 1: 			close;						case 2:			set @price, 1000000;			if (Zeny<@price) {				mes "Not enough Zeny";				close;			}			else {			set Zeny, Zeny - @price;			query_sql "INSERT INTO `tree_farm` (`acc_id`, `status`) VALUES ('"+getcharid(3)+"', '1')";            close;            }			              }	close;	}	case 3:	close;	}}
Edited by Vincent

Share this post


Link to post
Share on other sites
  • 0

the server is being able to warp you into the map, and the resource-error shows the map name is correct, so therefore its a client problem (some file is not correctly setup), in the case you are unable to pinpoint the reason, you can have the server fool the client by telling it you're actually warping into 1@farm while you're not, to fool the client you need to make use of the optional parameters in the instace_attachmap script command

*instance_attachmap("<map name>",<instance id>{,<use base name>{,"<new map name>"}});Attaches the map "<map name>" to the instance specified with <instance id>. The optional parameter specifies, whether a map requires emulation for instancing (1) or not (0 = default). if use base name is specified,and "<new map name>" too the server will instance the map under the "<new map name>",name.Returns the resulting map name on success or an empty string on failure.Example:	instance_attachmap("prontera", .@instance_id,1,"via");^ the above creates a instance (or clone) of prontera, on a map called "via"

Share this post


Link to post
Share on other sites
  • 0

 

the server is being able to warp you into the map, and the resource-error shows the map name is correct, so therefore its a client problem (some file is not correctly setup), in the case you are unable to pinpoint the reason, you can have the server fool the client by telling it you're actually warping into 1@farm while you're not, to fool the client you need to make use of the optional parameters in the instace_attachmap script command

*instance_attachmap("<map name>",<instance id>{,<use base name>{,"<new map name>"}});Attaches the map "<map name>" to the instance specified with <instance id>. The optional parameter specifies, whether a map requires emulation for instancing (1) or not (0 = default). if use base name is specified,and "<new map name>" too the server will instance the map under the "<new map name>",name.Returns the resulting map name on success or an empty string on failure.Example:	instance_attachmap("prontera", .@instance_id,1,"via");^ the above creates a instance (or clone) of prontera, on a map called "via"

Regarding this, I tried the instancing system using the wikis example (mostly done stuff with rA). Which made the client crash everytime when trying to enter the instance. The optional parameters fix it. But it is now more of a map reserve than an instance.

After attaching the map to your party other parties can no longer join that instance.

 

Trying to make a new instance with a new party now results in the following error.

 

[Error]: instance_add_map: trying to create instanced map with existent name 'via'[Error]: buildin_instance_attachmap: instance creation failed (izlude): -2 

@ maps like 1@def01 work just fine with the instasing system, but I though this patch was meant to allow using non @ maps.

With non @ maps there can only be 1 instance active unless I am doing something wrong or do not understand the system.

It also seems like its not possible to create a new instance even after the instance has timed out.

 

 

Share this post


Link to post
Share on other sites
  • 0

Get a var that is distinct for wach new party on the instance. For example:

 

set .@i, 0;while (.@map$ == "") { // will fail until it finds a valid i, warning: possibility of getting lots of errors.	set .@map$, instance_attachmap("1@farm", .@instance,1, "via" + .@i);	set .@i, .@i + 1;}

 

There are other cleaner methods to do this, but this one should work.

Share this post


Link to post
Share on other sites
  • 0

I'd still suggest taking an another look at instancing to actually enable support for non @ maps without workarounds like that :)

 

And after short testing it seems like the map name variables dont get reset until server reboot so the errors would pile up a lot.

Edited by GrumpyPanda

Share this post


Link to post
Share on other sites
  • 0

I'd still suggest taking an another look at instancing to actually enable support for non @ maps without workarounds like that :)

Please read 

 

 

and one more

is hercules support instance to map without "@" symbol?

yes since the may 30th update.

>Server may now create instances of any maps regardless of client-side edits, e.g. one can clone prontera and call it "mymapname" (as is best described in the *instance_attachmap script command note)

 

Share this post


Link to post
Share on other sites
  • 0

Yes, there. src4instance mapflag is the answer to the problem with non @ maps. Thank you.

 

Problem with the attachmap additional parameter was that they don't get erased when instance is destroyed and reusing causes the error. (so the map names would eventually get enormous unless server is reset)

Share this post


Link to post
Share on other sites
  • 0

About that last thing, I think it's a serious name. Since I don't have access to script_commands.txt ATM, could you see if there's a way of destroying that map with the instance? Otherwise, maybe a bug weport should be filled out regarding this.

Share this post


Link to post
Share on other sites
  • 0

I wasnt able to find a way. And when instance timer runs out the map should at least get deleted but it doesnt.

 

and seems like src4instance wasn't the answer afterall. I was able to make it create a map "000#izlude" that worked (without optional parameters), I believe I was just using just the wiki example plus src4instance mapflag (and izlude as map) but I am not able to do that again. If someone can do that please show me how.

 

Personally I think if its required to find a distinct var for each instance I'll rather just create the instance maps client side.

 

Edited out some stuff, misunderstanding on my part.

Edited by GrumpyPanda

Share this post


Link to post
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.   Restore formatting

  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.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

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