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

📄 callfromcli.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 5 页
字号:
  }    ix=CHAR_getInt(fd_charaindex, CHAR_X);    iy=CHAR_getInt(fd_charaindex, CHAR_Y);    x=ix;    y=iy;    CHAR_setMyPosition( fd_charaindex, x,y,TRUE);    if(!CONNECT_get_shutup(fd)){ //ttom add the shut up function        CHAR_Talk( fd,fd_charaindex, message, color, area );    }}void lssproto_M_recv( int fd, int fl, int x1, int y1 , int x2, int y2 ){    char*   mapdata;    RECT    seek={x1,y1,x2-x1,y2-y1},ret;    CHECKFD;    mapdata = MAP_getdataFromRECT(fl,&seek,&ret);    if( mapdata != NULL ){        lssproto_M_send( fd, fl, ret.x, ret.y,                         ret.x+ret.width, ret.y+ret.height, mapdata );	}}/*------------------------------------------------------------ * 平乓仿犯□正 邰菲[ ------------------------------------------------------------*/void lssproto_C_recv( int fd, int index ){    /*  仇木分仃凛棉及涩烂毛苇卅中仪卞允月  */    CHECKFD;    CHAR_sendCSpecifiedObjindex( fd, index);}void lssproto_S_recv( int fd, char* category ){    char*   string;    int fd_charaindex;    fd_charaindex = CONNECT_getCharaindex( fd );    string = CHAR_makeStatusString( fd_charaindex, category );    if( string != NULL )        lssproto_S_send( fd , string );}void lssproto_EV_recv( int fd,int event,int seqno,int x,int y, int dir ){	int		rc;	int		fx,fy;    int fd_charaindex;	CHECKFD;	fd_charaindex = CONNECT_getCharaindex( fd );	{		int ix,iy;		ix=CHAR_getInt(fd_charaindex, CHAR_X);		iy=CHAR_getInt(fd_charaindex, CHAR_Y);		if( ( ix != x ) || ( iy != y ) ){			goto CK1;		}		goto OK;	}CK1:    {		OBJECT  object;		int ix,iy,ifloor,i,j;		int warp_point_x[9];		int warp_point_y[9];		int warp_point=0;		ix=CHAR_getInt(fd_charaindex, CHAR_X);		iy=CHAR_getInt(fd_charaindex, CHAR_Y);		ifloor=CHAR_getInt(fd_charaindex,CHAR_FLOOR);		for(i=iy-1;i<=iy+1;i++){			for(j=ix-1;j<=ix+1;j++){				for( object = MAP_getTopObj(ifloor,j,i) ; object ;object = NEXT_OBJECT(object ) ){					int o = GET_OBJINDEX(object);					if( OBJECT_getType(o) == OBJTYPE_CHARA ){						int     etype;						int charaindex=OBJECT_getIndex(o);						if( !CHAR_CHECKINDEX(charaindex) ) continue;						etype = CHAR_getWorkInt( charaindex, CHAR_WORKEVENTTYPE);						if( etype != CHAR_EVENT_NONE ) {							if(etype==CHAR_EVENT_WARP){								warp_point_x[warp_point]=j;								warp_point_y[warp_point]=i;								warp_point++;							}						}					}#ifdef _MAP_WARPPOINT					else if( OBJECT_getType(o) == OBJTYPE_WARPPOINT ){						int	etype = OBJECT_getchartype( o);						if( etype != CHAR_EVENT_NONE ) {							warp_point_x[warp_point]=j;							warp_point_y[warp_point]=i;							warp_point++;							break;						}					}#endif				}			}		}		for(i=0;i<warp_point;i++){			if((x==warp_point_x[i])&& (y==warp_point_y[i]))				goto OK;		}		x=CHAR_getInt(fd_charaindex, CHAR_X);		y=CHAR_getInt(fd_charaindex, CHAR_Y);	}OK:	CHAR_setMyPosition( fd_charaindex, x,y,TRUE);	CHAR_setWorkChar( fd_charaindex , CHAR_WORKWALKARRAY,"");	if( dir < 0 || dir > 7) {		fx =  CHAR_getInt(fd_charaindex, CHAR_X);		fy =  CHAR_getInt(fd_charaindex, CHAR_Y);	}else {		CHAR_getCoordinationDir( dir, CHAR_getInt(fd_charaindex, CHAR_X),			CHAR_getInt(fd_charaindex, CHAR_Y),1,&fx,&fy);	}	rc = EVENT_main(fd_charaindex, event,fx,fy);	lssproto_EV_send( fd, seqno, rc);}/*------------------------------------------------------------ * 巨件市它件玄  戏 ------------------------------------------------------------*/void lssproto_EN_recv( int fd , int x,int y ){	int		ret = FALSE, err = 0;    int fd_charaindex;	CHECKFD;    fd_charaindex = CONNECT_getCharaindex( fd);	//print(" EN_recv ");	if( CHAR_getWorkInt( fd_charaindex, CHAR_WORKPARTYMODE)	!= CHAR_PARTY_CLIENT){           CHAR_setMyPosition( fd_charaindex, x,y,TRUE);		CHAR_setWorkChar( fd_charaindex, CHAR_WORKWALKARRAY,"");		err = BATTLE_CreateVsEnemy( fd_charaindex,0, -1);		if( err != 0 ){			ret = FALSE;		}else{			ret = TRUE;		}	}}/*------------------------------------------------------------ * 皿伊奶乩□  衔匹巨件市它件玄  瑁      戏 ------------------------------------------------------------*/void lssproto_DU_recv( int fd , int x,int y ){    OBJECT  object;    int fd_charaindex;	int		ret = FALSE, charaindex = -1, enemyindex;	int		frontx,fronty;    int		cnt = 0;    BOOL	found = FALSE;    CHECKFDANDTIME;    fd_charaindex = CONNECT_getCharaindex( fd );    {//ttom avoid warp at will			int ix,iy;			ix=CHAR_getInt(fd_charaindex, CHAR_X);			iy=CHAR_getInt(fd_charaindex, CHAR_Y);			if( (ix!=x)||(iy!=y)){				//print("\n<DU>--Error!!!!");				//print("\n<DU>origion x=%d,y=%d",ix,iy);				//print("\n<DU>modify  X=%d,Y=%d",x,y);				x=ix;				y=iy;			}		}                                                                                       	/* 阂及凛反  骰允月 */	if( CHAR_getWorkInt( fd_charaindex, CHAR_WORKPARTYMODE)		!= CHAR_PARTY_CLIENT)	{		int		i;		// 愤坌及奶件犯永弁旦	    charaindex = fd_charaindex;	    CHAR_setMyPosition( charaindex, x,y,TRUE);	    /* WALKARRAY毛弁伉失允月 */		CHAR_setWorkChar( charaindex, CHAR_WORKWALKARRAY,"");		/* 赓渝祭允月 */		for( i = 0; i < CONNECT_WINDOWBUFSIZE ; i ++ ) {            CONNECT_setDuelcharaindex( fd, i, -1 );	    }	    /*   及蟆及甄  毛  月 */	    CHAR_getCoordinationDir( CHAR_getInt( charaindex, CHAR_DIR ) ,	                             CHAR_getInt( charaindex , CHAR_X ),	                             CHAR_getInt( charaindex , CHAR_Y ) ,	                             1 , &frontx , &fronty );	    /*愤坌及  及蟆及平乓仿毛潸  允月 */	    for( object = MAP_getTopObj( CHAR_getInt( charaindex, CHAR_FLOOR),	    							frontx,fronty) ;	         object ;	         object = NEXT_OBJECT(object ) )	    {	        int toindex;	        int objindex = GET_OBJINDEX(object);	        /* 平乓仿弁正□元扎卅中 */	        if( OBJECT_getType( objindex) != OBJTYPE_CHARA) continue;	        toindex = OBJECT_getIndex( objindex);	        /* 皿伊奶乩□元扎卅中 */	        if( CHAR_getInt( toindex, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER ) continue;			found = TRUE;	        /* 爵    分匀凶日蛲   */	        if( CHAR_getWorkInt( toindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE ){				continue;			}			/* 辅爵蛐  卅日蛲   */			if( !CHAR_getFlg( toindex, CHAR_ISDUEL)) continue;                        // shan begin			{			        int i;			        for( i=0; i<FAMILY_FMPKFLOOR; i++){			            if( fmpkflnum[i].fl == CHAR_getInt( charaindex, CHAR_FLOOR) ){			                if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEFLAG) == -1 ){			                    lssproto_EN_send( fd, FALSE, 0 );			                    return;			                }			                if(CHAR_getInt( charaindex, CHAR_FMINDEX) == CHAR_getInt( toindex, CHAR_FMINDEX)){			                    lssproto_EN_send( fd, FALSE, 0 );			                    return;			                }			            }			        }			    }		        // shan end			// 阂间卅日褪毛裟氏匹仁月			if( CHAR_getWorkInt( toindex, CHAR_WORKPARTYMODE )				== CHAR_PARTY_CLIENT )			{				int tmpindex = CHAR_getWorkInt( toindex, CHAR_WORKPARTYINDEX1 );				/* 锹澎互皿伊奶乩□匹卅中仪手丐月 */				if( CHAR_CHECKINDEX( tmpindex)) {					if( CHAR_getWorkInt( tmpindex, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER){						continue;					}				}			}            CONNECT_setDuelcharaindex( fd, cnt,toindex );			cnt++;			if( cnt == CONNECT_WINDOWBUFSIZE ) break;		}		/* 中卅井匀凶 */		if( cnt == 0 ) {			goto lssproto_DU_recv_Err;		}		/* ㄠ谛分仃分匀凶日穑巨件玄伉□ */		else if( cnt == 1 ) {			//   及蟆及平乓仿及奶件犯永弁旦			enemyindex = CONNECT_getDuelcharaindex(fd,0);			// 锹澎互褪卅日公及引引巨件市它件玄今六月互			// 阂间卅日褪毛裟氏匹仁月			if( CHAR_getWorkInt( enemyindex, CHAR_WORKPARTYMODE )				== CHAR_PARTY_CLIENT )			{				enemyindex = CHAR_getWorkInt( enemyindex, CHAR_WORKPARTYINDEX1 );				// 卅兮井褪互中卅中				if( enemyindex < 0 )goto lssproto_DU_recv_Err;			}			ret = BATTLE_CreateVsPlayer( charaindex, enemyindex );			if( ret != 0 ){				 ret = FALSE;			}else{				ret = TRUE;			}		}		/* ㄠ谛动晓中月桦宁反它奴件玉它毛请仄化  中宁歹六月 */		else if( cnt > 1 ) {			int		strlength;			char	msgbuf[1024];			char	escapebuf[2048];			strcpy( msgbuf, "1\n要和谁战斗?\n");			strlength = strlen( msgbuf);			/* 它奴件玉它及丢永本□斥综岳[			 * 爵    及平乓仿及域  			 */			for( i = 0;				CONNECT_getDuelcharaindex( fd,i) != -1				&& i< CONNECT_WINDOWBUFSIZE;				i ++ )			{				char	*a = CHAR_getChar(                    CONNECT_getDuelcharaindex( fd,i) , CHAR_NAME);				char	buf[256];				snprintf( buf, sizeof( buf),"%s [%s]\n", a,							CHAR_getWorkInt(                                CONNECT_getDuelcharaindex(fd,i),                                CHAR_WORKPARTYMODE )							!= CHAR_PARTY_NONE ? "团体": "单独");				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_SELECTDUEL,							-1,						makeEscapeString( msgbuf, escapebuf, sizeof(escapebuf)));			ret = TRUE;		}	}// 巨仿□质  lssproto_DU_recv_Err:;	if( ret == FALSE ) {		/* 瑛绊霜耨 */		lssproto_EN_send( fd, FALSE, 0 );		if( cnt > 0 ) CHAR_talkToCli( charaindex, -1, "遭遇失败!", CHAR_COLORYELLOW);		else if( found ) CHAR_talkToCli( charaindex, -1, "无人可以对战。", CHAR_COLORYELLOW);		else CHAR_talkToCli( charaindex, -1, "那里没有任何人。", CHAR_COLORYELLOW);	}}/*------------------------------------------------------------ * 巨件市它件玄蔽   ------------------------------------------------------------*/void lssproto_EO_recv( int fd, int dummy ){    int fd_charaindex;   int battle_index;//ttom++    	CHECKFD;    fd_charaindex = CONNECT_getCharaindex( fd );	BattleEncountOut( fd_charaindex );        // Nuke start 0827 : Battle acceleration         battle_index=CHAR_getWorkInt(fd_charaindex,CHAR_WORKBATTLEINDEX);		if( BATTLE_CHECKINDEX( battle_index ) == FALSE ){			return;		}         if(BattleArray[battle_index].type != BATTLE_TYPE_P_vs_P){            if(CONNECT_get_watchmode(fd)) {               //print("fd= %d Watching the battle __ lssprot_EO_recv \n",fd);//for debug               CONNECT_set_watchmode(fd,FALSE);               return;            }            else if (checkBEOTime( fd ) < 0) {                //CHAR_talkToCli(fd_charaindex, -1, "你加速喔。", CHAR_COLORYELLOW);            }         }         // Nuke end                                                                                                                                                                        	}/*------------------------------------------------------------ * 巨件市它件玄  蝇邰菲 ------------------------------------------------------------*/void lssproto_BU_recv( int fd, int dummy){    int fd_charaindex;	CHECKFD;    fd_charaindex = CONNECT_getCharaindex( fd );	// shan 2001/12/25	//BATTLE_WatchStop( fd_charaindex );}void lssproto_B_recv( int fd, char *command ){	int fd_charaindex;	int battle_index;//ttom++	CHECKFD;	fd_charaindex = CONNECT_getCharaindex( fd );	BattleCommandDispach( fd, command );	// Nuke +1 0827: Battle acceleration	battle_index=CHAR_getWorkInt(fd_charaindex,CHAR_WORKBATTLEINDEX);	if( BATTLE_CHECKINDEX( battle_index ) == FALSE ){		return;	}	if(BattleArray[battle_index].type != BATTLE_TYPE_P_vs_P){	   if(BattleArray[battle_index].type == BATTLE_TYPE_WATCH) {	      CONNECT_set_watchmode(fd,TRUE);	      return;	   }	}	//Nuke end}void lssproto_FS_recv( int fd,int flg ){    int fd_charaindex;    CHECKFDANDTIME;    fd_charaindex = CONNECT_getCharaindex( fd );	/* 椭瘀反竣卞六内卞公及引引白仿弘凳蕙 */	CHAR_setFlg( fd_charaindex, CHAR_ISPARTY,				(flg & CHAR_FS_PARTY )? TRUE:FALSE);	//CHAR_setFlg( fd_charaindex, CHAR_ISBATTLE,	//			(flg & CHAR_FS_BATTLE )? TRUE:FALSE);	CHAR_setFlg( fd_charaindex, CHAR_ISDUEL,				(flg & CHAR_FS_DUEL )? TRUE:FALSE);	CHAR_setFlg( fd_charaindex, CHAR_ISPARTYCHAT,				(flg & CHAR_FS_PARTYCHAT )? TRUE:FALSE);	CHAR_setFlg( fd_charaindex, CHAR_ISTRADECARD,				(flg & CHAR_FS_TRADECARD )? TRUE:FALSE);#ifdef _CHANNEL_MODIFY	//密语频道开关	CHAR_setFlg(fd_charaindex,CHAR_ISTELL,(flg & CHAR_FS_TELL )? TRUE:FALSE);

⌨️ 快捷键说明

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