summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/clif.c14
-rw-r--r--src/map/party.c8
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;