Jump to content
  • 0
Dogpatch

NPC scripts are not showing

Question

Please move if not in the proper section.

 

Basically, I can't load any new scripts on my servers. The path is right, the script has no errors and map-server isn't giving me any error message. If I load via @loadnpc <path> the server returns with "Script Loaded" but the NPC doesn't load anywhere (the coordinates are right). And with @reloadscript, it's basically the same. All new scripts won't load.

 

Now here's the funny part. If I embed the "new" script within an already loaded script, it works perfectly, no errors whatsoever and the function of the new NPC is 100% working. But like I said, when I add it as a separate script, it doesn't load. 

 

Already asked @@Dastgir about this but we were unable to determine what the issue was, so maybe someone else experienced a similar problem and/or has a solution for it.

 

I can't continue to embed scripts within scripts cuz that's just messy and hard to maintain.

Any help is much appreciated. Thanks in advance.

Share this post


Link to post
Share on other sites

16 answers to this question

Recommended Posts

  • 0

Update and Bump

 

We (Dastgir and I) came to a conclusion that it might be the old scripts using the goto function that is causing it. So I spent almost 6 hours going through all my custom scripts and replaced the goto with callsub functions. 

Still no dice though. I still can't load any new script.

Share this post


Link to post
Share on other sites
  • 0

Update and Bump

 

We (Dastgir and I) came to a conclusion that it might be the old scripts using the goto function that is causing it. So I spent almost 6 hours going through all my custom scripts and replaced the goto with callsub functions. 

Still no dice though. I still can't load any new script.

Try to use on fresh server and check map-server errors.

Share this post


Link to post
Share on other sites
  • 0

@@Dastgir

Just did that, and this is what popped up boss. Weird as hell.

 

 

 

