Update name for all party members on rename (#1715)
This commit is contained in:
parent
90e3f89df2
commit
aa7de205fe
@ -1265,6 +1265,10 @@ int char_rename_char_sql(struct char_session_data *sd, uint32 char_id)
|
|||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update party and party members with the new player name
|
||||||
|
if( char_dat.party_id )
|
||||||
|
inter_party_charname_changed(char_dat.party_id, char_id, sd->new_name);
|
||||||
|
|
||||||
// Change character's name into guild_db.
|
// Change character's name into guild_db.
|
||||||
if( char_dat.guild_id )
|
if( char_dat.guild_id )
|
||||||
inter_guild_charname_changed(char_dat.guild_id, sd->account_id, char_id, sd->new_name);
|
inter_guild_charname_changed(char_dat.guild_id, sd->account_id, char_id, sd->new_name);
|
||||||
|
@ -889,3 +889,29 @@ int inter_party_CharOffline(uint32 char_id, int party_id) {
|
|||||||
idb_remove(party_db_, party_id);
|
idb_remove(party_db_, party_id);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int inter_party_charname_changed(int party_id, uint32 char_id, char *name)
|
||||||
|
{
|
||||||
|
struct party_data* p = NULL;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
p = inter_party_fromsql(party_id);
|
||||||
|
if( p == NULL || p->party.party_id == 0 )
|
||||||
|
{
|
||||||
|
ShowError("inter_party_charname_changed: Can't find party %d.\n", party_id);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ARR_FIND(0, MAX_PARTY, i, p->party.member[i].char_id == char_id);
|
||||||
|
if( i == MAX_PARTY )
|
||||||
|
{
|
||||||
|
ShowError("inter_party_charname_changed: Can't find character %d in party %d.\n", char_id, party_id);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
safestrncpy(p->party.member[i].name, name, NAME_LENGTH);
|
||||||
|
|
||||||
|
mapif_party_info(-1, &p->party, char_id);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -20,6 +20,7 @@ int inter_party_parse_frommap(int fd);
|
|||||||
int inter_party_sql_init(void);
|
int inter_party_sql_init(void);
|
||||||
void inter_party_sql_final(void);
|
void inter_party_sql_final(void);
|
||||||
int inter_party_leave(int party_id,uint32 account_id, uint32 char_id, char *name);
|
int inter_party_leave(int party_id,uint32 account_id, uint32 char_id, char *name);
|
||||||
|
int inter_party_charname_changed(int party_id, uint32 char_id, char *name);
|
||||||
int inter_party_CharOnline(uint32 char_id, int party_id);
|
int inter_party_CharOnline(uint32 char_id, int party_id);
|
||||||
int inter_party_CharOffline(uint32 char_id, int party_id);
|
int inter_party_CharOffline(uint32 char_id, int party_id);
|
||||||
|
|
||||||
|
@ -262,6 +262,7 @@ int party_recv_info(struct party* sp, uint32 char_id)
|
|||||||
int added[MAX_PARTY];// member_id in new data
|
int added[MAX_PARTY];// member_id in new data
|
||||||
int added_count = 0;
|
int added_count = 0;
|
||||||
int member_id;
|
int member_id;
|
||||||
|
bool rename = false;
|
||||||
|
|
||||||
nullpo_ret(sp);
|
nullpo_ret(sp);
|
||||||
|
|
||||||
@ -282,6 +283,9 @@ int party_recv_info(struct party* sp, uint32 char_id)
|
|||||||
|
|
||||||
if( i == MAX_PARTY )
|
if( i == MAX_PARTY )
|
||||||
removed[removed_count++] = member_id;
|
removed[removed_count++] = member_id;
|
||||||
|
// If the member already existed, compare the old to the (possible) new name
|
||||||
|
else if( !rename && strcmp(member->name,sp->member[i].name) )
|
||||||
|
rename = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
for( member_id = 0; member_id < MAX_PARTY; ++member_id ) {
|
for( member_id = 0; member_id < MAX_PARTY; ++member_id ) {
|
||||||
@ -347,6 +351,11 @@ int party_recv_info(struct party* sp, uint32 char_id)
|
|||||||
instance_reqinfo(sd,p->instance_id);
|
instance_reqinfo(sd,p->instance_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If a player was renamed, make sure to resend the party information
|
||||||
|
if( rename ){
|
||||||
|
clif_party_info(p,NULL);
|
||||||
|
}
|
||||||
|
|
||||||
if( char_id != 0 ) { // requester
|
if( char_id != 0 ) { // requester
|
||||||
sd = map_charid2sd(char_id);
|
sd = map_charid2sd(char_id);
|
||||||
if( sd && sd->status.party_id == sp->party_id && party_getmemberid(p,sd) == -1 )
|
if( sd && sd->status.party_id == sp->party_id && party_getmemberid(p,sd) == -1 )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user