Преглед изворни кода

- Upon character deletion remove received mails and elemental.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16985 54d463be-8e91-2dee-dedb-b68131a5f0ec
momacabu пре 12 година
родитељ
комит
0e8c431c82
1 измењених фајлова са 12 додато и 2 уклоњено
  1. 12 2
      src/char/char.c

+ 12 - 2
src/char/char.c

@@ -1539,11 +1539,11 @@ int delete_char_sql(int char_id)
 {
     char name[NAME_LENGTH];
     char esc_name[NAME_LENGTH*2+1]; //Name needs be escaped.
-    int account_id, party_id, guild_id, hom_id, base_level, partner_id, father_id, mother_id;
+    int account_id, party_id, guild_id, hom_id, base_level, partner_id, father_id, mother_id, elemental_id;
     char *data;
     size_t len;
 
-    if (SQL_ERROR == Sql_Query(sql_handle, "SELECT `name`,`account_id`,`party_id`,`guild_id`,`base_level`,`homun_id`,`partner_id`,`father`,`mother` FROM `%s` WHERE `char_id`='%d'", char_db, char_id))
+    if (SQL_ERROR == Sql_Query(sql_handle, "SELECT `name`,`account_id`,`party_id`,`guild_id`,`base_level`,`homun_id`,`partner_id`,`father`,`mother`,`elemental_id` FROM `%s` WHERE `char_id`='%d'", char_db, char_id))
         Sql_ShowDebug(sql_handle);
 
     if (SQL_SUCCESS != Sql_NextRow(sql_handle)) {
@@ -1570,6 +1570,8 @@ int delete_char_sql(int char_id)
     father_id = atoi(data);
     Sql_GetData(sql_handle, 8, &data, NULL);
     mother_id = atoi(data);
+    Sql_GetData(sql_handle, 9, &data, NULL);
+    elemental_id = atoi(data);
 
     Sql_EscapeStringLen(sql_handle, esc_name, name, min(len, NAME_LENGTH));
     Sql_FreeResult(sql_handle);
@@ -1622,6 +1624,10 @@ int delete_char_sql(int char_id)
     /* remove homunculus */
     if (hom_id)
         mapif_homunculus_delete(hom_id);
+        
+    /* remove elemental */
+    if (elemental_id)
+        mapif_elemental_delete(elemental_id);
 
     /* remove mercenary data */
     mercenary_owner_delete(char_id);
@@ -1660,6 +1666,10 @@ int delete_char_sql(int char_id)
     /* delete skills */
     if (SQL_ERROR == Sql_Query(sql_handle, "DELETE FROM `%s` WHERE `char_id`='%d'", skill_db, char_id))
         Sql_ShowDebug(sql_handle);
+        
+    /* delete mails (only received) */
+    if (SQL_ERROR == Sql_Query(sql_handle, "DELETE FROM `%s` WHERE `dest_id`='%d'", mail_db, char_id))
+        Sql_ShowDebug(sql_handle);
 
 #ifdef ENABLE_SC_SAVING
     /* status changes */