summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog.txt2
-rw-r--r--src/map/pc.c18
2 files changed, 17 insertions, 3 deletions
diff --git a/Changelog.txt b/Changelog.txt
index 55d5e9c5c..97039b5b7 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 242462a5a..b425ead03 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;