Sfoglia il codice sorgente

* Also checks for righty coordinates before actually loading the npc. Improves fix for bugreport:419.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17052 54d463be-8e91-2dee-dedb-b68131a5f0ec
momacabu 12 anni fa
parent
commit
6d4f54625b
1 ha cambiato i file con 5 aggiunte e 5 eliminazioni
  1. 5 5
      src/map/npc.c

+ 5 - 5
src/map/npc.c

@@ -3405,7 +3405,7 @@ static const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, con
 //@runOnInit should we exec OnInit when it's done ?
 void npc_parsesrcfile(const char* filepath, bool runOnInit)
 {
-	int m, lines = 0;
+	int m, x, y, lines = 0;
 	FILE* fp;
 	size_t len;
 	char* buffer;
@@ -3486,11 +3486,11 @@ void npc_parsesrcfile(const char* filepath, bool runOnInit)
 
 		if( strcmp(w1,"-") !=0 && strcasecmp(w1,"function") != 0 )
 		{// w1 = <map name>,<x>,<y>,<facing>
-			char mapname[2048];
-			sscanf(w1,"%[^,]",mapname);
-			if( !mapindex_name2id(mapname) )
+			char mapname[MAP_NAME_LENGTH*2];
+			sscanf(w1,"%23[^,],%d,%d[^,]",mapname,&x,&y);
+			if( !mapindex_name2id(mapname) || (x < 0 || x >= map[map_mapname2mapid(mapname)].xs || y < 0 || y >= map[map_mapname2mapid(mapname)].ys) )
 			{// Incorrect map, we must skip the script info...
-				ShowError("npc_parsesrcfile: Unknown map '%s' in file '%s', line '%d'. Skipping line...\n", mapname, filepath, strline(buffer,p-buffer));
+				ShowError("npc_parsesrcfile: Unknown map '%s' or coordinates ('%d', '%d') in file '%s', line '%d'. Skipping line...\n", mapname, x, y, filepath, strline(buffer,p-buffer));
 				if( strcasecmp(w2,"script") == 0 && count > 3 )
 				{
 					if((p = npc_skip_script(p,buffer,filepath)) == NULL)