From 910f9d3c5df4d7dae0fd36938d332702c8c4591b Mon Sep 17 00:00:00 2001 From: celest Date: Fri, 10 Dec 2004 13:34:09 +0000 Subject: [PATCH] * Fixed players unable to move in AFM maps * Added error message if a player's last map couldn't be found git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@535 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 2 ++ src/map/pc.c | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 55d5e9c5cc..97039b5b71 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,7 @@ Date Added 12/9 + * Fixed players unable to move in AFM maps [celest] + * Added error message if a player's last map couldn't be found [celest] * Moved a map_freeblock_unlock() around to eliminate a crash [MouseJstr] * Fixed how players are cleaned up when they disconnected diff --git a/src/map/pc.c b/src/map/pc.c index 242462a5a6..b425ead034 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -779,7 +779,13 @@ int pc_authok(int id, int login_id2, time_t connect_until_time, struct mmo_chars sd->eventtimer[i] = -1; // 位置の設定 - pc_setpos(sd,sd->status.last_point.map, sd->status.last_point.x, sd->status.last_point.y, 0); + if (pc_setpos(sd,sd->status.last_point.map, sd->status.last_point.x, sd->status.last_point.y, 0) != 0) { + if(battle_config.error_log) { + char buf[32]; + sprintf(buf, "Last_point_map %s not found\n", sd->status.last_point.map); + ShowError (buf); + } + } // pet if (sd->status.pet_id > 0) @@ -3765,11 +3771,17 @@ int pc_setpos(struct map_session_data *sd,char *mapname_org,int x,int y,int clrt memcpy(mapname,mapname_org,24); mapname[16]=0; - if(strstr(mapname,".gat")==NULL && strlen(mapname)<16){ + if(strstr(mapname,".gat")==NULL && strstr(mapname,".afm")==NULL && strlen(mapname)<16){ strcat(mapname,".gat"); } - m=map_mapname2mapid(mapname); + // If we can't find the .gat map try .afm instead [celest] + if ((m=map_mapname2mapid(mapname))<0) { + char afm_name[16] = ""; + strncpy(afm_name, mapname, strlen(mapname) - 4); + strcat(afm_name, ".afm"); + m=map_mapname2mapid(afm_name); + } if(m<0){ if(sd->mapname[0]){ int ip,port;