1@spa,189,205,5	script	Devil Square	406,{	// -- Name	set .@ds_name$,"Devil Square";	if( BaseLevel < 90 ) {		mes "[ Devil Square Guardian ]";		mes "Only users between Levels ^ff000090 ~ 99^000000 can enter this Dungeon.";		close;	}		mes "[ Devil Square Guardian ]";	mes "Welcome to the entrance door to ^FF0000" + .@ds_name$ + "^000000";	next;	switch( select("Reserve the " + .@ds_name$ + " and enter:Enter the Dungeon:Leave") ) {		case 1:			set .@party_id, getcharid(1);			// -----------------------------			if( .@party_id == 0 )			{				mes "[ Devil Square Guardian ]";				mes "You need to be in a group.";				close;			}								if( getpartyleader(.@party_id,2) != getcharid(0) )			{				mes "[ Devil Square Guardian ]";				mes "Only the party leader can register for " + .@ds_name$ + ".";				close;			}					if( DSquare_Timer >= gettimetick(2) )			{				mes "[ Devil Square Guardian ]";				mes "You cannot enter " + .@ds_name$ + " again until ^0000FF" + callfunc("Time2Str",DSquare_Timer) + "^000000";				//close;			}						if( Zeny < 100000 )			{				mes "[ Devil Square Guardian ]";				mes "...I'm sorry, not enough zeny.";				close;			}						set .ds_instance, instance_create(.@ds_name$, .@party_id);			if( .ds_instance == -1 )			{				mes "[ Devil Square Guardian ]";				mes "Your group is already registered on a Memorial Dungeon.";				close;			}			else if( .ds_instance < 0 )			{				mes "[ Devil Square Guardian ]";				mes "Instance creation failed: " + .ds_instance;				mes "Please report this to a Game Master.";				close;			}						if( instance_attachmap( "ordeal_1-1",.ds_instance ) == "" ){				npctalk "Devil Square reservation failed.";				mes "- ^FF0000Reservation Failed!^000000";				instance_destroy( .ds_instance );				close;			}			instance_attach( .ds_instance );										set 'dsparty_id, getcharid(1);			set 'dsnext_open, gettimetick(2) + 7200; // Next allowed open time for players			deletearray 'dsMembers[0],127;								set DSquare_Timer, 'dsnext_open;			set 'dsMembers[0], getcharid(0); // Stores First Char ID			set 'dsNext_i, 1;			set Zeny, Zeny - 100000;			instance_init( .ds_instance );							//warp			warp instance_mapname("ordeal_1-1"),245,245;			close;							case 2:			if( has_instance("ordeal_1-1") == "" ) {				mes "[ Devil Square Guardian ]";				mes "Instance Dungeon " + .@ds_name$ + " does not exist.";				mes "You are not registered for DS.";				close;			}						instance_attach(.ds_instance);								for( set .@i, 0; .@i < 'dsNext_i; set .@i, .@i + 1 )			{				if( getcharid(0) == 'dsMembers[.@i] )					break;			}			if( .@i == 'dsNext_i )			{				if( DSquare_Timer >= gettimetick(2) )				{ 					// User joined the party but has Devil Square Delay					mes "[ Devil Square Guardian ]";					mes "You cannot enter " + .@ds_name$ + " again until ^0000FF" + callfunc("Time2Str",DSquare_Timer) + "^000000";					close;				}				else if( 'dsNext_i == 127 )				{					// This party has invited lots of users to join Devil Square					mes "[ Devil Square Guardian ]";					mes "No more users can enter " + .@ds_name$ + " registered with this party.";					close;				}				else				{ 					// Add this new user to the member list					set DSquare_Timer, 'next_open;					set 'dsMembers['dsNext_i], getcharid(0);					set 'dsNext_i, 'dsNext_i + 1;				}			}				warp instance_mapname("ordeal_1-1"),245,245;			end;					case 3:			close;	}}function	script	Time2Str	{	set .@Time_Left, getarg(0) - gettimetick(2);		set .@Days, .@Time_Left / 86400;	set .@Time_Left, .@Time_Left - (.@Days * 86400);	set .@Hours, .@Time_Left / 3600;	set .@Time_Left, .@Time_Left - (.@Hours * 3600);	set .@Minutes, .@Time_Left / 60;	set .@Time_Left, .@Time_Left - (.@Minutes * 60);		set .@Time$, "";	if( .@Days > 1 )		set .@Time$, .@Time$ + .@Days + " days, ";	else if( .@Days > 0 )		set .@Time$, .@Time$ + .@Days + " day, ";	if( .@Hours > 1 )		set .@Time$, .@Time$ + .@Hours + " hours, ";	else if( .@Hours > 0 )		set .@Time$, .@Time$ + .@Hours + " hour, ";	if( .@Minutes > 1 )		set .@Time$, .@Time$ + .@Minutes + " minutes, ";	else if( .@Minutes > 0 )		set .@Time$, .@Time$ + .@Minutes + " minute, ";	if( .@Time_Left > 1 || .@Time_Left == 0 )		set .@Time$, .@Time$ + .@Time_Left + " seconds.";	else if( .@Time_Left == 1 )		set .@Time$, .@Time$ + .@Time_Left + " second.";		return .@Time$;}ordeal_1-1,44,155,0	script	HiddenNpc::HiddenNpc	-1,{	end;OnDisable:	killmonster instance_mapname("ordeal_1-1"),instance_npcname("HiddenNpc")+"::OnDevilDead";	end;OnInstanceInit:	areamonster "ordeal_1-1",183,182,246,244,"[DS] ALICEL",1735,25,instance_npcname("HiddenNpc")+"::OnDevilDead";	areamonster "ordeal_1-1",183,182,246,244,"[DS] ALIOT",1736,15,instance_npcname("HiddenNpc")+"::OnDevilDead";	areamonster "ordeal_1-1",183,182,246,244,"[DS] ARCHDAM",1668,15,instance_npcname("HiddenNpc")+"::OnDevilDead";	areamonster "ordeal_1-1",183,182,246,244,"[DS] CONSTANT",1745,20,instance_npcname("HiddenNpc")+"::OnDevilDead";	areamonster "ordeal_1-1",183,182,246,244,"[DS] DARK PRIEST",1198,4,instance_npcname("HiddenNpc")+"::OnDevilDead";	areamonster "ordeal_1-1",183,182,246,244,"[DS] ARCHANGELING",1388,1,instance_npcname("HiddenNpc")+"::OnDevilDead";	end;OnDevilDead:	set .@mobnumber,80;	set .@mob_cnumber,mobcount("ordeal_1-1",instance_npcname("HiddenNpc")+"::OnDevilDead");	set .@mob_dead_number,.@mobnumber - .@mob_cnumber;	if( .@mob_dead_number == 55 )		instance_announce 0, "Devil Square : 25 mobs to enter the 2nd round..",bc_map,"0xffff00";	if( .@mob_dead_number == 75 )		instance_announce 0, "Devil Square : 5 mobs to enter 2nd round..",bc_map,"0xffff00";		if( .@mob_dead_number == 80 )	{		instance_announce 0, "Devil Square : will enter to 2nd round!!!",bc_map,"0xffff00";			callsub OnDevilRound_2;	}	end;OnDevilRound_2:	areamonster "ordeal_1-1",183,182,246,244,"[DS] DROSERA",1781,20,instance_npcname("HiddenNpc")+"::OnDevilDead_2";	areamonster "ordeal_1-1",183,182,246,244,"[DS] NECROMANCER",1870,30,instance_npcname("HiddenNpc")+"::OnDevilDead_2";	areamonster "ordeal_1-1",183,182,246,244,"[DS] RETRIBUTION",1702,5,instance_npcname("HiddenNpc")+"::OnDevilDead_2";	areamonster "ordeal_1-1",183,182,246,244,"[DS] OBSERVATION",1700,5,instance_npcname("HiddenNpc")+"::OnDevilDead_2";	areamonster "ordeal_1-1",183,182,246,244,"[DS] LADY SOLACE",1703,5,instance_npcname("HiddenNpc")+"::OnDevilDead_2";	areamonster "ordeal_1-1",183,182,246,244,"[DS] SHELTER",1701,5,instance_npcname("HiddenNpc")+"::OnDevilDead_2";	end;OnDevilDead_2:	set .@mobnumber,70;	set .@mob_cnumber,mobcount("ordeal_1-1",instance_npcname("HiddenNpc")+"::OnDevilDead_2");	set .@mob_dead_number,.@mobnumber - .@mob_cnumber;	if( .@mob_dead_number == 45 )		instance_announce 0, "Devil Square : 25 mobs to enter the 3rd round..",bc_map,"0xffff00";	if( .@mob_dead_number == 65 )		instance_announce 0, "Devil Square : 5 mobs to enter the 3rd round..",bc_map,"0xffff00";		if( .@mob_dead_number == 70 )	{		instance_announce 0, "Devil Square : will enter to 3rd round!!!",bc_map,"0xffff00";			callsub OnDevilRound_3;	}	end;OnDevilRound_3:	areamonster "ordeal_1-1",183,182,246,244,"[DS] DIMIK",1673,10,instance_npcname("HiddenNpc")+"::OnDevilDead_3";	areamonster "ordeal_1-1",183,182,246,244,"[DS] DIMIK",1672,10,instance_npcname("HiddenNpc")+"::OnDevilDead_3";	areamonster "ordeal_1-1",183,182,246,244,"[DS] DIMIK",1671,10,instance_npcname("HiddenNpc")+"::OnDevilDead_3";	areamonster "ordeal_1-1",183,182,246,244,"[DS] DIMIK",1670,10,instance_npcname("HiddenNpc")+"::OnDevilDead_3";	areamonster "ordeal_1-1",183,182,246,244,"[DS] HIGH PRIEST MAGARETA",1637,6,instance_npcname("HiddenNpc")+"::OnDevilDead_3";	areamonster "ordeal_1-1",183,182,246,244,"[DS] MORROC SHADOW",1921,3,instance_npcname("HiddenNpc")+"::OnDevilDead_3";	areamonster "ordeal_1-1",183,182,246,244,"[DS] MORROC SHADOW",1918,3,instance_npcname("HiddenNpc")+"::OnDevilDead_3";	areamonster "ordeal_1-1",183,182,246,244,"[DS] MORROC SHADOW",1920,3,instance_npcname("HiddenNpc")+"::OnDevilDead_3";	areamonster "ordeal_1-1",183,182,246,244,"[DS] MORROC SHADOW",1919,3,instance_npcname("HiddenNpc")+"::OnDevilDead_3";	end;OnDevilDead_3:	set .@mobnumber,58;	set .@mob_cnumber,mobcount("ordeal_1-1",instance_npcname("HiddenNpc")+"::OnDevilDead_3");	set .@mob_dead_number,.@mobnumber - .@mob_cnumber;	if( .@mob_dead_number == 33 )		instance_announce 0, "Devil Square : 25 mobs to enter the 4th round..",bc_map,"0xffff00";	if( .@mob_dead_number == 53 )		instance_announce 0, "Devil Square : 5 mobs to enter the 4th round..",bc_map,"0xffff00";	if( .@mob_dead_number == 58 )	{		instance_announce 0, "Devil Square : will enter to 4th round!!!!!!",bc_map,"0xffff00";		donpcevent instance_npcname("dswarp-12")+"::OnEnable";		callsub OnDevilRound_4;	}	end;	OnDevilRound_4:	areamonster "ordeal_1-1",149,148,149,148,"[DS] Entweihen Crothen",1957,1,instance_npcname("HiddenNpc")+"::OnDevilDead_4";	areamonster "ordeal_1-1",135,135,165,165,"[DS] Thorny Skeleton",1958,11,instance_npcname("HiddenNpc")+"::OnDevilDead_4";	end;	OnDevilDead_4:	set .@mobnumber,12;	set .@mob_cnumber,mobcount("ordeal_1-1",instance_npcname("HiddenNpc")+"::OnDevilDead_4");	set .@mob_dead_number,.@mobnumber - .@mob_cnumber;		if( .@mob_dead_number == 12 )	{		instance_announce 0, "Devil Square : CONGRATULATION - 10 Treasure Boxs will be yours now",bc_map,"0xffff00";		donpcevent instance_npcname("dswarp-12")+"::OnInstanceInit";		donpcevent instance_npcname("dswarp-11")+"::OnEnable";		callsub OnDevilRound_5; // Treasure Spawn Round	}	end;OnDevilRound_5:	monster "ordeal_1-1",231,250,"Treasure Box",1324,1,instance_npcname("HiddenNpc")+"::OnDevilDead_5";	monster "ordeal_1-1",234,247,"Treasure Box",1328,1,instance_npcname("HiddenNpc")+"::OnDevilDead_5";	monster "ordeal_1-1",237,244,"Treasure Box",1332,1,instance_npcname("HiddenNpc")+"::OnDevilDead_5";	monster "ordeal_1-1",240,241,"Treasure Box",1336,1,instance_npcname("HiddenNpc")+"::OnDevilDead_5";	monster "ordeal_1-1",243,238,"Treasure Box",1340,1,instance_npcname("HiddenNpc")+"::OnDevilDead_5";	monster "ordeal_1-1",246,235,"Treasure Box",1344,1,instance_npcname("HiddenNpc")+"::OnDevilDead_5";	monster "ordeal_1-1",249,232,"Treasure Box",1348,1,instance_npcname("HiddenNpc")+"::OnDevilDead_5";	monster "ordeal_1-1",252,229,"Treasure Box",1352,1,instance_npcname("HiddenNpc")+"::OnDevilDead_5";	monster "ordeal_1-1",249,241,"Treasure Box",1356,1,instance_npcname("HiddenNpc")+"::OnDevilDead_5";	monster "ordeal_1-1",240,249,"Treasure Box",1360,1,instance_npcname("HiddenNpc")+"::OnDevilDead_5";	end;OnDevilDead_5:	set .@mobnumber,10;	set .@mob_cnumber,mobcount("ordeal_1-1",instance_npcname("HiddenNpc")+"::OnDevilDead_5");	set .@mob_dead_number,.@mobnumber - .@mob_cnumber;	instance_announce 0, "Devil Square : "+ strcharinfo(0) +" has opened the treasure box at Devil Square",bc_map,"0xffff00";		if( .@mob_dead_number == 10 )	{		donpcevent instance_npcname("HiddenNpc")+"::OnDestroyInstance";		getpartymember getcharid(1),2;		copyarray .@partymemberaid, $@partymemberaid, $@partymembercount;		detachrid;		for ( set .@i, 0; .@i < $@partymembercount; set .@i, .@i +1 ) {			if (attachrid(.@partymemberaid[.@i]))				callfunc("AddPoints", getcharid(3), 5);			detachrid;		}	}	end;	OnDestroyInstance:	initnpctimer;	end;OnTimer500:	instance_announce 0, "Devil Square will be closed in few seconds..", bc_map, 0xCCFF00;	end;OnTimer19000:	instance_warpall "prontera", 100,100;	end;	OnTimer22500:	stopnpctimer;	instance_destroy(instance_id());	end;	}// -- Warpordeal_1-1,168,168,0	script	#dswarp-11::dswarp-11	45,0,0,{OnInstanceInit:	disablenpc instance_npcname("dswarp-11");	end;OnEnable:	enablenpc instance_npcname("dswarp-11");	end;OnTouch:	warp "ordeal_1-1",189,189;	end;}ordeal_1-1,184,184,0	script	#dswarp-12::dswarp-12	45,0,0,{OnInstanceInit:	disablenpc instance_npcname("dswarp-12");	end;OnEnable:	enablenpc instance_npcname("dswarp-12");	end;OnTouch:	mes "[ Devil Square Guardian ]";	mes "Are you ready..?";	if( select("Ready, GO!!!", "Nope") != 1 ) close;	close2;	warp "ordeal_1-1",163,163;	end;}// -- Mapflagsordeal_1-1	mapflag	nowarpordeal_1-1	mapflag	nowarptoordeal_1-1	mapflag	noteleportordeal_1-1	mapflag	nosave	SavePointordeal_1-1	mapflag	nomemoordeal_1-1	mapflag	nobranchordeal_1-1	mapflag	nopenalty

 

 

 

 

Ran it through Haru's script checker with no errors.

 

Ran it on a fresh server and popped up with:

[Error]: Missing 1 right curlys in file 'npc/vroevents/devilsquare.txt', line '1'.

 

LMAO!

How the hell am I gonna put a right curly on line 1 O_o 

Funny and weird and it pisses me off.

Edited by Dogpatch

Share this post


Link to post
Share on other sites
  • 0

Script seems fine(error doesn't pop for me), so maybe the problem is your file saving method, make sure it's not having some weird encoding.

Or if your server is hosted elsewhere, it might me your file transfer problem, which is not transferring file properly.

Share this post


Link to post
Share on other sites
  • 0

it needs to be utf-8 without bom

 

 

Sorry, I forgot to add that to the prior post. Yes I tried without BOM too.

And it's not just with this script. Any new script I add doesn't show. 

 

The scripts only work if I embed them with scripts that are already loaded. 

If they are loaded separately on their own path and script. They don't show.

Edited by Dogpatch

Share this post


Link to post
Share on other sites
  • 0

Do they load if you delete contents of already created script, write something of your own and save that somewhere as copy?

 

Also, I think I had it with one script once. The problem was in new line I was using, iirc it was changed to unix only (n), and when I fixed it to win (rn) it started working fine. Or was it other way around? I forgot. But anyway, the thing is without properly reading new lines it thought that all the script is in one line and was acting weird as hell thanks to it >.>

Share this post


Link to post
Share on other sites
  • 0

Do they load if you delete contents of already created script, write something of your own and save that somewhere as copy?

 

Yeah even if I load a new super basic script, it doesn't show up in game as well even with the "Script Loaded" message via @loadnpc

 

As for your new line comment *facepalms* You lost me LOL

Can you elaborate more on that. Sorry, I can't quite understand it.

Share this post


Link to post
Share on other sites
  • 0

Do they load if you delete contents of already created script, write something of your own and save that somewhere as copy?

 

Also, I think I had it with one script once. The problem was in new line I was using, iirc it was changed to unix only (n), and when I fixed it to win (rn) it started working fine. Or was it other way around? I forgot. But anyway, the thing is without properly reading new lines it thought that all the script is in one line and was acting weird as hell thanks to it >.>

That shouldn't be the case, I believe script engine is intelligent enough for this.

Share this post


Link to post
Share on other sites
  • 0

And I thought you ran out of ideas? I'd think trying something new wouldn't hurt. Besides, I don't think script engine itself is involved in this in any way, it's more of a how file is being read.

 

@@Dogpatch

There are 3 different ways to announce a line break inside a file, one is unix-style (n):

5vwxp4.jpg

Other is mac-style ®:

2wokcbn.jpg

And the last one is what windows uses by default (rn):

5ebct3.jpg

Took all 3 pictures in notepad++ showing hidden signs for end of line.

 

Also, I meant if you take an already working/loading script file, make a copy of it (not through new file -> paste contents, but actual file copy), clear its contents and write some script inside and load that one, will it show up? (And I mean WRITE script anew, not paste from somewhere). Because if it will then it's probably something on how you save your files (eols, eofs, coding, whatever else there might be), otherwise the problem is somewhere else.

Did you try to get a working script file from someone else? File itself, not its copy via pastebin and alike. Or transferred your file to someone else for testing?

Share this post


Link to post
Share on other sites
  • 0

What's the file above it, in npc/vroevents/ ? Might be missing a right curly at the end of that file.

 

Right curly? In the scripts_custom.conf?

 

If you mean the actual scripts inside the folder, the other scripts are 100% working. I also don't see why a script above it would affect the following script if they are separate files. Or do you know something I don't about that? :P

Share this post


Link to post
Share on other sites
  • 0

In previous versions (not sure if still possible), you could pre-load a script in npc/scripts_custom.conf and it could potentially affect the next script in line if it wasn't closed properly.

 

Example:

npc: npc/custom/npc1.txtnpc: npc/custom/npc2.txt

 

If npc/custom/npc1.txt was missing a right curly at the end of the file, it would still load, but the next file in line (in this example, npc/custom/npc2.txt) would throw an error at line 1.

 

 

Just throwing that idea out there; it very well might not be the solution to your problem, but there's nothing wrong with making sure all of your custom scripts have no errors. d:

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...

×
×
  • Create New...

Important Information

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