📄 char_party.c
字号:
&& i< CONNECT_WINDOWBUFSIZE; i ++ ){ char *a = CHAR_getChar( CONNECT_getJoinpartycharaindex(fd,i) , CHAR_NAME); char buf[256]; snprintf( buf, sizeof( buf),"%s\n", a); if( strlength + strlen( buf) > arraysizeof( msgbuf)){ print( "%s:%d视窗讯息buffer不足。\n", __FILE__,__LINE__); break; } strcpy( &msgbuf[strlength], buf); strlength += strlen(buf); } lssproto_WN_send( fd, WINDOW_MESSAGETYPE_SELECT, WINDOW_BUTTONTYPE_CANCEL, CHAR_WINDOWTYPE_SELECTPARTY, -1, makeEscapeString( msgbuf, escapebuf, sizeof(escapebuf))); } if( result != -1 ) { lssproto_PR_send( fd, 1, result); } return result;}static BOOL CHAR_DischargePartySub( int charaindex, int msgflg){ char buf[64], c[3]; int toindex,flg,i;#ifdef _ITEM_QUITPARTY int j = 0,k;#endif if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_LEADER ) { int pindex, airplaneflag=0; // Arminius 7.10 Airplane if( CHAR_getInt(charaindex, CHAR_WHICHTYPE) == CHAR_TYPEBUS ) { if ((CHAR_getInt(charaindex, CHAR_BASEIMAGENUMBER) !=100355) && (CHAR_getInt(charaindex, CHAR_BASEIMAGENUMBER) !=100461)){ airplaneflag=1; } } for( i = 0; i < CHAR_PARTYMAX; i ++ ) { pindex = CHAR_getWorkInt( charaindex, i + CHAR_WORKPARTYINDEX1); if( CHAR_CHECKINDEX( pindex) ) { int fd = getfdFromCharaIndex( pindex ); CHAR_setWorkInt( pindex, CHAR_WORKPARTYINDEX1, -1); CHAR_setWorkInt( pindex, CHAR_WORKPARTYMODE, CHAR_PARTY_NONE); if( msgflg ){ CHAR_talkToCli( pindex, -1, "团队已解散!", CHAR_COLORYELLOW);#ifdef _ITEM_QUITPARTY // won fix for( j=0;j<CHAR_MAXITEMHAVE;j++ ){ int del_item_index = CHAR_getItemIndex( pindex , j ); if( ITEM_CHECKINDEX(del_item_index) ){ //格子内有道具 for( k=0;k<itemquitparty_num;k++ ){ if( ITEM_getInt( del_item_index, ITEM_ID) == atoi(Disappear_Item[k].string) ){ //若等於所设定的道具ID CHAR_setItemIndex( pindex, j, -1); //格子内道具消失 ITEM_endExistItemsOne( del_item_index ); CHAR_sendItemDataOne( pindex, j); } } } }#endif } if( fd != -1 ) { lssproto_PR_send( fd, 0, 1); } // Arminius 7.10 Airplane if (airplaneflag && (CHAR_getInt(pindex,CHAR_WHICHTYPE)!=CHAR_TYPEBUS)) { int bi,bbi,ii,category; bbi=CHAR_getInt(pindex,CHAR_BASEBASEIMAGENUMBER); ii=CHAR_getItemIndex(pindex,CHAR_ARM); if (!ITEM_CHECKINDEX(ii)) category=ITEM_FIST; else category=ITEM_getInt(ii,ITEM_TYPE); bi=CHAR_getNewImagenumberFromEquip(bbi,category); if (bi==-1) bi=bbi; CHAR_setInt(pindex,CHAR_BASEIMAGENUMBER,bi); // Robin 0810 debug CHAR_complianceParameter( pindex ); CHAR_sendCToArroundCharacter(CHAR_getWorkInt(pindex , CHAR_WORKOBJINDEX)); } } CHAR_setWorkInt( charaindex, i + CHAR_WORKPARTYINDEX1, -1); } CHAR_sendLeader( CHAR_getWorkInt( charaindex, CHAR_WORKOBJINDEX), 0); }else if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_CLIENT ) { int myarray = -1; int fd = getfdFromCharaIndex( charaindex ); CHAR_setWorkInt( charaindex, CHAR_WORKPARTYMODE, CHAR_PARTY_NONE); toindex = CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1); if( !CHAR_CHECKINDEX(toindex ) ) return FALSE; if( CHAR_getInt( toindex, CHAR_WHICHTYPE) == CHAR_TYPEBUS ) { NPC_BusCheckAllowItem( toindex, charaindex, TRUE); // Arminius 7.9 Airplane if ((CHAR_getInt( toindex, CHAR_BASEIMAGENUMBER) !=100355) && (CHAR_getInt( toindex, CHAR_BASEIMAGENUMBER) !=100461)){ int bi,bbi,ii,category; bbi=CHAR_getInt(charaindex,CHAR_BASEBASEIMAGENUMBER); ii=CHAR_getItemIndex(charaindex,CHAR_ARM); if (!ITEM_CHECKINDEX(ii)) category=ITEM_FIST; else category=ITEM_getInt(ii,ITEM_TYPE); bi=CHAR_getNewImagenumberFromEquip(bbi,category); if (bi==-1) bi=bbi; CHAR_setInt(charaindex,CHAR_BASEIMAGENUMBER,bi); // Robin 0810 debug CHAR_complianceParameter( charaindex ); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( charaindex , CHAR_WORKOBJINDEX )); if(CHAR_getWorkInt(toindex,CHAR_NPCWORKINT5)==1) { if( CHAR_getInt( charaindex, CHAR_LASTTALKELDER)>=0){ int fl,x,y; CHAR_getElderPosition( CHAR_getInt( charaindex, CHAR_LASTTALKELDER), &fl, &x, &y ); CHAR_warpToSpecificPoint(charaindex, fl, x, y); } } } } CHAR_setWorkInt( charaindex, CHAR_WORKPARTYINDEX1, -1); for( i = 0; i < CHAR_PARTYMAX; i ++ ) { int index = CHAR_getWorkInt( toindex, i + CHAR_WORKPARTYINDEX1); if( CHAR_CHECKINDEX(index) ){ if( index == charaindex) { myarray = i; break; } } } if( myarray == CHAR_PARTYMAX) { print( "DischargeParty(): 真奇怪!"); return FALSE; } CHAR_setWorkInt( toindex, CHAR_WORKPARTYINDEX1 + myarray, -1); snprintf( buf,sizeof( buf), "%s 脱离团队!", CHAR_getChar( charaindex, CHAR_NAME)); if( msgflg ){ CHAR_talkToCli( charaindex, -1, "脱离团队!", CHAR_COLORYELLOW);#ifdef _ITEM_QUITPARTY // won fix for( i=0;i<CHAR_MAXITEMHAVE;i++ ){ int del_item_index = CHAR_getItemIndex( charaindex , j ); if( ITEM_CHECKINDEX(del_item_index) ){ //格子内有道具 for( j=0;j<itemquitparty_num;j++ ){ if( ITEM_getInt( del_item_index, ITEM_ID) == atoi(Disappear_Item[j].string) ){ //若等於所设定的道具ID CHAR_setItemIndex( charaindex, i, -1); //格子内道具消失 ITEM_endExistItemsOne( del_item_index ); CHAR_sendItemDataOne( charaindex, i); } } } }#endif } snprintf( c, sizeof(c), "N%d", myarray); if( fd != -1 ) { lssproto_PR_send( fd, 0, 1); } for( i = 0; i < CHAR_PARTYMAX; i ++ ) { int index = CHAR_getWorkInt( toindex, i + CHAR_WORKPARTYINDEX1); if( CHAR_CHECKINDEX(index) ){#ifdef _ITEM_QUITPARTY // won fix for( j=0;j<CHAR_MAXITEMHAVE;j++ ){ int del_item_index = CHAR_getItemIndex( index , j ); if( ITEM_CHECKINDEX(del_item_index) ){ //格子内有道具 for( k=0;k<itemquitparty_num;k++ ){ if( ITEM_getInt( del_item_index, ITEM_ID) == atoi(Disappear_Item[k].string) ){ //若等於所设定的道具ID CHAR_setItemIndex( index, j, -1); //格子内道具消失 ITEM_endExistItemsOne( del_item_index ); CHAR_sendItemDataOne( index, j); } } } }#endif if( msgflg ){ CHAR_talkToCli( index, -1, buf, CHAR_COLORYELLOW); } CHAR_sendStatusString( index, c); } } flg = FALSE; for( i = 1; i < CHAR_PARTYMAX; i ++ ) { int index = CHAR_getWorkInt( toindex, i + CHAR_WORKPARTYINDEX1); if( CHAR_CHECKINDEX(index) ){ flg = TRUE; break; } } if( !flg) { CHAR_setWorkInt( toindex, CHAR_WORKPARTYMODE, CHAR_PARTY_NONE); CHAR_sendLeader( CHAR_getWorkInt( toindex, CHAR_WORKOBJINDEX), 0); }else { POINT start,end; int previndex = toindex; end.x = CHAR_getInt( charaindex, CHAR_X); end.y = CHAR_getInt( charaindex, CHAR_Y); for( i = 1; i < CHAR_PARTYMAX; i ++ ) { int index = CHAR_getWorkInt( toindex, i + CHAR_WORKPARTYINDEX1); if( CHAR_CHECKINDEX( index) ) { if( NPC_Util_CharDistance( index, previndex) > 1) { int parent_dir; start.x = CHAR_getInt( index, CHAR_X); start.y = CHAR_getInt( index, CHAR_Y); parent_dir = NPC_Util_getDirFromTwoPoint( &start,&end ); end = start; if( parent_dir != -1 ) { CHAR_walk( index, parent_dir, 0); } } previndex = index; } } } } return TRUE;}BOOL CHAR_DischargeParty( int charaindex, int flg){ return CHAR_DischargePartySub( charaindex, 1);}BOOL CHAR_DischargePartyNoMsg( int charaindex){ return CHAR_DischargePartySub( charaindex, 0);}/*------------------------------------------------------------ * 愤坌互伉□母□井升丹井毛霜耨允月[ ------------------------------------------------------------*/void CHAR_sendLeader( int objindex, int leader){ int opt[1]; opt[0] = leader; CHAR_sendWatchEvent( objindex,CHAR_ACTLEADER,opt,1,TRUE);}/*------------------------------------------------------------ * 醮棉毛赐 CHAR_WORKPARTYINDEX)隙烂匹平乓仿index毛娄匀舰月[ * 愤坌互褪匹手阂匹手 [ ------------------------------------------------------------*/int CHAR_getPartyIndex( int index, int num){ int nindex = -1; /* 醮棉及奶件犯永弁旦毛潸 */ /* 褪及桦宁 */ if( CHAR_getWorkInt( index, CHAR_WORKPARTYMODE) == CHAR_PARTY_LEADER ) { nindex = CHAR_getWorkInt( index, CHAR_WORKPARTYINDEX1 + num ); } /* 阂及桦宁 */ else { int oyaindex = CHAR_getWorkInt( index, CHAR_WORKPARTYINDEX1); if( CHAR_CHECKINDEX( oyaindex)) { nindex = CHAR_getWorkInt( oyaindex, CHAR_WORKPARTYINDEX1+num); } } return nindex;}/*------------------------------------------------------------ * 丢永本□斥毛霜耨允月[ * 醮棉互中木壬公及醮棉卞手丢永本□斥毛霜耨允月[ ------------------------------------------------------------*/void CHAR_talkToCliAndParty( int talkedcharaindex,int talkcharaindex, char* message, CHAR_COLOR color ){ int i; /* 引内愤坌 */ CHAR_talkToCli( talkedcharaindex, talkcharaindex, message, color); for( i = 0; i < CHAR_PARTYMAX; i ++ ) { int index = CHAR_getPartyIndex( talkedcharaindex, i); if( CHAR_CHECKINDEX( index) && index != talkedcharaindex) { CHAR_talkToCli( index, talkcharaindex, message, color); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -