int party_reply_invite(struct map_session_data *sd,int party_id,int flag) { struct map_session_data* tsd; struct party_member member; if( sd->party_invite != party_id ) { // forged sd->party_invite = 0; sd->party_invite_account = 0; return 0; } tsd = map_id2sd(sd->party_invite_account); if( flag == 1 && !sd->party_creating && !sd->party_joining ) { // accepted and allowed sd->party_joining = true; party_fill_member(&member, sd, 0); intif_party_addmember(sd->party_invite, &member); return 1; } else { // rejected or failure sd->party_invite = 0; sd->party_invite_account = 0; if( tsd != NULL ) clif_party_invite_reply(tsd,sd->status.name,PARTY_REPLY_REJECTED); } return 0; }
/* Process response to party invitation. */ int party_reply_invite(dumb_ptr<map_session_data> sd, int account_id, int flag) { nullpo_ret(sd); /* There is no pending invitation. */ if (!sd->party_invite || !sd->party_invite_account) return 0; /* * Only one invitation can be pending, so these have to be the same. Since * the client continues to send the wrong ID, and it's already managed on * this side of things, the sent ID is being ignored. */ account_id = sd->party_invite_account; /* The invitation was accepted. */ if (flag == 1) intif_party_addmember(sd->party_invite, sd->status.account_id); /* The invitation was rejected. */ else { /* This is the player who sent the invitation. */ dumb_ptr<map_session_data> tsd = NULL; sd->party_invite = 0; sd->party_invite_account = 0; if ((tsd = map_id2sd(account_id))) clif_party_inviteack(tsd, sd->status.name, 1); } return 0; }
int party_reply_invite(struct map_session_data *sd,int account_id,int flag) { struct map_session_data *tsd= map_id2sd(account_id); struct party_member member; nullpo_retr(0, sd); if(flag==1){ party_fill_member(&member, sd); intif_party_addmember(sd->party_invite, &member); return 0; } sd->party_invite=0; sd->party_invite_account=0; if(tsd==NULL) return 0; clif_party_inviteack(tsd,sd->status.name,1); return 1; }
void party_reply_invite(struct map_session_data *sd,int account_id,int flag) { struct map_session_data *tsd= map_id2sd(account_id); struct party_member member; if( flag == 1 && !sd->party_creating && !sd->party_joining ) {// accepted and allowed sd->party_joining = true; party_fill_member(&member, sd); intif_party_addmember(sd->party_invite, &member); } else {// rejected or failure sd->party_invite = 0; sd->party_invite_account = 0; if( tsd != NULL ) clif_party_inviteack(tsd,sd->status.name,1); } }
// パーティ勧誘への返答 int party_reply_invite(struct map_session_data *sd,int account_id,int flag) { struct map_session_data *tsd= map_id2sd(account_id); nullpo_retr(0, sd); if(flag==1){ // 承諾 //inter鯖へ追加要求 intif_party_addmember( sd->party_invite, sd->status.account_id ); return 0; } else { // 拒否 sd->party_invite=0; sd->party_invite_account=0; if(tsd==NULL) return 0; clif_party_inviteack(tsd,sd->status.name,1); } return 0; }
int party_reply_invite(struct map_session_data *sd,int party_id,int flag) { struct map_session_data* tsd; struct party_member member; if( sd->party_invite != party_id ) { // forged sd->party_invite = 0; sd->party_invite_account = 0; return 0; } // The character is already in a party, possibly left a party invite open and created his own party if( sd->status.party_id != 0 ){ // On Aegis no rejection packet is sent to the inviting player sd->party_invite = 0; sd->party_invite_account = 0; return 0; } tsd = map_id2sd(sd->party_invite_account); if( flag == 1 && !sd->party_creating && !sd->party_joining ) { // accepted and allowed sd->party_joining = true; party_fill_member(&member, sd, 0); intif_party_addmember(sd->party_invite, &member); return 1; } else { // rejected or failure sd->party_invite = 0; sd->party_invite_account = 0; if( tsd != NULL ) clif_party_invite_reply(tsd,sd->status.name,PARTY_REPLY_REJECTED); } return 0; }