diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/clif.c | 14 | ||||
-rw-r--r-- | src/map/party.c | 8 |
2 files changed, 13 insertions, 9 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index 678581d03..ce37e3816 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -5301,20 +5301,22 @@ int clif_party_created(struct map_session_data *sd,int result) int clif_party_member_info(struct party_data *p, struct map_session_data *sd) { unsigned char buf[96]; + int i; if (!sd) { //Pick any party member (this call is used when changing item share rules) - int i; - for (i=0; i<MAX_PARTY && !p->data[i].sd; i++); - if (i >= MAX_PARTY) return 0; //Should never happen... - sd = p->data[i].sd; + ARR_FIND( 0, MAX_PARTY, i, p->data[i].sd != 0 ); + } else { + ARR_FIND( 0, MAX_PARTY, i, p->data[i].sd == sd ); } + if (i >= MAX_PARTY) return 0; //Should never happen... + sd = p->data[i].sd; WBUFW(buf, 0) = 0x1e9; WBUFL(buf, 2) = sd->status.account_id; - WBUFL(buf, 6) = 0; + WBUFL(buf, 6) = (p->party.member[i].leader)?1:0; WBUFW(buf,10) = sd->bl.x; WBUFW(buf,12) = sd->bl.y; - WBUFB(buf,14) = 0; //Unconfirmed byte, could be online/offline. + WBUFB(buf,14) = (p->party.member[i].online)?1:0; memcpy(WBUFP(buf,15), p->party.name, NAME_LENGTH); memcpy(WBUFP(buf,39), sd->status.name, NAME_LENGTH); mapindex_getmapname_ext(mapindex_id2name(sd->mapindex), (char*)WBUFP(buf,63)); diff --git a/src/map/party.c b/src/map/party.c index 2e5370a80..8e97d1f05 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -381,8 +381,6 @@ int party_member_added(int party_id,int account_id,int char_id, int flag) } sd2 = map_id2sd(sd->party_invite_account); - if( sd2 != NULL ) - clif_party_inviteack(sd2,sd->status.name,flag?3:2); sd->party_invite = 0; sd->party_invite_account = 0; @@ -406,9 +404,13 @@ int party_member_added(int party_id,int account_id,int char_id, int flag) } party_check_conflict(sd); + clif_party_member_info(p,sd); clif_party_option(p,sd,0x100); clif_party_info(p,sd); - clif_party_member_info(p,sd); + + if( sd2 != NULL ) + clif_party_inviteack(sd2,sd->status.name,flag?3:2); + for( i = 0; i < ARRAYLENGTH(p->data); ++i ) {// hp of the other party members sd2 = p->data[i].sd; |