// パーティメンバの移動 int party_send_movemap(dumb_ptr<map_session_data> sd) { struct party *p; nullpo_ret(sd); if (sd->status.party_id == 0) return 0; intif_party_changemap(sd, 1); if (sd->party_sended != 0) // もうパーティデータは送信済み return 0; // 競合確認 party_check_conflict(sd); // あるならパーティ情報送信 if ((p = party_search(sd->status.party_id)) != NULL) { party_check_member(p); // 所属を確認する if (sd->status.party_id == p->party_id) { clif_party_info(p, sd->fd); clif_party_option(p, sd, 0x100); sd->party_sended = 1; } } return 0; }
void party_send_movemap(struct map_session_data *sd) { int i; struct party_data *p; if( sd->status.party_id==0 ) return; intif_party_changemap(sd,1); p=party_search(sd->status.party_id); if (!p) return; if(sd->state.connect_new) { //Note that this works because this function is invoked before connect_new is cleared. clif_party_option(p,sd,0x100); clif_party_info(p,sd); clif_party_member_info(p,sd); } if (sd->fd) { // synchronize minimap positions with the rest of the party for(i=0; i < MAX_PARTY; i++) { if (p->data[i].sd && p->data[i].sd != sd && p->data[i].sd->bl.m == sd->bl.m) { clif_party_xy_single(sd->fd, p->data[i].sd); clif_party_xy_single(p->data[i].sd->fd, sd); } } } return; }
int party_send_logout(struct map_session_data *sd) { struct party_data *p; int i; if(!sd->status.party_id) return 0; intif_party_changemap(sd,0); p=party_search(sd->status.party_id); if(!p) return 0; for(i=0;i<MAX_PARTY && p->data[i].sd != sd;i++); if (i < MAX_PARTY) memset(&p->data[i], 0, sizeof(p->data[0])); return 1; }
// パーティメンバのログアウト int party_send_logout(struct map_session_data *sd) { struct party *p; nullpo_retr(0, sd); if( sd->status.party_id>0 ) intif_party_changemap(sd,0); // sdが無効になるのでパーティ情報から削除 if( (p=party_search(sd->status.party_id))!=NULL ){ int i; for(i=0;i<MAX_PARTY;i++) if(p->member[i].sd==sd) p->member[i].sd=NULL; } return 0; }
// パーティメンバの移動 int party_send_movemap(struct map_session_data *sd) { int i; struct party *p; nullpo_retr(0, sd); if( sd->status.party_id==0 ) return 0; intif_party_changemap(sd,1); p=party_search(sd->status.party_id); if (p && sd->fd) { //Send dots of other party members to this char. [Skotlex] for(i=0; i < MAX_PARTY; i++) { if (!p->member[i].sd || p->member[i].sd == sd || p->member[i].sd->bl.m != sd->bl.m) continue; clif_party_xy_single(sd->fd, p->member[i].sd); } } if( sd->state.party_sent ) // もうパーティデータは送信済み return 0; // 競合確認 party_check_conflict(sd); // あるならパーティ情報送信 if(p){ party_check_member(p); // 所属を確認する if(sd->status.party_id==p->party_id){ clif_party_main_info(p,sd->fd); clif_party_option(p,sd,0x100); clif_party_info(p,sd->fd); sd->state.party_sent=1; } } return 0; }
int party_send_logout(struct map_session_data *sd) { struct party_data *p; int i; if(!sd->status.party_id) return 0; intif_party_changemap(sd,0); p=party_search(sd->status.party_id); if(!p) return 0; ARR_FIND( 0, MAX_PARTY, i, p->data[i].sd == sd ); if( i < MAX_PARTY ) memset(&p->data[i], 0, sizeof(p->data[0])); else ShowError("party_send_logout: Failed to locate member %d:%d in party %d!\n", sd->status.account_id, sd->status.char_id, p->party.party_id); return 1; }
// パーティメンバのログアウト int party_send_logout(dumb_ptr<map_session_data> sd) { PartyPair p; nullpo_retz(sd); if (sd->status.party_id) intif_party_changemap(sd, 0); // sdが無効になるのでパーティ情報から削除 if ((p = party_search(sd->status.party_id))) { int i; for (i = 0; i < MAX_PARTY; i++) if (dumb_ptr<map_session_data>(p->member[i].sd) == sd) p->member[i].sd = nullptr; } return 0; }
void party_send_movemap(struct map_session_data *sd) { int i; struct party_data *p; if( sd->status.party_id==0 ) return; intif_party_changemap(sd,1); p=party_search(sd->status.party_id); if (!p) return; if(!sd->state.party_sent) { party_check_member(&p->party); if(sd->status.party_id==p->party.party_id){ clif_party_option(p,sd,0x100); clif_party_info(p,sd); clif_party_member_info(p,sd); sd->state.party_sent=1; } } if (sd->fd) { // synchronize minimap positions with the rest of the party for(i=0; i < MAX_PARTY; i++) { if (p->data[i].sd && p->data[i].sd != sd && p->data[i].sd->bl.m == sd->bl.m) { clif_party_xy_single(sd->fd, p->data[i].sd); clif_party_xy_single(p->data[i].sd->fd, sd); } } } return; }
void party_send_levelup(struct map_session_data *sd) { intif_party_changemap(sd,1); }