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

📄 复件 char.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 5 页
字号:
	switch( OBJECT_getType(objindex) ){	case OBJTYPE_CHARA:		for( i=0; i<optlen ; i++ ) {			watchopt[i] = opt[i];		}		watchoptlen = optlen;		dir = CHAR_getInt(index,CHAR_DIR);		break;	case OBJTYPE_ITEM:		for( i=0; i<optlen ; i++ ) {			watchopt[i] = opt[i];		}		watchoptlen = optlen;		dir = 0;		break;	case OBJTYPE_GOLD:		watchopt[0] = index;		watchoptlen = 1;		dir = 0;		break;	default:		return;	}	x = OBJECT_getX(objindex);	y = OBJECT_getY(objindex);	floor = OBJECT_getFloor(objindex);	for( i=x-CHAR_DEFAULTSEESIZ/2 ; i<=x+CHAR_DEFAULTSEESIZ/2 ; i++ ){		for( j=y-CHAR_DEFAULTSEESIZ/2 ; j<=y+CHAR_DEFAULTSEESIZ/2 ; j ++ ){			OBJECT object;			for( object = MAP_getTopObj(floor,i,j) ; object ;				 object = NEXT_OBJECT(object) )			{				int receiveobjindex = GET_OBJINDEX(object);				int	recvindex = OBJECT_getIndex( receiveobjindex);				WATCHF watchfunc=NULL;				switch( OBJECT_getType(receiveobjindex) ){				  case OBJTYPE_CHARA:					/* 愤坌丐化匹反霜耨仄卅中白仿弘互  匀化中月凛  仃月 */					if( index == recvindex && myflg == FALSE ) {						break;					}					/* watch 奶矛件玄毛粟仇允井升丹井职卞民尼永弁允月 */					if( !CHAR_sendWatchEvent_sendCheck( objindex,														index, recvindex ,														chac														))					{						break;					}					watchfunc =(WATCHF)CHAR_getFunctionPointer(						OBJECT_getIndex(receiveobjindex),						CHAR_WATCHFUNC);					break;				  case OBJTYPE_ITEM:					watchfunc = (WATCHF)ITEM_getFunctionPointer(						OBJECT_getIndex(receiveobjindex),						ITEM_WATCHFUNC);					break;				  case OBJTYPE_NOUSE:				  case OBJTYPE_GOLD:#ifdef _DEL_DROP_GOLD					GOLD_DeleteTimeCheckOne( receiveobjindex);#endif				  default:					break;				}				if( watchfunc == NULL )continue;				watchfunc( receiveobjindex, objindex, chac, x, y, dir,						   watchopt, watchoptlen );			}		}	}}/*====================旦平伙====================*//*------------------------------------------------------------ * 旦平伙失永皿匹五月方皿夫玄戊伙毛仄扎屯月[ * 娄醒 *  charaindex      int     平乓仿奶件犯永弁旦 * 忒曰袄 *  岳      TRUE(1) *  撩  (  端卞霜日卅井匀凶日巨仿□手殖引木月)    FALSE(0) ------------------------------------------------------------*/BOOL CHAR_Skillupsend(int charaindex ){#if 1	// 旦玄□件巨奶斥迕卞  凳仄凶手及	int point;	int fd;	if( !CHAR_CHECKINDEX(charaindex) )return FALSE;	// 中仁勾禾奶件玄失永皿匹五月井	point = CHAR_getInt( charaindex, CHAR_SKILLUPPOINT );	fd = getfdFromCharaIndex(charaindex);	lssproto_SKUP_send(fd, point );	return TRUE;#else	char    sendbuf[128];	// 仇切日反LS2凛及手及	if(SKILL_getUpableSkillID(charaindex,sendbuf,sizeof(sendbuf))){		int fd;		fd = getfdFromCharaIndex(charaindex);		if( fd != -1 && sendbuf[0] != '\0' ){			lssproto_SKUP_send(fd,sendbuf);			return TRUE;		}	}#endif	return FALSE;}/*------------------------------------------------------------ * 旦平伙失永皿允月 * 娄醒 *  charaindex          int         平乓仿奶件犯永弁旦 *  skillid             int         旦平伙ID * 忒曰袄 *  卅仄 ------------------------------------------------------------*/void CHAR_SkillUp(  int charaindex, int skillid ){	if( !CHAR_CHECKINDEX(charaindex) )return;	/*韶氏匹中凶日匹五卅中  */	if( CHAR_getFlg(charaindex,CHAR_ISDIE) )return;	{ 		int SkUpTbl[] = { CHAR_VITAL, CHAR_STR, CHAR_TOUGH, CHAR_DEX };		int	SendTbl[] = { CHAR_P_STRING_VITAL|CHAR_P_STRING_MAXHP|CHAR_P_STRING_DEF,						  CHAR_P_STRING_STR|CHAR_P_STRING_MAXHP|CHAR_P_STRING_ATK,						  CHAR_P_STRING_TOUGH|CHAR_P_STRING_MAXHP|CHAR_P_STRING_DEF,						  CHAR_P_STRING_DEX|CHAR_P_STRING_MAXHP|CHAR_P_STRING_ATK|CHAR_P_STRING_QUICK						};		int cnt;		//   区民尼永弁		if( skillid < 0 || skillid >= 4 ){			return;		}		// 引分由仿丢□正失永皿匹五月井"		cnt = CHAR_getInt(charaindex,CHAR_SKILLUPPOINT);		if( cnt <= 0 )return;		CHAR_setInt( charaindex,CHAR_SKILLUPPOINT,cnt-1);		CHAR_setInt( charaindex, SkUpTbl[skillid], CHAR_getInt( charaindex, SkUpTbl[skillid] ) + 1*100 );		CHAR_complianceParameter(charaindex);		CHAR_send_P_StatusString( charaindex, SendTbl[skillid]);	}	CHAR_PartyUpdate( charaindex, CHAR_N_STRING_MAXHP );}INLINE void CHAR_getDXDY( int dir , int* dx, int* dy ){	static POINT CHAR_dxdy[8]=	{		{ 0,-1},    /*  */		{ 1,-1},    /*    */		{ 1, 0},    /*  */		{ 1, 1},    /*    */		{ 0, 1},    /*  */		{-1, 1},    /*    */		{-1, 0},    /*  */		{-1,-1},    /*    */	};	VALIDATEDIR(dir);	if( dx )*dx = CHAR_dxdy[dir].x;	if( dy )*dy = CHAR_dxdy[dir].y;}INLINE int CHAR_getDX( int dir ){	int tmp;	CHAR_getDXDY( dir,&tmp,NULL);	return tmp;}INLINE int CHAR_getDY( int dir ){	int tmp;	CHAR_getDXDY( dir,NULL,&tmp);	return tmp;}/*------------------------------------------------------------ *   元穴旦及平乓仿弁正□毛  月[ * 娄醒 *  objbuf      int*        object     匹及 index 毛医  允月 *                              田永白央 *  siz         int         objbuf 及 扔奶术 *  ff          int         白夫失 *  fx          int         x *  fy          int         y * 忒曰袄 *  窒蜊平乓仿互中月井[ ------------------------------------------------------------*/int CHAR_getSameCoordinateObjects(int* objbuf, int siz,int ff, int fx, int fy){	OBJECT  object;	int     findobjnum=0;	for( object = MAP_getTopObj(ff,fx,fy) ; object ;		 object = NEXT_OBJECT(object ) ){		int objindex = GET_OBJINDEX(object);		if( siz <= findobjnum )break;		if( OBJECT_getType(objindex) != OBJTYPE_NOUSE )			objbuf[findobjnum++] = objindex;	}	return findobjnum;}/*====================平乓仿及树  毛  月烟及楮醒====================*//*左皿扑亦件犯□正及  侬  毛忡绣允月楮醒*/static char    CHAR_optiondataString[STRINGBUFSIZ];/*------------------------------------------------------------ * 左皿扑亦件迕及  侬  毛综月[ *  level, showstring , 熔及醒 ,   飓  寞} 窒荚夫弘奶件仄凶井[ *  弁仿旦[ * 娄醒 *  ch      Char*       平乓仿犯□正 * 忒曰袄 *  char*   static 卅    毛忒允及匹戚荚及裟太请仄及凛卞反    互 *    凳今木化中月[娄醒毛公及引引忡绣仄卅中仪[ ------------------------------------------------------------*/char* CHAR_makeOptionString( Char* ch ){	char    escapeshowstring[256];	char *showstr = MAP_getfloorShowstring(ch->data[CHAR_FLOOR]);	if( ! showstr ){		CHAR_optiondataString[0] = '\0';		return CHAR_optiondataString;	} else {#if 0  /* 动票反LS2酷  匹丐月 */		snprintf( CHAR_optiondataString,			  sizeof( CHAR_optiondataString ),			  "%d|%s|1|%d|%d",			  ch->data[CHAR_LV],			  makeEscapeString( showstr ,				  escapeshowstring,sizeof(escapeshowstring) ),			  ch->data[CHAR_BASEIMAGENUMBER],			  ch->data[CHAR_LOGINCOUNT]);#endif        /* 动票反StoneAge 酷  匹丐月[           dataplace|faceimg|level|hp|str|def|dex|charm|dp|earth|water|fire|wind|login|Name|Place           午卅月[         */        {            snprintf( CHAR_optiondataString,                      sizeof( CHAR_optiondataString ),                      "%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%s|%s",                      ch->data[CHAR_DATAPLACENUMBER],                      ch->data[CHAR_FACEIMAGENUMBER],                      ch->data[CHAR_LV],                      ch->workint[CHAR_WORKMAXHP],                      ch->workint[CHAR_WORKATTACKPOWER],                      ch->workint[CHAR_WORKDEFENCEPOWER],                      ch->workint[CHAR_WORKQUICK],                      ch->workint[CHAR_WORKFIXCHARM],                      ch->data[CHAR_DUELPOINT],    /* dp, FIXME */                      ch->workint[CHAR_WORKFIXEARTHAT],                      ch->workint[CHAR_WORKFIXWATERAT],                      ch->workint[CHAR_WORKFIXFIREAT],                      ch->workint[CHAR_WORKFIXWINDAT],                      ch->data[CHAR_LOGINCOUNT],                      ch->string[CHAR_NAME].string,                      makeEscapeString( showstr ,                                        escapeshowstring,                                        sizeof(escapeshowstring) )                      );        }    }	return CHAR_optiondataString;}static char CHAR_statusSendBuffer[STRINGBUFSIZ];char* CHAR_makeStatusString( int index, char* category ){	char    c = tolower( category[0] );	int     strlength=0;	if( !CHAR_CHECKINDEX( index ) ) return "\0";	if( category == "\0" ){		CHAR_statusSendBuffer[0] = '\0';		return CHAR_statusSendBuffer;	}	switch( c ){	case 'p':	{		int i;		int getCharDataArray[]= {			CHAR_NAME,			CHAR_OWNTITLE,			//CHAR_FMNAME,		};		int exp = CHAR_getInt(index,CHAR_EXP );		int maxexp = CHAR_GetLevelExp( index, CHAR_getInt( index, CHAR_LV ) + 1);		int	attr[4];		for( i = 0; i < 4; i ++ ) {			attr[i] = CHAR_getWorkInt( index, CHAR_WORKFIXEARTHAT + i);			if( attr[i] < 0 ) attr[i] = 0;		}		snprintf(CHAR_statusSendBuffer,sizeof(CHAR_statusSendBuffer),			"P1|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|",				 CHAR_getInt(index,CHAR_HP),				 CHAR_getWorkInt(index,CHAR_WORKMAXHP),				 CHAR_getInt(index,CHAR_MP),				 CHAR_getWorkInt(index,CHAR_WORKMAXMP),				 CHAR_getInt(index,CHAR_VITAL)/100,				 CHAR_getInt(index,CHAR_STR)/100,				 CHAR_getInt(index,CHAR_TOUGH)/100,				 CHAR_getInt(index,CHAR_DEX)/100,				 exp, maxexp,				 CHAR_getInt(index,CHAR_LV),				 CHAR_getWorkInt(index,CHAR_WORKATTACKPOWER),				 CHAR_getWorkInt(index,CHAR_WORKDEFENCEPOWER),				 CHAR_getWorkInt( index, CHAR_WORKQUICK),				 CHAR_getWorkInt( index, CHAR_WORKFIXCHARM),				 CHAR_getWorkInt( index, CHAR_WORKFIXLUCK),				 attr[0],				 attr[1],				 attr[2],				 attr[3],				 CHAR_getInt(index,CHAR_GOLD),				 CHAR_getInt(index,CHAR_INDEXOFEQTITLE),				 CHAR_getInt(index,CHAR_DUELPOINT),				 CHAR_getInt( index, CHAR_TRANSMIGRATION),				 CHAR_getInt(index,CHAR_RIDEPET),				 CHAR_getInt(index,CHAR_LEARNRIDE),				 CHAR_getInt(index,CHAR_BASEBASEIMAGENUMBER)				);		strlength = strlen( CHAR_statusSendBuffer );		for( i = 0 ; i < arraysizeof( getCharDataArray ) ; i ++ ){			char    token[256];			char    escapebuffer[128];			snprintf( token,					  sizeof( token ),					  "%s" STATUSSENDDELIMITER,					  makeEscapeString( CHAR_getChar(index, getCharDataArray[i]),					  escapebuffer,sizeof(escapebuffer)					));			strcpysafe( CHAR_statusSendBuffer + strlength,						sizeof( CHAR_statusSendBuffer ) - strlength,						token );			strlength += strlen( token );			if( strlength >= sizeof( CHAR_statusSendBuffer ) )				return CHAR_statusSendBuffer;		}		return CHAR_statusSendBuffer;		break;	}	case 'f':	{		int big4fm =0;		switch( CHAR_getWorkInt( index, CHAR_WORKFMFLOOR) )		{			case 1041:				big4fm = 1;				break;			case 2031:				big4fm = 2;				break;			case 3031:				big4fm = 3;				break;			case 4031:				big4fm = 4;				break;			default:				big4fm = 0;		}	#ifdef _FIX_FMNAME_RULE	 // WON ADD 家族未成立,不显示名称					if( CHAR_getWorkInt(index, CHAR_WORKFMSETUPFLAG)==1 ){			snprintf( CHAR_statusSendBuffer,				sizeof( CHAR_statusSendBuffer ),				"F%s|%d|%d|%d|%d",					"(待审)",				CHAR_getInt( index, CHAR_FMLEADERFLAG),				CHAR_getWorkInt( index, CHAR_WORKFMCHANNEL),				CHAR_getInt( index, CHAR_FMSPRITE),	big4fm );				}else#endif			snprintf( CHAR_statusSendBuffer,			sizeof( CHAR_statusSendBuffer ),			"F%s|%d|%d|%d|%d",			CHAR_getChar( index, CHAR_FMNAME),			CHAR_getInt( index, CHAR_FMLEADERFLAG),			CHAR_getWorkInt( index, CHAR_WORKFMCHANNEL),			CHAR_getInt( index, CHAR_FMSPRITE),	big4fm );		return CHAR_statusSendBuffer;		break;				}	case 'c':	{		int floor,xsiz,ysiz;		floor = CHAR_getInt(index,CHAR_FLOOR);		xsiz = MAP_getfloorX(floor);		ysiz = MAP_getfloorY(floor);		snprintf( CHAR_statusSendBuffer,				  sizeof( CHAR_statusSendBuffer ),				  "C%d|%d|%d|%d|%d",				  CHAR_getInt(index,CHAR_FLOOR),				  xsiz, ysiz,				  CHAR_getInt(index,CHAR_X),				  CHAR_getInt(index,CHAR_Y) );		return CHAR_statusSendBuffer;		break;	}	case 'i':	{		int     i;		CHAR_statusSendBuf

⌨️ 快捷键说明

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