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

📄 char_party.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "version.h"#include <stdio.h>#include "readmap.h"#include "object.h"#include "char.h"#include "char_base.h"#include "battle.h"#include "lssproto_serv.h"#include "npcutil.h"#include "npc_bus.h"#include "npc_airplane.h"       // Arminius 7.10 Airplane#include "family.h"             // shan#ifdef _ITEM_QUITPARTY#include "init.h"#endif// shan add extern struct FM_PKFLOOR fmpkflnum[FAMILY_FMPKFLOOR];/*------------------------------------------------------------ * 由□  奴楮  及末□旦 ------------------------------------------------------------*//*------------------------------------------------------------ * 坞中化中月由□  奴  毛茧允 * 卅仃木壬-1毛忒允[ ------------------------------------------------------------*/int CHAR_getEmptyPartyArray( int charaindex){	int     i = -1;	int     rc = FALSE;	int		toindex;	if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_NONE ) {		toindex = charaindex;	}	else {		toindex = CHAR_getPartyIndex( charaindex, 0);	}	if( CHAR_CHECKINDEX( toindex)){		for( i = 1; i < CHAR_PARTYMAX; i ++ ) {			if( CHAR_getWorkInt( toindex, i + CHAR_WORKPARTYINDEX1) == -1 ) {				rc = TRUE;				break;			}		}	}	return( rc ? i: -1);}/*------------------------------------------------------------ *   端卞由□  奴卞  月质   * *  charaindex		int		愤坌 *  targetindex		int		  月锹澎及谛 ------------------------------------------------------------*/void CHAR_JoinParty_Main( int charaindex, int targetindex){	int		firstflg = FALSE;	int		i;	char	c[3];	char buf[64];	int		toindex;	int		parray;	/* 褪互中凶日娄匀舰曰请允 */	if( CHAR_getWorkInt( targetindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_NONE ) {		toindex = targetindex;	}	else {		toindex = CHAR_getPartyIndex( targetindex, 0);		if( !CHAR_CHECKINDEX( toindex) ) {			print( " %s:%d err\n", __FILE__, __LINE__);			return;		}	}	/* 锹澎由□  奴及谛醒反    井" */	parray = CHAR_getEmptyPartyArray( toindex) ;	if( parray == -1 ) {		print( "%s : %d err\n", __FILE__,__LINE__);		return;	}	/* 窒手  仄  褪及凛反褪卞卅匀凶CA毛霜耨允月 */	if( CHAR_getWorkInt( toindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_NONE ) {		CHAR_sendLeader( CHAR_getWorkInt( toindex, CHAR_WORKOBJINDEX), 1);		/* 锹澎及橇谪及踏五晶尹 */		/* 褪卞卅月 */		CHAR_setWorkInt( toindex, CHAR_WORKPARTYMODE, 1);		CHAR_setWorkInt( toindex, CHAR_WORKPARTYINDEX1, toindex);		firstflg = TRUE;	}	CHAR_setWorkInt( toindex, parray + CHAR_WORKPARTYINDEX1, charaindex);	CHAR_setWorkChar( charaindex, CHAR_WORKWALKARRAY, "");	CHAR_setWorkInt( charaindex, CHAR_WORKPARTYMODE, CHAR_PARTY_CLIENT);	CHAR_setWorkInt( charaindex, CHAR_WORKPARTYINDEX1, toindex);	if( firstflg ) {		CHAR_sendStatusString( toindex, "N0");	}	for( i = 0; i < CHAR_PARTYMAX; i ++ ) {		int index = CHAR_getWorkInt( toindex, i + CHAR_WORKPARTYINDEX1);		if( CHAR_CHECKINDEX(index)) {				snprintf( c, sizeof(c), "N%d", i);				CHAR_sendStatusString( charaindex, c);		}	}	snprintf( buf,sizeof( buf), "%s 加入团队!",			  CHAR_getChar( charaindex, CHAR_NAME));	for( i = 0; i < CHAR_PARTYMAX; i ++ ) {		int index = CHAR_getWorkInt( toindex, i + CHAR_WORKPARTYINDEX1);		if( CHAR_CHECKINDEX(index)) {			if( index != charaindex ) {				snprintf( c, sizeof(c), "N%d", parray);				CHAR_sendStatusString( index, c);				CHAR_talkToCli( index, -1, buf, CHAR_COLORYELLOW);			}			else {				CHAR_talkToCli( index, -1, "加入团队!", CHAR_COLORYELLOW);			}		}	}}/*------------------------------------------------------------ * 由□  奴卞  欠丹午允月[ ------------------------------------------------------------*/BOOL CHAR_JoinParty( int charaindex ){	int     result = -1;	int     x,y;	OBJECT  object;	int     found = FALSE;	int     fd;	int		cnt;	int	i;	fd = getfdFromCharaIndex( charaindex );	if( fd == -1 ) {		print( "%s : %d err\n", __FILE__, __LINE__);		return FALSE;	}        /* 愤坌互由□  奴赚氏匹凶日蛲   */	if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE ) {		lssproto_PR_send( fd, 1, FALSE);		return FALSE;	}	/*   及蟆及甄  毛  月 */	CHAR_getCoordinationDir( CHAR_getInt( charaindex, CHAR_DIR ) ,							 CHAR_getInt( charaindex , CHAR_X ),							 CHAR_getInt( charaindex , CHAR_Y ) ,							 1 , &x , &y );	/* 赓渝祭允月 */	for( i = 0; i < CONNECT_WINDOWBUFSIZE; i ++ ) {        CONNECT_setJoinpartycharaindex(fd,i,-1);    }	cnt = 0;	/*愤坌及  及蟆及平乓仿毛潸  允月 */	for( object = MAP_getTopObj( CHAR_getInt( charaindex, CHAR_FLOOR),x,y) ;		 object ;		 object = NEXT_OBJECT(object ) )	{		int toindex;		int parray;		int objindex = GET_OBJINDEX(object);		int targetindex = -1;		/* 平乓仿弁正□元扎卅中 */		if( OBJECT_getType( objindex) != OBJTYPE_CHARA) continue;		toindex = OBJECT_getIndex( objindex);	                // shan begin                if( CHAR_getInt(charaindex, CHAR_FMINDEX) > 0 && CHAR_getInt(toindex, CHAR_FMINDEX) >0){                    for( i = 0; i < FAMILY_FMPKFLOOR; i++){                        if( fmpkflnum[i].fl == CHAR_getInt( charaindex, CHAR_FLOOR) )                            if( CHAR_getInt(charaindex, CHAR_FMINDEX) != CHAR_getInt(toindex, CHAR_FMINDEX) ){                                lssproto_PR_send( fd, 1, FALSE);                                return FALSE;                            }                    }                }                // shan end			/* 皿伊奶乩□及凛 */		if( CHAR_getInt( toindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER ){			found = TRUE;			/* 锹澎互阂分匀凶日褪毛娄匀舰曰请允 */			if( CHAR_getWorkInt( toindex, CHAR_WORKPARTYMODE) == CHAR_PARTY_CLIENT ) {				targetindex = CHAR_getWorkInt( toindex, CHAR_WORKPARTYINDEX1);				if( !CHAR_CHECKINDEX( targetindex) ) {					print( " %s:%d err\n", __FILE__, __LINE__);					continue;				}				if( CHAR_getInt( targetindex, CHAR_WHICHTYPE) == CHAR_TYPEBUS) {					continue;				}			}			else {				targetindex = toindex;			}			/*   褪午  ㄠ汹动  卞中月井 */			if( NPC_Util_CharDistance( charaindex, targetindex ) > 1) {				continue;			}			/* 爵    反匹卅中仪[*/			if( CHAR_getWorkInt( targetindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE ){				continue;			}			/* 醮棉袱第乒□玉井 */			if( !CHAR_getFlg( targetindex, CHAR_ISPARTY) ) continue;		}		/* 穴件乒旦田旦互中月凛反]谛棉方曰穸燮允月[ */		else if( CHAR_getInt( toindex, CHAR_WHICHTYPE) == CHAR_TYPEBUS ) {			targetindex = toindex;			cnt = 0;			if( !NPC_BusCheckJoinParty( toindex, charaindex, TRUE)) {				/* 椭瘀毛  凶今卅井匀凶[醮棉  月及反蔽歹月[谛棉及质  手仄卅中[				 * 支支仇仄中及匹[				 */				break;			}			{	// Arminius 7.10 Airplane			  int busimg=CHAR_getInt(toindex, CHAR_BASEIMAGENUMBER);		          if ((busimg!=100355) && (busimg!=100461)) {		            CHAR_setInt(charaindex,CHAR_BASEIMAGENUMBER,busimg);			    CHAR_sendCToArroundCharacter( CHAR_getWorkInt( charaindex ,				CHAR_WORKOBJINDEX ));				// Robin debug 01/11/21				if( CHAR_getInt( charaindex, CHAR_RIDEPET) != -1 ) {					CHAR_setInt( charaindex, CHAR_RIDEPET, -1);					CHAR_send_P_StatusString( charaindex, CHAR_P_STRING_RIDEPET);				}			/*			    CHAR_sendPMEToArroundCharacterFLXY(charaindex,			        CHAR_getInt( charaindex, CHAR_FLOOR),			        CHAR_getInt( charaindex, CHAR_X),			        CHAR_getInt( charaindex, CHAR_Y),			        0,1,CHAR_getInt( charaindex, CHAR_PETMAILEFFECT)			        );			*/		          }		        }		}		/* 皿伊奶乩□坭反穴件乒旦田旦动陆反  骰允月 */		else {			continue;		}		/* 锹澎由□  奴及谛醒反    井" */		parray = CHAR_getEmptyPartyArray( targetindex) ;		if( parray == -1 ) continue;		/* 仇仇引匹仁木壬     */        CONNECT_setJoinpartycharaindex( fd,cnt,toindex);		cnt++;		if( cnt == CONNECT_WINDOWBUFSIZE ) break;				/* 穴件乒旦田旦  苇仄分中]伙□皿毛  仃月[ */		if( CHAR_getInt( targetindex, CHAR_WHICHTYPE) == CHAR_TYPEBUS ) break;	}	if( cnt == 0 ) {		if( found == TRUE) {			CHAR_talkToCli( charaindex, -1, "无法加入团队。", CHAR_COLORYELLOW);		}		result = FALSE;	}else if( cnt == 1 ) {#ifdef _AUTO_PK			if(CHAR_getInt(charaindex,CHAR_FLOOR)==20000){				CHAR_talkToCli( charaindex, -1, "单P系统禁止组队!", CHAR_COLORYELLOW);				result = FALSE;			}else#endif			{				CHAR_JoinParty_Main( charaindex, CONNECT_getJoinpartycharaindex(fd,0));				result = TRUE;			}	}else {		int		strlength;		char	msgbuf[1024];		char	escapebuf[2048];		strcpy( msgbuf, "1\n和谁组成团队呢?\n");		strlength = strlen( msgbuf);		for( i = 0;             CONNECT_getJoinpartycharaindex( fd,i ) != -1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -