Ver código fonte

- Added a fix to prevent missing a mail attachment is map servers disconnect from char server.
- Fixed the sprite of Wing of Victory.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11855 54d463be-8e91-2dee-dedb-b68131a5f0ec

zephyrus 17 anos atrás
pai
commit
2b1fac216c
6 arquivos alterados com 27 adições e 13 exclusões
  1. 3 0
      Changelog-Trunk.txt
  2. 1 1
      db/item_db.txt
  3. 2 1
      src/map/clif.c
  4. 4 11
      src/map/intif.c
  5. 16 0
      src/map/mail.c
  6. 1 0
      src/map/mail.h

+ 3 - 0
Changelog-Trunk.txt

@@ -3,6 +3,9 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
+2007/12/03
+	* Fixed a bug on Mail System. Removed the possibility to lost the attachment on
+	  a Map - Char server disconnection. [Zephyrus]
 2007/11/29
 	* pc_setoption no longer does view_data changes while disguised (as this
 	  breaks things) [Skotlex]

+ 1 - 1
db/item_db.txt

@@ -2219,7 +2219,7 @@
 5351,Sunflower_,Sunflower,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,0,37,{ bonus2 bSubRace,RC_Insect,10; },{},{}
 //5354,Songkok,Songkok,5,,,100,,2,,0,0xFFFFFFFE,7,1,256,,0,1,362,{ bonus bCastrate,-5; },{},{}
 //5355,Selendang,Selendang,5,,,100,,2,,0,0xFFFFFFFE,7,0,256,,0,1,363,{ bonus bCastrate,-5; },{},{}
-5357,Victory_Wings,Victory Wings,5,,,0,,10,,,0xFFFFFFFF,7,2,256,,,,361,{ bonus bMdef,10;},{},{}
+5357,Victory_Wings,Victory Wings,5,,,0,,10,,,0xFFFFFFFF,7,2,256,,,,365,{ bonus bMdef,10;},{},{}
 //5358,Pecopeco_Ears,Pecopeco Ears,5,,,100,,1,,0,0xFFFFFFFF,7,2,512,,70,0,366,{ bonus bAgi,1; bonus bMdef,2; },{},{}
 //5359,Ship_Captain's_Hat,Ship Captain's Hat,5,,,500,,3,,0,0xFFFFFFFF,7,2,256,,30,1,367,{ bonus bLongAtkRate,3; },{},{}
 //5360,Hukke's_Blackcat_Ears,Hukke's Blackcat Ears,5,,,200,,2,,0,0xFFFFFFFF,7,2,256,,45,1,368,{ bonus bDef,-50; bonus bFlee,10; bonus bCritical,3; bonus2 bCriticalAddRace,RC_Boss,10; bonus2 bCriticalAddRace,RC_NonBoss,10; },{},{}

+ 2 - 1
src/map/clif.c

@@ -11515,7 +11515,8 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd)
 		memset(msg.body, 0x00, MAIL_BODY_LENGTH);
 	
 	msg.timestamp = (int)mail_calctimes();
-	intif_Mail_send(sd->status.account_id, &msg);
+	if( !intif_Mail_send(sd->status.account_id, &msg) )
+		mail_deliveryfail(sd, &msg);
 
 	sd->cansendmail_tick = gettick() + 1000; // 1 Second flood Protection
 }

+ 4 - 11
src/map/intif.c

@@ -1645,7 +1645,7 @@ int intif_Mail_send(int account_id, struct mail_message *msg)
 	memcpy(WFIFOP(inter_fd,8), msg, sizeof(struct mail_message));
 	WFIFOSET(inter_fd,len);
 
-	return 0;
+	return 1;
 }
 
 static void intif_parse_Mail_send(int fd)
@@ -1666,16 +1666,9 @@ static void intif_parse_Mail_send(int fd)
 	if( (sd = map_charid2sd(msg.send_id)) )
 	{
 		if( fail )
-		{
-			pc_additem(sd, &msg.item, msg.item.amount);
-			if( msg.zeny > 0 )
-			{
-				sd->status.zeny += msg.zeny;
-				clif_updatestatus(sd, SP_ZENY);
-			}
-		}
-
-		clif_Mail_send(sd->fd, fail);
+			mail_deliveryfail(sd, &msg);
+		else
+			clif_Mail_send(sd->fd, false);
 	}
 
 	if( fail )

+ 16 - 0
src/map/mail.c

@@ -154,4 +154,20 @@ int mail_openmail(struct map_session_data *sd)
 	return 0;
 }
 
+void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg)
+{
+	nullpo_retv(sd);
+	nullpo_retv(msg);
+
+	pc_additem(sd, &msg->item, msg->item.amount);
+	
+	if( msg->zeny > 0 )
+	{
+		sd->status.zeny += msg->zeny;
+		clif_updatestatus(sd, SP_ZENY);
+	}
+	
+	clif_Mail_send(sd->fd, true);
+}
+
 #endif

+ 1 - 0
src/map/mail.h

@@ -14,5 +14,6 @@ unsigned char mail_setitem(struct map_session_data *sd, int idx, int amount);
 bool mail_setattachment(struct map_session_data *sd, struct mail_message *msg);
 void mail_getattachment(struct map_session_data* sd, int zeny, struct item* item);
 int mail_openmail(struct map_session_data *sd);
+void mail_deliveryfail(struct map_session_data *sd, struct mail_message *msg);
 
 #endif /* _MAIL_H_ */