Explorar o código

* 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

celest %!s(int64=20) %!d(string=hai) anos
pai
achega
910f9d3c5d
Modificáronse 2 ficheiros con 17 adicións e 3 borrados
  1. 2 0
      Changelog.txt
  2. 15 3
      src/map/pc.c

+ 2 - 0
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

+ 15 - 3
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;
 
 	// ˆÊ’u‚Ì�Ý’è
-	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;