NPC scripts are not showing

Dogpatch

New member
Messages
78
Points
0
Location
Hell™
Emulator
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.

 
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.

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

 
Last edited by a moderator:
post your script in pastebin please

 
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.

 
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.

 
Last edited by a moderator:
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 >.>

 
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.

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

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

 
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?
default_tongue.png


 
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:

 
Back
Top