- Made the map server abort when it can't open the mapcache file.
- Added a normalizing function to map.c which handles removing the extension of the map name. - Applied said function when reading maps from maps_athena, since the mapcache lookup fails without it (maps are stored there without extensions) - TODO: Apply the normalizing function everywhere when parsing map related scripts. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9973 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
22d3158a94
commit
c350fe1318
@ -2447,6 +2447,20 @@ struct map_cache_info {
|
||||
|
||||
FILE *map_cache_fp;
|
||||
|
||||
char *map_normalize_name(char *mapname)
|
||||
{
|
||||
char *ptr, *ptr2;
|
||||
ptr = strchr(mapname, '.');
|
||||
if (ptr) { //Check and remove extension.
|
||||
while (ptr[1] && (ptr2 = strchr(ptr+1, '.')))
|
||||
ptr = ptr2; //Skip to the last dot.
|
||||
if(stricmp(ptr,".gat") == 0 ||
|
||||
stricmp(ptr,".afm") == 0)
|
||||
*ptr = '\0'; //Remove extension.
|
||||
}
|
||||
return mapname;
|
||||
}
|
||||
|
||||
int map_readmap(struct map_data *m)
|
||||
{
|
||||
int i;
|
||||
@ -2489,7 +2503,8 @@ int map_addmap(char *mapname) {
|
||||
CL_WHITE"%s"CL_RESET"', the limit of maps has been reached.\n",mapname);
|
||||
return 1;
|
||||
}
|
||||
memcpy(map[map_num].name, mapname, MAP_NAME_LENGTH-1);
|
||||
|
||||
memcpy(map[map_num].name, map_normalize_name(mapname), MAP_NAME_LENGTH-1);
|
||||
map_num++;
|
||||
return 0;
|
||||
}
|
||||
@ -2529,7 +2544,10 @@ int map_readallmaps()
|
||||
int maps_removed = 0;
|
||||
|
||||
if(!(map_cache_fp = fopen(map_cache_file, "rb")))
|
||||
ShowError("Unable to open map cache file "CL_WHITE"%s"CL_RESET"\n", map_cache_file);
|
||||
{
|
||||
ShowFatalError("Unable to open map cache file "CL_WHITE"%s"CL_RESET"\n", map_cache_file);
|
||||
exit(1); //No use launching server if maps can't be read.
|
||||
}
|
||||
|
||||
ShowStatus("Loading maps...\n");
|
||||
|
||||
|
@ -1388,6 +1388,7 @@ int map_foreachiddb(int (*)(DBKey,void*,va_list),...);
|
||||
void map_addnickdb(struct map_session_data *);
|
||||
struct map_session_data * map_nick2sd(char*);
|
||||
int compare_item(struct item *a, struct item *b);
|
||||
char *map_normalize_name(char *mapname);
|
||||
|
||||
// その他
|
||||
int map_check_dir(int s_dir,int t_dir);
|
||||
|
Loading…
x
Reference in New Issue
Block a user