⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 char_party.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
			&& 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 + -