Update name for all party members on rename (#1715)
This commit is contained in:
parent
90e3f89df2
commit
aa7de205fe
@ -1264,6 +1264,10 @@ int char_rename_char_sql(struct char_session_data *sd, uint32 char_id)
|
||||
Sql_ShowDebug(sql_handle);
|
||||
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.
|
||||
if( char_dat.guild_id )
|
||||
|
@ -889,3 +889,29 @@ int inter_party_CharOffline(uint32 char_id, int party_id) {
|
||||
idb_remove(party_db_, party_id);
|
||||
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);
|
||||
void inter_party_sql_final(void);
|
||||
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_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_count = 0;
|
||||
int member_id;
|
||||
bool rename = false;
|
||||
|
||||
nullpo_ret(sp);
|
||||
|
||||
@ -282,6 +283,9 @@ int party_recv_info(struct party* sp, uint32 char_id)
|
||||
|
||||
if( i == MAX_PARTY )
|
||||
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 ) {
|
||||
@ -346,6 +350,11 @@ int party_recv_info(struct party* sp, uint32 char_id)
|
||||
if( p->instance_id != 0 )
|
||||
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
|
||||
sd = map_charid2sd(char_id);
|
||||
|
Loading…
x
Reference in New Issue
Block a user